mortise-tenon-design 0.4.0 → 0.6.0

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 (145) hide show
  1. package/dist/es/index.mjs +13 -0
  2. package/{es/core/build-design → dist/es}/package.json.mjs +1 -1
  3. package/{es/components → dist/es/src}/expand/index.mjs +0 -1
  4. package/dist/es/src/expand/index.mjs.map +1 -0
  5. package/dist/es/src/expand/src/expand.css +1 -0
  6. package/{es/components → dist/es/src}/expand/src/expand.vue.mjs +2 -2
  7. package/dist/es/src/expand/src/expand.vue2.mjs +36 -0
  8. package/dist/es/src/expand/src/expand.vue2.mjs.map +1 -0
  9. package/dist/es/src/installer.mjs +24 -0
  10. package/dist/es/src/installer.mjs.map +1 -0
  11. package/dist/es/src/resize/index.mjs +7 -0
  12. package/dist/es/src/resize/index.mjs.map +1 -0
  13. package/dist/es/src/resize/src/resize.css +1 -0
  14. package/dist/es/src/resize/src/resize.vue.mjs +8 -0
  15. package/dist/es/src/resize/src/resize.vue.mjs.map +1 -0
  16. package/dist/es/src/resize/src/resize.vue2.mjs +84 -0
  17. package/dist/es/src/resize/src/resize.vue2.mjs.map +1 -0
  18. package/dist/es/src/sort/index.mjs.map +1 -0
  19. package/dist/es/src/sort/src/sort.mjs +51 -0
  20. package/dist/es/src/sort/src/sort.mjs.map +1 -0
  21. package/{es/components → dist/es/src}/table/index.mjs +0 -1
  22. package/dist/es/src/table/index.mjs.map +1 -0
  23. package/dist/es/src/table/src/table.css +1 -0
  24. package/{es/components → dist/es/src}/table/src/table.vue.mjs +1 -1
  25. package/dist/es/src/table/src/table.vue2.mjs +82 -0
  26. package/dist/es/src/table/src/table.vue2.mjs.map +1 -0
  27. package/dist/es/src/utils/install.mjs.map +1 -0
  28. package/dist/lib/index.js +2 -0
  29. package/{lib/core/build-design → dist/lib}/package.json.js +1 -1
  30. package/{lib/components → dist/lib/src}/expand/index.js +0 -1
  31. package/dist/lib/src/expand/index.js.map +1 -0
  32. package/dist/lib/src/expand/src/expand.css +1 -0
  33. package/{lib/components → dist/lib/src}/expand/src/expand.vue.js +1 -1
  34. package/dist/lib/src/expand/src/expand.vue2.js +2 -0
  35. package/dist/lib/src/expand/src/expand.vue2.js.map +1 -0
  36. package/dist/lib/src/installer.js +2 -0
  37. package/dist/lib/src/installer.js.map +1 -0
  38. package/{lib/components/component-neo → dist/lib/src/resize}/index.js +1 -1
  39. package/dist/lib/src/resize/index.js.map +1 -0
  40. package/dist/lib/src/resize/src/resize.css +1 -0
  41. package/dist/lib/src/resize/src/resize.vue.js +2 -0
  42. package/dist/lib/src/resize/src/resize.vue.js.map +1 -0
  43. package/dist/lib/src/resize/src/resize.vue2.js +2 -0
  44. package/dist/lib/src/resize/src/resize.vue2.js.map +1 -0
  45. package/dist/lib/src/sort/index.js.map +1 -0
  46. package/dist/lib/src/sort/src/sort.js +2 -0
  47. package/dist/lib/src/sort/src/sort.js.map +1 -0
  48. package/{lib/components → dist/lib/src}/table/index.js +0 -1
  49. package/dist/lib/src/table/index.js.map +1 -0
  50. package/dist/lib/src/table/src/table.css +1 -0
  51. package/{lib/components → dist/lib/src}/table/src/table.vue.js +1 -1
  52. package/dist/lib/src/table/src/table.vue2.js +2 -0
  53. package/dist/lib/src/table/src/table.vue2.js.map +1 -0
  54. package/dist/lib/src/utils/install.js.map +1 -0
  55. package/dist/types/expand/src/expand.d.ts +17 -0
  56. package/{types → dist/types}/index.d.ts +1 -1
  57. package/dist/types/resize/index.d.ts +47 -0
  58. package/dist/types/resize/src/resize.d.ts +29 -0
  59. package/dist/types/resize/src/resize.vue.d.ts +34 -0
  60. package/global.d.ts +11 -11
  61. package/package.json +8 -9
  62. package/es/components/component-neo/index.mjs +0 -9
  63. package/es/components/component-neo/index.mjs.map +0 -1
  64. package/es/components/component-neo/src/component-neo.vue.mjs +0 -34
  65. package/es/components/component-neo/src/component-neo.vue.mjs.map +0 -1
  66. package/es/components/component-neo/src/component-neo.vue2.mjs +0 -5
  67. package/es/components/component-neo/src/component-neo.vue2.mjs.map +0 -1
  68. package/es/components/component-neo/src/hooks/use-component-neo.mjs +0 -31
  69. package/es/components/component-neo/src/hooks/use-component-neo.mjs.map +0 -1
  70. package/es/components/component-neo/src/hooks/use-component-state.mjs +0 -36
  71. package/es/components/component-neo/src/hooks/use-component-state.mjs.map +0 -1
  72. package/es/components/expand/index.mjs.map +0 -1
  73. package/es/components/expand/src/expand.css +0 -1
  74. package/es/components/expand/src/expand.vue2.mjs +0 -41
  75. package/es/components/expand/src/expand.vue2.mjs.map +0 -1
  76. package/es/components/index.mjs +0 -13
  77. package/es/components/installer.mjs +0 -24
  78. package/es/components/installer.mjs.map +0 -1
  79. package/es/components/sort/index.mjs.map +0 -1
  80. package/es/components/sort/src/sort.mjs +0 -54
  81. package/es/components/sort/src/sort.mjs.map +0 -1
  82. package/es/components/table/index.mjs.map +0 -1
  83. package/es/components/table/src/table.css +0 -1
  84. package/es/components/table/src/table.vue2.mjs +0 -100
  85. package/es/components/table/src/table.vue2.mjs.map +0 -1
  86. package/es/components/utils/install.mjs.map +0 -1
  87. package/es/index.mjs +0 -15
  88. package/es/index.mjs.map +0 -1
  89. package/lib/components/component-neo/index.js.map +0 -1
  90. package/lib/components/component-neo/src/component-neo.vue.js +0 -2
  91. package/lib/components/component-neo/src/component-neo.vue.js.map +0 -1
  92. package/lib/components/component-neo/src/component-neo.vue2.js +0 -2
  93. package/lib/components/component-neo/src/component-neo.vue2.js.map +0 -1
  94. package/lib/components/component-neo/src/hooks/use-component-neo.js +0 -2
  95. package/lib/components/component-neo/src/hooks/use-component-neo.js.map +0 -1
  96. package/lib/components/component-neo/src/hooks/use-component-state.js +0 -2
  97. package/lib/components/component-neo/src/hooks/use-component-state.js.map +0 -1
  98. package/lib/components/expand/index.js.map +0 -1
  99. package/lib/components/expand/src/expand.css +0 -1
  100. package/lib/components/expand/src/expand.vue2.js +0 -2
  101. package/lib/components/expand/src/expand.vue2.js.map +0 -1
  102. package/lib/components/index.js +0 -2
  103. package/lib/components/installer.js +0 -2
  104. package/lib/components/installer.js.map +0 -1
  105. package/lib/components/sort/index.js.map +0 -1
  106. package/lib/components/sort/src/sort.js +0 -2
  107. package/lib/components/sort/src/sort.js.map +0 -1
  108. package/lib/components/table/index.js.map +0 -1
  109. package/lib/components/table/src/table.css +0 -1
  110. package/lib/components/table/src/table.vue2.js +0 -2
  111. package/lib/components/table/src/table.vue2.js.map +0 -1
  112. package/lib/components/utils/install.js.map +0 -1
  113. package/lib/index.js +0 -2
  114. package/lib/index.js.map +0 -1
  115. package/types/component-neo/index.d.ts +0 -50
  116. package/types/component-neo/src/component-neo.d.ts +0 -9
  117. package/types/component-neo/src/component-neo.vue.d.ts +0 -35
  118. package/types/component-neo/src/hooks/use-component-neo.d.ts +0 -8
  119. package/types/component-neo/src/hooks/use-component-state.d.ts +0 -30
  120. package/types/expand/src/expand.d.ts +0 -8
  121. /package/{es → dist/es}/_virtual/_plugin-vue_export-helper.mjs +0 -0
  122. /package/{es → dist/es}/_virtual/_plugin-vue_export-helper.mjs.map +0 -0
  123. /package/{es/components → dist/es}/index.mjs.map +0 -0
  124. /package/{es/core/build-design → dist/es}/package.json.mjs.map +0 -0
  125. /package/{es/components → dist/es/src}/expand/src/expand.vue.mjs.map +0 -0
  126. /package/{es/components → dist/es/src}/sort/index.mjs +0 -0
  127. /package/{es/components → dist/es/src}/table/src/table.vue.mjs.map +0 -0
  128. /package/{es/components → dist/es/src}/utils/install.mjs +0 -0
  129. /package/{lib → dist/lib}/_virtual/_plugin-vue_export-helper.js +0 -0
  130. /package/{lib → dist/lib}/_virtual/_plugin-vue_export-helper.js.map +0 -0
  131. /package/{lib/components → dist/lib}/index.js.map +0 -0
  132. /package/{lib/core/build-design → dist/lib}/package.json.js.map +0 -0
  133. /package/{lib/components → dist/lib/src}/expand/src/expand.vue.js.map +0 -0
  134. /package/{lib/components → dist/lib/src}/sort/index.js +0 -0
  135. /package/{lib/components → dist/lib/src}/table/src/table.vue.js.map +0 -0
  136. /package/{lib/components → dist/lib/src}/utils/install.js +0 -0
  137. /package/{types → dist/types}/expand/index.d.ts +0 -0
  138. /package/{types → dist/types}/expand/src/expand.vue.d.ts +0 -0
  139. /package/{types → dist/types}/installer.d.ts +0 -0
  140. /package/{types → dist/types}/sort/index.d.ts +0 -0
  141. /package/{types → dist/types}/sort/src/sort.d.ts +0 -0
  142. /package/{types → dist/types}/table/index.d.ts +0 -0
  143. /package/{types → dist/types}/table/src/table.d.ts +0 -0
  144. /package/{types → dist/types}/table/src/table.vue.d.ts +0 -0
  145. /package/{types → dist/types}/utils/install.d.ts +0 -0
@@ -0,0 +1,13 @@
1
+ import t from "./src/installer.mjs";
2
+ import { MtExpand as p } from "./src/expand/index.mjs";
3
+ import { MtResize as m } from "./src/resize/index.mjs";
4
+ import { MtSort as a } from "./src/sort/index.mjs";
5
+ import { MtTable as M } from "./src/table/index.mjs";
6
+ export {
7
+ p as MtExpand,
8
+ m as MtResize,
9
+ a as MtSort,
10
+ M as MtTable,
11
+ t as default
12
+ };
13
+ //# sourceMappingURL=index.mjs.map
@@ -1,4 +1,4 @@
1
- const o = "0.4.0";
1
+ const o = "0.6.0";
2
2
  export {
3
3
  o as version
4
4
  };
@@ -5,4 +5,3 @@ export {
5
5
  m as MtExpand
6
6
  };
7
7
  //# sourceMappingURL=index.mjs.map
8
- import './src/expand.css';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/expand/index.ts"],"sourcesContent":["import { withInstall } from '../utils/install';\nimport Expand from './src/expand.vue';\n\nexport const MtExpand = withInstall(Expand);\n\nexport * from './src/expand';\n"],"names":["MtExpand","withInstall","Expand"],"mappings":";;AAGO,MAAMA,IAAWC,EAAYC,CAAM;"}
@@ -0,0 +1 @@
1
+ .mt-expand[data-v-80e6c6dd]{overflow:hidden}.mt-expand-transition[data-v-80e6c6dd]{transition:height var(--662fdf4a) ease-in-out}
@@ -1,8 +1,8 @@
1
1
  import o from "./expand.vue2.mjs";
2
2
  /* empty css */
3
3
  import t from "../../../_virtual/_plugin-vue_export-helper.mjs";
4
- const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-60128610"]]);
4
+ const d = /* @__PURE__ */ t(o, [["__scopeId", "data-v-80e6c6dd"]]);
5
5
  export {
6
- m as default
6
+ d as default
7
7
  };
8
8
  //# sourceMappingURL=expand.vue.mjs.map
@@ -0,0 +1,36 @@
1
+ import { defineComponent as p, useCssVars as c, computed as o, ref as r, createElementBlock as f, openBlock as m, normalizeStyle as d, normalizeClass as v, renderSlot as g } from "vue";
2
+ import { useResizeObserver as R, useDebounceFn as x } from "@vueuse/core";
3
+ const h = /* @__PURE__ */ p({
4
+ name: "MtExpand",
5
+ __name: "expand",
6
+ props: {
7
+ open: { type: Boolean, default: !1 },
8
+ targetRange: { default: 0 },
9
+ transitionTime: { default: 200 }
10
+ },
11
+ setup(i) {
12
+ c((t) => ({
13
+ "662fdf4a": l.value
14
+ }));
15
+ const e = i, l = o(() => `${e.transitionTime}ms`), a = r(), n = r(0);
16
+ R(a, x(() => {
17
+ n.value = a.value?.scrollHeight || 0;
18
+ }, 200));
19
+ const s = o(() => n.value > e.targetRange), u = o(() => !n.value && e.open ? {} : { height: `${!s.value || e.open ? n.value : e.targetRange}px` });
20
+ return (t, y) => (m(), f("div", {
21
+ ref_key: "contentRef",
22
+ ref: a,
23
+ class: v(["mt-expand", { "mt-expand-transition": !!t.transitionTime }]),
24
+ style: d(u.value)
25
+ }, [
26
+ g(t.$slots, "default", {
27
+ open: t.open,
28
+ isOutRange: s.value
29
+ }, void 0, !0)
30
+ ], 6));
31
+ }
32
+ });
33
+ export {
34
+ h as default
35
+ };
36
+ //# sourceMappingURL=expand.vue2.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expand.vue2.mjs","sources":["../../../../../src/expand/src/expand.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ExpandProps } from './expand.ts';\nimport { useDebounceFn, useResizeObserver } from '@vueuse/core';\nimport { computed, ref } from 'vue';\n\ndefineOptions({ name: 'MtExpand' });\n\nconst props = withDefaults(defineProps<ExpandProps>(), {\n open: false,\n targetRange: 0,\n transitionTime: 200,\n});\n\nconst transitionDuration = computed(() => `${props.transitionTime}ms`);\n\n/** 容器实例 */\nconst contentRef = ref<HTMLDivElement>();\n/** 容器的范围 */\nconst contentRange = ref(0);\n// 监听容器变化\nuseResizeObserver(contentRef, useDebounceFn(() => {\n contentRange.value = contentRef.value?.scrollHeight || 0;\n}, 200));\n\n/** 是否超出目标范围 */\nconst isOutRange = computed(() => contentRange.value > props.targetRange);\n\n/** 展开或收起后容器样式 */\nconst contentStyle = computed(() => {\n if (!contentRange.value && props.open) {\n return {};\n }\n const size = !isOutRange.value || props.open ? contentRange.value : props.targetRange;\n return { height: `${size}px` };\n});\n</script>\n\n<template>\n <div\n ref=\"contentRef\"\n class=\"mt-expand\"\n :class=\"{ 'mt-expand-transition': !!transitionTime }\"\n :style=\"contentStyle\"\n >\n <slot :open=\"open\" :is-out-range=\"isOutRange\" />\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.mt-expand {\n overflow: hidden;\n}\n\n.mt-expand-transition {\n transition: height v-bind(transitionDuration) ease-in-out;\n}\n</style>\n"],"names":["props","__props","transitionDuration","computed","contentRef","ref","contentRange","useResizeObserver","useDebounceFn","isOutRange","contentStyle"],"mappings":";;;;;;;;;;;;;;AAOA,UAAMA,IAAQC,GAMRC,IAAqBC,EAAS,MAAM,GAAGH,EAAM,cAAc,IAAI,GAG/DI,IAAaC,EAAA,GAEbC,IAAeD,EAAI,CAAC;AAE1B,IAAAE,EAAkBH,GAAYI,EAAc,MAAM;AAChD,MAAAF,EAAa,QAAQF,EAAW,OAAO,gBAAgB;AAAA,IACzD,GAAG,GAAG,CAAC;AAGP,UAAMK,IAAaN,EAAS,MAAMG,EAAa,QAAQN,EAAM,WAAW,GAGlEU,IAAeP,EAAS,MACxB,CAACG,EAAa,SAASN,EAAM,OACxB,CAAA,IAGF,EAAE,QAAQ,GADJ,CAACS,EAAW,SAAST,EAAM,OAAOM,EAAa,QAAQN,EAAM,WAClD,KAAA,CACzB;;;;;;;;;;;;;;"}
@@ -0,0 +1,24 @@
1
+ import { version as n } from "../package.json.mjs";
2
+ import { MtExpand as i } from "./expand/index.mjs";
3
+ import { MtResize as m } from "./resize/index.mjs";
4
+ import { MtSort as l } from "./sort/index.mjs";
5
+ import { MtTable as s } from "./table/index.mjs";
6
+ const r = Symbol("MT_INSTALLED_KEY");
7
+ function f(o = []) {
8
+ return {
9
+ version: n,
10
+ install: (t) => {
11
+ t[r] || (t[r] = !0, o.forEach((e) => t.use(e)));
12
+ }
13
+ };
14
+ }
15
+ const S = f([
16
+ i,
17
+ m,
18
+ l,
19
+ s
20
+ ]);
21
+ export {
22
+ S as default
23
+ };
24
+ //# sourceMappingURL=installer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.mjs","sources":["../../../src/installer.ts"],"sourcesContent":["import type { App, Component, Plugin } from 'vue';\nimport { version } from '../package.json';\nimport { MtExpand } from './expand';\nimport { MtResize } from './resize';\nimport { MtSort } from './sort';\nimport { MtTable } from './table';\n\nconst INSTALLED_KEY = Symbol('MT_INSTALLED_KEY');\n\nfunction makeInstaller(components: Component[] = []) {\n const install = (app: App & { [INSTALLED_KEY]?: boolean }) => {\n if (app[INSTALLED_KEY]) { return; }\n\n app[INSTALLED_KEY] = true;\n components.forEach(c => app.use(c as Plugin));\n };\n\n return {\n version,\n install,\n };\n}\n\nconst installer = makeInstaller([\n MtExpand,\n MtResize,\n MtSort,\n MtTable,\n]);\n\nexport default installer;\n"],"names":["INSTALLED_KEY","makeInstaller","components","version","app","c","installer","MtExpand","MtResize","MtSort","MtTable"],"mappings":";;;;;AAOA,MAAMA,IAAgB,OAAO,kBAAkB;AAE/C,SAASC,EAAcC,IAA0B,IAAI;AAQnD,SAAO;AAAA,IACL,SAAAC;AAAA,IACA,SATc,CAACC,MAA6C;AAC5D,MAAIA,EAAIJ,CAAa,MAErBI,EAAIJ,CAAa,IAAI,IACrBE,EAAW,QAAQ,CAAAG,MAAKD,EAAI,IAAIC,CAAW,CAAC;AAAA,IAC9C;AAAA,EAIE;AAEJ;AAEA,MAAMC,IAAYL,EAAc;AAAA,EAC9BM;AAAA,EACAC;AAAA,EACAC;AAAA,EACAC;AACF,CAAC;"}
@@ -0,0 +1,7 @@
1
+ import { withInstall as t } from "../utils/install.mjs";
2
+ import o from "./src/resize.vue.mjs";
3
+ const r = t(o);
4
+ export {
5
+ r as MtResize
6
+ };
7
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/resize/index.ts"],"sourcesContent":["import { withInstall } from '../utils/install';\r\nimport Resize from './src/resize.vue';\r\n\r\nexport const MtResize = withInstall(Resize);\r\n\r\nexport * from './src/resize';\r\n"],"names":["MtResize","withInstall","Resize"],"mappings":";;AAGO,MAAMA,IAAWC,EAAYC,CAAM;"}
@@ -0,0 +1 @@
1
+ .mt-resize[data-v-d512c549]{position:relative;overflow:visible}.mt-resize .left-box[data-v-d512c549]{position:absolute;top:4px;left:-4px;width:8px;height:calc(100% - 8px);cursor:w-resize}.mt-resize .right-box[data-v-d512c549]{position:absolute;top:4px;right:-4px;width:8px;height:calc(100% - 8px);cursor:e-resize}.mt-resize .top-box[data-v-d512c549]{position:absolute;top:-4px;left:4px;width:calc(100% - 8px);height:8px;cursor:n-resize}.mt-resize .bottom-box[data-v-d512c549]{position:absolute;bottom:-4px;left:4px;width:calc(100% - 8px);height:8px;cursor:s-resize}.mt-resize .left-top-box[data-v-d512c549]{position:absolute;top:-4px;left:-4px;width:8px;height:8px;cursor:nw-resize}.mt-resize .right-top-box[data-v-d512c549]{position:absolute;top:-4px;right:-4px;width:8px;height:8px;cursor:ne-resize}.mt-resize .left-bottom-box[data-v-d512c549]{position:absolute;bottom:-4px;left:-4px;width:8px;height:8px;cursor:sw-resize}.mt-resize .right-bottom-box[data-v-d512c549]{position:absolute;right:-4px;bottom:-4px;width:8px;height:8px;cursor:se-resize}
@@ -0,0 +1,8 @@
1
+ import o from "./resize.vue2.mjs";
2
+ /* empty css */
3
+ import t from "../../../_virtual/_plugin-vue_export-helper.mjs";
4
+ const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-d512c549"]]);
5
+ export {
6
+ p as default
7
+ };
8
+ //# sourceMappingURL=resize.vue.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,84 @@
1
+ import { defineComponent as w, ref as b, computed as d, createElementBlock as o, openBlock as i, createCommentVNode as n, renderSlot as z, Fragment as P, withModifiers as r } from "vue";
2
+ import { domResize as A } from "dom-transform-tool";
3
+ const x = /* @__PURE__ */ w({
4
+ name: "MtResize",
5
+ __name: "resize",
6
+ props: {
7
+ disabled: { type: Boolean, default: !1 },
8
+ offset: {},
9
+ directions: { default: () => ["right"] },
10
+ lockAspectRatio: { type: Boolean, default: !1 },
11
+ grid: { default: () => [0.5, 0.5] }
12
+ },
13
+ emits: ["resize"],
14
+ setup(c, { emit: g }) {
15
+ const u = c, R = g, m = b(), k = b("");
16
+ function s(l, e) {
17
+ k.value = e, A({
18
+ event: l,
19
+ direction: e,
20
+ target: m.value,
21
+ offset: u.offset,
22
+ lockAspectRatio: u.lockAspectRatio,
23
+ grid: u.grid,
24
+ callback: (t, y) => {
25
+ R("resize", t, y);
26
+ }
27
+ });
28
+ }
29
+ const p = d(() => u.directions.includes("left")), a = d(() => u.directions.includes("right")), f = d(() => u.directions.includes("top")), v = d(() => u.directions.includes("bottom"));
30
+ return (l, e) => (i(), o("div", {
31
+ ref_key: "contentRef",
32
+ ref: m,
33
+ class: "mt-resize"
34
+ }, [
35
+ l.disabled ? n("", !0) : (i(), o(P, { key: 0 }, [
36
+ p.value && !l.lockAspectRatio ? (i(), o("div", {
37
+ key: 0,
38
+ class: "left-box",
39
+ onPointerdown: e[0] || (e[0] = r((t) => s(t, "left"), ["stop", "prevent"]))
40
+ }, null, 32)) : n("", !0),
41
+ a.value && !l.lockAspectRatio ? (i(), o("div", {
42
+ key: 1,
43
+ class: "right-box",
44
+ onPointerdown: e[1] || (e[1] = r((t) => s(t, "right"), ["stop", "prevent"]))
45
+ }, null, 32)) : n("", !0),
46
+ f.value && !l.lockAspectRatio ? (i(), o("div", {
47
+ key: 2,
48
+ class: "top-box",
49
+ onPointerdown: e[2] || (e[2] = r((t) => s(t, "top"), ["stop", "prevent"]))
50
+ }, null, 32)) : n("", !0),
51
+ v.value && !l.lockAspectRatio ? (i(), o("div", {
52
+ key: 3,
53
+ class: "bottom-box",
54
+ onPointerdown: e[3] || (e[3] = r((t) => s(t, "bottom"), ["stop", "prevent"]))
55
+ }, null, 32)) : n("", !0),
56
+ p.value && f.value ? (i(), o("div", {
57
+ key: 4,
58
+ class: "left-top-box",
59
+ onPointerdown: e[4] || (e[4] = r((t) => s(t, "left-top"), ["stop", "prevent"]))
60
+ }, null, 32)) : n("", !0),
61
+ a.value && f.value ? (i(), o("div", {
62
+ key: 5,
63
+ class: "right-top-box",
64
+ onPointerdown: e[5] || (e[5] = r((t) => s(t, "right-top"), ["stop", "prevent"]))
65
+ }, null, 32)) : n("", !0),
66
+ p.value && v.value ? (i(), o("div", {
67
+ key: 6,
68
+ class: "left-bottom-box",
69
+ onPointerdown: e[6] || (e[6] = r((t) => s(t, "left-bottom"), ["stop", "prevent"]))
70
+ }, null, 32)) : n("", !0),
71
+ a.value && v.value ? (i(), o("div", {
72
+ key: 7,
73
+ class: "right-bottom-box",
74
+ onPointerdown: e[7] || (e[7] = r((t) => s(t, "right-bottom"), ["stop", "prevent"]))
75
+ }, null, 32)) : n("", !0)
76
+ ], 64)),
77
+ z(l.$slots, "default", { direction: k.value }, void 0, !0)
78
+ ], 512));
79
+ }
80
+ });
81
+ export {
82
+ x as default
83
+ };
84
+ //# sourceMappingURL=resize.vue2.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize.vue2.mjs","sources":["../../../../../src/resize/src/resize.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { DomResizeContent, DomResizeDirection, DomResizeStyle } from 'dom-transform-tool';\r\nimport type { ResizeProps } from './resize';\r\nimport { domResize } from 'dom-transform-tool';\r\nimport { computed, ref } from 'vue';\r\n\r\ndefineOptions({ name: 'MtResize' });\r\n\r\nconst props = withDefaults(\r\n defineProps<ResizeProps>(),\r\n {\r\n disabled: false,\r\n directions: () => ['right'],\r\n lockAspectRatio: false,\r\n grid: () => [0.5, 0.5],\r\n },\r\n);\r\n\r\nconst emit = defineEmits<{\r\n (e: 'resize', content: DomResizeContent, style: DomResizeStyle): void\r\n}>();\r\n\r\n/** 元素实例 */\r\nconst contentRef = ref<HTMLDivElement>();\r\n/** 调整的方向 */\r\nconst resizeDirection = ref('');\r\n/** 调整函数 */\r\nfunction handleResize(event: PointerEvent, direction: DomResizeDirection) {\r\n resizeDirection.value = direction;\r\n domResize({\r\n event,\r\n direction,\r\n target: contentRef.value,\r\n offset: props.offset,\r\n lockAspectRatio: props.lockAspectRatio,\r\n grid: props.grid,\r\n callback: (content, style) => {\r\n emit('resize', content, style);\r\n },\r\n });\r\n};\r\n\r\nconst isLeftDir = computed(() => props.directions.includes('left'));\r\nconst isRightDir = computed(() => props.directions.includes('right'));\r\nconst isTopDir = computed(() => props.directions.includes('top'));\r\nconst isBottomDir = computed(() => props.directions.includes('bottom'));\r\n</script>\r\n\r\n<template>\r\n <div\r\n ref=\"contentRef\"\r\n class=\"mt-resize\"\r\n >\r\n <template v-if=\"!disabled\">\r\n <div v-if=\"isLeftDir && !lockAspectRatio\" class=\"left-box\" @pointerdown.stop.prevent=\"(e) => handleResize(e, 'left')\" />\r\n <div v-if=\"isRightDir && !lockAspectRatio\" class=\"right-box\" @pointerdown.stop.prevent=\"(e) => handleResize(e, 'right')\" />\r\n <div v-if=\"isTopDir && !lockAspectRatio\" class=\"top-box\" @pointerdown.stop.prevent=\"(e) => handleResize(e, 'top')\" />\r\n <div v-if=\"isBottomDir && !lockAspectRatio\" class=\"bottom-box\" @pointerdown.stop.prevent=\"(e) => handleResize(e, 'bottom')\" />\r\n <div v-if=\"isLeftDir && isTopDir\" class=\"left-top-box\" @pointerdown.stop.prevent=\"(e) => handleResize(e, 'left-top')\" />\r\n <div v-if=\"isRightDir && isTopDir\" class=\"right-top-box\" @pointerdown.stop.prevent=\"(e) => handleResize(e, 'right-top')\" />\r\n <div v-if=\"isLeftDir && isBottomDir\" class=\"left-bottom-box\" @pointerdown.stop.prevent=\"(e) => handleResize(e, 'left-bottom')\" />\r\n <div v-if=\"isRightDir && isBottomDir\" class=\"right-bottom-box\" @pointerdown.stop.prevent=\"(e) => handleResize(e, 'right-bottom')\" />\r\n </template>\r\n <slot :direction=\"resizeDirection\" />\r\n </div>\r\n</template>\r\n\r\n<style scoped lang=\"scss\">\r\n.mt-resize {\r\n position: relative;\r\n overflow: visible;\r\n\r\n .left-box {\r\n position: absolute;\r\n top: 4px;\r\n left: -4px;\r\n width: 8px;\r\n height: calc(100% - 8px);\r\n cursor: w-resize;\r\n }\r\n\r\n .right-box {\r\n position: absolute;\r\n top: 4px;\r\n right: -4px;\r\n width: 8px;\r\n height: calc(100% - 8px);\r\n cursor: e-resize;\r\n }\r\n\r\n .top-box {\r\n position: absolute;\r\n top: -4px;\r\n left: 4px;\r\n width: calc(100% - 8px);\r\n height: 8px;\r\n cursor: n-resize;\r\n }\r\n\r\n .bottom-box {\r\n position: absolute;\r\n bottom: -4px;\r\n left: 4px;\r\n width: calc(100% - 8px);\r\n height: 8px;\r\n cursor: s-resize;\r\n }\r\n\r\n .left-top-box {\r\n position: absolute;\r\n top: -4px;\r\n left: -4px;\r\n width: 8px;\r\n height: 8px;\r\n cursor: nw-resize;\r\n }\r\n\r\n .right-top-box {\r\n position: absolute;\r\n top: -4px;\r\n right: -4px;\r\n width: 8px;\r\n height: 8px;\r\n cursor: ne-resize;\r\n }\r\n\r\n .left-bottom-box {\r\n position: absolute;\r\n bottom: -4px;\r\n left: -4px;\r\n width: 8px;\r\n height: 8px;\r\n cursor: sw-resize;\r\n }\r\n\r\n .right-bottom-box {\r\n position: absolute;\r\n right: -4px;\r\n bottom: -4px;\r\n width: 8px;\r\n height: 8px;\r\n cursor: se-resize;\r\n }\r\n}\r\n</style>\r\n"],"names":["props","__props","emit","__emit","contentRef","ref","resizeDirection","handleResize","event","direction","domResize","content","style","isLeftDir","computed","isRightDir","isTopDir","isBottomDir"],"mappings":";;;;;;;;;;;;;;AAQA,UAAMA,IAAQC,GAURC,IAAOC,GAKPC,IAAaC,EAAA,GAEbC,IAAkBD,EAAI,EAAE;AAE9B,aAASE,EAAaC,GAAqBC,GAA+B;AACxE,MAAAH,EAAgB,QAAQG,GACxBC,EAAU;AAAA,QACR,OAAAF;AAAA,QACA,WAAAC;AAAA,QACA,QAAQL,EAAW;AAAA,QACnB,QAAQJ,EAAM;AAAA,QACd,iBAAiBA,EAAM;AAAA,QACvB,MAAMA,EAAM;AAAA,QACZ,UAAU,CAACW,GAASC,MAAU;AAC5B,UAAAV,EAAK,UAAUS,GAASC,CAAK;AAAA,QAC/B;AAAA,MAAA,CACD;AAAA,IACH;AAEA,UAAMC,IAAYC,EAAS,MAAMd,EAAM,WAAW,SAAS,MAAM,CAAC,GAC5De,IAAaD,EAAS,MAAMd,EAAM,WAAW,SAAS,OAAO,CAAC,GAC9DgB,IAAWF,EAAS,MAAMd,EAAM,WAAW,SAAS,KAAK,CAAC,GAC1DiB,IAAcH,EAAS,MAAMd,EAAM,WAAW,SAAS,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/sort/index.ts"],"sourcesContent":["import { withInstall } from '../utils/install';\nimport Sort from './src/sort';\n\nexport const MtSort = withInstall(Sort);\n\nexport * from './src/sort';\n"],"names":["MtSort","withInstall","Sort"],"mappings":";;AAGO,MAAMA,IAASC,EAAYC,CAAI;"}
@@ -0,0 +1,51 @@
1
+ import { defineComponent as u, computed as l } from "vue";
2
+ const d = u({
3
+ name: "MtSort",
4
+ props: {
5
+ /** 排序配置 */
6
+ sortList: {
7
+ type: Array,
8
+ default: () => []
9
+ },
10
+ /** 排序key名 */
11
+ keyName: {
12
+ type: String,
13
+ default: "sort-key"
14
+ }
15
+ },
16
+ setup(r, { slots: o }) {
17
+ const n = l(() => {
18
+ const t = o.default?.() || [], e = f(r.keyName, t), s = Array.from(new Set(r.sortList)).map((i) => e[i]).filter(Boolean);
19
+ return a(r.keyName, t, r.sortList, s);
20
+ });
21
+ return () => n.value;
22
+ }
23
+ });
24
+ function f(r, o, n = {}) {
25
+ return o.forEach((t) => {
26
+ const e = t.props?.[r];
27
+ if (e) {
28
+ n[e] ? console.warn(`<mt-sort> ${r}: ${e} repeat`) : n[e] = t;
29
+ return;
30
+ }
31
+ Array.isArray(t.children) && f(r, t.children, n);
32
+ }), n;
33
+ }
34
+ function a(r, o, n, t) {
35
+ const e = [];
36
+ return o.forEach((s) => {
37
+ const i = s.props?.[r];
38
+ if (i && n.includes(i)) {
39
+ const c = t.shift();
40
+ if (c) {
41
+ e.push(c);
42
+ return;
43
+ }
44
+ }
45
+ Array.isArray(s.children) && (s = { ...s }, s.children = a(r, s.children, n, t)), e.push(s);
46
+ }), e;
47
+ }
48
+ export {
49
+ d as default
50
+ };
51
+ //# sourceMappingURL=sort.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort.mjs","sources":["../../../../../src/sort/src/sort.ts"],"sourcesContent":["import type { PropType, VNode } from 'vue';\nimport { computed, defineComponent } from 'vue';\n\nexport interface SortProps {\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> ${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","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,IAAC;AAAA;AAAA,IAGlB,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,EACX;AAAA,EAEF,MAAMC,GAAO,EAAE,OAAAC,KAAS;AACtB,UAAMC,IAAeC,EAAS,MAAM;AAClC,YAAMC,IAAYH,EAAM,UAAA,KAAe,CAAA,GACjCI,IAAeC,EAAYN,EAAM,SAASI,CAAS,GACnDG,IAAgB,MAAM,KAAK,IAAI,IAAIP,EAAM,QAAQ,CAAC,EAAE,IAAI,OAAOK,EAAaG,CAAG,CAAC,EAAE,OAAO,OAAO;AACtG,aAAOC,EAAkBT,EAAM,SAASI,GAAWJ,EAAM,UAAUO,CAAa;AAAA,IAClF,CAAC;AAED,WAAO,MAAML,EAAa;AAAA,EAC5B;AACF,CAAC;AAGD,SAASI,EAAYI,GAAiBN,GAAoBO,IAA6C,CAAA,GAAI;AACzG,SAAAP,EAAU,QAAQ,CAACQ,MAAS;AAC1B,UAAMC,IAAUD,EAAK,QAAQF,CAAO;AACpC,QAAIG,GAAS;AACX,MAAIF,EAASE,CAAO,IAClB,QAAQ,KAAK,aAAaH,CAAO,KAAKG,CAAO,SAAS,IAGtDF,EAASE,CAAO,IAAID;AAEtB;AAAA,IACF;AACA,IAAI,MAAM,QAAQA,EAAK,QAAQ,KAC7BN,EAAYI,GAASE,EAAK,UAAqBD,CAAQ;AAAA,EAE3D,CAAC,GACMA;AACT;AAGA,SAASF,EAAkBC,GAAiBN,GAAoBU,GAA+BP,GAAwB;AACrH,QAAMQ,IAAmB,CAAA;AACzB,SAAAX,EAAU,QAAQ,CAACY,MAAU;AAC3B,UAAMH,IAAUG,EAAM,QAAQN,CAAO;AACrC,QAAIG,KAAWC,EAAS,SAASD,CAAO,GAAG;AACzC,YAAMI,IAAYV,EAAc,MAAA;AAChC,UAAIU,GAAW;AACb,QAAAF,EAAQ,KAAKE,CAAS;AACtB;AAAA,MACF;AAAA,IACF;AACA,IAAI,MAAM,QAAQD,EAAM,QAAQ,MAC9BA,IAAQ,EAAE,GAAGA,EAAA,GACbA,EAAM,WAAWP,EAAkBC,GAASM,EAAM,UAAqBF,GAAUP,CAAa,IAEhGQ,EAAQ,KAAKC,CAAK;AAAA,EACpB,CAAC,GACMD;AACT;"}
@@ -5,4 +5,3 @@ export {
5
5
  m as MtTable
6
6
  };
7
7
  //# sourceMappingURL=index.mjs.map
8
- import './src/table.css';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/table/index.ts"],"sourcesContent":["import { withInstall } from '../utils/install';\nimport Table from './src/table.vue';\n\nexport const MtTable = withInstall(Table);\n\nexport * from './src/table';\n"],"names":["MtTable","withInstall","Table"],"mappings":";;AAGO,MAAMA,IAAUC,EAAYC,CAAK;"}
@@ -0,0 +1 @@
1
+ .mt-table[data-v-76e3a23b]{width:100%;max-width:100%;border-spacing:0;border-collapse:collapse}.mt-table thead tr th[data-v-76e3a23b]{padding:8px 16px;border:1px #f0f0f0 solid}.mt-table tbody tr td[data-v-76e3a23b]{padding:16px;border:1px #f0f0f0 solid}
@@ -1,7 +1,7 @@
1
1
  import o from "./table.vue2.mjs";
2
2
  /* empty css */
3
3
  import t from "../../../_virtual/_plugin-vue_export-helper.mjs";
4
- const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-46d3894f"]]);
4
+ const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-76e3a23b"]]);
5
5
  export {
6
6
  m as default
7
7
  };
@@ -0,0 +1,82 @@
1
+ import { defineComponent as K, computed as i, createElementBlock as o, openBlock as u, createElementVNode as C, Fragment as c, renderList as d, normalizeStyle as m, renderSlot as g, createTextVNode as v, toDisplayString as _ } from "vue";
2
+ const L = { class: "mt-table" }, M = ["colspan", "rowspan"], D = ["colspan", "rowspan"], N = /* @__PURE__ */ K({
3
+ name: "MtTable",
4
+ __name: "table",
5
+ props: {
6
+ data: { default: () => [] },
7
+ config: { default: () => [] }
8
+ },
9
+ setup(k) {
10
+ const S = k, h = i(() => S.config.map((e) => ({ ...e, columns: e.columns.filter((l) => l.title) }))), y = i(() => S.config.map((e) => ({ ...e, columns: e.columns.filter((l) => l.dataKey) }))), b = i(() => {
11
+ const e = h.value.map((t) => t.columns.reduce((n, a) => n + (a.head?.colSpan || 1), 0)), l = y.value.map((t) => t.columns.reduce((n, a) => n + (a.cell?.colSpan || 1), 0));
12
+ return Math.max(...e, ...l);
13
+ }), $ = i(() => {
14
+ const e = h.value.map((l) => l.columns.map((t) => t.head?.colSpan || 0));
15
+ return f(e);
16
+ }), B = i(() => {
17
+ const e = y.value.map((l) => l.columns.map((t) => t.cell?.colSpan || 0));
18
+ return f(e);
19
+ });
20
+ function f(e) {
21
+ return e.map((l) => {
22
+ const t = l.filter(Boolean), n = t.reduce((r, p) => r + p, 0);
23
+ let a = l.length - t.length, s = b.value - n;
24
+ return l.map((r) => (!r && s > 0 && (r = Math.ceil(s / a), a--, s -= r), r));
25
+ });
26
+ }
27
+ return (e, l) => (u(), o("table", L, [
28
+ C("thead", null, [
29
+ (u(!0), o(c, null, d(h.value, (t, n) => (u(), o("tr", {
30
+ key: n,
31
+ style: m(t.headStyle)
32
+ }, [
33
+ (u(!0), o(c, null, d(t.columns, (a, s) => (u(), o("th", {
34
+ key: `${a.title}-${s}`,
35
+ colspan: $.value[n][s],
36
+ rowspan: a.head?.rowSpan,
37
+ style: m(a.head?.style)
38
+ }, [
39
+ g(e.$slots, "header", {
40
+ column: a,
41
+ columnIndex: s,
42
+ row: t,
43
+ rowIndex: n
44
+ }, () => [
45
+ v(_(a.title), 1)
46
+ ], !0)
47
+ ], 12, M))), 128))
48
+ ], 4))), 128))
49
+ ]),
50
+ C("tbody", null, [
51
+ (u(!0), o(c, null, d(e.data, (t, n) => (u(), o(c, { key: n }, [
52
+ (u(!0), o(c, null, d(y.value, (a, s) => (u(), o("tr", {
53
+ key: s,
54
+ style: m(a.rowStyle)
55
+ }, [
56
+ (u(!0), o(c, null, d(a.columns, (r, p) => (u(), o("td", {
57
+ key: `${r.dataKey}-${p}`,
58
+ colspan: B.value[s][p],
59
+ rowspan: r.cell?.rowSpan,
60
+ style: m(r.cell?.style)
61
+ }, [
62
+ g(e.$slots, "cell", {
63
+ column: r,
64
+ columnIndex: p,
65
+ dataIndex: n,
66
+ record: t,
67
+ row: a,
68
+ rowIndex: s
69
+ }, () => [
70
+ v(_(t[r.dataKey]), 1)
71
+ ], !0)
72
+ ], 12, D))), 128))
73
+ ], 4))), 128))
74
+ ], 64))), 128))
75
+ ])
76
+ ]));
77
+ }
78
+ });
79
+ export {
80
+ N as default
81
+ };
82
+ //# sourceMappingURL=table.vue2.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.vue2.mjs","sources":["../../../../../src/table/src/table.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { TableProps } from './table';\nimport { computed } from 'vue';\n\ndefineOptions({ name: 'MtTable' });\n\nconst props = withDefaults(defineProps<TableProps>(), {\n data: () => [],\n config: () => [],\n});\n\n/** 表头配置 */\nconst headConfig = computed(() => {\n return props.config.map(rowItem => ({ ...rowItem, columns: rowItem.columns.filter(column => column.title) }));\n});\n\n/** 数据配置 */\nconst dataConfig = computed(() => {\n return props.config.map(rowItem => ({ ...rowItem, columns: rowItem.columns.filter(column => column.dataKey) }));\n});\n\n/** 最大列数 */\nconst maxColSpan = computed(() => {\n const handReduce = headConfig.value.map(item => item.columns.reduce((pre, cur) => pre + (cur.head?.colSpan || 1), 0));\n const cellReduce = dataConfig.value.map(item => item.columns.reduce((pre, cur) => pre + (cur.cell?.colSpan || 1), 0));\n return Math.max(...handReduce, ...cellReduce);\n});\n\n/** 表头列合并 */\nconst headColSpan = computed(() => {\n const colSpanList = headConfig.value.map(item => item.columns.map(column => column.head?.colSpan || 0));\n return getColSpanData(colSpanList);\n});\n\n/** 数据列合并 */\nconst dataColSpan = computed(() => {\n const colSpanList = dataConfig.value.map(item => item.columns.map(column => column.cell?.colSpan || 0));\n return getColSpanData(colSpanList);\n});\n\n/** 获取合并列数组 */\nfunction getColSpanData(colSpanList: number[][]) {\n return colSpanList.map((columns) => {\n const colSpanColumns = columns.filter(Boolean); // 已分配colSpan的列\n const beenColSpan = colSpanColumns.reduce((pur, cur) => pur + cur, 0); // 总colSpan\n let remainCount = columns.length - colSpanColumns.length; // 剩余未配置colSpan的列数\n let remainColSpan = maxColSpan.value - beenColSpan; // 剩余可分配的colSpan\n return columns.map((colSpan) => {\n if (!colSpan && remainColSpan > 0) {\n colSpan = Math.ceil(remainColSpan / remainCount); // 每列平均分配colSpan\n remainCount--;\n remainColSpan -= colSpan;\n }\n return colSpan;\n });\n });\n}\n</script>\n\n<template>\n <table class=\"mt-table\">\n <!-- 表头 -->\n <thead>\n <tr\n v-for=\"(row, rowIndex) in headConfig\"\n :key=\"rowIndex\"\n :style=\"row.headStyle\"\n >\n <template v-for=\"(column, columnIndex) in row.columns\" :key=\"`${column.title}-${columnIndex}`\">\n <th\n :colspan=\"headColSpan[rowIndex][columnIndex]\"\n :rowspan=\"column.head?.rowSpan\"\n :style=\"column.head?.style\"\n >\n <slot\n :column=\"column\"\n :column-index=\"columnIndex\"\n :row=\"row\"\n :row-index=\"rowIndex\"\n name=\"header\"\n >\n {{ column.title }}\n </slot>\n </th>\n </template>\n </tr>\n </thead>\n <!-- 表体 -->\n <tbody>\n <template\n v-for=\"(record, dataIndex) in data\"\n :key=\"dataIndex\"\n >\n <tr\n v-for=\"(row, rowIndex) in dataConfig\"\n :key=\"rowIndex\"\n :style=\"row.rowStyle\"\n >\n <template v-for=\"(column, columnIndex) in row.columns\" :key=\"`${column.dataKey}-${columnIndex}`\">\n <td\n :colspan=\"dataColSpan[rowIndex][columnIndex]\"\n :rowspan=\"column.cell?.rowSpan\"\n :style=\"column.cell?.style\"\n >\n <slot\n :column=\"column\"\n :column-index=\"columnIndex\"\n :data-index=\"dataIndex\"\n name=\"cell\"\n :record=\"record\"\n :row=\"row\"\n :row-index=\"rowIndex\"\n >\n {{ record[column.dataKey!] }}\n </slot>\n </td>\n </template>\n </tr>\n </template>\n </tbody>\n </table>\n</template>\n\n<style lang=\"scss\" scoped>\n.mt-table {\n width: 100%;\n max-width: 100%;\n border-spacing: 0;\n border-collapse: collapse;\n\n thead {\n tr {\n th {\n padding: 8px 16px;\n border: 1px #f0f0f0 solid;\n }\n }\n }\n\n tbody {\n tr {\n td {\n padding: 16px;\n border: 1px #f0f0f0 solid;\n }\n }\n }\n}\n</style>\n"],"names":["props","__props","headConfig","computed","rowItem","column","dataConfig","maxColSpan","handReduce","item","pre","cur","cellReduce","headColSpan","colSpanList","getColSpanData","dataColSpan","columns","colSpanColumns","beenColSpan","pur","remainCount","remainColSpan","colSpan"],"mappings":";;;;;;;;;AAMA,UAAMA,IAAQC,GAMRC,IAAaC,EAAS,MACnBH,EAAM,OAAO,IAAI,CAAAI,OAAY,EAAE,GAAGA,GAAS,SAASA,EAAQ,QAAQ,OAAO,CAAAC,MAAUA,EAAO,KAAK,IAAI,CAC7G,GAGKC,IAAaH,EAAS,MACnBH,EAAM,OAAO,IAAI,CAAAI,OAAY,EAAE,GAAGA,GAAS,SAASA,EAAQ,QAAQ,OAAO,CAAAC,MAAUA,EAAO,OAAO,IAAI,CAC/G,GAGKE,IAAaJ,EAAS,MAAM;AAChC,YAAMK,IAAaN,EAAW,MAAM,IAAI,CAAAO,MAAQA,EAAK,QAAQ,OAAO,CAACC,GAAKC,MAAQD,KAAOC,EAAI,MAAM,WAAW,IAAI,CAAC,CAAC,GAC9GC,IAAaN,EAAW,MAAM,IAAI,CAAAG,MAAQA,EAAK,QAAQ,OAAO,CAACC,GAAKC,MAAQD,KAAOC,EAAI,MAAM,WAAW,IAAI,CAAC,CAAC;AACpH,aAAO,KAAK,IAAI,GAAGH,GAAY,GAAGI,CAAU;AAAA,IAC9C,CAAC,GAGKC,IAAcV,EAAS,MAAM;AACjC,YAAMW,IAAcZ,EAAW,MAAM,IAAI,CAAAO,MAAQA,EAAK,QAAQ,IAAI,CAAAJ,MAAUA,EAAO,MAAM,WAAW,CAAC,CAAC;AACtG,aAAOU,EAAeD,CAAW;AAAA,IACnC,CAAC,GAGKE,IAAcb,EAAS,MAAM;AACjC,YAAMW,IAAcR,EAAW,MAAM,IAAI,CAAAG,MAAQA,EAAK,QAAQ,IAAI,CAAAJ,MAAUA,EAAO,MAAM,WAAW,CAAC,CAAC;AACtG,aAAOU,EAAeD,CAAW;AAAA,IACnC,CAAC;AAGD,aAASC,EAAeD,GAAyB;AAC/C,aAAOA,EAAY,IAAI,CAACG,MAAY;AAClC,cAAMC,IAAiBD,EAAQ,OAAO,OAAO,GACvCE,IAAcD,EAAe,OAAO,CAACE,GAAKT,MAAQS,IAAMT,GAAK,CAAC;AACpE,YAAIU,IAAcJ,EAAQ,SAASC,EAAe,QAC9CI,IAAgBf,EAAW,QAAQY;AACvC,eAAOF,EAAQ,IAAI,CAACM,OACd,CAACA,KAAWD,IAAgB,MAC9BC,IAAU,KAAK,KAAKD,IAAgBD,CAAW,GAC/CA,KACAC,KAAiBC,IAEZA,EACR;AAAA,MACH,CAAC;AAAA,IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.mjs","sources":["../../../../src/utils/install.ts"],"sourcesContent":["import type { App, Component, Plugin } from 'vue';\n\nexport function withInstall<T extends Component>(comp: T) {\n (comp as T & Plugin).install = (app: App): void => {\n if (comp.name) {\n app.component(comp.name, comp);\n }\n };\n return comp;\n}\n"],"names":["withInstall","comp","app"],"mappings":"AAEO,SAASA,EAAiCC,GAAS;AACvD,SAAAA,EAAoB,UAAU,CAACC,MAAmB;AACjD,IAAID,EAAK,QACPC,EAAI,UAAUD,EAAK,MAAMA,CAAI;AAAA,EAEjC,GACOA;AACT;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./src/installer.js"),t=require("./src/expand/index.js"),r=require("./src/resize/index.js"),i=require("./src/sort/index.js"),n=require("./src/table/index.js");exports.default=e.default;exports.MtExpand=t.MtExpand;exports.MtResize=r.MtResize;exports.MtSort=i.MtSort;exports.MtTable=n.MtTable;
2
+ //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="0.4.0";exports.version=e;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="0.6.0";exports.version=e;
2
2
  //# sourceMappingURL=package.json.js.map
@@ -1,3 +1,2 @@
1
1
  "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../utils/install.js"),e=require("./src/expand.vue.js"),n=t.withInstall(e.default);exports.MtExpand=n;
2
2
  //# sourceMappingURL=index.js.map
3
- require('./src/expand.css');
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/expand/index.ts"],"sourcesContent":["import { withInstall } from '../utils/install';\nimport Expand from './src/expand.vue';\n\nexport const MtExpand = withInstall(Expand);\n\nexport * from './src/expand';\n"],"names":["MtExpand","withInstall","Expand"],"mappings":"wJAGaA,EAAWC,EAAAA,YAAYC,EAAAA,OAAM"}
@@ -0,0 +1 @@
1
+ .mt-expand[data-v-80e6c6dd]{overflow:hidden}.mt-expand-transition[data-v-80e6c6dd]{transition:height var(--662fdf4a) ease-in-out}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./expand.vue2.js");;/* empty css */const t=require("../../../_virtual/_plugin-vue_export-helper.js"),u=t.default(e.default,[["__scopeId","data-v-60128610"]]);exports.default=u;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./expand.vue2.js");;/* empty css */const t=require("../../../_virtual/_plugin-vue_export-helper.js"),u=t.default(e.default,[["__scopeId","data-v-80e6c6dd"]]);exports.default=u;
2
2
  //# sourceMappingURL=expand.vue.js.map
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),r=require("@vueuse/core"),c=e.defineComponent({name:"MtExpand",__name:"expand",props:{open:{type:Boolean,default:!1},targetRange:{default:0},transitionTime:{default:200}},setup(u){e.useCssVars(n=>({"662fdf4a":l.value}));const t=u,l=e.computed(()=>`${t.transitionTime}ms`),a=e.ref(),o=e.ref(0);r.useResizeObserver(a,r.useDebounceFn(()=>{o.value=a.value?.scrollHeight||0},200));const s=e.computed(()=>o.value>t.targetRange),i=e.computed(()=>!o.value&&t.open?{}:{height:`${!s.value||t.open?o.value:t.targetRange}px`});return(n,p)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"contentRef",ref:a,class:e.normalizeClass(["mt-expand",{"mt-expand-transition":!!n.transitionTime}]),style:e.normalizeStyle(i.value)},[e.renderSlot(n.$slots,"default",{open:n.open,isOutRange:s.value},void 0,!0)],6))}});exports.default=c;
2
+ //# sourceMappingURL=expand.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expand.vue2.js","sources":["../../../../../src/expand/src/expand.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ExpandProps } from './expand.ts';\nimport { useDebounceFn, useResizeObserver } from '@vueuse/core';\nimport { computed, ref } from 'vue';\n\ndefineOptions({ name: 'MtExpand' });\n\nconst props = withDefaults(defineProps<ExpandProps>(), {\n open: false,\n targetRange: 0,\n transitionTime: 200,\n});\n\nconst transitionDuration = computed(() => `${props.transitionTime}ms`);\n\n/** 容器实例 */\nconst contentRef = ref<HTMLDivElement>();\n/** 容器的范围 */\nconst contentRange = ref(0);\n// 监听容器变化\nuseResizeObserver(contentRef, useDebounceFn(() => {\n contentRange.value = contentRef.value?.scrollHeight || 0;\n}, 200));\n\n/** 是否超出目标范围 */\nconst isOutRange = computed(() => contentRange.value > props.targetRange);\n\n/** 展开或收起后容器样式 */\nconst contentStyle = computed(() => {\n if (!contentRange.value && props.open) {\n return {};\n }\n const size = !isOutRange.value || props.open ? contentRange.value : props.targetRange;\n return { height: `${size}px` };\n});\n</script>\n\n<template>\n <div\n ref=\"contentRef\"\n class=\"mt-expand\"\n :class=\"{ 'mt-expand-transition': !!transitionTime }\"\n :style=\"contentStyle\"\n >\n <slot :open=\"open\" :is-out-range=\"isOutRange\" />\n </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.mt-expand {\n overflow: hidden;\n}\n\n.mt-expand-transition {\n transition: height v-bind(transitionDuration) ease-in-out;\n}\n</style>\n"],"names":["props","__props","transitionDuration","computed","contentRef","ref","contentRange","useResizeObserver","useDebounceFn","isOutRange","contentStyle"],"mappings":"+VAOA,MAAMA,EAAQC,EAMRC,EAAqBC,EAAAA,SAAS,IAAM,GAAGH,EAAM,cAAc,IAAI,EAG/DI,EAAaC,EAAAA,IAAA,EAEbC,EAAeD,EAAAA,IAAI,CAAC,EAE1BE,oBAAkBH,EAAYI,EAAAA,cAAc,IAAM,CAChDF,EAAa,MAAQF,EAAW,OAAO,cAAgB,CACzD,EAAG,GAAG,CAAC,EAGP,MAAMK,EAAaN,EAAAA,SAAS,IAAMG,EAAa,MAAQN,EAAM,WAAW,EAGlEU,EAAeP,EAAAA,SAAS,IACxB,CAACG,EAAa,OAASN,EAAM,KACxB,CAAA,EAGF,CAAE,OAAQ,GADJ,CAACS,EAAW,OAAST,EAAM,KAAOM,EAAa,MAAQN,EAAM,WAClD,IAAA,CACzB"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("../package.json.js"),s=require("./expand/index.js"),u=require("./resize/index.js"),l=require("./sort/index.js"),c=require("./table/index.js"),t=Symbol("MT_INSTALLED_KEY");function a(r=[]){const n=e=>{e[t]||(e[t]=!0,r.forEach(i=>e.use(i)))};return{version:o.version,install:n}}const d=a([s.MtExpand,u.MtResize,l.MtSort,c.MtTable]);exports.default=d;
2
+ //# sourceMappingURL=installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.js","sources":["../../../src/installer.ts"],"sourcesContent":["import type { App, Component, Plugin } from 'vue';\nimport { version } from '../package.json';\nimport { MtExpand } from './expand';\nimport { MtResize } from './resize';\nimport { MtSort } from './sort';\nimport { MtTable } from './table';\n\nconst INSTALLED_KEY = Symbol('MT_INSTALLED_KEY');\n\nfunction makeInstaller(components: Component[] = []) {\n const install = (app: App & { [INSTALLED_KEY]?: boolean }) => {\n if (app[INSTALLED_KEY]) { return; }\n\n app[INSTALLED_KEY] = true;\n components.forEach(c => app.use(c as Plugin));\n };\n\n return {\n version,\n install,\n };\n}\n\nconst installer = makeInstaller([\n MtExpand,\n MtResize,\n MtSort,\n MtTable,\n]);\n\nexport default installer;\n"],"names":["INSTALLED_KEY","makeInstaller","components","install","app","c","version","installer","MtExpand","MtResize","MtSort","MtTable"],"mappings":"2QAOMA,EAAgB,OAAO,kBAAkB,EAE/C,SAASC,EAAcC,EAA0B,GAAI,CACnD,MAAMC,EAAWC,GAA6C,CACxDA,EAAIJ,CAAa,IAErBI,EAAIJ,CAAa,EAAI,GACrBE,EAAW,QAAQG,GAAKD,EAAI,IAAIC,CAAW,CAAC,EAC9C,EAEA,MAAO,CAAA,QACLC,EAAAA,QACA,QAAAH,CAAA,CAEJ,CAEA,MAAMI,EAAYN,EAAc,CAC9BO,EAAAA,SACAC,EAAAA,SACAC,EAAAA,OACAC,EAAAA,OACF,CAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../utils/install.js"),t=require("./src/component-neo.vue.js");require("vue");require("./src/hooks/use-component-state.js");const o=e.withInstall(t.default);exports.MtComponentNeo=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../utils/install.js"),t=require("./src/resize.vue.js"),i=e.withInstall(t.default);exports.MtResize=i;
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/resize/index.ts"],"sourcesContent":["import { withInstall } from '../utils/install';\r\nimport Resize from './src/resize.vue';\r\n\r\nexport const MtResize = withInstall(Resize);\r\n\r\nexport * from './src/resize';\r\n"],"names":["MtResize","withInstall","Resize"],"mappings":"wJAGaA,EAAWC,EAAAA,YAAYC,EAAAA,OAAM"}
@@ -0,0 +1 @@
1
+ .mt-resize[data-v-d512c549]{position:relative;overflow:visible}.mt-resize .left-box[data-v-d512c549]{position:absolute;top:4px;left:-4px;width:8px;height:calc(100% - 8px);cursor:w-resize}.mt-resize .right-box[data-v-d512c549]{position:absolute;top:4px;right:-4px;width:8px;height:calc(100% - 8px);cursor:e-resize}.mt-resize .top-box[data-v-d512c549]{position:absolute;top:-4px;left:4px;width:calc(100% - 8px);height:8px;cursor:n-resize}.mt-resize .bottom-box[data-v-d512c549]{position:absolute;bottom:-4px;left:4px;width:calc(100% - 8px);height:8px;cursor:s-resize}.mt-resize .left-top-box[data-v-d512c549]{position:absolute;top:-4px;left:-4px;width:8px;height:8px;cursor:nw-resize}.mt-resize .right-top-box[data-v-d512c549]{position:absolute;top:-4px;right:-4px;width:8px;height:8px;cursor:ne-resize}.mt-resize .left-bottom-box[data-v-d512c549]{position:absolute;bottom:-4px;left:-4px;width:8px;height:8px;cursor:sw-resize}.mt-resize .right-bottom-box[data-v-d512c549]{position:absolute;right:-4px;bottom:-4px;width:8px;height:8px;cursor:se-resize}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./resize.vue2.js");;/* empty css */const t=require("../../../_virtual/_plugin-vue_export-helper.js"),u=t.default(e.default,[["__scopeId","data-v-d512c549"]]);exports.default=u;
2
+ //# sourceMappingURL=resize.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),v=require("dom-transform-tool"),B=e.defineComponent({name:"MtResize",__name:"resize",props:{disabled:{type:Boolean,default:!1},offset:{},directions:{default:()=>["right"]},lockAspectRatio:{type:Boolean,default:!1},grid:{default:()=>[.5,.5]}},emits:["resize"],setup(p,{emit:m}){const i=p,f=m,u=e.ref(),a=e.ref("");function n(l,t){a.value=t,v.domResize({event:l,direction:t,target:u.value,offset:i.offset,lockAspectRatio:i.lockAspectRatio,grid:i.grid,callback:(o,k)=>{f("resize",o,k)}})}const r=e.computed(()=>i.directions.includes("left")),s=e.computed(()=>i.directions.includes("right")),d=e.computed(()=>i.directions.includes("top")),c=e.computed(()=>i.directions.includes("bottom"));return(l,t)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"contentRef",ref:u,class:"mt-resize"},[l.disabled?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[r.value&&!l.lockAspectRatio?(e.openBlock(),e.createElementBlock("div",{key:0,class:"left-box",onPointerdown:t[0]||(t[0]=e.withModifiers(o=>n(o,"left"),["stop","prevent"]))},null,32)):e.createCommentVNode("",!0),s.value&&!l.lockAspectRatio?(e.openBlock(),e.createElementBlock("div",{key:1,class:"right-box",onPointerdown:t[1]||(t[1]=e.withModifiers(o=>n(o,"right"),["stop","prevent"]))},null,32)):e.createCommentVNode("",!0),d.value&&!l.lockAspectRatio?(e.openBlock(),e.createElementBlock("div",{key:2,class:"top-box",onPointerdown:t[2]||(t[2]=e.withModifiers(o=>n(o,"top"),["stop","prevent"]))},null,32)):e.createCommentVNode("",!0),c.value&&!l.lockAspectRatio?(e.openBlock(),e.createElementBlock("div",{key:3,class:"bottom-box",onPointerdown:t[3]||(t[3]=e.withModifiers(o=>n(o,"bottom"),["stop","prevent"]))},null,32)):e.createCommentVNode("",!0),r.value&&d.value?(e.openBlock(),e.createElementBlock("div",{key:4,class:"left-top-box",onPointerdown:t[4]||(t[4]=e.withModifiers(o=>n(o,"left-top"),["stop","prevent"]))},null,32)):e.createCommentVNode("",!0),s.value&&d.value?(e.openBlock(),e.createElementBlock("div",{key:5,class:"right-top-box",onPointerdown:t[5]||(t[5]=e.withModifiers(o=>n(o,"right-top"),["stop","prevent"]))},null,32)):e.createCommentVNode("",!0),r.value&&c.value?(e.openBlock(),e.createElementBlock("div",{key:6,class:"left-bottom-box",onPointerdown:t[6]||(t[6]=e.withModifiers(o=>n(o,"left-bottom"),["stop","prevent"]))},null,32)):e.createCommentVNode("",!0),s.value&&c.value?(e.openBlock(),e.createElementBlock("div",{key:7,class:"right-bottom-box",onPointerdown:t[7]||(t[7]=e.withModifiers(o=>n(o,"right-bottom"),["stop","prevent"]))},null,32)):e.createCommentVNode("",!0)],64)),e.renderSlot(l.$slots,"default",{direction:a.value},void 0,!0)],512))}});exports.default=B;
2
+ //# sourceMappingURL=resize.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize.vue2.js","sources":["../../../../../src/resize/src/resize.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { DomResizeContent, DomResizeDirection, DomResizeStyle } from 'dom-transform-tool';\r\nimport type { ResizeProps } from './resize';\r\nimport { domResize } from 'dom-transform-tool';\r\nimport { computed, ref } from 'vue';\r\n\r\ndefineOptions({ name: 'MtResize' });\r\n\r\nconst props = withDefaults(\r\n defineProps<ResizeProps>(),\r\n {\r\n disabled: false,\r\n directions: () => ['right'],\r\n lockAspectRatio: false,\r\n grid: () => [0.5, 0.5],\r\n },\r\n);\r\n\r\nconst emit = defineEmits<{\r\n (e: 'resize', content: DomResizeContent, style: DomResizeStyle): void\r\n}>();\r\n\r\n/** 元素实例 */\r\nconst contentRef = ref<HTMLDivElement>();\r\n/** 调整的方向 */\r\nconst resizeDirection = ref('');\r\n/** 调整函数 */\r\nfunction handleResize(event: PointerEvent, direction: DomResizeDirection) {\r\n resizeDirection.value = direction;\r\n domResize({\r\n event,\r\n direction,\r\n target: contentRef.value,\r\n offset: props.offset,\r\n lockAspectRatio: props.lockAspectRatio,\r\n grid: props.grid,\r\n callback: (content, style) => {\r\n emit('resize', content, style);\r\n },\r\n });\r\n};\r\n\r\nconst isLeftDir = computed(() => props.directions.includes('left'));\r\nconst isRightDir = computed(() => props.directions.includes('right'));\r\nconst isTopDir = computed(() => props.directions.includes('top'));\r\nconst isBottomDir = computed(() => props.directions.includes('bottom'));\r\n</script>\r\n\r\n<template>\r\n <div\r\n ref=\"contentRef\"\r\n class=\"mt-resize\"\r\n >\r\n <template v-if=\"!disabled\">\r\n <div v-if=\"isLeftDir && !lockAspectRatio\" class=\"left-box\" @pointerdown.stop.prevent=\"(e) => handleResize(e, 'left')\" />\r\n <div v-if=\"isRightDir && !lockAspectRatio\" class=\"right-box\" @pointerdown.stop.prevent=\"(e) => handleResize(e, 'right')\" />\r\n <div v-if=\"isTopDir && !lockAspectRatio\" class=\"top-box\" @pointerdown.stop.prevent=\"(e) => handleResize(e, 'top')\" />\r\n <div v-if=\"isBottomDir && !lockAspectRatio\" class=\"bottom-box\" @pointerdown.stop.prevent=\"(e) => handleResize(e, 'bottom')\" />\r\n <div v-if=\"isLeftDir && isTopDir\" class=\"left-top-box\" @pointerdown.stop.prevent=\"(e) => handleResize(e, 'left-top')\" />\r\n <div v-if=\"isRightDir && isTopDir\" class=\"right-top-box\" @pointerdown.stop.prevent=\"(e) => handleResize(e, 'right-top')\" />\r\n <div v-if=\"isLeftDir && isBottomDir\" class=\"left-bottom-box\" @pointerdown.stop.prevent=\"(e) => handleResize(e, 'left-bottom')\" />\r\n <div v-if=\"isRightDir && isBottomDir\" class=\"right-bottom-box\" @pointerdown.stop.prevent=\"(e) => handleResize(e, 'right-bottom')\" />\r\n </template>\r\n <slot :direction=\"resizeDirection\" />\r\n </div>\r\n</template>\r\n\r\n<style scoped lang=\"scss\">\r\n.mt-resize {\r\n position: relative;\r\n overflow: visible;\r\n\r\n .left-box {\r\n position: absolute;\r\n top: 4px;\r\n left: -4px;\r\n width: 8px;\r\n height: calc(100% - 8px);\r\n cursor: w-resize;\r\n }\r\n\r\n .right-box {\r\n position: absolute;\r\n top: 4px;\r\n right: -4px;\r\n width: 8px;\r\n height: calc(100% - 8px);\r\n cursor: e-resize;\r\n }\r\n\r\n .top-box {\r\n position: absolute;\r\n top: -4px;\r\n left: 4px;\r\n width: calc(100% - 8px);\r\n height: 8px;\r\n cursor: n-resize;\r\n }\r\n\r\n .bottom-box {\r\n position: absolute;\r\n bottom: -4px;\r\n left: 4px;\r\n width: calc(100% - 8px);\r\n height: 8px;\r\n cursor: s-resize;\r\n }\r\n\r\n .left-top-box {\r\n position: absolute;\r\n top: -4px;\r\n left: -4px;\r\n width: 8px;\r\n height: 8px;\r\n cursor: nw-resize;\r\n }\r\n\r\n .right-top-box {\r\n position: absolute;\r\n top: -4px;\r\n right: -4px;\r\n width: 8px;\r\n height: 8px;\r\n cursor: ne-resize;\r\n }\r\n\r\n .left-bottom-box {\r\n position: absolute;\r\n bottom: -4px;\r\n left: -4px;\r\n width: 8px;\r\n height: 8px;\r\n cursor: sw-resize;\r\n }\r\n\r\n .right-bottom-box {\r\n position: absolute;\r\n right: -4px;\r\n bottom: -4px;\r\n width: 8px;\r\n height: 8px;\r\n cursor: se-resize;\r\n }\r\n}\r\n</style>\r\n"],"names":["props","__props","emit","__emit","contentRef","ref","resizeDirection","handleResize","event","direction","domResize","content","style","isLeftDir","computed","isRightDir","isTopDir","isBottomDir"],"mappings":"wZAQA,MAAMA,EAAQC,EAURC,EAAOC,EAKPC,EAAaC,EAAAA,IAAA,EAEbC,EAAkBD,EAAAA,IAAI,EAAE,EAE9B,SAASE,EAAaC,EAAqBC,EAA+B,CACxEH,EAAgB,MAAQG,EACxBC,YAAU,CACR,MAAAF,EACA,UAAAC,EACA,OAAQL,EAAW,MACnB,OAAQJ,EAAM,OACd,gBAAiBA,EAAM,gBACvB,KAAMA,EAAM,KACZ,SAAU,CAACW,EAASC,IAAU,CAC5BV,EAAK,SAAUS,EAASC,CAAK,CAC/B,CAAA,CACD,CACH,CAEA,MAAMC,EAAYC,EAAAA,SAAS,IAAMd,EAAM,WAAW,SAAS,MAAM,CAAC,EAC5De,EAAaD,EAAAA,SAAS,IAAMd,EAAM,WAAW,SAAS,OAAO,CAAC,EAC9DgB,EAAWF,EAAAA,SAAS,IAAMd,EAAM,WAAW,SAAS,KAAK,CAAC,EAC1DiB,EAAcH,EAAAA,SAAS,IAAMd,EAAM,WAAW,SAAS,QAAQ,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/sort/index.ts"],"sourcesContent":["import { withInstall } from '../utils/install';\nimport Sort from './src/sort';\n\nexport const MtSort = withInstall(Sort);\n\nexport * from './src/sort';\n"],"names":["MtSort","withInstall","Sort"],"mappings":"kJAGaA,EAASC,EAAAA,YAAYC,EAAAA,OAAI"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("vue"),f=c.defineComponent({name:"MtSort",props:{sortList:{type:Array,default:()=>[]},keyName:{type:String,default:"sort-key"}},setup(r,{slots:o}){const n=c.computed(()=>{const t=o.default?.()||[],e=a(r.keyName,t),s=Array.from(new Set(r.sortList)).map(u=>e[u]).filter(Boolean);return l(r.keyName,t,r.sortList,s)});return()=>n.value}});function a(r,o,n={}){return o.forEach(t=>{const e=t.props?.[r];if(e){n[e]?console.warn(`<mt-sort> ${r}: ${e} repeat`):n[e]=t;return}Array.isArray(t.children)&&a(r,t.children,n)}),n}function l(r,o,n,t){const e=[];return o.forEach(s=>{const u=s.props?.[r];if(u&&n.includes(u)){const i=t.shift();if(i){e.push(i);return}}Array.isArray(s.children)&&(s={...s},s.children=l(r,s.children,n,t)),e.push(s)}),e}exports.default=f;
2
+ //# sourceMappingURL=sort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort.js","sources":["../../../../../src/sort/src/sort.ts"],"sourcesContent":["import type { PropType, VNode } from 'vue';\nimport { computed, defineComponent } from 'vue';\n\nexport interface SortProps {\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> ${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","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,CAAC,EAGlB,QAAS,CACP,KAAM,OACN,QAAS,UAAA,CACX,EAEF,MAAMC,EAAO,CAAE,MAAAC,GAAS,CACtB,MAAMC,EAAeC,EAAAA,SAAS,IAAM,CAClC,MAAMC,EAAYH,EAAM,UAAA,GAAe,CAAA,EACjCI,EAAeC,EAAYN,EAAM,QAASI,CAAS,EACnDG,EAAgB,MAAM,KAAK,IAAI,IAAIP,EAAM,QAAQ,CAAC,EAAE,OAAWK,EAAaG,CAAG,CAAC,EAAE,OAAO,OAAO,EACtG,OAAOC,EAAkBT,EAAM,QAASI,EAAWJ,EAAM,SAAUO,CAAa,CAClF,CAAC,EAED,MAAO,IAAML,EAAa,KAC5B,CACF,CAAC,EAGD,SAASI,EAAYI,EAAiBN,EAAoBO,EAA6C,CAAA,EAAI,CACzG,OAAAP,EAAU,QAASQ,GAAS,CAC1B,MAAMC,EAAUD,EAAK,QAAQF,CAAO,EACpC,GAAIG,EAAS,CACPF,EAASE,CAAO,EAClB,QAAQ,KAAK,aAAaH,CAAO,KAAKG,CAAO,SAAS,EAGtDF,EAASE,CAAO,EAAID,EAEtB,MACF,CACI,MAAM,QAAQA,EAAK,QAAQ,GAC7BN,EAAYI,EAASE,EAAK,SAAqBD,CAAQ,CAE3D,CAAC,EACMA,CACT,CAGA,SAASF,EAAkBC,EAAiBN,EAAoBU,EAA+BP,EAAwB,CACrH,MAAMQ,EAAmB,CAAA,EACzB,OAAAX,EAAU,QAASY,GAAU,CAC3B,MAAMH,EAAUG,EAAM,QAAQN,CAAO,EACrC,GAAIG,GAAWC,EAAS,SAASD,CAAO,EAAG,CACzC,MAAMI,EAAYV,EAAc,MAAA,EAChC,GAAIU,EAAW,CACbF,EAAQ,KAAKE,CAAS,EACtB,MACF,CACF,CACI,MAAM,QAAQD,EAAM,QAAQ,IAC9BA,EAAQ,CAAE,GAAGA,CAAA,EACbA,EAAM,SAAWP,EAAkBC,EAASM,EAAM,SAAqBF,EAAUP,CAAa,GAEhGQ,EAAQ,KAAKC,CAAK,CACpB,CAAC,EACMD,CACT"}
@@ -1,3 +1,2 @@
1
1
  "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../utils/install.js"),e=require("./src/table.vue.js"),l=t.withInstall(e.default);exports.MtTable=l;
2
2
  //# sourceMappingURL=index.js.map
3
- require('./src/table.css');
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/table/index.ts"],"sourcesContent":["import { withInstall } from '../utils/install';\nimport Table from './src/table.vue';\n\nexport const MtTable = withInstall(Table);\n\nexport * from './src/table';\n"],"names":["MtTable","withInstall","Table"],"mappings":"uJAGaA,EAAUC,EAAAA,YAAYC,EAAAA,OAAK"}
@@ -0,0 +1 @@
1
+ .mt-table[data-v-76e3a23b]{width:100%;max-width:100%;border-spacing:0;border-collapse:collapse}.mt-table thead tr th[data-v-76e3a23b]{padding:8px 16px;border:1px #f0f0f0 solid}.mt-table tbody tr td[data-v-76e3a23b]{padding:16px;border:1px #f0f0f0 solid}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./table.vue2.js");;/* empty css */const t=require("../../../_virtual/_plugin-vue_export-helper.js"),u=t.default(e.default,[["__scopeId","data-v-46d3894f"]]);exports.default=u;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./table.vue2.js");;/* empty css */const t=require("../../../_virtual/_plugin-vue_export-helper.js"),u=t.default(e.default,[["__scopeId","data-v-76e3a23b"]]);exports.default=u;
2
2
  //# sourceMappingURL=table.vue.js.map