mortise-tenon-design 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/es/components/component-neo/index.mjs +11 -0
  2. package/es/components/component-neo/index.mjs.map +1 -0
  3. package/es/components/component-neo/src/component-neo.vue.mjs +34 -0
  4. package/es/components/component-neo/src/component-neo.vue.mjs.map +1 -0
  5. package/es/components/component-neo/src/component-neo.vue2.mjs +5 -0
  6. package/es/components/component-neo/src/component-neo.vue2.mjs.map +1 -0
  7. package/es/components/component-neo/src/hooks/use-component-neo.mjs +31 -0
  8. package/es/components/component-neo/src/hooks/use-component-neo.mjs.map +1 -0
  9. package/es/components/component-neo/src/hooks/use-component-state.mjs +34 -0
  10. package/es/components/component-neo/src/hooks/use-component-state.mjs.map +1 -0
  11. package/es/components/expand/src/expand.vue2.mjs +4 -4
  12. package/es/components/sort/src/sort.mjs.map +1 -1
  13. package/es/components/table/src/table.vue2.mjs +9 -9
  14. package/es/index.mjs +10 -6
  15. package/es/index.mjs.map +1 -1
  16. package/lib/components/component-neo/index.js +2 -0
  17. package/lib/components/component-neo/index.js.map +1 -0
  18. package/lib/components/component-neo/src/component-neo.vue.js +2 -0
  19. package/lib/components/component-neo/src/component-neo.vue.js.map +1 -0
  20. package/lib/components/component-neo/src/component-neo.vue2.js +2 -0
  21. package/lib/components/component-neo/src/component-neo.vue2.js.map +1 -0
  22. package/lib/components/component-neo/src/hooks/use-component-neo.js +2 -0
  23. package/lib/components/component-neo/src/hooks/use-component-neo.js.map +1 -0
  24. package/lib/components/component-neo/src/hooks/use-component-state.js +2 -0
  25. package/lib/components/component-neo/src/hooks/use-component-state.js.map +1 -0
  26. package/lib/components/sort/src/sort.js.map +1 -1
  27. package/lib/index.js +1 -1
  28. package/package.json +7 -3
  29. package/types/component-neo/index.d.ts +50 -0
  30. package/types/component-neo/src/component-neo.d.ts +8 -0
  31. package/types/component-neo/src/component-neo.vue.d.ts +35 -0
  32. package/types/component-neo/src/hooks/use-component-neo.d.ts +8 -0
  33. package/types/component-neo/src/hooks/use-component-state.d.ts +22 -0
  34. package/types/expand/index.d.ts +3 -1
  35. package/types/expand/src/expand.vue.d.ts +5 -2
  36. package/types/index.d.ts +1 -0
  37. package/types/table/index.d.ts +1 -1
  38. package/types/table/src/table.vue.d.ts +3 -2
@@ -0,0 +1,11 @@
1
+ import o from "./src/component-neo.vue.mjs";
2
+ import "vue";
3
+ import "./src/hooks/use-component-state.mjs";
4
+ o.install = (m) => {
5
+ o.name && m.component(o.name, o);
6
+ };
7
+ const i = o;
8
+ export {
9
+ i as MtComponentNeo
10
+ };
11
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/component-neo/index.ts"],"sourcesContent":["import type { App } from 'vue';\r\nimport ComponentNeo from './src/component-neo.vue';\r\n\r\nComponentNeo.install = (app: App): void => {\r\n if (ComponentNeo.name) {\r\n app.component(ComponentNeo.name, ComponentNeo);\r\n }\r\n};\r\n\r\nexport const MtComponentNeo = ComponentNeo;\r\n\r\nexport * from './src/component-neo.vue';\r\nexport * from './src/hooks/use-component-neo';\r\n"],"names":["ComponentNeo","app","MtComponentNeo"],"mappings":";;;AAGAA,EAAa,UAAU,CAACC,MAAmB;AACzC,EAAID,EAAa,QACXC,EAAA,UAAUD,EAAa,MAAMA,CAAY;AAEjD;AAEO,MAAME,IAAiBF;"}
@@ -0,0 +1,34 @@
1
+ import { defineComponent as N, useAttrs as g, computed as n, unref as _, h as l, Comment as h, watch as k, nextTick as w, renderSlot as x, createBlock as I, openBlock as b, resolveDynamicComponent as j } from "vue";
2
+ import { useComponentState as q } from "./hooks/use-component-state.mjs";
3
+ const S = /* @__PURE__ */ N({
4
+ name: "MtComponentNeo",
5
+ inheritAttrs: !1,
6
+ __name: "component-neo",
7
+ props: {
8
+ uniqueId: { default: "" },
9
+ is: {}
10
+ },
11
+ emits: ["toggleComponent"],
12
+ setup(i, { expose: v, emit: f }) {
13
+ const s = i, d = f, { initComponent: C } = q(), { componentRef: a, componentNeo: y, componentAttrs: m } = C(s.uniqueId), c = (t) => a.value = t, A = g(), u = n(() => {
14
+ const t = {};
15
+ for (const o in m.value)
16
+ typeof m.value[o] < "u" && (t[o] = _(m.value[o]));
17
+ return Object.assign(t, A);
18
+ }), e = n(() => y.value || s.is), p = n(() => e.value ? l(e.value, u.value) : l(h, "componentNeo is empty")), r = n(() => typeof e.value == "object" && "name" in e.value ? e.value.name : void 0);
19
+ return k(e, async () => {
20
+ await w(), d("toggleComponent", r.value, a.value);
21
+ }), v({ componentRef: a }), (t, o) => x(t.$slots, "default", {
22
+ Component: p.value,
23
+ compRef: c,
24
+ attrs: u.value,
25
+ compName: r.value
26
+ }, () => [
27
+ (b(), I(j(p.value), { ref: c }))
28
+ ]);
29
+ }
30
+ });
31
+ export {
32
+ S as default
33
+ };
34
+ //# sourceMappingURL=component-neo.vue.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-neo.vue.mjs","sources":["../../../../../../packages/components/component-neo/src/component-neo.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { ComponentNeoProps } from './component-neo';\r\nimport { Comment, computed, h, nextTick, unref, useAttrs, watch } from 'vue';\r\nimport { useComponentState } from './hooks/use-component-state';\r\n\r\ndefineOptions({ name: 'MtComponentNeo', inheritAttrs: false });\r\n\r\nconst props = withDefaults(\r\n defineProps<ComponentNeoProps>(),\r\n { uniqueId: '', onToggle: () => { } },\r\n);\r\n\r\nconst emit = defineEmits<{\r\n (e: 'toggleComponent', name?: string, ref?: any): void\r\n}>();\r\n\r\nconst { initComponent } = useComponentState();\r\nconst { componentRef, componentNeo, componentAttrs } = initComponent(props.uniqueId);\r\nconst compRef = (el: Element) => componentRef.value = el;\r\n\r\nconst commonAttrs = useAttrs();\r\n/** 结合注入的属性和公共属性 */\r\nconst compAttrs = computed(() => {\r\n const newAttrs: Record<string, any> = {};\r\n // 仅传入有值的属性\r\n for (const key in componentAttrs.value) {\r\n if (typeof componentAttrs.value[key] !== 'undefined') {\r\n newAttrs[key] = unref(componentAttrs.value[key]); // 支持ref数据转入\r\n }\r\n }\r\n return Object.assign(newAttrs, commonAttrs);\r\n});\r\n\r\nconst compInstance = computed(() => componentNeo.value || props.is);\r\n\r\nconst compVNode = computed(() => {\r\n return !compInstance.value ? h(Comment, 'componentNeo is empty') : h(compInstance.value, compAttrs.value);\r\n});\r\n\r\nconst compName = computed(() => {\r\n return typeof compInstance.value === 'object' && 'name' in compInstance.value ? compInstance.value.name : undefined;\r\n});\r\n\r\n// 监听组件切换,触发回调\r\nwatch(compInstance, async () => {\r\n await nextTick();\r\n emit('toggleComponent', compName.value, componentRef.value);\r\n});\r\n\r\ndefineExpose({ componentRef });\r\n</script>\r\n\r\n<template>\r\n <!-- eslint-disable-next-line vue/attribute-hyphenation -->\r\n <slot :Component=\"compVNode\" :compRef=\"compRef\" :attrs=\"compAttrs\" :compName=\"compName\">\r\n <component :is=\"compVNode\" :ref=\"compRef\" />\r\n </slot>\r\n</template>\r\n"],"names":["props","__props","emit","__emit","initComponent","useComponentState","componentRef","componentNeo","componentAttrs","compRef","el","commonAttrs","useAttrs","compAttrs","computed","newAttrs","key","unref","compInstance","compVNode","h","Comment","compName","watch","nextTick","__expose"],"mappings":";;;;;;;;;;;;AAOA,UAAMA,IAAQC,GAKRC,IAAOC,GAIP,EAAE,eAAAC,EAAc,IAAIC,EAAkB,GACtC,EAAE,cAAAC,GAAc,cAAAC,GAAc,gBAAAC,EAAmB,IAAAJ,EAAcJ,EAAM,QAAQ,GAC7ES,IAAU,CAACC,MAAgBJ,EAAa,QAAQI,GAEhDC,IAAcC,EAAS,GAEvBC,IAAYC,EAAS,MAAM;AAC/B,YAAMC,IAAgC,CAAC;AAE5B,iBAAAC,KAAOR,EAAe;AAC/B,QAAI,OAAOA,EAAe,MAAMQ,CAAG,IAAM,QACvCD,EAASC,CAAG,IAAIC,EAAMT,EAAe,MAAMQ,CAAG,CAAC;AAG5C,aAAA,OAAO,OAAOD,GAAUJ,CAAW;AAAA,IAAA,CAC3C,GAEKO,IAAeJ,EAAS,MAAMP,EAAa,SAASP,EAAM,EAAE,GAE5DmB,IAAYL,EAAS,MACjBI,EAAa,QAA8CE,EAAEF,EAAa,OAAOL,EAAU,KAAK,IAA3EO,EAAEC,GAAS,uBAAuB,CAChE,GAEKC,IAAWR,EAAS,MACjB,OAAOI,EAAa,SAAU,YAAY,UAAUA,EAAa,QAAQA,EAAa,MAAM,OAAO,MAC3G;AAGD,WAAAK,EAAML,GAAc,YAAY;AAC9B,YAAMM,EAAS,GACftB,EAAK,mBAAmBoB,EAAS,OAAOhB,EAAa,KAAK;AAAA,IAAA,CAC3D,GAEYmB,EAAA,EAAE,cAAAnB,GAAc;;;;;;;;;;"}
@@ -0,0 +1,5 @@
1
+ import f from "./component-neo.vue.mjs";
2
+ export {
3
+ f as default
4
+ };
5
+ //# sourceMappingURL=component-neo.vue2.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-neo.vue2.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,31 @@
1
+ import { nextTick as m } from "vue";
2
+ import { useComponentState as u } from "./use-component-state.mjs";
3
+ function d(r = "") {
4
+ const { setComponent: i, getComponent: s } = u();
5
+ async function f(t, c) {
6
+ var l;
7
+ try {
8
+ const a = typeof t == "function" ? (await t()).default : t, n = {};
9
+ for (let e in c) {
10
+ const o = c[e];
11
+ e.startsWith("vModel:") ? (e = e.replace("vModel:", ""), n[e] = o, n[`onUpdate:${e}`] = (p) => {
12
+ "value" in o && (o.value = p);
13
+ }) : n[e] = o;
14
+ }
15
+ return i(r, a, n), await m(), (l = s(r)) == null ? void 0 : l.Instance.value;
16
+ } catch (a) {
17
+ console.error(a);
18
+ }
19
+ }
20
+ return {
21
+ getComponentRef: () => {
22
+ var t;
23
+ return (t = s(r)) == null ? void 0 : t.Instance.value;
24
+ },
25
+ toggleComponent: f
26
+ };
27
+ }
28
+ export {
29
+ d as useComponentNeo
30
+ };
31
+ //# sourceMappingURL=use-component-neo.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-component-neo.mjs","sources":["../../../../../../../packages/components/component-neo/src/hooks/use-component-neo.ts"],"sourcesContent":["import type { InstanceComponent } from '../component-neo';\r\nimport { nextTick, type VNode } from 'vue';\r\nimport { useComponentState } from './use-component-state';\r\n\r\nexport type ImportComponentFn = () => Promise<Record<string, any>>;\r\nexport type DynamicComponent = InstanceComponent | ImportComponentFn | VNode;\r\n\r\nexport function useComponentNeo(uniqueId = '') {\r\n const { setComponent, getComponent } = useComponentState();\r\n\r\n /**\r\n * 切换渲染的组件\r\n * @param comp 组件,可传入两种类型,1.直接函数格式返回import动态导入 2.组件类型\r\n * @param attrs 组件属性,可使用`on事件`方式添加事件方法,属性支持Ref类型进行绑定以实现动态变化, 支持通过{'vModal:value': value}方式双向绑定数据\r\n */\r\n async function toggleComponent(comp: DynamicComponent, attrs?: Record<string, any>) {\r\n try {\r\n const renderComp = typeof comp === 'function' ? (await (comp as ImportComponentFn)()).default : comp;\r\n const renderAttrs: Record<string, any> = {};\r\n for (let key in attrs) {\r\n const bindValue = attrs[key];\r\n // 兼容vModal\r\n if (key.startsWith('vModel:')) {\r\n key = key.replace('vModel:', '');\r\n renderAttrs[key] = bindValue;\r\n renderAttrs[`onUpdate:${key}`] = (value: any) => {\r\n if ('value' in bindValue) {\r\n bindValue.value = value;\r\n }\r\n };\r\n }\r\n else {\r\n renderAttrs[key] = bindValue;\r\n }\r\n }\r\n setComponent(uniqueId, renderComp, renderAttrs);\r\n await nextTick();\r\n return getComponent(uniqueId)?.Instance.value;\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n return {\r\n getComponentRef: () => getComponent(uniqueId)?.Instance.value,\r\n toggleComponent,\r\n };\r\n};\r\n"],"names":["useComponentNeo","uniqueId","setComponent","getComponent","useComponentState","toggleComponent","comp","attrs","renderComp","renderAttrs","key","bindValue","value","nextTick","_a","e"],"mappings":";;AAOgB,SAAAA,EAAgBC,IAAW,IAAI;AAC7C,QAAM,EAAE,cAAAC,GAAc,cAAAC,EAAa,IAAIC,EAAkB;AAO1C,iBAAAC,EAAgBC,GAAwBC,GAA6B;;AAC9E,QAAA;AACF,YAAMC,IAAa,OAAOF,KAAS,cAAc,MAAOA,EAAA,GAA8B,UAAUA,GAC1FG,IAAmC,CAAC;AAC1C,eAASC,KAAOH,GAAO;AACf,cAAAI,IAAYJ,EAAMG,CAAG;AAEvB,QAAAA,EAAI,WAAW,SAAS,KACpBA,IAAAA,EAAI,QAAQ,WAAW,EAAE,GAC/BD,EAAYC,CAAG,IAAIC,GACnBF,EAAY,YAAYC,CAAG,EAAE,IAAI,CAACE,MAAe;AAC/C,UAAI,WAAWD,MACbA,EAAU,QAAQC;AAAA,QAEtB,KAGAH,EAAYC,CAAG,IAAIC;AAAA,MACrB;AAEW,aAAAT,EAAAD,GAAUO,GAAYC,CAAW,GAC9C,MAAMI,EAAS,IACRC,IAAAX,EAAaF,CAAQ,MAArB,gBAAAa,EAAwB,SAAS;AAAA,aAEnCC,GAAG;AACR,cAAQ,MAAMA,CAAC;AAAA,IAAA;AAAA,EACjB;AAEK,SAAA;AAAA,IACL,iBAAiB,MAAA;;AAAM,cAAAD,IAAAX,EAAaF,CAAQ,MAArB,gBAAAa,EAAwB,SAAS;AAAA;AAAA,IACxD,iBAAAT;AAAA,EACF;AACF;"}
@@ -0,0 +1,34 @@
1
+ import { createGlobalState as l } from "@vueuse/core";
2
+ import { ref as m, shallowRef as i, onBeforeUnmount as u } from "vue";
3
+ const R = l(() => {
4
+ const a = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map();
5
+ function f(t = "") {
6
+ let e = n.get(t);
7
+ e || (e = {
8
+ Instance: m(),
9
+ comp: i(),
10
+ attrs: m({})
11
+ }, n.set(t, e), u(() => r(t)));
12
+ const o = a.get(t);
13
+ return o && (e.comp.value = o.comp, e.attrs.value = o.attrs), {
14
+ componentRef: e.Instance,
15
+ componentNeo: e.comp,
16
+ componentAttrs: e.attrs
17
+ };
18
+ }
19
+ function p(t = "") {
20
+ return n.get(t);
21
+ }
22
+ function r(t = "") {
23
+ a.delete(t), n.delete(t);
24
+ }
25
+ function s(t = "", e, o) {
26
+ const c = p(t);
27
+ c && (c.comp.value = e, c.attrs.value = o), a.set(t, { comp: e, attrs: o });
28
+ }
29
+ return { initComponent: f, setComponent: s, getComponent: p, removeComponent: r };
30
+ });
31
+ export {
32
+ R as useComponentState
33
+ };
34
+ //# sourceMappingURL=use-component-state.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-component-state.mjs","sources":["../../../../../../../packages/components/component-neo/src/hooks/use-component-state.ts"],"sourcesContent":["import type { InstanceComponent } from '../component-neo';\r\nimport { createGlobalState } from '@vueuse/core';\r\nimport { onBeforeUnmount, ref, type Ref, shallowRef, type ShallowRef, type VNode } from 'vue';\r\n\r\ninterface ComponentRefsType {\r\n /** 实例 */\r\n Instance: Ref<any>\r\n /** 组件 */\r\n comp: ShallowRef<InstanceComponent | VNode | undefined>\r\n /** 属性 */\r\n attrs: Ref<Record<string, any>>\r\n}\r\n\r\n/** 组件状态 */\r\nexport const useComponentState = createGlobalState(() => {\r\n /** 缓存组件数据,组件未实例化时,可先缓存后赋值 */\r\n const dataBufferMap = new Map<string, { comp: InstanceComponent | VNode, attrs: Record<string, any> }>();\r\n /** 实例化后的组件 */\r\n const componentRefsMap = new Map<string, ComponentRefsType>();\r\n /** 初始化组件 */\r\n function initComponent(uniqueId = '') {\r\n let componentRefs = componentRefsMap.get(uniqueId);\r\n if (!componentRefs) {\r\n componentRefs = {\r\n Instance: ref(),\r\n comp: shallowRef<InstanceComponent | VNode>(),\r\n attrs: ref<Record<string, any>>({}),\r\n };\r\n componentRefsMap.set(uniqueId, componentRefs);\r\n onBeforeUnmount(() => removeComponent(uniqueId));\r\n }\r\n // 使用缓存数据初始化数据\r\n const bufferData = dataBufferMap.get(uniqueId);\r\n if (bufferData) {\r\n componentRefs.comp.value = bufferData.comp;\r\n componentRefs.attrs.value = bufferData.attrs;\r\n }\r\n\r\n return {\r\n componentRef: componentRefs.Instance,\r\n componentNeo: componentRefs.comp,\r\n componentAttrs: componentRefs.attrs,\r\n };\r\n }\r\n\r\n /** 获取实例 */\r\n function getComponent(uniqueId = '') {\r\n return componentRefsMap.get(uniqueId);\r\n }\r\n\r\n /** 移除实例 */\r\n function removeComponent(uniqueId = '') {\r\n dataBufferMap.delete(uniqueId);\r\n componentRefsMap.delete(uniqueId);\r\n }\r\n\r\n /** 设置组件数据 */\r\n function setComponent(uniqueId = '', comp: InstanceComponent | VNode, attrs: Record<string, any>) {\r\n const componentRefs = getComponent(uniqueId);\r\n if (componentRefs) {\r\n componentRefs.comp.value = comp;\r\n componentRefs.attrs.value = attrs;\r\n }\r\n dataBufferMap.set(uniqueId, { comp, attrs });\r\n }\r\n\r\n return { initComponent, setComponent, getComponent, removeComponent };\r\n});\r\n"],"names":["useComponentState","createGlobalState","dataBufferMap","componentRefsMap","initComponent","uniqueId","componentRefs","ref","shallowRef","onBeforeUnmount","removeComponent","bufferData","getComponent","setComponent","comp","attrs"],"mappings":";;AAca,MAAAA,IAAoBC,EAAkB,MAAM;AAEjD,QAAAC,wBAAoB,IAA6E,GAEjGC,wBAAuB,IAA+B;AAEnD,WAAAC,EAAcC,IAAW,IAAI;AAChC,QAAAC,IAAgBH,EAAiB,IAAIE,CAAQ;AACjD,IAAKC,MACaA,IAAA;AAAA,MACd,UAAUC,EAAI;AAAA,MACd,MAAMC,EAAsC;AAAA,MAC5C,OAAOD,EAAyB,CAAE,CAAA;AAAA,IACpC,GACiBJ,EAAA,IAAIE,GAAUC,CAAa,GAC5BG,EAAA,MAAMC,EAAgBL,CAAQ,CAAC;AAG3C,UAAAM,IAAaT,EAAc,IAAIG,CAAQ;AAC7C,WAAIM,MACYL,EAAA,KAAK,QAAQK,EAAW,MACxBL,EAAA,MAAM,QAAQK,EAAW,QAGlC;AAAA,MACL,cAAcL,EAAc;AAAA,MAC5B,cAAcA,EAAc;AAAA,MAC5B,gBAAgBA,EAAc;AAAA,IAChC;AAAA,EAAA;AAIO,WAAAM,EAAaP,IAAW,IAAI;AAC5B,WAAAF,EAAiB,IAAIE,CAAQ;AAAA,EAAA;AAI7B,WAAAK,EAAgBL,IAAW,IAAI;AACtC,IAAAH,EAAc,OAAOG,CAAQ,GAC7BF,EAAiB,OAAOE,CAAQ;AAAA,EAAA;AAIlC,WAASQ,EAAaR,IAAW,IAAIS,GAAiCC,GAA4B;AAC1F,UAAAT,IAAgBM,EAAaP,CAAQ;AAC3C,IAAIC,MACFA,EAAc,KAAK,QAAQQ,GAC3BR,EAAc,MAAM,QAAQS,IAE9Bb,EAAc,IAAIG,GAAU,EAAE,MAAAS,GAAM,OAAAC,GAAO;AAAA,EAAA;AAG7C,SAAO,EAAE,eAAAX,GAAe,cAAAS,GAAc,cAAAD,GAAc,iBAAAF,EAAgB;AACtE,CAAC;"}
@@ -1,4 +1,4 @@
1
- import { defineComponent as m, useCssVars as p, computed as a, ref as i, onMounted as d, openBlock as f, createElementBlock as g, normalizeClass as v, normalizeStyle as R, createElementVNode as x, renderSlot as y } from "vue";
1
+ import { defineComponent as m, useCssVars as p, computed as a, ref as i, onMounted as d, createElementBlock as f, openBlock as g, normalizeStyle as v, normalizeClass as R, createElementVNode as x, renderSlot as y } from "vue";
2
2
  import { useResizeObserver as z } from "@vueuse/core";
3
3
  import { debounce as _ } from "lodash-es";
4
4
  const B = /* @__PURE__ */ m({
@@ -19,9 +19,9 @@ const B = /* @__PURE__ */ m({
19
19
  }, t.transitionTime);
20
20
  return z(o, r), d(() => {
21
21
  r();
22
- }), (e, h) => (f(), g("div", {
23
- class: v(["mt-expand", { "mt-expand-transition": !!e.transitionTime }]),
24
- style: R(c.value)
22
+ }), (e, h) => (g(), f("div", {
23
+ class: R(["mt-expand", { "mt-expand-transition": !!e.transitionTime }]),
24
+ style: v(c.value)
25
25
  }, [
26
26
  x("div", {
27
27
  ref_key: "contentRef",
@@ -1 +1 @@
1
- {"version":3,"file":"sort.mjs","sources":["../../../../../../packages/components/sort/src/sort.ts"],"sourcesContent":["import type { PropType, VNode } from 'vue';\nimport { computed, defineComponent } from 'vue';\n\nexport interface SortSpaceProps {\n /** 排序配置 */\n sortList?: (string | number)[]\n /** 排序key名 */\n keyName?: string\n}\n\nexport default defineComponent({\n name: 'MtSort',\n props: {\n /** 排序配置 */\n sortList: {\n type: Array as PropType<(string | number)[]>,\n default: () => [],\n },\n /** 排序key名 */\n keyName: {\n type: String,\n default: 'sort-key',\n },\n },\n setup(props, { slots }) {\n const renderVNodes = computed(() => {\n const vNodeList = slots.default?.() || [];\n const sortVNodeMap = getVNodeMap(props.keyName, vNodeList);\n const sortVNodeList = Array.from(new Set(props.sortList)).map(key => sortVNodeMap[key]).filter(Boolean);\n return sortDefaultVNodes(props.keyName, vNodeList, props.sortList, sortVNodeList);\n });\n\n return () => renderVNodes.value;\n },\n});\n\n/** 获取插槽中需要排序的节点 */\nfunction getVNodeMap(keyName: string, vNodeList: VNode[], vNodeMap: Record<(string | number), VNode> = {}) {\n vNodeList.forEach((item) => {\n const sortKey = item.props?.[keyName];\n if (sortKey) {\n if (vNodeMap[sortKey]) {\n console.warn(`<mt-sort-space> ${keyName}: ${sortKey} repeat`);\n }\n else {\n vNodeMap[sortKey] = item;\n }\n return;\n }\n if (Array.isArray(item.children)) {\n getVNodeMap(keyName, item.children as VNode[], vNodeMap);\n }\n });\n return vNodeMap;\n}\n\n/** 根据排序后的节点跟换位置 */\nfunction sortDefaultVNodes(keyName: string, vNodeList: VNode[], sortList: (string | number)[], sortVNodeList: VNode[]) {\n const newList: VNode[] = [];\n vNodeList.forEach((vNode) => {\n const sortKey = vNode.props?.[keyName];\n if (sortKey && sortList.includes(sortKey)) {\n const sortVNode = sortVNodeList.shift();\n if (sortVNode) {\n newList.push(sortVNode);\n return;\n }\n }\n if (Array.isArray(vNode.children)) {\n vNode = { ...vNode }; // 避免修改原节点数据\n vNode.children = sortDefaultVNodes(keyName, vNode.children as VNode[], sortList, sortVNodeList);\n }\n newList.push(vNode);\n });\n return newList;\n}\n"],"names":["Sort","defineComponent","props","slots","renderVNodes","computed","vNodeList","_a","sortVNodeMap","getVNodeMap","sortVNodeList","key","sortDefaultVNodes","keyName","vNodeMap","item","sortKey","sortList","newList","vNode","sortVNode"],"mappings":";AAUA,MAAAA,IAAeC,EAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA;AAAA,IAEL,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS,MAAM,CAAA;AAAA,IACjB;AAAA;AAAA,IAEA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA,EACA,MAAMC,GAAO,EAAE,OAAAC,KAAS;AAChB,UAAAC,IAAeC,EAAS,MAAM;;AAClC,YAAMC,MAAYC,IAAAJ,EAAM,YAAN,gBAAAI,EAAA,KAAAJ,OAAqB,CAAC,GAClCK,IAAeC,EAAYP,EAAM,SAASI,CAAS,GACnDI,IAAgB,MAAM,KAAK,IAAI,IAAIR,EAAM,QAAQ,CAAC,EAAE,IAAI,OAAOM,EAAaG,CAAG,CAAC,EAAE,OAAO,OAAO;AACtG,aAAOC,EAAkBV,EAAM,SAASI,GAAWJ,EAAM,UAAUQ,CAAa;AAAA,IAAA,CACjF;AAED,WAAO,MAAMN,EAAa;AAAA,EAAA;AAE9B,CAAC;AAGD,SAASK,EAAYI,GAAiBP,GAAoBQ,IAA6C,CAAA,GAAI;AAC/F,SAAAR,EAAA,QAAQ,CAACS,MAAS;;AACpB,UAAAC,KAAUT,IAAAQ,EAAK,UAAL,gBAAAR,EAAaM;AAC7B,QAAIG,GAAS;AACP,MAAAF,EAASE,CAAO,IAClB,QAAQ,KAAK,mBAAmBH,CAAO,KAAKG,CAAO,SAAS,IAG5DF,EAASE,CAAO,IAAID;AAEtB;AAAA,IAAA;AAEF,IAAI,MAAM,QAAQA,EAAK,QAAQ,KACjBN,EAAAI,GAASE,EAAK,UAAqBD,CAAQ;AAAA,EACzD,CACD,GACMA;AACT;AAGA,SAASF,EAAkBC,GAAiBP,GAAoBW,GAA+BP,GAAwB;AACrH,QAAMQ,IAAmB,CAAC;AAChB,SAAAZ,EAAA,QAAQ,CAACa,MAAU;;AACrB,UAAAH,KAAUT,IAAAY,EAAM,UAAN,gBAAAZ,EAAcM;AAC9B,QAAIG,KAAWC,EAAS,SAASD,CAAO,GAAG;AACnC,YAAAI,IAAYV,EAAc,MAAM;AACtC,UAAIU,GAAW;AACb,QAAAF,EAAQ,KAAKE,CAAS;AACtB;AAAA,MAAA;AAAA,IACF;AAEF,IAAI,MAAM,QAAQD,EAAM,QAAQ,MACtBA,IAAA,EAAE,GAAGA,EAAM,GACnBA,EAAM,WAAWP,EAAkBC,GAASM,EAAM,UAAqBF,GAAUP,CAAa,IAEhGQ,EAAQ,KAAKC,CAAK;AAAA,EAAA,CACnB,GACMD;AACT;"}
1
+ {"version":3,"file":"sort.mjs","sources":["../../../../../../packages/components/sort/src/sort.ts"],"sourcesContent":["import type { PropType, VNode } from 'vue';\r\nimport { computed, defineComponent } from 'vue';\r\n\r\nexport interface SortSpaceProps {\r\n /** 排序配置 */\r\n sortList?: (string | number)[]\r\n /** 排序key名 */\r\n keyName?: string\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'MtSort',\r\n props: {\r\n /** 排序配置 */\r\n sortList: {\r\n type: Array as PropType<(string | number)[]>,\r\n default: () => [],\r\n },\r\n /** 排序key名 */\r\n keyName: {\r\n type: String,\r\n default: 'sort-key',\r\n },\r\n },\r\n setup(props, { slots }) {\r\n const renderVNodes = computed(() => {\r\n const vNodeList = slots.default?.() || [];\r\n const sortVNodeMap = getVNodeMap(props.keyName, vNodeList);\r\n const sortVNodeList = Array.from(new Set(props.sortList)).map(key => sortVNodeMap[key]).filter(Boolean);\r\n return sortDefaultVNodes(props.keyName, vNodeList, props.sortList, sortVNodeList);\r\n });\r\n\r\n return () => renderVNodes.value;\r\n },\r\n});\r\n\r\n/** 获取插槽中需要排序的节点 */\r\nfunction getVNodeMap(keyName: string, vNodeList: VNode[], vNodeMap: Record<(string | number), VNode> = {}) {\r\n vNodeList.forEach((item) => {\r\n const sortKey = item.props?.[keyName];\r\n if (sortKey) {\r\n if (vNodeMap[sortKey]) {\r\n console.warn(`<mt-sort-space> ${keyName}: ${sortKey} repeat`);\r\n }\r\n else {\r\n vNodeMap[sortKey] = item;\r\n }\r\n return;\r\n }\r\n if (Array.isArray(item.children)) {\r\n getVNodeMap(keyName, item.children as VNode[], vNodeMap);\r\n }\r\n });\r\n return vNodeMap;\r\n}\r\n\r\n/** 根据排序后的节点跟换位置 */\r\nfunction sortDefaultVNodes(keyName: string, vNodeList: VNode[], sortList: (string | number)[], sortVNodeList: VNode[]) {\r\n const newList: VNode[] = [];\r\n vNodeList.forEach((vNode) => {\r\n const sortKey = vNode.props?.[keyName];\r\n if (sortKey && sortList.includes(sortKey)) {\r\n const sortVNode = sortVNodeList.shift();\r\n if (sortVNode) {\r\n newList.push(sortVNode);\r\n return;\r\n }\r\n }\r\n if (Array.isArray(vNode.children)) {\r\n vNode = { ...vNode }; // 避免修改原节点数据\r\n vNode.children = sortDefaultVNodes(keyName, vNode.children as VNode[], sortList, sortVNodeList);\r\n }\r\n newList.push(vNode);\r\n });\r\n return newList;\r\n}\r\n"],"names":["Sort","defineComponent","props","slots","renderVNodes","computed","vNodeList","_a","sortVNodeMap","getVNodeMap","sortVNodeList","key","sortDefaultVNodes","keyName","vNodeMap","item","sortKey","sortList","newList","vNode","sortVNode"],"mappings":";AAUA,MAAAA,IAAeC,EAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA;AAAA,IAEL,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS,MAAM,CAAA;AAAA,IACjB;AAAA;AAAA,IAEA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,EAEb;AAAA,EACA,MAAMC,GAAO,EAAE,OAAAC,KAAS;AAChB,UAAAC,IAAeC,EAAS,MAAM;;AAClC,YAAMC,MAAYC,IAAAJ,EAAM,YAAN,gBAAAI,EAAA,KAAAJ,OAAqB,CAAC,GAClCK,IAAeC,EAAYP,EAAM,SAASI,CAAS,GACnDI,IAAgB,MAAM,KAAK,IAAI,IAAIR,EAAM,QAAQ,CAAC,EAAE,IAAI,OAAOM,EAAaG,CAAG,CAAC,EAAE,OAAO,OAAO;AACtG,aAAOC,EAAkBV,EAAM,SAASI,GAAWJ,EAAM,UAAUQ,CAAa;AAAA,IAAA,CACjF;AAED,WAAO,MAAMN,EAAa;AAAA,EAAA;AAE9B,CAAC;AAGD,SAASK,EAAYI,GAAiBP,GAAoBQ,IAA6C,CAAA,GAAI;AAC/F,SAAAR,EAAA,QAAQ,CAACS,MAAS;;AACpB,UAAAC,KAAUT,IAAAQ,EAAK,UAAL,gBAAAR,EAAaM;AAC7B,QAAIG,GAAS;AACP,MAAAF,EAASE,CAAO,IAClB,QAAQ,KAAK,mBAAmBH,CAAO,KAAKG,CAAO,SAAS,IAG5DF,EAASE,CAAO,IAAID;AAEtB;AAAA,IAAA;AAEF,IAAI,MAAM,QAAQA,EAAK,QAAQ,KACjBN,EAAAI,GAASE,EAAK,UAAqBD,CAAQ;AAAA,EACzD,CACD,GACMA;AACT;AAGA,SAASF,EAAkBC,GAAiBP,GAAoBW,GAA+BP,GAAwB;AACrH,QAAMQ,IAAmB,CAAC;AAChB,SAAAZ,EAAA,QAAQ,CAACa,MAAU;;AACrB,UAAAH,KAAUT,IAAAY,EAAM,UAAN,gBAAAZ,EAAcM;AAC9B,QAAIG,KAAWC,EAAS,SAASD,CAAO,GAAG;AACnC,YAAAI,IAAYV,EAAc,MAAM;AACtC,UAAIU,GAAW;AACb,QAAAF,EAAQ,KAAKE,CAAS;AACtB;AAAA,MAAA;AAAA,IACF;AAEF,IAAI,MAAM,QAAQD,EAAM,QAAQ,MACtBA,IAAA,EAAE,GAAGA,EAAM,GACnBA,EAAM,WAAWP,EAAkBC,GAASM,EAAM,UAAqBF,GAAUP,CAAa,IAEhGQ,EAAQ,KAAKC,CAAK;AAAA,EAAA,CACnB,GACMD;AACT;"}
@@ -1,4 +1,4 @@
1
- import { defineComponent as M, computed as i, openBlock as o, createElementBlock as u, createElementVNode as v, Fragment as p, renderList as d, normalizeStyle as m, renderSlot as _, createTextVNode as k, toDisplayString as b } from "vue";
1
+ import { defineComponent as M, computed as i, createElementBlock as o, openBlock as u, createElementVNode as v, Fragment as p, renderList as d, normalizeStyle as m, renderSlot as _, createTextVNode as k, toDisplayString as b } from "vue";
2
2
  const D = { class: "mt-table" }, E = ["colspan", "rowspan"], N = ["colspan", "rowspan"], T = /* @__PURE__ */ M({
3
3
  name: "MtTable",
4
4
  __name: "table",
@@ -36,15 +36,15 @@ const D = { class: "mt-table" }, E = ["colspan", "rowspan"], N = ["colspan", "ro
36
36
  return s.map((r) => (!r && l > 0 && (r = Math.ceil(l / n), n--, l -= r), r));
37
37
  });
38
38
  }
39
- return (t, s) => (o(), u("table", D, [
39
+ return (t, s) => (u(), o("table", D, [
40
40
  v("thead", null, [
41
- (o(!0), u(p, null, d(h.value, (a, e) => (o(), u("tr", {
41
+ (u(!0), o(p, null, d(h.value, (a, e) => (u(), o("tr", {
42
42
  key: e,
43
43
  style: m(a.headStyle)
44
44
  }, [
45
- (o(!0), u(p, null, d(a.columns, (n, l) => {
45
+ (u(!0), o(p, null, d(a.columns, (n, l) => {
46
46
  var r, c;
47
- return o(), u("th", {
47
+ return u(), o("th", {
48
48
  key: `${n.title}-${l}`,
49
49
  colspan: K.value[e][l],
50
50
  rowspan: (r = n.head) == null ? void 0 : r.rowSpan,
@@ -63,14 +63,14 @@ const D = { class: "mt-table" }, E = ["colspan", "rowspan"], N = ["colspan", "ro
63
63
  ], 4))), 128))
64
64
  ]),
65
65
  v("tbody", null, [
66
- (o(!0), u(p, null, d(t.data, (a, e) => (o(), u(p, { key: e }, [
67
- (o(!0), u(p, null, d(y.value, (n, l) => (o(), u("tr", {
66
+ (u(!0), o(p, null, d(t.data, (a, e) => (u(), o(p, { key: e }, [
67
+ (u(!0), o(p, null, d(y.value, (n, l) => (u(), o("tr", {
68
68
  key: l,
69
69
  style: m(n.rowStyle)
70
70
  }, [
71
- (o(!0), u(p, null, d(n.columns, (r, c) => {
71
+ (u(!0), o(p, null, d(n.columns, (r, c) => {
72
72
  var C, g;
73
- return o(), u("td", {
73
+ return u(), o("td", {
74
74
  key: `${r.dataKey}-${c}`,
75
75
  colspan: L.value[l][c],
76
76
  rowspan: (C = r.cell) == null ? void 0 : C.rowSpan,
package/es/index.mjs CHANGED
@@ -1,9 +1,13 @@
1
- import { MtExpand as t } from "./components/expand/index.mjs";
2
- import { MtSort as p } from "./components/sort/index.mjs";
3
- import { MtTable as f } from "./components/table/index.mjs";
1
+ import { MtComponentNeo as e } from "./components/component-neo/index.mjs";
2
+ import { MtExpand as p } from "./components/expand/index.mjs";
3
+ import { MtSort as x } from "./components/sort/index.mjs";
4
+ import { MtTable as n } from "./components/table/index.mjs";
5
+ import { useComponentNeo as a } from "./components/component-neo/src/hooks/use-component-neo.mjs";
4
6
  export {
5
- t as MtExpand,
6
- p as MtSort,
7
- f as MtTable
7
+ e as MtComponentNeo,
8
+ p as MtExpand,
9
+ x as MtSort,
10
+ n as MtTable,
11
+ a as useComponentNeo
8
12
  };
9
13
  //# sourceMappingURL=index.mjs.map
package/es/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./src/component-neo.vue.js");require("vue");require("./src/hooks/use-component-state.js");e.default.install=t=>{e.default.name&&t.component(e.default.name,e.default)};const o=e.default;exports.MtComponentNeo=o;
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../packages/components/component-neo/index.ts"],"sourcesContent":["import type { App } from 'vue';\r\nimport ComponentNeo from './src/component-neo.vue';\r\n\r\nComponentNeo.install = (app: App): void => {\r\n if (ComponentNeo.name) {\r\n app.component(ComponentNeo.name, ComponentNeo);\r\n }\r\n};\r\n\r\nexport const MtComponentNeo = ComponentNeo;\r\n\r\nexport * from './src/component-neo.vue';\r\nexport * from './src/hooks/use-component-neo';\r\n"],"names":["ComponentNeo","app","MtComponentNeo"],"mappings":"2LAGAA,EAAAA,QAAa,QAAWC,GAAmB,CACrCD,EAAAA,QAAa,MACXC,EAAA,UAAUD,UAAa,KAAMA,EAAAA,OAAY,CAEjD,EAEO,MAAME,EAAiBF,EAAAA"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),y=require("./hooks/use-component-state.js"),_=e.defineComponent({name:"MtComponentNeo",inheritAttrs:!1,__name:"component-neo",props:{uniqueId:{default:""},is:{}},emits:["toggleComponent"],setup(l,{expose:i,emit:v}){const s=l,d=v,{initComponent:f}=y.useComponentState(),{componentRef:u,componentNeo:C,componentAttrs:c}=f(s.uniqueId),a=o=>u.value=o,g=e.useAttrs(),m=e.computed(()=>{const o={};for(const n in c.value)typeof c.value[n]<"u"&&(o[n]=e.unref(c.value[n]));return Object.assign(o,g)}),t=e.computed(()=>C.value||s.is),r=e.computed(()=>t.value?e.h(t.value,m.value):e.h(e.Comment,"componentNeo is empty")),p=e.computed(()=>typeof t.value=="object"&&"name"in t.value?t.value.name:void 0);return e.watch(t,async()=>{await e.nextTick(),d("toggleComponent",p.value,u.value)}),i({componentRef:u}),(o,n)=>e.renderSlot(o.$slots,"default",{Component:r.value,compRef:a,attrs:m.value,compName:p.value},()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value),{ref:a}))])}});exports.default=_;
2
+ //# sourceMappingURL=component-neo.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-neo.vue.js","sources":["../../../../../../packages/components/component-neo/src/component-neo.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { ComponentNeoProps } from './component-neo';\r\nimport { Comment, computed, h, nextTick, unref, useAttrs, watch } from 'vue';\r\nimport { useComponentState } from './hooks/use-component-state';\r\n\r\ndefineOptions({ name: 'MtComponentNeo', inheritAttrs: false });\r\n\r\nconst props = withDefaults(\r\n defineProps<ComponentNeoProps>(),\r\n { uniqueId: '', onToggle: () => { } },\r\n);\r\n\r\nconst emit = defineEmits<{\r\n (e: 'toggleComponent', name?: string, ref?: any): void\r\n}>();\r\n\r\nconst { initComponent } = useComponentState();\r\nconst { componentRef, componentNeo, componentAttrs } = initComponent(props.uniqueId);\r\nconst compRef = (el: Element) => componentRef.value = el;\r\n\r\nconst commonAttrs = useAttrs();\r\n/** 结合注入的属性和公共属性 */\r\nconst compAttrs = computed(() => {\r\n const newAttrs: Record<string, any> = {};\r\n // 仅传入有值的属性\r\n for (const key in componentAttrs.value) {\r\n if (typeof componentAttrs.value[key] !== 'undefined') {\r\n newAttrs[key] = unref(componentAttrs.value[key]); // 支持ref数据转入\r\n }\r\n }\r\n return Object.assign(newAttrs, commonAttrs);\r\n});\r\n\r\nconst compInstance = computed(() => componentNeo.value || props.is);\r\n\r\nconst compVNode = computed(() => {\r\n return !compInstance.value ? h(Comment, 'componentNeo is empty') : h(compInstance.value, compAttrs.value);\r\n});\r\n\r\nconst compName = computed(() => {\r\n return typeof compInstance.value === 'object' && 'name' in compInstance.value ? compInstance.value.name : undefined;\r\n});\r\n\r\n// 监听组件切换,触发回调\r\nwatch(compInstance, async () => {\r\n await nextTick();\r\n emit('toggleComponent', compName.value, componentRef.value);\r\n});\r\n\r\ndefineExpose({ componentRef });\r\n</script>\r\n\r\n<template>\r\n <!-- eslint-disable-next-line vue/attribute-hyphenation -->\r\n <slot :Component=\"compVNode\" :compRef=\"compRef\" :attrs=\"compAttrs\" :compName=\"compName\">\r\n <component :is=\"compVNode\" :ref=\"compRef\" />\r\n </slot>\r\n</template>\r\n"],"names":["props","__props","emit","__emit","initComponent","useComponentState","componentRef","componentNeo","componentAttrs","compRef","el","commonAttrs","useAttrs","compAttrs","computed","newAttrs","key","unref","compInstance","compVNode","h","Comment","compName","watch","nextTick","__expose"],"mappings":"0VAOA,MAAMA,EAAQC,EAKRC,EAAOC,EAIP,CAAE,cAAAC,CAAc,EAAIC,oBAAkB,EACtC,CAAE,aAAAC,EAAc,aAAAC,EAAc,eAAAC,CAAmB,EAAAJ,EAAcJ,EAAM,QAAQ,EAC7ES,EAAWC,GAAgBJ,EAAa,MAAQI,EAEhDC,EAAcC,EAAAA,SAAS,EAEvBC,EAAYC,EAAAA,SAAS,IAAM,CAC/B,MAAMC,EAAgC,CAAC,EAE5B,UAAAC,KAAOR,EAAe,MAC3B,OAAOA,EAAe,MAAMQ,CAAG,EAAM,MACvCD,EAASC,CAAG,EAAIC,EAAAA,MAAMT,EAAe,MAAMQ,CAAG,CAAC,GAG5C,OAAA,OAAO,OAAOD,EAAUJ,CAAW,CAAA,CAC3C,EAEKO,EAAeJ,EAAAA,SAAS,IAAMP,EAAa,OAASP,EAAM,EAAE,EAE5DmB,EAAYL,EAAAA,SAAS,IACjBI,EAAa,MAA8CE,EAAAA,EAAEF,EAAa,MAAOL,EAAU,KAAK,EAA3EO,EAAAA,EAAEC,EAAAA,QAAS,uBAAuB,CAChE,EAEKC,EAAWR,EAAAA,SAAS,IACjB,OAAOI,EAAa,OAAU,UAAY,SAAUA,EAAa,MAAQA,EAAa,MAAM,KAAO,MAC3G,EAGDK,OAAAA,EAAA,MAAML,EAAc,SAAY,CAC9B,MAAMM,WAAS,EACftB,EAAK,kBAAmBoB,EAAS,MAAOhB,EAAa,KAAK,CAAA,CAC3D,EAEYmB,EAAA,CAAE,aAAAnB,EAAc"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./component-neo.vue.js");exports.default=e.default;
2
+ //# sourceMappingURL=component-neo.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-neo.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("vue"),C=require("./use-component-state.js");function m(r=""){const{setComponent:l,getComponent:s}=C.useComponentState();async function i(t,c){var u;try{const a=typeof t=="function"?(await t()).default:t,n={};for(let e in c){const o=c[e];e.startsWith("vModel:")?(e=e.replace("vModel:",""),n[e]=o,n[`onUpdate:${e}`]=p=>{"value"in o&&(o.value=p)}):n[e]=o}return l(r,a,n),await f.nextTick(),(u=s(r))==null?void 0:u.Instance.value}catch(a){console.error(a)}}return{getComponentRef:()=>{var t;return(t=s(r))==null?void 0:t.Instance.value},toggleComponent:i}}exports.useComponentNeo=m;
2
+ //# sourceMappingURL=use-component-neo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-component-neo.js","sources":["../../../../../../../packages/components/component-neo/src/hooks/use-component-neo.ts"],"sourcesContent":["import type { InstanceComponent } from '../component-neo';\r\nimport { nextTick, type VNode } from 'vue';\r\nimport { useComponentState } from './use-component-state';\r\n\r\nexport type ImportComponentFn = () => Promise<Record<string, any>>;\r\nexport type DynamicComponent = InstanceComponent | ImportComponentFn | VNode;\r\n\r\nexport function useComponentNeo(uniqueId = '') {\r\n const { setComponent, getComponent } = useComponentState();\r\n\r\n /**\r\n * 切换渲染的组件\r\n * @param comp 组件,可传入两种类型,1.直接函数格式返回import动态导入 2.组件类型\r\n * @param attrs 组件属性,可使用`on事件`方式添加事件方法,属性支持Ref类型进行绑定以实现动态变化, 支持通过{'vModal:value': value}方式双向绑定数据\r\n */\r\n async function toggleComponent(comp: DynamicComponent, attrs?: Record<string, any>) {\r\n try {\r\n const renderComp = typeof comp === 'function' ? (await (comp as ImportComponentFn)()).default : comp;\r\n const renderAttrs: Record<string, any> = {};\r\n for (let key in attrs) {\r\n const bindValue = attrs[key];\r\n // 兼容vModal\r\n if (key.startsWith('vModel:')) {\r\n key = key.replace('vModel:', '');\r\n renderAttrs[key] = bindValue;\r\n renderAttrs[`onUpdate:${key}`] = (value: any) => {\r\n if ('value' in bindValue) {\r\n bindValue.value = value;\r\n }\r\n };\r\n }\r\n else {\r\n renderAttrs[key] = bindValue;\r\n }\r\n }\r\n setComponent(uniqueId, renderComp, renderAttrs);\r\n await nextTick();\r\n return getComponent(uniqueId)?.Instance.value;\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n return {\r\n getComponentRef: () => getComponent(uniqueId)?.Instance.value,\r\n toggleComponent,\r\n };\r\n};\r\n"],"names":["useComponentNeo","uniqueId","setComponent","getComponent","useComponentState","toggleComponent","comp","attrs","renderComp","renderAttrs","key","bindValue","value","nextTick","_a","e"],"mappings":"6IAOgB,SAAAA,EAAgBC,EAAW,GAAI,CAC7C,KAAM,CAAE,aAAAC,EAAc,aAAAC,CAAa,EAAIC,oBAAkB,EAO1C,eAAAC,EAAgBC,EAAwBC,EAA6B,OAC9E,GAAA,CACF,MAAMC,EAAa,OAAOF,GAAS,YAAc,MAAOA,EAAA,GAA8B,QAAUA,EAC1FG,EAAmC,CAAC,EAC1C,QAASC,KAAOH,EAAO,CACf,MAAAI,EAAYJ,EAAMG,CAAG,EAEvBA,EAAI,WAAW,SAAS,GACpBA,EAAAA,EAAI,QAAQ,UAAW,EAAE,EAC/BD,EAAYC,CAAG,EAAIC,EACnBF,EAAY,YAAYC,CAAG,EAAE,EAAKE,GAAe,CAC3C,UAAWD,IACbA,EAAU,MAAQC,EAEtB,GAGAH,EAAYC,CAAG,EAAIC,CACrB,CAEW,OAAAT,EAAAD,EAAUO,EAAYC,CAAW,EAC9C,MAAMI,WAAS,GACRC,EAAAX,EAAaF,CAAQ,IAArB,YAAAa,EAAwB,SAAS,YAEnCC,EAAG,CACR,QAAQ,MAAMA,CAAC,CAAA,CACjB,CAEK,MAAA,CACL,gBAAiB,IAAA,OAAM,OAAAD,EAAAX,EAAaF,CAAQ,IAArB,YAAAa,EAAwB,SAAS,OACxD,gBAAAT,CACF,CACF"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("@vueuse/core"),c=require("vue"),u=l.createGlobalState(()=>{const r=new Map,n=new Map;function f(e=""){let t=n.get(e);t||(t={Instance:c.ref(),comp:c.shallowRef(),attrs:c.ref({})},n.set(e,t),c.onBeforeUnmount(()=>p(e)));const o=r.get(e);return o&&(t.comp.value=o.comp,t.attrs.value=o.attrs),{componentRef:t.Instance,componentNeo:t.comp,componentAttrs:t.attrs}}function s(e=""){return n.get(e)}function p(e=""){r.delete(e),n.delete(e)}function m(e="",t,o){const a=s(e);a&&(a.comp.value=t,a.attrs.value=o),r.set(e,{comp:t,attrs:o})}return{initComponent:f,setComponent:m,getComponent:s,removeComponent:p}});exports.useComponentState=u;
2
+ //# sourceMappingURL=use-component-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-component-state.js","sources":["../../../../../../../packages/components/component-neo/src/hooks/use-component-state.ts"],"sourcesContent":["import type { InstanceComponent } from '../component-neo';\r\nimport { createGlobalState } from '@vueuse/core';\r\nimport { onBeforeUnmount, ref, type Ref, shallowRef, type ShallowRef, type VNode } from 'vue';\r\n\r\ninterface ComponentRefsType {\r\n /** 实例 */\r\n Instance: Ref<any>\r\n /** 组件 */\r\n comp: ShallowRef<InstanceComponent | VNode | undefined>\r\n /** 属性 */\r\n attrs: Ref<Record<string, any>>\r\n}\r\n\r\n/** 组件状态 */\r\nexport const useComponentState = createGlobalState(() => {\r\n /** 缓存组件数据,组件未实例化时,可先缓存后赋值 */\r\n const dataBufferMap = new Map<string, { comp: InstanceComponent | VNode, attrs: Record<string, any> }>();\r\n /** 实例化后的组件 */\r\n const componentRefsMap = new Map<string, ComponentRefsType>();\r\n /** 初始化组件 */\r\n function initComponent(uniqueId = '') {\r\n let componentRefs = componentRefsMap.get(uniqueId);\r\n if (!componentRefs) {\r\n componentRefs = {\r\n Instance: ref(),\r\n comp: shallowRef<InstanceComponent | VNode>(),\r\n attrs: ref<Record<string, any>>({}),\r\n };\r\n componentRefsMap.set(uniqueId, componentRefs);\r\n onBeforeUnmount(() => removeComponent(uniqueId));\r\n }\r\n // 使用缓存数据初始化数据\r\n const bufferData = dataBufferMap.get(uniqueId);\r\n if (bufferData) {\r\n componentRefs.comp.value = bufferData.comp;\r\n componentRefs.attrs.value = bufferData.attrs;\r\n }\r\n\r\n return {\r\n componentRef: componentRefs.Instance,\r\n componentNeo: componentRefs.comp,\r\n componentAttrs: componentRefs.attrs,\r\n };\r\n }\r\n\r\n /** 获取实例 */\r\n function getComponent(uniqueId = '') {\r\n return componentRefsMap.get(uniqueId);\r\n }\r\n\r\n /** 移除实例 */\r\n function removeComponent(uniqueId = '') {\r\n dataBufferMap.delete(uniqueId);\r\n componentRefsMap.delete(uniqueId);\r\n }\r\n\r\n /** 设置组件数据 */\r\n function setComponent(uniqueId = '', comp: InstanceComponent | VNode, attrs: Record<string, any>) {\r\n const componentRefs = getComponent(uniqueId);\r\n if (componentRefs) {\r\n componentRefs.comp.value = comp;\r\n componentRefs.attrs.value = attrs;\r\n }\r\n dataBufferMap.set(uniqueId, { comp, attrs });\r\n }\r\n\r\n return { initComponent, setComponent, getComponent, removeComponent };\r\n});\r\n"],"names":["useComponentState","createGlobalState","dataBufferMap","componentRefsMap","initComponent","uniqueId","componentRefs","ref","shallowRef","onBeforeUnmount","removeComponent","bufferData","getComponent","setComponent","comp","attrs"],"mappings":"iIAcaA,EAAoBC,oBAAkB,IAAM,CAEjD,MAAAC,MAAoB,IAEpBC,MAAuB,IAEpB,SAAAC,EAAcC,EAAW,GAAI,CAChC,IAAAC,EAAgBH,EAAiB,IAAIE,CAAQ,EAC5CC,IACaA,EAAA,CACd,SAAUC,EAAAA,IAAI,EACd,KAAMC,EAAAA,WAAsC,EAC5C,MAAOD,EAAyB,IAAA,CAAE,CAAA,CACpC,EACiBJ,EAAA,IAAIE,EAAUC,CAAa,EAC5BG,kBAAA,IAAMC,EAAgBL,CAAQ,CAAC,GAG3C,MAAAM,EAAaT,EAAc,IAAIG,CAAQ,EAC7C,OAAIM,IACYL,EAAA,KAAK,MAAQK,EAAW,KACxBL,EAAA,MAAM,MAAQK,EAAW,OAGlC,CACL,aAAcL,EAAc,SAC5B,aAAcA,EAAc,KAC5B,eAAgBA,EAAc,KAChC,CAAA,CAIO,SAAAM,EAAaP,EAAW,GAAI,CAC5B,OAAAF,EAAiB,IAAIE,CAAQ,CAAA,CAI7B,SAAAK,EAAgBL,EAAW,GAAI,CACtCH,EAAc,OAAOG,CAAQ,EAC7BF,EAAiB,OAAOE,CAAQ,CAAA,CAIlC,SAASQ,EAAaR,EAAW,GAAIS,EAAiCC,EAA4B,CAC1F,MAAAT,EAAgBM,EAAaP,CAAQ,EACvCC,IACFA,EAAc,KAAK,MAAQQ,EAC3BR,EAAc,MAAM,MAAQS,GAE9Bb,EAAc,IAAIG,EAAU,CAAE,KAAAS,EAAM,MAAAC,EAAO,CAAA,CAG7C,MAAO,CAAE,cAAAX,EAAe,aAAAS,EAAc,aAAAD,EAAc,gBAAAF,CAAgB,CACtE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sort.js","sources":["../../../../../../packages/components/sort/src/sort.ts"],"sourcesContent":["import type { PropType, VNode } from 'vue';\nimport { computed, defineComponent } from 'vue';\n\nexport interface SortSpaceProps {\n /** 排序配置 */\n sortList?: (string | number)[]\n /** 排序key名 */\n keyName?: string\n}\n\nexport default defineComponent({\n name: 'MtSort',\n props: {\n /** 排序配置 */\n sortList: {\n type: Array as PropType<(string | number)[]>,\n default: () => [],\n },\n /** 排序key名 */\n keyName: {\n type: String,\n default: 'sort-key',\n },\n },\n setup(props, { slots }) {\n const renderVNodes = computed(() => {\n const vNodeList = slots.default?.() || [];\n const sortVNodeMap = getVNodeMap(props.keyName, vNodeList);\n const sortVNodeList = Array.from(new Set(props.sortList)).map(key => sortVNodeMap[key]).filter(Boolean);\n return sortDefaultVNodes(props.keyName, vNodeList, props.sortList, sortVNodeList);\n });\n\n return () => renderVNodes.value;\n },\n});\n\n/** 获取插槽中需要排序的节点 */\nfunction getVNodeMap(keyName: string, vNodeList: VNode[], vNodeMap: Record<(string | number), VNode> = {}) {\n vNodeList.forEach((item) => {\n const sortKey = item.props?.[keyName];\n if (sortKey) {\n if (vNodeMap[sortKey]) {\n console.warn(`<mt-sort-space> ${keyName}: ${sortKey} repeat`);\n }\n else {\n vNodeMap[sortKey] = item;\n }\n return;\n }\n if (Array.isArray(item.children)) {\n getVNodeMap(keyName, item.children as VNode[], vNodeMap);\n }\n });\n return vNodeMap;\n}\n\n/** 根据排序后的节点跟换位置 */\nfunction sortDefaultVNodes(keyName: string, vNodeList: VNode[], sortList: (string | number)[], sortVNodeList: VNode[]) {\n const newList: VNode[] = [];\n vNodeList.forEach((vNode) => {\n const sortKey = vNode.props?.[keyName];\n if (sortKey && sortList.includes(sortKey)) {\n const sortVNode = sortVNodeList.shift();\n if (sortVNode) {\n newList.push(sortVNode);\n return;\n }\n }\n if (Array.isArray(vNode.children)) {\n vNode = { ...vNode }; // 避免修改原节点数据\n vNode.children = sortDefaultVNodes(keyName, vNode.children as VNode[], sortList, sortVNodeList);\n }\n newList.push(vNode);\n });\n return newList;\n}\n"],"names":["Sort","defineComponent","props","slots","renderVNodes","computed","vNodeList","_a","sortVNodeMap","getVNodeMap","sortVNodeList","key","sortDefaultVNodes","keyName","vNodeMap","item","sortKey","sortList","newList","vNode","sortVNode"],"mappings":"mIAUAA,EAAeC,kBAAgB,CAC7B,KAAM,SACN,MAAO,CAEL,SAAU,CACR,KAAM,MACN,QAAS,IAAM,CAAA,CACjB,EAEA,QAAS,CACP,KAAM,OACN,QAAS,UAAA,CAEb,EACA,MAAMC,EAAO,CAAE,MAAAC,GAAS,CAChB,MAAAC,EAAeC,EAAAA,SAAS,IAAM,OAClC,MAAMC,IAAYC,EAAAJ,EAAM,UAAN,YAAAI,EAAA,KAAAJ,KAAqB,CAAC,EAClCK,EAAeC,EAAYP,EAAM,QAASI,CAAS,EACnDI,EAAgB,MAAM,KAAK,IAAI,IAAIR,EAAM,QAAQ,CAAC,EAAE,OAAWM,EAAaG,CAAG,CAAC,EAAE,OAAO,OAAO,EACtG,OAAOC,EAAkBV,EAAM,QAASI,EAAWJ,EAAM,SAAUQ,CAAa,CAAA,CACjF,EAED,MAAO,IAAMN,EAAa,KAAA,CAE9B,CAAC,EAGD,SAASK,EAAYI,EAAiBP,EAAoBQ,EAA6C,CAAA,EAAI,CAC/F,OAAAR,EAAA,QAASS,GAAS,OACpB,MAAAC,GAAUT,EAAAQ,EAAK,QAAL,YAAAR,EAAaM,GAC7B,GAAIG,EAAS,CACPF,EAASE,CAAO,EAClB,QAAQ,KAAK,mBAAmBH,CAAO,KAAKG,CAAO,SAAS,EAG5DF,EAASE,CAAO,EAAID,EAEtB,MAAA,CAEE,MAAM,QAAQA,EAAK,QAAQ,GACjBN,EAAAI,EAASE,EAAK,SAAqBD,CAAQ,CACzD,CACD,EACMA,CACT,CAGA,SAASF,EAAkBC,EAAiBP,EAAoBW,EAA+BP,EAAwB,CACrH,MAAMQ,EAAmB,CAAC,EAChB,OAAAZ,EAAA,QAASa,GAAU,OACrB,MAAAH,GAAUT,EAAAY,EAAM,QAAN,YAAAZ,EAAcM,GAC9B,GAAIG,GAAWC,EAAS,SAASD,CAAO,EAAG,CACnC,MAAAI,EAAYV,EAAc,MAAM,EACtC,GAAIU,EAAW,CACbF,EAAQ,KAAKE,CAAS,EACtB,MAAA,CACF,CAEE,MAAM,QAAQD,EAAM,QAAQ,IACtBA,EAAA,CAAE,GAAGA,CAAM,EACnBA,EAAM,SAAWP,EAAkBC,EAASM,EAAM,SAAqBF,EAAUP,CAAa,GAEhGQ,EAAQ,KAAKC,CAAK,CAAA,CACnB,EACMD,CACT"}
1
+ {"version":3,"file":"sort.js","sources":["../../../../../../packages/components/sort/src/sort.ts"],"sourcesContent":["import type { PropType, VNode } from 'vue';\r\nimport { computed, defineComponent } from 'vue';\r\n\r\nexport interface SortSpaceProps {\r\n /** 排序配置 */\r\n sortList?: (string | number)[]\r\n /** 排序key名 */\r\n keyName?: string\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'MtSort',\r\n props: {\r\n /** 排序配置 */\r\n sortList: {\r\n type: Array as PropType<(string | number)[]>,\r\n default: () => [],\r\n },\r\n /** 排序key名 */\r\n keyName: {\r\n type: String,\r\n default: 'sort-key',\r\n },\r\n },\r\n setup(props, { slots }) {\r\n const renderVNodes = computed(() => {\r\n const vNodeList = slots.default?.() || [];\r\n const sortVNodeMap = getVNodeMap(props.keyName, vNodeList);\r\n const sortVNodeList = Array.from(new Set(props.sortList)).map(key => sortVNodeMap[key]).filter(Boolean);\r\n return sortDefaultVNodes(props.keyName, vNodeList, props.sortList, sortVNodeList);\r\n });\r\n\r\n return () => renderVNodes.value;\r\n },\r\n});\r\n\r\n/** 获取插槽中需要排序的节点 */\r\nfunction getVNodeMap(keyName: string, vNodeList: VNode[], vNodeMap: Record<(string | number), VNode> = {}) {\r\n vNodeList.forEach((item) => {\r\n const sortKey = item.props?.[keyName];\r\n if (sortKey) {\r\n if (vNodeMap[sortKey]) {\r\n console.warn(`<mt-sort-space> ${keyName}: ${sortKey} repeat`);\r\n }\r\n else {\r\n vNodeMap[sortKey] = item;\r\n }\r\n return;\r\n }\r\n if (Array.isArray(item.children)) {\r\n getVNodeMap(keyName, item.children as VNode[], vNodeMap);\r\n }\r\n });\r\n return vNodeMap;\r\n}\r\n\r\n/** 根据排序后的节点跟换位置 */\r\nfunction sortDefaultVNodes(keyName: string, vNodeList: VNode[], sortList: (string | number)[], sortVNodeList: VNode[]) {\r\n const newList: VNode[] = [];\r\n vNodeList.forEach((vNode) => {\r\n const sortKey = vNode.props?.[keyName];\r\n if (sortKey && sortList.includes(sortKey)) {\r\n const sortVNode = sortVNodeList.shift();\r\n if (sortVNode) {\r\n newList.push(sortVNode);\r\n return;\r\n }\r\n }\r\n if (Array.isArray(vNode.children)) {\r\n vNode = { ...vNode }; // 避免修改原节点数据\r\n vNode.children = sortDefaultVNodes(keyName, vNode.children as VNode[], sortList, sortVNodeList);\r\n }\r\n newList.push(vNode);\r\n });\r\n return newList;\r\n}\r\n"],"names":["Sort","defineComponent","props","slots","renderVNodes","computed","vNodeList","_a","sortVNodeMap","getVNodeMap","sortVNodeList","key","sortDefaultVNodes","keyName","vNodeMap","item","sortKey","sortList","newList","vNode","sortVNode"],"mappings":"mIAUAA,EAAeC,kBAAgB,CAC7B,KAAM,SACN,MAAO,CAEL,SAAU,CACR,KAAM,MACN,QAAS,IAAM,CAAA,CACjB,EAEA,QAAS,CACP,KAAM,OACN,QAAS,UAAA,CAEb,EACA,MAAMC,EAAO,CAAE,MAAAC,GAAS,CAChB,MAAAC,EAAeC,EAAAA,SAAS,IAAM,OAClC,MAAMC,IAAYC,EAAAJ,EAAM,UAAN,YAAAI,EAAA,KAAAJ,KAAqB,CAAC,EAClCK,EAAeC,EAAYP,EAAM,QAASI,CAAS,EACnDI,EAAgB,MAAM,KAAK,IAAI,IAAIR,EAAM,QAAQ,CAAC,EAAE,OAAWM,EAAaG,CAAG,CAAC,EAAE,OAAO,OAAO,EACtG,OAAOC,EAAkBV,EAAM,QAASI,EAAWJ,EAAM,SAAUQ,CAAa,CAAA,CACjF,EAED,MAAO,IAAMN,EAAa,KAAA,CAE9B,CAAC,EAGD,SAASK,EAAYI,EAAiBP,EAAoBQ,EAA6C,CAAA,EAAI,CAC/F,OAAAR,EAAA,QAASS,GAAS,OACpB,MAAAC,GAAUT,EAAAQ,EAAK,QAAL,YAAAR,EAAaM,GAC7B,GAAIG,EAAS,CACPF,EAASE,CAAO,EAClB,QAAQ,KAAK,mBAAmBH,CAAO,KAAKG,CAAO,SAAS,EAG5DF,EAASE,CAAO,EAAID,EAEtB,MAAA,CAEE,MAAM,QAAQA,EAAK,QAAQ,GACjBN,EAAAI,EAASE,EAAK,SAAqBD,CAAQ,CACzD,CACD,EACMA,CACT,CAGA,SAASF,EAAkBC,EAAiBP,EAAoBW,EAA+BP,EAAwB,CACrH,MAAMQ,EAAmB,CAAC,EAChB,OAAAZ,EAAA,QAASa,GAAU,OACrB,MAAAH,GAAUT,EAAAY,EAAM,QAAN,YAAAZ,EAAcM,GAC9B,GAAIG,GAAWC,EAAS,SAASD,CAAO,EAAG,CACnC,MAAAI,EAAYV,EAAc,MAAM,EACtC,GAAIU,EAAW,CACbF,EAAQ,KAAKE,CAAS,EACtB,MAAA,CACF,CAEE,MAAM,QAAQD,EAAM,QAAQ,IACtBA,EAAA,CAAE,GAAGA,CAAM,EACnBA,EAAM,SAAWP,EAAkBC,EAASM,EAAM,SAAqBF,EAAUP,CAAa,GAEhGQ,EAAQ,KAAKC,CAAK,CAAA,CACnB,EACMD,CACT"}
package/lib/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./components/expand/index.js"),t=require("./components/sort/index.js"),r=require("./components/table/index.js");exports.MtExpand=e.MtExpand;exports.MtSort=t.MtSort;exports.MtTable=r.MtTable;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./components/component-neo/index.js"),o=require("./components/expand/index.js"),t=require("./components/sort/index.js"),n=require("./components/table/index.js"),r=require("./components/component-neo/src/hooks/use-component-neo.js");exports.MtComponentNeo=e.MtComponentNeo;exports.MtExpand=o.MtExpand;exports.MtSort=t.MtSort;exports.MtTable=n.MtTable;exports.useComponentNeo=r.useComponentNeo;
2
2
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mortise-tenon-design",
3
3
  "type": "module",
4
- "version": "0.2.0",
4
+ "version": "0.2.1",
5
5
  "description": "榫卯组件库",
6
6
  "author": "nixwai",
7
7
  "license": "ISC",
@@ -12,7 +12,11 @@
12
12
  "main": "lib/index.js",
13
13
  "module": "es/index.mjs",
14
14
  "types": "types/index.d.ts",
15
- "files": ["es", "lib", "types"],
15
+ "files": [
16
+ "es",
17
+ "lib",
18
+ "types"
19
+ ],
16
20
  "peerDependencies": {
17
21
  "vue": "^3.4.0"
18
22
  },
@@ -20,4 +24,4 @@
20
24
  "@vueuse/core": "^11.1.0",
21
25
  "lodash-es": "^4.17.21"
22
26
  }
23
- }
27
+ }
@@ -0,0 +1,50 @@
1
+ export declare const MtComponentNeo: {
2
+ new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('./src/component-neo').ComponentNeoProps> & Readonly<{
3
+ onToggleComponent?: ((name?: string | undefined, ref?: any) => any) | undefined;
4
+ }>, {
5
+ componentRef: import('vue').Ref<any, any>;
6
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
7
+ toggleComponent: (name?: string | undefined, ref?: any) => any;
8
+ }, import('vue').PublicProps, {
9
+ uniqueId: string;
10
+ }, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
11
+ P: {};
12
+ B: {};
13
+ D: {};
14
+ C: {};
15
+ M: {};
16
+ Defaults: {};
17
+ }, Readonly<import('./src/component-neo').ComponentNeoProps> & Readonly<{
18
+ onToggleComponent?: ((name?: string | undefined, ref?: any) => any) | undefined;
19
+ }>, {
20
+ componentRef: import('vue').Ref<any, any>;
21
+ }, {}, {}, {}, {
22
+ uniqueId: string;
23
+ }>;
24
+ __isFragment?: never;
25
+ __isTeleport?: never;
26
+ __isSuspense?: never;
27
+ } & import('vue').ComponentOptionsBase<Readonly<import('./src/component-neo').ComponentNeoProps> & Readonly<{
28
+ onToggleComponent?: ((name?: string | undefined, ref?: any) => any) | undefined;
29
+ }>, {
30
+ componentRef: import('vue').Ref<any, any>;
31
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
32
+ toggleComponent: (name?: string | undefined, ref?: any) => any;
33
+ }, string, {
34
+ uniqueId: string;
35
+ }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & (new () => {
36
+ $slots: {
37
+ default?(_: {
38
+ Component: import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
39
+ [key: string]: any;
40
+ }>;
41
+ compRef: (el: Element) => Element;
42
+ attrs: Record<string, any> & {
43
+ [x: string]: unknown;
44
+ };
45
+ compName: any;
46
+ }): any;
47
+ };
48
+ });
49
+ export * from './src/component-neo.vue';
50
+ export * from './src/hooks/use-component-neo';
@@ -0,0 +1,8 @@
1
+ import { Component, DefineComponent } from 'vue';
2
+ export interface ComponentNeoProps {
3
+ /** 唯一标识 */
4
+ uniqueId?: string;
5
+ /** 渲染的组件 */
6
+ is?: string | Component;
7
+ }
8
+ export type InstanceComponent = DefineComponent<any, any, any, any, any, any, any, any, any, any>;
@@ -0,0 +1,35 @@
1
+ import { ComponentNeoProps } from './component-neo';
2
+ declare function __VLS_template(): {
3
+ attrs: Partial<{}>;
4
+ slots: {
5
+ default?(_: {
6
+ Component: import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
7
+ [key: string]: any;
8
+ }>;
9
+ compRef: (el: Element) => Element;
10
+ attrs: Record<string, any> & {
11
+ [x: string]: unknown;
12
+ };
13
+ compName: any;
14
+ }): any;
15
+ };
16
+ refs: {};
17
+ rootEl: any;
18
+ };
19
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
20
+ declare const __VLS_component: import('vue').DefineComponent<ComponentNeoProps, {
21
+ componentRef: import('vue').Ref<any, any>;
22
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
23
+ toggleComponent: (name?: string | undefined, ref?: any) => any;
24
+ }, string, import('vue').PublicProps, Readonly<ComponentNeoProps> & Readonly<{
25
+ onToggleComponent?: ((name?: string | undefined, ref?: any) => any) | undefined;
26
+ }>, {
27
+ uniqueId: string;
28
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
29
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
30
+ export default _default;
31
+ type __VLS_WithTemplateSlots<T, S> = T & {
32
+ new (): {
33
+ $slots: S;
34
+ };
35
+ };
@@ -0,0 +1,8 @@
1
+ import { InstanceComponent } from '../component-neo';
2
+ import { VNode } from 'vue';
3
+ export type ImportComponentFn = () => Promise<Record<string, any>>;
4
+ export type DynamicComponent = InstanceComponent | ImportComponentFn | VNode;
5
+ export declare function useComponentNeo(uniqueId?: string): {
6
+ getComponentRef: () => any;
7
+ toggleComponent: (comp: DynamicComponent, attrs?: Record<string, any>) => Promise<any>;
8
+ };
@@ -0,0 +1,22 @@
1
+ import { InstanceComponent } from '../component-neo';
2
+ import { Ref, ShallowRef, VNode } from 'vue';
3
+ interface ComponentRefsType {
4
+ /** 实例 */
5
+ Instance: Ref<any>;
6
+ /** 组件 */
7
+ comp: ShallowRef<InstanceComponent | VNode | undefined>;
8
+ /** 属性 */
9
+ attrs: Ref<Record<string, any>>;
10
+ }
11
+ /** 组件状态 */
12
+ export declare const useComponentState: () => {
13
+ initComponent: (uniqueId?: string) => {
14
+ componentRef: Ref<any, any>;
15
+ componentNeo: ShallowRef<any>;
16
+ componentAttrs: Ref<Record<string, any>, Record<string, any>>;
17
+ };
18
+ setComponent: (uniqueId: string | undefined, comp: InstanceComponent | VNode, attrs: Record<string, any>) => void;
19
+ getComponent: (uniqueId?: string) => ComponentRefsType | undefined;
20
+ removeComponent: (uniqueId?: string) => void;
21
+ };
22
+ export {};
@@ -3,7 +3,9 @@ export declare const MtExpand: {
3
3
  open: boolean;
4
4
  targetRange: number;
5
5
  transitionTime: number;
6
- }, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
6
+ }, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {
7
+ contentRef: HTMLDivElement;
8
+ }, HTMLDivElement, import('vue').ComponentProvideOptions, {
7
9
  P: {};
8
10
  B: {};
9
11
  D: {};
@@ -1,5 +1,6 @@
1
1
  import { ExpandProps } from './expand.ts';
2
2
  declare function __VLS_template(): {
3
+ attrs: Partial<{}>;
3
4
  slots: {
4
5
  default?(_: {
5
6
  open: boolean;
@@ -9,14 +10,16 @@ declare function __VLS_template(): {
9
10
  refs: {
10
11
  contentRef: HTMLDivElement;
11
12
  };
12
- attrs: Partial<{}>;
13
+ rootEl: HTMLDivElement;
13
14
  };
14
15
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
15
16
  declare const __VLS_component: import('vue').DefineComponent<ExpandProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<ExpandProps> & Readonly<{}>, {
16
17
  open: boolean;
17
18
  targetRange: number;
18
19
  transitionTime: number;
19
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
20
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
21
+ contentRef: HTMLDivElement;
22
+ }, HTMLDivElement>;
20
23
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
21
24
  export default _default;
22
25
  type __VLS_WithTemplateSlots<T, S> = T & {
package/types/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './component-neo';
1
2
  export * from './expand';
2
3
  export * from './sort';
3
4
  export * from './table';
@@ -2,7 +2,7 @@ export declare const MtTable: {
2
2
  new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('.').TableProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {
3
3
  data: any[];
4
4
  config: import('.').TableConfig[];
5
- }, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
5
+ }, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, HTMLTableElement, import('vue').ComponentProvideOptions, {
6
6
  P: {};
7
7
  B: {};
8
8
  D: {};
@@ -1,5 +1,6 @@
1
1
  import { TableProps } from './table';
2
2
  declare function __VLS_template(): {
3
+ attrs: Partial<{}>;
3
4
  slots: {
4
5
  header?(_: {
5
6
  column: import('./table').Column;
@@ -25,13 +26,13 @@ declare function __VLS_template(): {
25
26
  }): any;
26
27
  };
27
28
  refs: {};
28
- attrs: Partial<{}>;
29
+ rootEl: HTMLTableElement;
29
30
  };
30
31
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
31
32
  declare const __VLS_component: import('vue').DefineComponent<TableProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<TableProps> & Readonly<{}>, {
32
33
  data: any[];
33
34
  config: import('./table').TableConfig[];
34
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
35
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLTableElement>;
35
36
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
36
37
  export default _default;
37
38
  type __VLS_WithTemplateSlots<T, S> = T & {