wetrade-design
Version:
一款多语言支持Vue3的UI框架
52 lines • 1.69 kB
JavaScript
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
import { computed, inject, provide, defineComponent } from 'vue';
export var OVERFLOW_KEY = '$$__vc-menu-more__key';
var KeyPathContext = Symbol('KeyPathContext');
var useInjectKeyPath = function useInjectKeyPath() {
return inject(KeyPathContext, {
parentEventKeys: computed(function () {
return [];
}),
parentKeys: computed(function () {
return [];
}),
parentInfo: {}
});
};
var useProvideKeyPath = function useProvideKeyPath(eventKey, key, menuInfo) {
var _useInjectKeyPath = useInjectKeyPath(),
parentEventKeys = _useInjectKeyPath.parentEventKeys,
parentKeys = _useInjectKeyPath.parentKeys;
var eventKeys = computed(function () {
return [].concat(_toConsumableArray(parentEventKeys.value), [eventKey]);
});
var keys = computed(function () {
return [].concat(_toConsumableArray(parentKeys.value), [key]);
});
provide(KeyPathContext, {
parentEventKeys: eventKeys,
parentKeys: keys,
parentInfo: menuInfo
});
return keys;
};
var measure = Symbol('measure');
export var PathContext = defineComponent({
compatConfig: {
MODE: 3
},
setup: function setup(_props, _ref) {
var slots = _ref.slots;
// 不需要响应式
provide(measure, true);
return function () {
var _slots$default;
return (_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
};
}
});
export var useMeasure = function useMeasure() {
return inject(measure, false);
};
export { useProvideKeyPath, useInjectKeyPath, KeyPathContext };
export default useProvideKeyPath;