UNPKG

@fe6/water-pro

Version:

An enterprise-class UI design language and Vue-based implementation

39 lines (36 loc) 1.52 kB
/** @format */ import { provide, inject, reactive, readonly as defineReadonly, defineComponent } from 'vue'; export function createContext(context) { var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Symbol(); var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var _options$readonly = options.readonly, readonly = _options$readonly === void 0 ? true : _options$readonly, _options$createProvid = options.createProvider, createProvider = _options$createProvid === void 0 ? false : _options$createProvid, _options$native = options.native, _native = _options$native === void 0 ? false : _options$native; var state = reactive(context); var provideData = readonly ? defineReadonly(state) : state; !createProvider && provide(key, _native ? context : provideData); var Provider = createProvider ? defineComponent({ name: 'Provider', inheritAttrs: false, setup: function setup(_, _ref) { var slots = _ref.slots; provide(key, provideData); return function () { var _a; return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots); }; } }) : null; return { Provider: Provider, state: state }; } export function useContext() { var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Symbol(); var defaultValue = arguments.length > 1 ? arguments[1] : undefined; return inject(key, defaultValue || {}); }