@fox-js/foxui-pc 4.0.1-13 → 4.0.1-15

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 (112) hide show
  1. package/dist/index.cjs.js +3 -3
  2. package/dist/index.d.ts +2 -2
  3. package/dist/index.esm.js +4760 -7431
  4. package/dist/index.umd.js +3 -3
  5. package/dist/style.css +1 -1
  6. package/dist/style.esm.js +1 -1
  7. package/dist/types/index.d.ts +0 -20
  8. package/package.json +1 -1
  9. package/dist/index.cjs.js.map +0 -1
  10. package/dist/index.esm.js.map +0 -1
  11. package/dist/index.umd.js.map +0 -1
  12. package/dist/types/src/api/index.d.ts +0 -35
  13. package/dist/types/src/base/component.d.ts +0 -70
  14. package/dist/types/src/base/index.d.ts +0 -4
  15. package/dist/types/src/base/plugin.d.ts +0 -2
  16. package/dist/types/src/components/autocompleteitem/common.d.ts +0 -152
  17. package/dist/types/src/components/autocompleteitem/index.vue.d.ts +0 -3
  18. package/dist/types/src/components/cascaderitem/common.d.ts +0 -223
  19. package/dist/types/src/components/cascaderitem/index.vue.d.ts +0 -3
  20. package/dist/types/src/components/cascaderitem/model.d.ts +0 -70
  21. package/dist/types/src/components/cascaderitem/types.d.ts +0 -26
  22. package/dist/types/src/components/checkboxitem/common.d.ts +0 -181
  23. package/dist/types/src/components/checkboxitem/index.vue.d.ts +0 -3
  24. package/dist/types/src/components/checkboxitem/model.d.ts +0 -63
  25. package/dist/types/src/components/checkboxitem/types.d.ts +0 -33
  26. package/dist/types/src/components/content/common.d.ts +0 -16
  27. package/dist/types/src/components/content/index.vue.d.ts +0 -3
  28. package/dist/types/src/components/dateitem/common.d.ts +0 -152
  29. package/dist/types/src/components/dateitem/index.vue.d.ts +0 -3
  30. package/dist/types/src/components/dialogitem/common.d.ts +0 -27
  31. package/dist/types/src/components/dialogitem/index.vue.d.ts +0 -3
  32. package/dist/types/src/components/exticon/index.vue.d.ts +0 -3
  33. package/dist/types/src/components/footerbar/common.d.ts +0 -26
  34. package/dist/types/src/components/footerbar/index.vue.d.ts +0 -3
  35. package/dist/types/src/components/footerbar/type.d.ts +0 -1
  36. package/dist/types/src/components/group/commons.d.ts +0 -122
  37. package/dist/types/src/components/group/group-props.d.ts +0 -97
  38. package/dist/types/src/components/group/index.vue.d.ts +0 -3
  39. package/dist/types/src/components/headerbar/common.d.ts +0 -80
  40. package/dist/types/src/components/headerbar/index.vue.d.ts +0 -3
  41. package/dist/types/src/components/headerbar/types.d.ts +0 -5
  42. package/dist/types/src/components/hinttext/index.d.ts +0 -27
  43. package/dist/types/src/components/hinttext/index.vue.d.ts +0 -3
  44. package/dist/types/src/components/indicator/common.d.ts +0 -19
  45. package/dist/types/src/components/indicator/index.vue.d.ts +0 -3
  46. package/dist/types/src/components/indicator/types.d.ts +0 -1
  47. package/dist/types/src/components/inputitem/common.d.ts +0 -176
  48. package/dist/types/src/components/inputitem/index.vue.d.ts +0 -3
  49. package/dist/types/src/components/inputnumberitem/common.d.ts +0 -176
  50. package/dist/types/src/components/inputnumberitem/index.vue.d.ts +0 -3
  51. package/dist/types/src/components/item/common.d.ts +0 -137
  52. package/dist/types/src/components/item/index.vue.d.ts +0 -3
  53. package/dist/types/src/components/mapping/common.d.ts +0 -105
  54. package/dist/types/src/components/mapping/index.vue.d.ts +0 -3
  55. package/dist/types/src/components/mapping/model.d.ts +0 -28
  56. package/dist/types/src/components/mapping/types.d.ts +0 -17
  57. package/dist/types/src/components/moneyitem/common.d.ts +0 -300
  58. package/dist/types/src/components/moneyitem/index.vue.d.ts +0 -3
  59. package/dist/types/src/components/moneyitem/util.d.ts +0 -51
  60. package/dist/types/src/components/page/common.d.ts +0 -120
  61. package/dist/types/src/components/page/index.vue.d.ts +0 -3
  62. package/dist/types/src/components/price/index.vue.d.ts +0 -3
  63. package/dist/types/src/components/price/price-props.d.ts +0 -37
  64. package/dist/types/src/components/radioitem/common.d.ts +0 -173
  65. package/dist/types/src/components/radioitem/index.vue.d.ts +0 -3
  66. package/dist/types/src/components/radioitem/model.d.ts +0 -63
  67. package/dist/types/src/components/radioitem/types.d.ts +0 -33
  68. package/dist/types/src/components/rateitem/common.d.ts +0 -136
  69. package/dist/types/src/components/rateitem/index.vue.d.ts +0 -3
  70. package/dist/types/src/components/rowitem/common.d.ts +0 -38
  71. package/dist/types/src/components/rowitem/index.vue.d.ts +0 -3
  72. package/dist/types/src/components/selectitem/common.d.ts +0 -239
  73. package/dist/types/src/components/selectitem/index.vue.d.ts +0 -3
  74. package/dist/types/src/components/selectitem/model.d.ts +0 -70
  75. package/dist/types/src/components/selectitem/types.d.ts +0 -26
  76. package/dist/types/src/components/slotitem/common.d.ts +0 -21
  77. package/dist/types/src/components/slotitem/index.vue.d.ts +0 -3
  78. package/dist/types/src/components/switchitem/common.d.ts +0 -136
  79. package/dist/types/src/components/switchitem/index.vue.d.ts +0 -3
  80. package/dist/types/src/components/tableitem/common.d.ts +0 -230
  81. package/dist/types/src/components/tableitem/index.vue.d.ts +0 -3
  82. package/dist/types/src/components/tableitem/model.d.ts +0 -27
  83. package/dist/types/src/components/tableitem/types.d.ts +0 -19
  84. package/dist/types/src/components/tablemappingcolumn/common.d.ts +0 -56
  85. package/dist/types/src/components/tablemappingcolumn/index.vue.d.ts +0 -3
  86. package/dist/types/src/components/timeitem/common.d.ts +0 -152
  87. package/dist/types/src/components/timeitem/index.vue.d.ts +0 -3
  88. package/dist/types/src/components/timeselectitem/common.d.ts +0 -152
  89. package/dist/types/src/components/timeselectitem/index.vue.d.ts +0 -3
  90. package/dist/types/src/foxui.vue.build.d.ts +0 -137
  91. package/dist/types/src/interface.d.ts +0 -83
  92. package/dist/types/src/main.d.ts +0 -81
  93. package/dist/types/src/utils/commons.d.ts +0 -220
  94. package/dist/types/src/utils/create/component.d.ts +0 -18
  95. package/dist/types/src/utils/create/index.d.ts +0 -1
  96. package/dist/types/src/utils/date.d.ts +0 -76
  97. package/dist/types/src/utils/domain/broadcast.d.ts +0 -116
  98. package/dist/types/src/utils/domain/domain.d.ts +0 -146
  99. package/dist/types/src/utils/domain/events.d.ts +0 -51
  100. package/dist/types/src/utils/domain/group.d.ts +0 -61
  101. package/dist/types/src/utils/domain/index.d.ts +0 -5
  102. package/dist/types/src/utils/domain/item.d.ts +0 -45
  103. package/dist/types/src/utils/domain/page.d.ts +0 -113
  104. package/dist/types/src/utils/domain/types.d.ts +0 -5
  105. package/dist/types/src/utils/domain/validator.d.ts +0 -230
  106. package/dist/types/src/utils/functions.d.ts +0 -20
  107. package/dist/types/src/utils/px.d.ts +0 -13
  108. package/dist/types/src/utils/unique-id.d.ts +0 -16
  109. package/dist/types/src/utils/use-expose/index.d.ts +0 -6
  110. package/dist/types/src/utils/use-position/index.d.ts +0 -14
  111. package/dist/types/src/utils/use-rect/index.d.ts +0 -20
  112. package/dist/types/src/utils/use-touch/index.d.ts +0 -21
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.umd.js","sources":["../../../packages/fox-big-decimal/dist/index.esm.js","../src/utils/commons.ts","../src/utils/domain/broadcast.ts","../src/utils/domain/validator.ts","../src/utils/domain/events.ts","../src/utils/functions.ts","../src/utils/domain/domain.ts","../src/utils/px.ts","../src/utils/domain/page.ts","../src/utils/domain/item.ts","../src/api/index.ts","../src/main.ts","../src/base/component.ts","../src/base/plugin.ts","../src/base/index.ts","../src/utils/create/component.ts","../src/components/item/common.ts","../src/components/group/group-props.ts","../src/utils/use-expose/index.ts","../src/components/page/common.ts","../src/components/page/index.vue","../src/components/page/template.html?vue&type=template&src=true&lang.js","../src/components/headerbar/common.ts","../src/components/headerbar/index.vue","../src/components/headerbar/template.html?vue&type=template&src=true&lang.js","../src/components/footerbar/common.ts","../src/components/footerbar/index.vue","../src/components/footerbar/template.html?vue&type=template&src=true&lang.js","../src/components/content/common.ts","../src/components/content/index.vue","../src/components/content/template.html?vue&type=template&src=true&lang.js","../src/utils/domain/group.ts","../src/utils/use-rect/index.ts","../src/components/group/commons.ts","../src/components/group/index.vue","../src/components/price/price-props.ts","../src/components/price/index.vue","../src/components/hinttext/index.vue","../src/utils/unique-id.ts","../src/utils/use-position/index.ts","../src/components/hinttext/index.ts","../src/components/item/index.vue","../src/components/slotitem/common.ts","../src/components/slotitem/index.vue","../src/components/rowitem/common.ts","../src/components/rowitem/index.vue","../src/components/inputitem/common.ts","../src/components/inputitem/index.vue","../src/components/selectitem/model.ts","../src/components/selectitem/common.ts","../src/components/selectitem/index.vue","../src/components/dateitem/common.ts","../src/components/dateitem/index.vue","../src/components/timeitem/common.ts","../src/components/timeitem/index.vue","../src/components/timeselectitem/common.ts","../src/components/timeselectitem/index.vue","../src/components/moneyitem/util.ts","../src/components/moneyitem/common.ts","../src/components/moneyitem/index.vue","../src/components/inputnumberitem/common.ts","../src/components/inputnumberitem/index.vue","../src/components/cascaderitem/model.ts","../src/components/cascaderitem/common.ts","../src/components/cascaderitem/index.vue","../src/components/autocompleteitem/common.ts","../src/components/autocompleteitem/index.vue","../src/components/mapping/model.ts","../src/components/mapping/common.ts","../src/components/mapping/index.vue","../src/components/tablemappingcolumn/common.ts","../src/components/tablemappingcolumn/index.vue","../src/components/tableitem/model.ts","../src/components/tableitem/common.ts","../src/components/tableitem/index.vue","../src/components/radioitem/model.ts","../src/components/radioitem/common.ts","../src/components/radioitem/index.vue","../src/components/checkboxitem/model.ts","../src/components/checkboxitem/common.ts","../src/components/checkboxitem/index.vue","../src/components/rateitem/common.ts","../src/components/rateitem/index.vue","../src/components/switchitem/common.ts","../src/components/switchitem/index.vue","../src/components/dialogitem/common.ts","../src/components/dialogitem/index.vue","../src/components/exticon/index.vue","../src/components/indicator/common.ts","../src/components/indicator/index.vue","../../../node_modules/.pnpm/dayjs@1.11.5/node_modules/dayjs/dayjs.min.js","../../../node_modules/.pnpm/dayjs@1.11.5/node_modules/dayjs/plugin/customParseFormat.js","../../../node_modules/.pnpm/dayjs@1.11.5/node_modules/dayjs/plugin/advancedFormat.js","../../../node_modules/.pnpm/dayjs@1.11.5/node_modules/dayjs/plugin/localeData.js","../../../node_modules/.pnpm/dayjs@1.11.5/node_modules/dayjs/plugin/weekOfYear.js","../../../node_modules/.pnpm/dayjs@1.11.5/node_modules/dayjs/plugin/weekYear.js","../../../node_modules/.pnpm/dayjs@1.11.5/node_modules/dayjs/plugin/dayOfYear.js","../../../node_modules/.pnpm/dayjs@1.11.5/node_modules/dayjs/plugin/isSameOrAfter.js","../../../node_modules/.pnpm/dayjs@1.11.5/node_modules/dayjs/plugin/isSameOrBefore.js","../src/utils/date.ts","../src/utils/use-touch/index.ts","../src/foxui.vue.build.ts"],"sourcesContent":["/*!\n * @fox-js/big-decimal v4.0.1-3 Wed Nov 02 2022 21:59:56 GMT+0800 (中国标准时间)\n */\nfunction N(e, t = \"0\") {\n let l = 0, r = -1;\n e[0] == \"-\" && (l++, r = 1, e = e.substring(1), e.length), t[0] == \"-\" && (l++, r = 2, t = t.substring(1), t.length), e = c(e), t = c(t), [e, t] = F(c(e), c(t)), l == 1 && (r == 1 ? e = E(e) : t = E(t));\n let s = U(e, t);\n return l ? l == 2 ? \"-\" + c(s) : e.length < s.length ? c(s.substring(1)) : \"-\" + c(E(s)) : c(s);\n}\nfunction E(e) {\n let t = \"\", l = e.length, r = e.split(\".\")[1], s = r ? r.length : 0;\n for (let a = 0; a < l; a++)\n e[a] >= \"0\" && e[a] <= \"9\" ? t += 9 - parseInt(e[a]) : t += e[a];\n let f = s > 0 ? \"0.\" + new Array(s).join(\"0\") + \"1\" : \"1\";\n return U(t, f);\n}\nfunction c(e) {\n let t = e.split(\".\");\n for (t[0] || (t[0] = \"0\"); t[0][0] == \"0\" && t[0].length > 1; )\n t[0] = t[0].substring(1);\n return t[0] + (t[1] ? \".\" + t[1] : \"\");\n}\nfunction F(e, t) {\n let l = e.split(\".\"), r = t.split(\".\"), s = l[0].length, f = r[0].length;\n return s > f ? r[0] = new Array(Math.abs(s - f) + 1).join(\"0\") + (r[0] ? r[0] : \"\") : l[0] = new Array(Math.abs(s - f) + 1).join(\"0\") + (l[0] ? l[0] : \"\"), s = l[1] ? l[1].length : 0, f = r[1] ? r[1].length : 0, (s || f) && (s > f ? r[1] = (r[1] ? r[1] : \"\") + new Array(Math.abs(s - f) + 1).join(\"0\") : l[1] = (l[1] ? l[1] : \"\") + new Array(Math.abs(s - f) + 1).join(\"0\")), e = l[0] + (l[1] ? \".\" + l[1] : \"\"), t = r[0] + (r[1] ? \".\" + r[1] : \"\"), [e, t];\n}\nfunction U(e, t) {\n [e, t] = F(e, t);\n let l = \"\", r = 0;\n for (let s = e.length - 1; s >= 0; s--) {\n if (e[s] === \".\") {\n l = \".\" + l;\n continue;\n }\n let f = parseInt(e[s]) + parseInt(t[s]) + r;\n l = f % 10 + l, r = Math.floor(f / 10);\n }\n return r ? r.toString() + l : l;\n}\nvar g = /* @__PURE__ */ ((e) => (e[e.CEILING = 0] = \"CEILING\", e[e.DOWN = 1] = \"DOWN\", e[e.FLOOR = 2] = \"FLOOR\", e[e.HALF_DOWN = 3] = \"HALF_DOWN\", e[e.HALF_EVEN = 4] = \"HALF_EVEN\", e[e.HALF_UP = 5] = \"HALF_UP\", e[e.UNNECESSARY = 6] = \"UNNECESSARY\", e[e.UP = 7] = \"UP\", e))(g || {});\nfunction A(e, t = 0, l = g.HALF_EVEN) {\n if (l === g.UNNECESSARY)\n throw new Error(\"UNNECESSARY Rounding Mode has not yet been implemented\");\n typeof e == \"number\" && (e = e.toString());\n let r = !1;\n e[0] === \"-\" && (r = !0, e = e.substring(1));\n let s = e.split(\".\"), f = s[0], a = s[1];\n if (t < 0) {\n if (t = -t, f.length <= t)\n return \"0\";\n {\n let i = f.substr(0, f.length - t);\n return e = i + \".\" + f.substr(f.length - t) + a, i = A(e, 0, l), (r ? \"-\" : \"\") + i + new Array(t + 1).join(\"0\");\n }\n }\n if (t == 0)\n return f.length, S(s[1], f, r, l) ? (r ? \"-\" : \"\") + y(f) : (r ? \"-\" : \"\") + f;\n if (s[1]) {\n if (s[1].length < t)\n return (r ? \"-\" : \"\") + f + \".\" + s[1] + new Array(t - s[1].length + 1).join(\"0\");\n } else\n return (r ? \"-\" : \"\") + f + \".\" + new Array(t + 1).join(\"0\");\n a = s[1].substring(0, t);\n let o = s[1].substring(t);\n return o && S(o, a, r, l) && (a = y(a), a.length > t) ? (r ? \"-\" : \"\") + y(f, parseInt(a[0])) + \".\" + a.substring(1) : (r ? \"-\" : \"\") + f + \".\" + a;\n}\nfunction S(e, t, l, r) {\n if (!e || e === new Array(e.length + 1).join(\"0\") || r === g.DOWN || !l && r === g.FLOOR || l && r === g.CEILING)\n return !1;\n if (r === g.UP || l && r === g.FLOOR || !l && r === g.CEILING)\n return !0;\n let s = \"5\" + new Array(e.length).join(\"0\");\n if (e > s)\n return !0;\n if (e < s)\n return !1;\n switch (r) {\n case g.HALF_DOWN:\n return !1;\n case g.HALF_UP:\n return !0;\n case g.HALF_EVEN:\n default:\n return parseInt(t[t.length - 1]) % 2 == 1;\n }\n}\nfunction y(e, t = 0) {\n t || (t = 1), typeof e == \"number\" && e.toString();\n let l = e.length - 1, r = \"\";\n for (let s = l; s >= 0; s--) {\n let f = parseInt(e[s]) + t;\n f == 10 ? (t = 1, f = 0) : t = 0, r += f;\n }\n return t && (r += t), r.split(\"\").reverse().join(\"\");\n}\nfunction x(e, t) {\n e = e.toString(), t = t.toString();\n let l = 0;\n e[0] == \"-\" && (l++, e = e.substr(1)), t[0] == \"-\" && (l++, t = t.substr(1)), e = w(e), t = w(t);\n let r = 0, s = 0;\n e.indexOf(\".\") != -1 && (r = e.length - e.indexOf(\".\") - 1), t.indexOf(\".\") != -1 && (s = t.length - t.indexOf(\".\") - 1);\n let f = r + s;\n if (e = w(e.replace(\".\", \"\")), t = w(t.replace(\".\", \"\")), e.length < t.length) {\n let $ = e;\n e = t, t = $;\n }\n if (t == \"0\")\n return \"0\";\n let a = t.length, o = 0, i = [], h = a - 1, u = \"\";\n for (let $ = 0; $ < a; $++)\n i[$] = e.length - 1;\n for (let $ = 0; $ < 2 * e.length; $++) {\n let O = 0;\n for (let p = t.length - 1; p >= h && p >= 0; p--)\n i[p] > -1 && i[p] < e.length && (O += parseInt(e[i[p]--]) * parseInt(t[p]));\n O += o, o = Math.floor(O / 10), u = O % 10 + u, h--;\n }\n return u = w(T(u, f)), l == 1 && (u = \"-\" + u), u;\n}\nfunction T(e, t) {\n return t == 0 ? e : (e = t >= e.length ? new Array(t - e.length + 1).join(\"0\") + e : e, e.substr(0, e.length - t) + \".\" + e.substr(e.length - t, t));\n}\nfunction w(e) {\n for (; e[0] == \"0\"; )\n e = e.substr(1);\n if (e.indexOf(\".\") != -1)\n for (; e[e.length - 1] == \"0\"; )\n e = e.substr(0, e.length - 1);\n return e == \"\" || e == \".\" ? e = \"0\" : e[e.length - 1] == \".\" && (e = e.substr(0, e.length - 1)), e[0] == \".\" && (e = \"0\" + e), e;\n}\nfunction I(e, t, l = 8) {\n if (t == 0)\n throw new Error(\"Cannot divide by 0\");\n if (e = e.toString(), t = t.toString(), e = e.replace(/(\\.\\d*?[1-9])0+$/g, \"$1\").replace(/\\.0+$/, \"\"), t = t.replace(/(\\.\\d*?[1-9])0+$/g, \"$1\").replace(/\\.0+$/, \"\"), e == 0)\n return \"0\";\n let r = 0;\n t[0] == \"-\" && (t = t.substring(1), r++), e[0] == \"-\" && (e = e.substring(1), r++);\n var s = t.indexOf(\".\") > 0 ? t.length - t.indexOf(\".\") - 1 : -1;\n if (t = c(t.replace(\".\", \"\")), s >= 0) {\n let h = e.indexOf(\".\") > 0 ? e.length - e.indexOf(\".\") - 1 : -1;\n if (h == -1)\n e = c(e + new Array(s + 1).join(\"0\"));\n else if (s > h)\n e = e.replace(\".\", \"\"), e = c(e + new Array(s - h + 1).join(\"0\"));\n else if (s < h) {\n e = e.replace(\".\", \"\");\n let u = e.length - h + s;\n e = c(e.substring(0, u) + \".\" + e.substring(u));\n } else\n s == h && (e = c(e.replace(\".\", \"\")));\n }\n let f = 0, a = t.length, o = \"\", i = e.indexOf(\".\") > -1 && e.indexOf(\".\") < a ? e.substring(0, a + 1) : e.substring(0, a);\n if (e = e.indexOf(\".\") > -1 && e.indexOf(\".\") < a ? e.substring(a + 1) : e.substring(a), i.indexOf(\".\") > -1) {\n let h = i.length - i.indexOf(\".\") - 1;\n i = i.replace(\".\", \"\"), a > i.length && (h += a - i.length, i = i + new Array(a - i.length + 1).join(\"0\")), f = h, o = \"0.\" + new Array(h).join(\"0\");\n }\n for (l = l + 2; f <= l; ) {\n let h = 0;\n for (; parseInt(i) >= parseInt(t); )\n i = N(i, \"-\" + t), h++;\n o += h, e ? (e[0] == \".\" && (o += \".\", f++, e = e.substring(1)), i = i + e.substring(0, 1), e = e.substring(1)) : (f || (o += \".\"), f++, i = i + \"0\");\n }\n return (r == 1 ? \"-\" : \"\") + c(A(o, l - 2));\n}\nfunction L(e, t) {\n return e = e.toString(), t = t.toString(), t = j(t), N(e, t);\n}\nfunction j(e) {\n return e[0] == \"-\" ? e = e.substr(1) : e = \"-\" + e, e;\n}\nfunction V(e, t) {\n if (t == 0)\n throw new Error(\"Cannot divide by 0\");\n e = e.toString(), t = t.toString(), P(e), P(t);\n let l = \"\";\n e[0] == \"-\" && (l = \"-\", e = e.substr(1)), t[0] == \"-\" && (t = t.substr(1));\n let r = L(e, x(t, A(I(e, t), 0, g.FLOOR)));\n return l + r;\n}\nfunction P(e) {\n if (e.indexOf(\".\") != -1)\n throw new Error(\"Modulus of non-integers not supported\");\n}\nfunction C(e, t) {\n let l = !1;\n if (e[0] == \"-\" && t[0] != \"-\")\n return -1;\n if (e[0] != \"-\" && t[0] == \"-\")\n return 1;\n if (e[0] == \"-\" && t[0] == \"-\" && (e = e.substr(1), t = t.substr(1), l = !0), [e, t] = F(e, t), e.localeCompare(t) == 0)\n return 0;\n for (let r = 0; r < e.length; r++)\n if (e[r] != t[r])\n return e[r] > t[r] ? l ? -1 : 1 : l ? 1 : -1;\n return 0;\n}\nclass n {\n value;\n static RoundingModes = g;\n static validate(t) {\n if (t) {\n if (t = t.toString(), isNaN(t))\n throw Error(\"Parameter is not a number: \" + t);\n t[0] == \"+\" && (t = t.substring(1));\n } else\n t = \"0\";\n if (t.startsWith(\".\") ? t = \"0\" + t : t.startsWith(\"-.\") && (t = \"-0\" + t.substr(1)), /e/i.test(t)) {\n let [l, r] = t.split(/[eE]/);\n l = c(l);\n let s = \"\";\n l[0] == \"-\" && (s = \"-\", l = l.substring(1)), l.indexOf(\".\") >= 0 ? (r = parseInt(r) + l.indexOf(\".\"), l = l.replace(\".\", \"\")) : r = parseInt(r) + l.length, l.length < r ? t = s + l + new Array(r - l.length + 1).join(\"0\") : l.length >= r && r > 0 ? t = s + c(l.substring(0, r)) + (l.length > r ? \".\" + l.substring(r) : \"\") : t = s + \"0.\" + new Array(-r + 1).join(\"0\") + l;\n }\n return t;\n }\n constructor(t = \"0\") {\n this.value = n.validate(t);\n }\n getValue() {\n return this.value;\n }\n static getPrettyValue(t, l, r) {\n if (!(l || r))\n l = 3, r = \",\";\n else if (!(l && r))\n throw Error(\"Illegal Arguments. Should pass both digits and separator or pass none\");\n t = n.validate(t);\n let s = t.charAt(0) == \"-\";\n s && (t = t.substring(1));\n var f = t.indexOf(\".\");\n f = f > 0 ? f : t.length;\n for (var a = \"\", o = f; o > 0; )\n o < l ? (l = o, o = 0) : o -= l, a = t.substring(o, o + l) + (o < f - l && o >= 0 ? r : \"\") + a;\n return (s ? \"-\" : \"\") + a + t.substring(f);\n }\n getPrettyValue(t, l) {\n return n.getPrettyValue(this.value, t, l);\n }\n static round(t, l = 0, r = g.HALF_EVEN) {\n if (t = n.validate(t), isNaN(l))\n throw Error(\"Precision is not a number: \" + l);\n return A(t, l, r);\n }\n round(t = 0, l = g.HALF_EVEN) {\n if (isNaN(t))\n throw Error(\"Precision is not a number: \" + t);\n return new n(A(this.value, t, l));\n }\n static floor(t) {\n return t = n.validate(t), t.indexOf(\".\") === -1 ? t : n.round(t, 0, g.FLOOR);\n }\n floor() {\n return this.value.indexOf(\".\") === -1 ? new n(this.value) : new n(this.value).round(0, g.FLOOR);\n }\n static ceil(t) {\n return t = n.validate(t), t.indexOf(\".\") === -1 ? t : n.round(t, 0, g.CEILING);\n }\n ceil() {\n return this.value.indexOf(\".\") === -1 ? new n(this.value) : new n(this.value).round(0, g.CEILING);\n }\n static add(t, l) {\n return t = n.validate(t), l = n.validate(l), N(t, l);\n }\n add(t) {\n return new n(N(this.value, t.getValue()));\n }\n static subtract(t, l) {\n return t = n.validate(t), l = n.validate(l), L(t, l);\n }\n subtract(t) {\n return new n(L(this.value, t.getValue()));\n }\n static multiply(t, l) {\n return t = n.validate(t), l = n.validate(l), x(t, l);\n }\n multiply(t) {\n return new n(x(this.value, t.getValue()));\n }\n static divide(t, l, r) {\n return t = n.validate(t), l = n.validate(l), I(t, l, r);\n }\n divide(t, l) {\n return new n(I(this.value, t.getValue(), l));\n }\n static modulus(t, l) {\n return t = n.validate(t), l = n.validate(l), V(t, l);\n }\n modulus(t) {\n return new n(V(this.value, t.getValue()));\n }\n static compareTo(t, l) {\n return t = n.validate(t), l = n.validate(l), C(t, l);\n }\n compareTo(t) {\n return C(this.value, t.getValue());\n }\n static negate(t) {\n return t = n.validate(t), j(t);\n }\n negate() {\n return new n(j(this.value));\n }\n}\nfunction W(e, t) {\n return n.multiply(`${e}`, `${t}`);\n}\nfunction G(e, t, l = 8) {\n return n.divide(`${e}`, `${t}`, l);\n}\nfunction Y(e, t) {\n return n.add(`${e}`, `${t}`);\n}\nfunction q(e, t) {\n return n.subtract(`${e}`, `${t}`);\n}\nfunction Z(e) {\n return new n(e).getValue();\n}\nfunction k(e, t, l) {\n return n.getPrettyValue(e, t, l);\n}\nconst z = n.RoundingModes;\nfunction B(e, t, l) {\n return n.round(e, t, l);\n}\nfunction J(e) {\n return n.floor(e);\n}\nfunction K(e) {\n return n.ceil(e);\n}\nfunction Q(e, t) {\n return n.modulus(e, t);\n}\nfunction R(e, t) {\n return e = `${e}`, t = `${t}`, n.compareTo(e, t);\n}\nfunction X(e) {\n return n.negate(e);\n}\nfunction M(e, t, l) {\n const r = `${e}`, s = `${t}`, f = `${l}`;\n let a = n.compareTo(r, s);\n return !(a == -1 || (a = n.compareTo(r, f), a == 1));\n}\nfunction H(e, t = 0) {\n let l = `${e}`, r = l.indexOf(\".\");\n if (r == -1)\n return l;\n let s = r;\n for (let f = l.length - 1; f >= r; f--)\n if (l.charAt(f) != \"0\") {\n s = f;\n break;\n }\n return s - r < t ? s = r + t + 1 : s != r && (s += 1), s > l.length ? l = l.padEnd(s, \"0\") : l = l.substring(0, s), l;\n}\nfunction v(e, t) {\n if (typeof t == \"string\" && (t = Number(t)), t == 1 || t == -1)\n return `${e}`;\n if (t == 0)\n return \"0\";\n if (t > 0) {\n let l = n.multiply(`${e}`, `${t}`);\n return H(l);\n } else {\n let l = n.divide(`${e}`, n.negate(`${t}`), 20);\n return H(l);\n }\n}\nfunction _(e, t = -1, l = !1, r = 3, s = \",\") {\n let f = `${e}`;\n if (f.length == 0 || f === \"-\")\n return \"\";\n let a = f.charAt(0);\n a == \"-\" ? f = f.substring(1) : a = \"\";\n let o = f, i = \"\", h = f.indexOf(\".\");\n h != -1 && (o = f.substring(0, h), i = f.substring(h + 1)), t != -1 && (t < i.length ? i = i.substring(0, t) : l && t > i.length && (i = i.padEnd(t, \"0\")));\n let u;\n if (r > 0) {\n let $ = \"\", O = o.split(\"\").reverse();\n for (let p = 0; p < O.length; p++)\n $ += O[p] + ((p + 1) % r == 0 && p + 1 != O.length ? s : \"\");\n i.length == 0 ? u = `${a}${$.split(\"\").reverse().join(\"\")}` : u = `${a}${$.split(\"\").reverse().join(\"\")}.${i}`;\n } else\n i.length == 0 ? u = `${a}${o}` : u = `${a}${o}.${i}`;\n return u;\n}\nfunction D(e) {\n let t = `${e}`, l = t.charAt(0);\n l == \"-\" ? t = t.substring(1) : l = \"\";\n let r = t.replace(/[^\\d\\.-]/g, \"\");\n return `${l}${r}`;\n}\nfunction d(e) {\n if (e == null)\n return 0;\n let t = `${e}`;\n if (t.length == 0)\n return 0;\n t.charAt(0) == \"-\" && (t = t.substring(1)), t = t.replace(/[^\\d\\.-]/g, \"\");\n let l = t.indexOf(\".\");\n return l == -1 ? t.length : l;\n}\nfunction b(e) {\n if (e == null)\n return 0;\n let t = `${e}`;\n if (t.length == 0)\n return 0;\n let l = t.indexOf(\".\");\n return l == -1 ? 0 : t.length - (l + 1);\n}\nexport {\n g as Modes,\n z as RoundingModes,\n Y as add,\n K as ceil,\n R as compareTo,\n b as decimalLength,\n G as divide,\n J as floor,\n Z as getNumValue,\n k as getPrettyNumValue,\n M as inScope,\n d as integerLength,\n Q as modulus,\n W as multiply,\n X as negate,\n _ as numberFormat,\n B as round,\n v as scaleNumber,\n q as subtract,\n H as trimTailZero,\n D as unNumberFormat\n};\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-09-08 22:33:23\n */\n\n/**\n * 是否数组\n */\nexport const isArray = Array.isArray\n\n/**\n * 是否为Map\n * @param val\n * @returns\n */\nexport const isMap = (val: unknown): val is Map<any, any> => toTypeString(val) === '[object Map]'\n\n/**\n * 是否为Set\n * @param val\n * @returns\n */\nexport const isSet = (val: unknown): val is Set<any> => toTypeString(val) === '[object Set]'\n\n/**\n * 是否为Date\n * @param val\n * @returns\n */\nexport const isDate = (val: unknown): val is Date => val instanceof Date\n\n/**\n * 是否为函数\n * @param val\n * @returns\n */\nexport const isFunction = (val: unknown): val is Function => typeof val === 'function'\n\n/**\n * 是否为字符串\n * @param val\n * @returns\n */\nexport const isString = (val: unknown): val is string => typeof val === 'string'\n\n/**\n * 是否为symbol\n * @param val\n * @returns\n */\nexport const isSymbol = (val: unknown): val is symbol => typeof val === 'symbol'\n\n/**\n * 是否为object\n */\nexport const isObject = (val: unknown): val is Record<any, any> => val !== null && typeof val === 'object'\n\n/**\n * 是否为promise\n * @param val\n * @returns\n */\nexport const isPromise = <T = any>(val: unknown): val is Promise<T> => {\n return isObject(val) && isFunction(val.then) && isFunction(val.catch)\n}\n\n/**\n * 对象类型\n */\nexport const objectToString = Object.prototype.toString\nexport const toTypeString = (value: unknown): string => objectToString.call(value)\n\n/**\n * 是否为plain对象\n * @param val\n * @returns\n */\nexport const isPlainObject = (val: unknown): val is object => toTypeString(val) === '[object Object]'\n\n/**\n * 是否支持symbol\n */\nexport const hasSymbol = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol'\n\n/**\n * 是否为es module\n * @param obj\n * @returns\n */\nexport function isESModule(obj: any): obj is Object {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n/**\n * 是支持promise\n */\nconst hasPromise = typeof Promise !== 'undefined' && Promise.toString().indexOf('[native code]') !== -1\n\n/**\n * 继承(是否深度拷贝,dest,src1,src2,src3...)\n *\n * @returns\n */\nexport function extend(...args: any[]): any {\n // 目标对象\n let target: any = args[0] !== undefined && args[0] !== null ? args[0] : {}\n // 索引\n let i = 1\n // 参数长度\n let length = args.length\n // 是否深度克隆\n let deep = false\n\n // Handle a deep copy situation\n if (typeof target === 'boolean') {\n deep = target\n // Skip the boolean and the target\n target = args[i] ?? {}\n i++\n }\n\n // Handle case when target is a string or something (possible in deep copy)\n if (typeof target !== 'object') {\n target = {}\n }\n\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if (args[i] !== null && args[i] !== undefined) {\n let options: any = args[i]\n // Extend the base object\n for (let name in options) {\n let src = target[name]\n let copy = options[name]\n\n // Prevent never-ending loop\n if (src === copy) {\n continue\n }\n // Recurse if we're merging plain objects or arrays\n if (deep === true && copy && typeof copy === 'object') {\n let clone\n if (Array.isArray(copy)) {\n clone = src && Array.isArray(src) ? src : []\n } else {\n clone = src && typeof src === 'object' ? src : {}\n }\n // Never move original objects, clone them\n target[name] = extend(deep, clone, copy)\n // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy\n }\n }\n }\n }\n // Return the modified object\n return target\n}\n\n/**\n * 克隆对象\n * @param target\n * @param source\n * @param plain\n *\n * @returns\n */\nexport function clone(target: any, source: any, plain = false): any {\n //对象克隆\n if (!plain) {\n extend(true, target, source)\n } else {\n //plain对象克隆\n if (typeof source !== 'object') {\n return {}\n }\n if (typeof target !== 'object') {\n target = {}\n }\n\n for (let key in source) {\n let src = target[key]\n let copy = source[key]\n\n //如果一致,则不处理\n if (src === copy) {\n continue\n }\n\n //object类型处理\n if (typeof copy === 'object') {\n //忽略指定类型\n if (!Array.isArray(copy) && !isPlainObject(copy)) {\n continue\n }\n src = clone(src, copy, plain)\n target[key] = src\n } else if (typeof copy === 'function') {\n continue\n } else {\n target[key] = copy\n }\n }\n //克隆symbol keys\n const symbolKeys = Object.getOwnPropertySymbols(source)\n for (let key of symbolKeys) {\n let src = target[key]\n let copy = source[key]\n\n //如果一致,则不处理\n if (src === copy) {\n continue\n }\n\n //object类型处理\n if (typeof copy === 'object') {\n //忽略指定类型\n if (!Array.isArray(copy) && !isPlainObject(copy)) {\n continue\n }\n src = clone(src, copy, plain)\n target[key] = src\n } else if (typeof copy === 'function') {\n continue\n } else {\n target[key] = copy\n }\n }\n }\n return target\n}\n\n//resolve promisee\nconst resolvePromise: Promise<void> | null = hasPromise ? Promise.resolve() : null\n\n/**\n * 下一个事件周期中执行函数\n * @param fn\n * @param args\n */\nexport function nextTick(fn: { (...args: any[]): void }, ...args: any[]) {\n if (resolvePromise !== null) {\n if (args && args.length > 0) {\n resolvePromise.then(() => {\n fn(args)\n })\n } else {\n resolvePromise.then(fn)\n }\n } else {\n if (args && args.length > 0) {\n setTimeout(() => {\n fn(args)\n })\n } else {\n setTimeout(fn)\n }\n }\n}\n\n/**\n * 转换为boolean值\n * @param val\n * @returns\n */\nexport function toBoolean(val: unknown): boolean {\n if (val === null || val === undefined) {\n return false\n } else if (typeof val == 'boolean') {\n return val\n } else if (typeof val == 'string') {\n return 'true' === val.toLocaleLowerCase()\n } else {\n return Boolean(val)\n }\n}\n\n/**\n * 转换为number值\n * @param val\n * @returns\n */\nexport function toNumber(val: unknown): number {\n if (typeof val == 'number') {\n return val\n } else {\n return Number(val)\n }\n}\n\n/**\n * 类型映射表\n */\nconst class2type: any = {\n '[object Boolean]': 'boolean',\n '[object Number]': 'number',\n '[object String]': 'string',\n '[object Function]': 'function',\n '[object Array]': 'array',\n '[object Date]': 'date',\n '[object RegExp]': 'regExp',\n '[object Object]': 'object'\n}\n\n/**\n * 判断类型\n * @param obj\n * @returns any\n */\nexport function typeOf(obj: any): string {\n let toString = Object.prototype.toString\n let t = toString.call(obj)\n return obj == null ? String(obj) : class2type[t] || 'object'\n}\n\n/**\n * 是否是window对象\n * @param obj\n */\nexport function isWindow(obj: any): boolean {\n return obj && typeof obj === 'object' && 'setInterval' in obj\n}\n\n/**\n * 是否为类数组\n * @param obj\n * @returns {boolean}\n */\nexport function isArrayLike(obj: any): boolean {\n let length = !!obj && 'length' in obj && obj.length,\n type = typeOf(obj)\n if (type === 'function' || isWindow(obj)) {\n return false\n }\n return type === 'array' || length === 0 || (typeof length === 'number' && length > 0 && length - 1 in obj)\n}\n\n/**\n * 合并数组\n * @param first\n * @param second\n * @return\n */\nexport function merge(first: any[], second: any[]): any[] {\n let len = +second.length,\n j = 0,\n i = first.length\n for (; j < len; j++) {\n first[i++] = second[j]\n }\n first.length = i\n return first\n}\n\n/**\n * 创建数组\n * @param arr\n * @param results\n * @return\n */\nexport function makeArray(arr: any, results: any[] = []): any[] {\n let ret = results\n if (arr != null) {\n if (isArrayLike(Object(arr))) {\n merge(ret, typeof arr === 'string' ? [arr] : arr)\n } else {\n ret.push(arr)\n }\n }\n return ret\n}\n\n/**\n * 判断两个对象是否一致\n * @param x\n * @param y\n * @return\n */\nexport function isEqual(x: any, y: any): boolean {\n //如果 == 相同,直接返回\n if (x == y) {\n return true\n }\n //如果x或y有一个为未定义,代表两者不可能相同,返回false\n if (x === undefined || y === undefined) {\n return false\n }\n //获取两者类型\n let xType = typeOf(x)\n let yType = typeOf(y)\n //类型不一致,则返回false\n if (xType !== yType) {\n return false\n }\n\n //如果类型为对象或array,则对比其内容\n if (xType === 'object') {\n //获取keys\n let xKeys = Object.keys(x)\n let yKeys = Object.keys(y)\n\n //元素数量不一致,直接返回\n if (xKeys.length !== yKeys.length) {\n return false\n }\n //内容对比\n for (let i = 0; i < xKeys.length; i++) {\n let key = xKeys[i]\n let xValue = x[key]\n let yValue = y[key]\n if (!isEqual(xValue, yValue)) {\n return false\n }\n }\n return true\n } else if (xType === 'array') {\n //元素数量不一致,直接返回\n if (x.length !== y.length) {\n return false\n }\n //内容对比\n for (let i = 0; i < x.length; i++) {\n let xItem = x[i]\n let yItem = y[i]\n if (!isEqual(xItem, yItem)) {\n return false\n }\n }\n return true\n }\n return false\n}\n\nexport { numberFormat, unNumberFormat, multiply, divide, negate, compareTo } from '@fox-js/big-decimal'\n\n/**\n * 是否为浏览器环境\n */\nexport const isBrowser = typeof window !== 'undefined'\n\n/**\n * 动画\n */\nexport const raf = isBrowser && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : setTimeout\n\n/**\n * 判断是否为正则表达式\n * @param v\n * @returns\n */\nexport function isRegExp(v: unknown): v is RegExp {\n return Object.prototype.toString.call(v) === '[object RegExp]'\n}\n/**\n * 是否空字符串\n * @param v\n * @returns\n */\nexport const isEmptyString = (v: unknown): boolean => {\n if (v === undefined || v === null) {\n return true\n }\n\n if (typeof v !== 'string') {\n return false\n }\n\n if (v.length === 0) {\n return true\n }\n return false\n}\n\n/**\n * 是否为数字字符串\n * @param value\n * @returns\n */\nexport function isNumberString(value: string): boolean {\n if (isEmptyString(value)) {\n return true\n }\n if (value.charAt(0) == '-') {\n value = value.substring(1)\n }\n return isEmptyString(value) || /^(([1-9][0-9]*\\.[0-9]*)|([0]\\.[0-9]*)|([0-9]*)|([0]{1}))$/.test(value)\n}\n\n/**\n * 获取整数长度\n * @param value\n */\nexport function integerLength(value: string | number): number {\n if (value == undefined) {\n return 0\n }\n let s = `${value}`\n if (s.length == 0) {\n return 0\n }\n if (s.charAt(0) == '-') {\n s = s.substring(1)\n }\n // 去掉非数据字符\n s = s.replace(/[^\\d\\.-]/g, '')\n const index = s.indexOf('.')\n if (index == -1) {\n return s.length\n }\n return index\n}\n\n/**\n * 获取小数长度\n * @param value\n */\nexport function decimalLength(value: string | number): number {\n if (value == undefined) {\n return 0\n }\n const s = `${value}`\n if (s.length == 0) {\n return 0\n }\n const index = s.indexOf('.')\n if (index == -1) {\n return 0\n }\n return s.length - (index + 1)\n}\n\n/**\n * trim extra char\n * @param value\n * @param char\n * @param regExp\n * @returns\n */\nfunction trimExtraChar(value: string, char: string, regExp: RegExp) {\n const index = value.indexOf(char)\n\n if (index === -1) {\n return value\n }\n\n if (char === '-' && index !== 0) {\n return value.slice(0, index)\n }\n\n return value.slice(0, index + 1) + value.slice(index).replace(regExp, '')\n}\n\n/**\n * 清理非数字\n */\nexport function clearNonNumber(value: string, allowDot = true, allowMinus = true): string {\n if (allowDot) {\n value = trimExtraChar(value, '.', /\\./g)\n } else {\n value = value.replace(/\\./g, '')\n }\n\n if (allowMinus) {\n value = trimExtraChar(value, '-', /-/g)\n } else {\n value = value.replace(/-/, '')\n }\n\n const regExp = allowDot ? /[^-0-9.]/g : /[^-0-9]/g\n\n return value.replace(regExp, '')\n}\n\n/**\n * 获取对应元素的在数组中第一个匹配的索引\n * @param x\n * @param arr\n * @returns\n */\nexport function indexOf(x: unknown, arr: unknown[]): number {\n if (typeof x === 'object' || Array.isArray(x)) {\n return arr.findIndex(item => {\n // 判断是否一致\n if (isEqual(x, item)) {\n return true\n }\n })\n }\n return arr.indexOf(x)\n}\n\n/**\n * 获取对应元素的在数组中最后一个匹配的索引\n * @param x\n * @param arr\n * @returns\n */\nexport function lastIndexOf(x: unknown, arr: unknown[]): number {\n if (typeof x === 'object' || Array.isArray(x)) {\n let index = arr.reverse().findIndex(item => {\n //判断是否一致\n if (isEqual(x, item)) {\n return true\n }\n })\n if (index !== -1) {\n index = arr.length - 1 - index\n }\n return index\n }\n return arr.lastIndexOf(x)\n}\n\n/**\n * 获取value长度\n * @param val\n * @returns\n */\nexport function valueLength(val: unknown): number {\n if (val == null || val == undefined) {\n return 0\n }\n if (typeof val === 'string') {\n return val.length\n }\n return `${val}`.length\n}\n\n/**\n * 根据包含模版,抽取属性\n * @param src\n * @param includeTemplates\n * @returns\n */\nexport function includeProps(\n src: Record<string, any>,\n ...includeTemplates: Record<string, any>[]\n): Record<string, any> {\n const newProps: Record<string, any> = {}\n includeTemplates.forEach(template => {\n for (const key in template) {\n newProps[key] = src[key]\n }\n })\n return newProps\n}\n\n/**\n * 根据排除模版,抽取属性\n * @param src\n * @param excludeTemplates\n * @returns\n */\nexport function excludeProps(\n src: Record<string, any>,\n ...excludeTemplates: Record<string, any>[]\n): Record<string, any> {\n // 排除key集合\n const excludeKeys: string[] = []\n excludeTemplates.forEach(template => {\n Reflect.apply([].push, excludeKeys, Reflect.ownKeys(template))\n })\n // 新属性\n const newProps: Record<string, any> = {}\n for (const key in src) {\n if (excludeKeys.includes(key)) {\n continue\n }\n newProps[key] = src[key]\n }\n return newProps\n}\n\nexport const floatData = (format: any, dataOp: any, mapOps: any) => {\n const mergeFormat = Object.assign({}, format)\n const mergeMapOps = Object.assign({}, mapOps)\n\n if (Object.keys(dataOp).length > 0) {\n Object.keys(mergeFormat).forEach(key => {\n if (mergeMapOps.hasOwnProperty(key)) {\n if (typeof mergeMapOps[key] == 'string') {\n mergeFormat[key] = dataOp[mergeMapOps[key]]\n }\n } else {\n if (dataOp[key]) mergeFormat[key] = dataOp[key]\n }\n })\n return mergeFormat\n }\n\n return format\n}\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2022-04-17 22:42:18\n */\n\nimport { getCurrentInstance, inject, provide, onUnmounted } from 'vue'\nimport { FoxComponentPublicInstance } from './types'\nimport { isRegExp } from '../commons'\n\n// broadcast key\nexport const BroadcastKey = Symbol('BroadcastKey')\n\n/**\n * 匹配条件\n */\nexport interface Matched {\n // 名称\n name?: string | RegExp | { (name: string): boolean } // * 代表所有(包括自己),+ 表示所有孩子节点\n // 最大层次\n maxLevel?: number\n // 当前层次\n level?: number\n}\n\n/**\n * 结果类型\n */\nexport type Result = Promise<any> | any\n\n/**\n * 结果集合\n */\nexport type Results = Result[]\n\n/**\n * broadcast callback\n */\nexport interface BroadcastCallback {\n (...args: any[]): Result\n}\n\n/**\n * 广播类\n */\nexport class Broadcast {\n /**\n * parent\n */\n private parent: Broadcast | null\n\n /**\n * children\n */\n private children: Broadcast[] = []\n\n /**\n * 回调函数注册表\n */\n private callbacks: Map<string, BroadcastCallback> = new Map()\n\n /**\n * vue proxy\n */\n private proxy: FoxComponentPublicInstance | null = null\n\n /**\n * 名称\n */\n private name?: string\n\n /**\n * 构造函数\n * @param parent\n * @param proxy\n * @param name\n */\n public constructor(parent: Broadcast | null, proxy: FoxComponentPublicInstance, name?: string) {\n this.parent = parent\n this.proxy = proxy\n this.name = name\n // 加入父亲的孩子节点\n if (parent !== null) {\n parent.addChild(this)\n }\n }\n\n /**\n * 加入孩子节点\n * @param child\n */\n private addChild(child: Broadcast): void {\n this.children.push(child)\n }\n\n /**\n * 移除孩子节点\n * @param child\n */\n private removeChild(child: Broadcast): void {\n const index = this.children.findIndex(value => {\n return child === value\n })\n if (index !== -1) {\n this.children.splice(index, 1)\n }\n }\n\n /**\n * 销毁\n */\n public destroy(): void {\n // 移除父子关系\n if (this.parent !== null) {\n this.parent.removeChild(this)\n }\n // 释放父亲节点引用\n this.parent = null\n // 释放引用\n this.proxy = null\n }\n\n /**\n * 发生消息\n * @param matched\n * @param action\n * @param args\n */\n public emit(matched: Matched, action: string, ...args: any[]): Results {\n // 层次判断\n if (matched.maxLevel !== undefined && matched.maxLevel !== null && matched.maxLevel > 0) {\n matched.level = matched.level ?? 0\n if (matched.level > matched.maxLevel) {\n return []\n }\n // 增加当前level\n matched.level++\n }\n\n // 标志是否匹配当前node\n let flag = false\n // name为 * 代表全部匹配\n if (!matched.name || matched.name === '*') {\n flag = true\n } else if (!matched.name || matched.name === '+') {\n // name为 + 代表全部匹配所有孩子节点\n flag = false\n matched.name = '*'\n } else if (isRegExp(matched.name) && this.name && matched.name.test(this.name)) {\n flag = true\n } else if (typeof matched.name === 'function') {\n flag = Reflect.apply(matched.name, null, [this.name])\n } else if (matched.name === this.name) {\n flag = true\n }\n\n // 结果列表\n const results: Results = []\n\n // 如果匹配本节点,那么执行本节点上的方法\n if (flag) {\n // 1.执行callback\n const callback = this.callbacks.get(action)\n if (typeof callback === 'function') {\n const res = Reflect.apply(callback, this.proxy, [...args])\n if (res !== undefined && res !== null) {\n results.push(res)\n }\n }\n\n // 2.执行proxy\n const proxy: any = this.proxy ?? {}\n if (typeof proxy[action] === 'function') {\n const res = Reflect.apply(proxy[action], proxy, [...args])\n if (res !== undefined && res !== null) {\n results.push(res)\n }\n }\n }\n\n // 执行children节点\n this.children.forEach(child => {\n const res = Reflect.apply(child.emit, child, [{ ...matched }, action, ...args])\n // 合并child的result结果\n if (res !== undefined && res !== null && Array.isArray(res)) {\n Reflect.apply([].push, results, [...res])\n }\n })\n return results\n }\n\n /**\n * 发生消息(只发给孩子节点)\n * @param matched\n * @param action\n * @param args\n */\n public emitToChildren(matched: Matched, action: string, ...args: any[]): Results {\n // 结果列表\n const results: Results = []\n // 执行children节点\n this.children.forEach(child => {\n const res = Reflect.apply(child.emit, child, [{ ...matched }, action, ...args])\n // 合并child的result结果\n if (res !== undefined && res !== null && Array.isArray(res)) {\n Reflect.apply([].push, results, [...res])\n }\n })\n return results\n }\n\n /**\n * 注册回调函数\n * @param action\n * @param callback\n * @returns\n */\n public on(action: string, callback: BroadcastCallback): void {\n this.callbacks.set(action, callback)\n }\n}\n\n/**\n * 创建broadcast\n *\n * @param proxy\n * @param parent\n * @param name\n * @param callbacks\n * @returns\n */\nexport function createBroadcast(\n proxy: FoxComponentPublicInstance,\n parent: Broadcast | null,\n name?: string,\n callbacks?: Record<string, BroadcastCallback>\n): Broadcast {\n // 创建broadcast\n const broadcast = new Broadcast(parent, proxy, name)\n // 注册callback函数\n if (callbacks && typeof callbacks === 'object') {\n for (const key in callbacks) {\n broadcast.on(key, callbacks[key])\n }\n }\n return broadcast\n}\n\n/**\n * anyNode\n * @param name\n * @param callbacks\n * @returns\n */\nexport function defineBroadcast(\n name?: string,\n callbacks?: Record<string, BroadcastCallback>,\n proxy?: FoxComponentPublicInstance\n): Broadcast | null {\n // 转换为any proxy\n const anyProxy: any = proxy\n // 避免重复注册\n if (anyProxy[BroadcastKey]) {\n return anyProxy[BroadcastKey]\n }\n\n // 获取parent broadcast\n const parent = inject<Broadcast | null>(BroadcastKey, null)\n // 创建broadcast\n const broadcast = new Broadcast(parent, proxy, name)\n // 注册callback函数\n if (callbacks && typeof callbacks === 'object') {\n for (const key in callbacks) {\n broadcast.on(key, callbacks[key])\n }\n }\n\n // 保持在proxy上\n anyProxy[BroadcastKey] = broadcast\n // provide broadcast\n provide(BroadcastKey, broadcast)\n // 销毁后关闭\n onUnmounted(() => {\n // 销毁\n broadcast.destroy()\n // 清理引用\n anyProxy[BroadcastKey] = undefined\n })\n // 返回\n return broadcast\n}\n\n/**\n * 使用broadcast\n * @param proxy\n * @returns\n */\nexport function useBroadcast(proxy: FoxComponentPublicInstance | null = null): Broadcast | null {\n // 获取实例\n if (!proxy) {\n proxy = getCurrentInstance()?.proxy ?? null\n }\n if (!proxy) {\n return inject(BroadcastKey, null)\n }\n // 转换为any proxy\n const anyProxy: any = proxy\n // 获取broadcast\n const broadcast = anyProxy[BroadcastKey] ?? inject(BroadcastKey, null)\n // 返回\n return broadcast\n}\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2022-04-15 22:11:58\n */\nimport Schema, {\n Rule,\n RuleItem,\n ValidateMessages,\n ValidateResult,\n ExecuteValidator,\n ValidateFieldError\n} from '@fox-js/validator'\nimport { EffectScope, effectScope, watchEffect, nextTick } from 'vue'\nimport { FoxComponentPublicInstance } from './types'\nimport { useBroadcast } from './broadcast'\n\n/**\n * 校验条件\n */\nexport interface ValidateCondition {\n exclude?: string[]\n include?: string[]\n}\n\n/**\n * 校验器handler\n */\nexport interface ValidateHandler {\n /**\n * 错误处理\n * @param errorMsg\n * @param proxy\n *\n */\n error?(errorMsg: string, proxy: FoxComponentPublicInstance): void\n /**\n * 重置处理\n * @param proxy\n *\n */\n reset?(proxy: FoxComponentPublicInstance): void\n /**\n * 成功处理\n * @param proxy\n *\n */\n success?(proxy: FoxComponentPublicInstance): void\n /**\n * 规则装饰处理\n * @param newRule\n * @param oldRule\n * @param proxy\n *\n */\n decorate?(newRule: Rule, oldRule: Rule, proxy: FoxComponentPublicInstance): void\n /**\n * 获取value\n * @param proxy\n *\n */\n getValue?(proxy: FoxComponentPublicInstance): any\n}\n\n/**\n * 默认校验处理器\n */\nclass DefaultValidateHandler implements ValidateHandler {\n /**\n * 错误处理\n * @param errorMsg\n * @param proxy\n */\n public error(errorMsg: string, proxy: FoxComponentPublicInstance): void {\n // 查找required规则,并设置样式\n const anyProxy: any = proxy\n // 获取broadcast\n const broadcast = useBroadcast(proxy)\n\n if (broadcast) {\n broadcast.emit({ name: '*' }, 'setErrorTip', errorMsg)\n } else if (typeof anyProxy['setErrorTip'] === 'function') {\n anyProxy['setErrorTip'](errorMsg)\n }\n }\n\n /**\n * 重置处理\n * @param proxy\n */\n public reset(proxy: FoxComponentPublicInstance): void {\n // 查找required规则,并设置样式\n const anyProxy: any = proxy\n // 获取broadcast\n const broadcast = useBroadcast(proxy)\n\n if (broadcast) {\n broadcast.emit({ name: '*' }, 'setErrorTip', '')\n } else if (typeof anyProxy['setErrorTip'] === 'function') {\n anyProxy['setErrorTip']('')\n }\n }\n\n /**\n * 成功处理\n * @param proxy\n */\n public success(proxy: FoxComponentPublicInstance): void {\n // 查找required规则,并设置样式\n const anyProxy: any = proxy\n // 获取broadcast\n const broadcast = useBroadcast(proxy)\n\n if (broadcast) {\n broadcast.emit({ name: '*' }, 'setErrorTip', '')\n } else if (typeof anyProxy['setErrorTip'] === 'function') {\n anyProxy['setErrorTip']('')\n }\n }\n\n /**\n * 规则装饰处理\n * @param newRule\n * @param oldRule\n * @param proxy\n */\n public decorate(newRule: Rule, oldRule: Rule, proxy: FoxComponentPublicInstance): void {\n if (!Array.isArray(newRule)) {\n newRule = [newRule]\n }\n // 查找required规则,并设置样式\n const anyProxy: any = proxy\n // 获取broadcast\n const broadcast = useBroadcast(proxy)\n\n const oldRequired = oldRule.find((item: RuleItem) => {\n if (item.required === true || (item.type === 'required' && item.required !== false)) {\n return true\n }\n return false\n })\n\n const newRequired = newRule.find((item: RuleItem) => {\n if (item.required === true || (item.type === 'required' && item.required !== false)) {\n return true\n }\n return false\n })\n\n if (!oldRequired && newRequired) {\n if (broadcast) {\n broadcast.emit({ name: '*' }, 'setRequired', true)\n } else if (typeof anyProxy['setRequired'] === 'function') {\n anyProxy['setRequired'](true)\n }\n } else if (oldRequired && !newRequired) {\n if (broadcast) {\n broadcast.emit({ name: '*' }, 'setRequired', false)\n } else if (typeof anyProxy['setRequired'] === 'function') {\n anyProxy['setRequired'](false)\n }\n // 重置错误\n this.reset(proxy)\n }\n }\n\n /**\n * 获取value\n * @param proxy\n * @returns\n */\n public getValue(proxy: FoxComponentPublicInstance): any {\n // 查找required规则,并设置样式\n const anyProxy: any = proxy\n return anyProxy['modelValue']\n }\n}\n\n/**\n * 公共校验处理器\n */\nlet globalValidateHandler: ValidateHandler = new DefaultValidateHandler()\n\n/**\n * 设置公共的校验处理器\n * @param validateHandler\n */\nexport function setGlobalValidateHandler(validateHandler: ValidateHandler): void {\n globalValidateHandler = validateHandler\n}\n\n/**\n * 设置公共校验器\n * @param type\n * @param validator\n */\nexport function setGlobalValidator(type: string, validator: ExecuteValidator): void {\n Schema.setValidator(type, validator)\n}\n\n/**\n * 删除公共校验器\n * @param type\n */\nexport function deleteGlobalValidator(type: string): void {\n Schema.deleteValidator(type)\n}\n\n/**\n * 校验检查事件\n */\nlet validateCheckEvents: string[] = ['blur', 'clear']\n\n/**\n * 设置公共校验检查事件\n * @param events\n */\nexport function setGlobalValidateCheckEvents(events: string[]): void {\n validateCheckEvents = events\n}\n\n/**\n * 获取公共校验检查事件\n */\nexport function getGlobalValidateCheckEvents(): string[] {\n return validateCheckEvents\n}\n\n/**\n * 校验检查事件\n */\nlet validateRestEvents: string[] = ['focus', 'change']\n\n/**\n * 设置公共校验重置事件\n * @param events\n */\nexport function setGlobalValidateResetEvents(events: string[]): void {\n validateRestEvents = events\n}\n\n/**\n * 获取公共校验重置事件\n */\nexport function getGlobalValidateResetEvents(): string[] {\n return validateRestEvents\n}\n\n/**\n * 设置公共校验提示信息\n */\nexport function setGlobalValidateMessages(messages: ValidateMessages) {\n Schema.messages(messages)\n}\n\n/**\n * value 类型\n */\nexport type ValueType = 'string' | 'number' | 'date'\n\n/**\n * 组件描述\n */\nexport interface Descriptor {\n // 组件名称\n componentName: string\n // field name\n fieldName?: string\n // value name\n valueName?: string\n // value类型\n valueType?: ValueType\n // 是否开启校验(默认开启)\n validate?: boolean\n // 纯数据校验(不触发组件校验的动作)\n pureDataValidate?: boolean\n // 校验处理器\n validateHandler?: ValidateHandler\n // 校验的检查事件\n validateCheckEvents?: string[]\n // 校验的重置事件\n validateResetEvents?: string[]\n}\n\n/**\n * 合并规则\n * @param args\n */\nfunction mergeRules(...args: RuleItem[][]): RuleItem[] {\n const ruleItems: RuleItem[] = []\n // 合并规则\n args.forEach(list => {\n list.forEach(item => {\n const index = ruleItems.findIndex(val => {\n return val.type === item.type\n })\n // 删除旧的规则\n if (index !== -1) {\n ruleItems.splice(index, 1)\n }\n // 加入新规则\n ruleItems.push(item)\n })\n })\n\n return ruleItems\n}\n\n/**\n * 格式化规则\n * @param ruleItems\n */\nfunction formatRule(ruleItems: RuleItem[]): RuleItem[] {\n ruleItems.forEach(item => {\n if (item.type === 'required' && (item.required === null || item.required === undefined)) {\n item.required = true\n }\n if (!item.type && (item.required === true || item.required === false)) {\n item.type = 'required'\n }\n })\n return ruleItems\n}\n\n/**\n * validate schema key\n */\nexport const ValidateSchemaKey = Symbol('ValidateSchemaKey')\n\n/**\n * 校验器schema\n */\nexport class ValidateSchema {\n /**\n * parent\n */\n private parent: ValidateSchema | null = null\n\n /**\n * 校验器\n */\n private validators: Record<string, ExecuteValidator> = {}\n\n /**\n * 属性rule\n */\n private attrRules: RuleItem[] = []\n\n /**\n * rule\n */\n private rules: RuleItem[] = []\n\n /**\n * 描述\n */\n private descriptor: Descriptor\n\n /**\n * 实例\n */\n private proxy: FoxComponentPublicInstance\n\n /**\n * effect scope\n */\n private scope: EffectScope | null = null\n\n /**\n * 构造函数\n * @param parent\n * @param descriptor\n * @param proxy\n */\n public constructor(parent: ValidateSchema | null, descriptor: Descriptor, proxy: FoxComponentPublicInstance) {\n this.parent = parent\n this.descriptor = descriptor\n this.proxy = proxy\n\n const validateEnabled = this.descriptor.validate ?? true\n if (validateEnabled) {\n // 初始化\n this.init()\n }\n }\n\n /**\n * 初始化\n */\n private init(): void {\n // 纯数据校验,不需要合并属性\n if (this.descriptor.pureDataValidate === true) {\n return\n }\n // 如果value name不定义,代表不需要本组件不需要校验\n if (!this.descriptor.valueName) {\n return\n }\n\n // proxy为空不初始化\n if (!this.proxy) {\n return\n }\n // 获取属性\n let attrs = this.proxy.$attrs\n // 属性为空,不进行规则\n if (!attrs) {\n return\n }\n\n // 创建effect scope\n this.scope = effectScope()\n this.scope.run(() => {\n // watch\n watchEffect(() => {\n const oldRules = formatRule(mergeRules(this.attrRules, this.rules))\n\n const list: RuleItem[] = []\n // 循环处理\n for (let type in attrs) {\n // 获取value\n let value = attrs[type]\n // 判断是否为公共校验器\n if (this.hasValidator(type, true)) {\n // value为false,代表关闭校验\n if (value === false) {\n continue\n }\n let rule = {\n type\n }\n // 合并属性\n if (value !== null && typeof value === 'object') {\n Object.assign(rule, value)\n }\n // 加入属性校验规则\n list.push(rule)\n continue\n }\n\n // 获取私有校验器\n let validator = this.getValidator(type)\n if (validator !== null) {\n let rule = {\n type,\n validator\n }\n // 加入属性校验规则\n list.push(rule)\n }\n }\n // 格式化rule\n this.attrRules = formatRule(list)\n // 合并新规则\n const newRules = mergeRules(this.attrRules, this.rules)\n // 装饰\n nextTick(() => {\n this.decorate(newRules, oldRules)\n })\n })\n })\n }\n\n /**\n * 销毁\n */\n public destroy() {\n // stop effect scope\n if (this.scope) {\n this.scope.stop()\n this.scope = null\n }\n // 解除引用\n this.parent = null\n }\n\n /**\n * 执行validate handler函数\n * @param name\n * @param args\n */\n private execHandler(name: string, ...args: any): any {\n // 获取self handler\n const anyValidateHandler: any = this.descriptor.validateHandler\n // 如果对应的self handler存在,则优先执行\n if (anyValidateHandler && typeof anyValidateHandler[name] === 'function') {\n return Reflect.apply(anyValidateHandler[name], anyValidateHandler, [...args])\n }\n // 获取global handler\n const anyGlobalValidateHandler: any = globalValidateHandler\n if (anyGlobalValidateHandler && typeof anyGlobalValidateHandler[name] === 'function') {\n return Reflect.apply(anyGlobalValidateHandler[name], anyGlobalValidateHandler, [...args])\n }\n return null\n }\n\n /**\n * 调用装饰处理函数\n */\n private decorate(newRules: RuleItem[], oldRules: RuleItem): void {\n // 纯数据校验,不需要执行\n if (this.descriptor.pureDataValidate === true) {\n return\n }\n // 执行装饰函数\n this.execHandler('decorate', newRules, oldRules, this.proxy)\n }\n\n /**\n * 调用成功处理函数\n */\n private success(): void {\n // 纯数据校验,不需要执行\n if (this.descriptor.pureDataValidate === true) {\n return\n }\n // 执行成功函数\n this.execHandler('success', this.proxy)\n }\n\n /**\n * 调用错误处理函数\n * @returns\n */\n private error(msg: string): void {\n // 纯数据校验,不需要执行\n if (this.descriptor.pureDataValidate === true) {\n return\n }\n // 执行错误函数\n this.execHandler('error', msg, this.proxy)\n }\n\n /**\n * 调用错误处理函数\n * @returns\n */\n private getValue(): any {\n if (this.proxy === null) {\n return null\n }\n // 执行错误函数\n return this.execHandler('getValue', this.proxy)\n }\n\n /**\n * 设置校验器\n * @param type\n * @param validator\n * @param global\n *\n * @returns\n */\n public setValidator(type: string, validator: ExecuteValidator, global: boolean = false): void {\n if (global) {\n Schema.setValidator(type, validator)\n } else {\n this.validators[type] = validator\n }\n }\n\n /**\n * 获取validator(只获取私有的validator)\n * @param type\n */\n public getValidator(type: string): ExecuteValidator | null {\n let validator: ExecuteValidator | null = this.validators[type] ?? null\n if (!validator) {\n validator = this.parent?.getValidator(type) ?? null\n }\n return validator\n }\n\n /**\n * 删除校验器\n * @param type\n * @param global\n */\n public deleteValidator(type: string, global: boolean = false): void {\n if (global) {\n Schema.deleteValidator(type)\n } else {\n Reflect.deleteProperty(this.validators, type)\n }\n }\n\n /**\n * 判断校验器是否存在\n * @param type\n * @param global\n * @returns\n */\n public hasValidator(type: string, global: boolean = false): boolean {\n if (global) {\n return Schema.hasValidator(type)\n } else {\n let flag = Reflect.has(this.validators, type)\n if (!flag && this.parent !== null) {\n flag = this.parent.hasValidator(type, false)\n }\n return flag\n }\n }\n\n /**\n * 设置rule\n * @param rule\n */\n public setRule(rule: Rule | null): void {\n const oldRules = mergeRules(this.attrRules, this.rules)\n if (rule === null) {\n this.rules = []\n } else if (!Array.isArray(rule)) {\n this.rules = formatRule([rule])\n } else {\n this.rules = formatRule(rule)\n }\n\n const newRules = mergeRules(this.attrRules, this.rules)\n // 装饰\n nextTick(() => {\n this.decorate(newRules, oldRules)\n })\n }\n\n /**\n * 清空校验错误信息\n * @params deep\n * @returns\n */\n public clear(): void {\n if (this.proxy === null || this.descriptor.pureDataValidate === true) {\n return\n }\n // 执行重置函数\n this.execHandler('reset', this.proxy)\n }\n\n /**\n * 执行校验\n * @returns\n */\n public validate(): Promise<ValidateResult> {\n // 判断是否启用校验\n const validateEnabled = this.descriptor.validate ?? true\n\n if (validateEnabled) {\n // 合并rule item\n let ruleItems = mergeRules(this.attrRules, this.rules)\n\n const fieldName = this.descriptor.fieldName ?? 'value'\n\n if (ruleItems.length > 0) {\n // 定义规范\n const rule = {\n [`${fieldName}`]: ruleItems\n }\n\n // 获取value\n const value = this.getValue()\n // 定义source\n const source = {\n [`${fieldName}`]: value\n }\n // 定义schema\n const schema = new Schema(rule)\n // 获取运行context\n const context = this.proxy ?? source\n // 校验返回结果\n const promise = schema\n .validate(source, {\n context\n })\n .then(result => {\n if (!result.pass) {\n let msg = 'error'\n if (Array.isArray(result.errors) && result.errors.length > 0) {\n msg = result.errors[0].message ?? msg\n // 只抽取一个error信息\n result.errors = [result.errors[0]]\n // 设置引用\n result.errors[0].ref = context\n }\n this.error(msg)\n } else {\n this.success()\n }\n return result\n })\n .catch(err => {\n const msg = err.message ?? `${err}`\n this.error(msg)\n return err\n })\n\n return promise\n }\n }\n\n // 无校验条件,直接返回true\n return Promise.resolve({\n pass: true\n })\n }\n}\n\n/**\n * 创建校验schema\n * @param proxy\n * @param parent\n * @param descriptor\n * @returns\n */\nexport function createValidateSchema(\n proxy: FoxComponentPublicInstance,\n parent: ValidateSchema | null,\n descriptor: Descriptor\n): ValidateSchema {\n // 设置默认属性\n descriptor.valueName = descriptor.valueName ?? 'modelValue'\n descriptor.valueType = descriptor.valueType ?? 'string'\n\n // 如果value name不为默认的value name并且没设置validate handler,则需要新建一个自定义的handler\n if (!descriptor.validateHandler && descriptor.valueName !== 'modelValue') {\n const propName = descriptor.valueName\n descriptor.validateHandler = {\n getValue(proxy: FoxComponentPublicInstance): any {\n const anyProxy: any = proxy\n return anyProxy[propName]\n }\n }\n }\n // 创建validate schema\n const validateSchema = new ValidateSchema(parent, descriptor, proxy)\n // 返回validate schema\n return validateSchema\n}\n","import { ComponentPublicInstance } from 'vue'\n\n/**\n * event emitter key\n */\nexport const EventEmitterKey = Symbol('EventEmitterKey')\n\n/**\n * event listener\n */\nexport interface EventListener {\n (...args: any[]): void\n}\n\n/**\n * event emitter\n */\nexport class EventEmitter {\n /**\n * 监听器\n */\n private register: Map<string, EventListener[]> = new Map()\n\n /**\n * componenet instance\n */\n private proxy: ComponentPublicInstance | null\n\n /**\n * 构造函数\n * @param proxy\n */\n public constructor(proxy: ComponentPublicInstance) {\n this.proxy = proxy\n }\n\n /**\n * 销毁\n */\n public destroy() {\n this.proxy = null\n this.register.clear()\n }\n\n /**\n * 注销监听事件\n * @param type\n * @param listener\n */\n public off(type: string, listener: EventListener): void {\n let listeners = this.register.get(type)\n if (listeners && Array.isArray(listeners)) {\n let index = listeners.findIndex(val => {\n return val === listener\n })\n if (index !== -1) {\n listeners.splice(index, 1)\n }\n }\n }\n\n /**\n * 注册监听事件\n * @param type\n * @param listener\n */\n public on(type: string, listener: EventListener): void {\n // 获取事件队列\n let listeners = this.register.get(type)\n if (!listeners) {\n listeners = new Array<EventListener>()\n this.register.set(type, listeners)\n }\n listeners.push(listener)\n }\n\n /**\n * 触发事件\n * @param type\n * @param args\n */\n public emit(type: string, ...args: any[]): void {\n // 获取shi\n const listeners = this.register.get(type)\n if (listeners) {\n listeners.forEach(listener => {\n try {\n Reflect.apply(listener, null, [type, ...args])\n } catch (e: any) {\n console.error(e.message, e)\n }\n })\n }\n if (this.proxy) {\n Reflect.apply(this.proxy.$emit, this.proxy, [type, ...args])\n }\n }\n}\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-08-14 07:42:11\n */\n\n/**\n * 通用函数接口\n */\nexport interface GenericFunction {\n (...args: any[]): any\n}\n\n/**\n * 防抖函数\n * @param func 函数\n * @param time 防止抖动毫秒数\n * @returns\n */\nexport function debounce(func: GenericFunction, time: number): GenericFunction {\n let previous = 0\n return function (...args: unknown[]) {\n const now = Date.now()\n if (now - previous > time) {\n Reflect.apply(func, {}, [...args])\n previous = now\n }\n }\n}\n\n/**\n * 节流函数\n * @param func 函数\n * @param time 延迟执行毫秒数\n * @returns\n */\nexport function throttle(func: GenericFunction, time: number): GenericFunction {\n let timeout: unknown\n let lastArgs: any[] | null = null\n return function (...args: unknown[]) {\n lastArgs = args\n if (!timeout) {\n timeout = setTimeout(() => {\n timeout = null\n Reflect.apply(func, {}, [...(lastArgs ?? [])])\n }, time)\n }\n }\n}\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-10-06 17:30:26\n */\n\nimport {\n provide,\n inject,\n reactive,\n getCurrentInstance,\n isReactive,\n watchEffect,\n ComponentInternalInstance,\n onUnmounted,\n toRaw\n} from 'vue'\n\nimport { createBroadcast, Broadcast, BroadcastKey, BroadcastCallback, Matched } from './broadcast'\nimport {\n createValidateSchema,\n ValidateSchema,\n ValidateSchemaKey,\n ValidateCondition,\n Descriptor,\n getGlobalValidateCheckEvents\n} from './validator'\nimport { EventEmitter, EventListener, EventEmitterKey } from './events'\nimport { extend } from '@/utils/commons'\nimport { throttle } from '@/utils/functions'\nimport { Rule, ValidateFieldError, ValidateResult } from '@fox-js/validator'\nimport { getGlobalValidateResetEvents } from './validator'\nimport { MatchedCondition, FoxComponentPublicInstance } from './types'\n\n/**\n * domain key\n */\nexport const DomainKey = Symbol('DomainKey')\n\n/**\n * data items key\n */\nexport const DataItemsKey = Symbol('DataItemsKey')\n\n/**\n * Domain\n */\nexport class Domain {\n /**\n * 父亲domain\n */\n private _parent: Domain | null = null\n //parent domain getter\n public get parent(): Domain | null {\n return this._parent\n }\n // parent domain setter\n public set parent(val: Domain | null) {\n this._parent = val\n }\n\n /**\n * 名称\n */\n private _name: string | null = null\n // 名称 getter\n public get name(): string | null {\n return this._name\n }\n\n /**\n * 广播器\n */\n private _broadcast: Broadcast | null = null\n // 广播器 getter\n public get broadcast(): Broadcast | null {\n return this._broadcast\n }\n // 广播器 setter\n public set broadcast(val) {\n this._broadcast = val\n }\n\n /**\n * 校验器\n */\n private _validateSchema: ValidateSchema | null = null\n // 校验器 getter\n public get validateSchema(): ValidateSchema | null {\n return this._validateSchema\n }\n // 校验器 setter\n public set validateSchema(val) {\n this._validateSchema = val\n }\n\n /**\n * 属性集合\n */\n private _props: Record<string | number | symbol, any> = reactive({})\n\n /**\n * 构造函数\n * @param name\n */\n public constructor(name: string | null = null) {\n this._name = name\n }\n\n /**\n * 销毁\n */\n public destroy(): void {\n this._parent = null\n this._broadcast = null\n this._validateSchema = null\n this._props = {}\n }\n\n /**\n * 合并属性\n * @param props\n */\n public merge(props: Record<string | number, any>, ignores: any[] = []): void {\n for (const key in props) {\n const value = props[key]\n if (ignores.length > 0 && ignores.indexOf(value) !== -1) {\n continue\n }\n this._props[key] = value\n }\n }\n\n /**\n * 判断是否有属性\n */\n public has(key: string | number): boolean {\n if (Reflect.has(this._props, key)) {\n // 获取value\n const value = this._props[key]\n // 非undefined并且非null才返回\n if (value !== undefined && value !== null) {\n return true\n }\n }\n if (this.parent == null) {\n return false\n }\n return this.parent.has(key)\n }\n\n /**\n * 删除属性\n * @param key\n */\n public delete(key: string | number): void {\n Reflect.deleteProperty(this._props, key)\n }\n\n /**\n * 设置属性\n * @param key\n * @param value\n */\n public set(key: string | number, value: any): void {\n this._props[key] = value\n }\n\n /**\n * 获取属性\n *\n * @param key\n * @param defaultValue\n */\n public get(key: string | number, defaultValue?: any): any {\n if (Reflect.has(this._props, key)) {\n // 获取value\n const value = this._props[key]\n // 非undefined并且非null才返回\n if (value !== undefined && value !== null) {\n return value\n }\n }\n if (this.parent == null) {\n return defaultValue\n }\n return this.parent.get(key, defaultValue)\n }\n\n /**\n * 获取属性\n *\n * @param key\n * @param defaultValue\n */\n public getForParent(key: string | number, defaultValue?: any): any {\n if (this.parent == null) {\n return defaultValue\n }\n return this.parent.get(key, defaultValue)\n }\n\n /**\n * 获取self属性\n * @param key\n * @returns\n */\n public getForSelf(key: string | number): any {\n return this._props[key]\n }\n\n /**\n * 从继承关系中获取属性集合\n * @param key\n */\n public getAll(key: string | number): any[] {\n const values: any[] = []\n let current: Domain | null = this as Domain\n while (current != null) {\n if (Reflect.has(current._props, key)) {\n const value = current._props[key]\n values.push(value)\n }\n current = current._parent\n }\n return values\n }\n}\n\n/**\n * root domain\n */\nconst rootDomain = new Domain()\n\n/**\n * 获取root domain\n * @returns\n */\nexport function getRootDomain(): Domain {\n return rootDomain\n}\n\n/**\n * 获取当前domain\n * @returns\n */\nexport function useDomain(instance: ComponentInternalInstance | null = null): Domain | null {\n // 获取实例\n if (!instance) {\n instance = getCurrentInstance()\n }\n const proxy = instance?.proxy\n if (!proxy) {\n return inject(DomainKey, null)\n }\n // 转换为any proxy\n const anyProxy: any = proxy\n // 获取domain\n const domain = anyProxy[DomainKey] ?? inject(DomainKey, null)\n // 返回\n return domain\n}\n\n// 源数据key(用于重置表单数据)\nconst OriginalModelValueKey = Symbol('OriginalDateKey')\n\n/**\n * 安装domain\n * @param name 名称\n * @param props 属性\n * @param ignores 忽略的属性\n * @param exposes 暴露的方法\n * @returns\n */\nexport function defineDomain(\n name: string | null,\n props: Record<string, any>,\n ignores: any[] = [],\n exposes?: Record<string, BroadcastCallback>\n): Domain {\n // 获取当前instance\n const instance = getCurrentInstance()\n // 获取proxy\n const proxy: any = instance?.proxy\n\n // 获取父亲domain\n let parent: Domain | null = inject(DomainKey, null)\n if (parent === null) {\n parent = getRootDomain()\n }\n\n // 获取domain name\n const domainName = name || props.prop || props.name\n // domain\n const domain = new Domain(domainName)\n // 设置父亲domain\n domain.parent = parent\n\n // 设置model value\n const setModelValue = (data: Record<string | symbol, any>) => {\n // 初始设置数据,备份重置数据\n if (!proxy[OriginalModelValueKey]) {\n setOriginalModelValue(data)\n }\n // 在domain保存value\n domain.set('modelValue', data)\n }\n\n // 获取model value\n const getModelValue = (): Record<string | symbol, any> | null => {\n return domain.getForSelf('modelValue') ?? null\n }\n\n // 获取original model value\n const getOriginalModelValue = (): Record<string | symbol, any> | null => {\n return proxy[OriginalModelValueKey] ?? null\n }\n\n // 设置original model value\n const setOriginalModelValue = (data: Record<string | symbol, any>) => {\n // 克隆原始数据\n const originalModelValue = {}\n extend(true, originalModelValue, toRaw(data))\n proxy[OriginalModelValueKey] = originalModelValue\n }\n\n if (isReactive(props)) {\n watchEffect(() => {\n // 合并属性\n domain.merge(props, ignores)\n })\n } else {\n // 合并属性\n domain.merge(props, ignores)\n }\n // 初始化original model value\n if (props.modelValue) {\n setOriginalModelValue(props.modelValue)\n }\n\n // 保存在proxy\n proxy[DomainKey] = domain\n // 提供provide\n provide(DomainKey, domain)\n\n // 创建domain对应的broadcast\n let broadcast: Broadcast | null = null\n // 校验schema\n let validateSchema: ValidateSchema | null = null\n\n // 如果instance为null,不创建broadcast\n if (instance !== null) {\n // 获取parent broadcast\n const parentBroadcast = inject<Broadcast | null>(BroadcastKey, null)\n // 创建broadcast\n broadcast = createBroadcast(proxy, parentBroadcast, domainName, exposes)\n // 设置domain属性\n domain.broadcast = broadcast\n // 保存在proxy\n proxy[BroadcastKey] = broadcast\n // 提供provide\n provide(BroadcastKey, broadcast)\n // 暴露广播方法\n proxy.broadcast = (matched: Matched, action: string, ...args: any[]) => {\n return Reflect.apply(broadcast!.emit, broadcast, [matched, action, ...args])\n }\n\n // 获取parent validate schema\n const parentValidateSchema = inject<ValidateSchema | null>(ValidateSchemaKey, null)\n // 创建校验器\n validateSchema = createValidateSchema(proxy, parentValidateSchema, { componentName: '' })\n // 设置domain属性\n domain.validateSchema = validateSchema\n // 保存在proxy\n proxy[ValidateSchemaKey] = validateSchema\n // 提供provide\n provide(ValidateSchemaKey, validateSchema)\n // 设置data item集合\n proxy[DataItemsKey] = new Map<string, any>()\n\n // 暴露validate方法(condition为字符串集合代表为匹配name的集合)\n proxy.validate = (condition: boolean | string[] | ValidateCondition | null = true): Promise<ValidateResult> => {\n const promiseList: Promise<any>[] = []\n //匹配\n let matched: Matched | null = null\n\n if (condition === true) {\n //condition == true,代表调用所有孩子节点,如果为数组,需要匹配孩子节点的名称\n matched = { name: '*' }\n } else if (Array.isArray(condition) && condition.length > 0) {\n //condition == array, 表示白名单\n const list = condition as string[]\n matched = {\n name: (name: string) => {\n if (!name) {\n return false\n }\n return list.indexOf(name) !== -1\n }\n }\n } else if (condition != null && typeof condition == 'object') {\n const validateCondition = condition as ValidateCondition\n // 白名单\n if (Array.isArray(validateCondition.include) && validateCondition.include.length > 0) {\n const list = validateCondition.include\n matched = {\n name: (name: string) => {\n if (!name) {\n return false\n }\n return list.indexOf(name) !== -1\n }\n }\n } else if (Array.isArray(validateCondition.exclude) && validateCondition.exclude.length > 0) {\n // 黑名单\n const list = validateCondition.exclude\n matched = {\n name: (name: string) => {\n if (!name) {\n return false\n }\n return list.indexOf(name) === -1\n }\n }\n }\n }\n if (matched) {\n // 调用其孩子节点\n const childRets = broadcast?.emitToChildren(matched, 'validate', false)\n // 加入孩子节点的结果\n if (childRets) {\n Reflect.apply([].push, promiseList, childRets)\n }\n }\n\n if (promiseList.length == 1) {\n return promiseList[0]\n } else if (promiseList.length > 1) {\n return Promise.all(promiseList).then(results => {\n // 收集错误信息\n let errors: ValidateFieldError[] = []\n results.forEach(r => {\n if (r.pass === false && Array.isArray(r.errors)) {\n errors = [...errors, ...r.errors]\n }\n })\n if (errors.length > 0) {\n return {\n pass: false,\n errors\n }\n } else {\n return {\n pass: true\n }\n }\n })\n }\n return Promise.resolve({\n pass: true\n })\n }\n\n // 暴露设置name validate rule方法\n proxy.setNameValidateRules = (rules: Record<string, Rule>, deep: boolean = true) => {\n if (deep) {\n const keys = Reflect.ownKeys(rules)\n const dataItemNameList = [...keys]\n // 发送到孩子节点\n const matched: Matched = {\n name: name => {\n const flag = keys.includes(name)\n // 如果规则已经设置给组件,则从date item队列中一次\n if (flag) {\n const index = dataItemNameList.findIndex(s => {\n return name === s\n })\n if (index !== -1) {\n dataItemNameList.splice(index, 1)\n }\n }\n return flag\n }\n }\n // 调用其孩子节点\n broadcast?.emitToChildren(matched, 'setNameValidateRules', rules, false)\n\n if (dataItemNameList.length > 0) {\n // 注册data item\n dataItemNameList.forEach(s => {\n let itemName = String(s)\n const descriptor: Descriptor = {\n componentName: '',\n fieldName: itemName as string,\n pureDataValidate: true\n }\n const dataItem = defineDataItem(\n domain,\n itemName,\n descriptor,\n broadcast as Broadcast,\n validateSchema as ValidateSchema\n )\n // 加入注册表\n proxy[DataItemsKey].set(itemName, dataItem)\n // 获取item rule\n const itemRule = rules[itemName]\n if (itemRule) {\n dataItem.validateSchema.setRule(itemRule)\n }\n })\n }\n }\n }\n\n // 暴露clear validate方法\n proxy.clearValidate = (condition: boolean | string[] | ValidateCondition | null = true) => {\n //匹配\n let matched: Matched | null = null\n\n if (condition === true) {\n //condition==true,代表调用所有孩子节点,如果为数组,需要匹配孩子节点的名称\n matched = { name: '*' }\n } else if (Array.isArray(condition) && condition.length > 0) {\n //condition == array, 表示白名单\n const list = condition as string[]\n matched = {\n name: (name: string) => {\n if (!name) {\n return false\n }\n return list.indexOf(name) !== -1\n }\n }\n } else if (condition != null && typeof condition === 'object') {\n const ValidateCondition = condition as ValidateCondition\n // 白名单\n if (Array.isArray(ValidateCondition.include) && ValidateCondition.include.length > 0) {\n const list = ValidateCondition.include\n matched = {\n name: (name: string) => {\n if (!name) {\n return false\n }\n return list.indexOf(name) !== -1\n }\n }\n } else if (Array.isArray(ValidateCondition.exclude) && ValidateCondition.exclude.length > 0) {\n // 黑名单\n const list = ValidateCondition.exclude\n matched = {\n name: (name: string) => {\n if (!name) {\n return false\n }\n return list.indexOf(name) === -1\n }\n }\n }\n }\n if (matched) {\n // 调用其孩子节点\n broadcast?.emitToChildren(matched, 'clearValidate', false)\n }\n }\n\n // 重置domain中的field\n proxy.resetFields = (condition?: MatchedCondition) => {\n const modelValue = getModelValue()\n // model value为空,不做任何处理\n if (!modelValue) {\n return\n }\n // 克隆数据\n const overrideData: any = {}\n extend(true, overrideData, getOriginalModelValue() ?? {})\n\n if (Array.isArray(condition)) {\n condition.forEach(key => {\n modelValue[key] = overrideData[key]\n })\n } else if (condition && Array.isArray(condition.include)) {\n let keys = condition.include ?? []\n keys.forEach(key => {\n modelValue[key] = overrideData[key]\n })\n } else if (condition && Array.isArray(condition.exclude)) {\n let keys = condition.exclude ?? []\n Reflect.ownKeys(overrideData).forEach(key => {\n if (!keys.includes(key)) {\n modelValue[key] = overrideData[key]\n }\n })\n } else {\n Object.assign(modelValue, overrideData)\n }\n // 重置错误信息\n proxy.clearValidate(condition)\n }\n\n // 设置model value\n proxy.setModelValue = (data: Record<string | symbol, any>, name?: string) => {\n if (!name || name === domainName) {\n setModelValue(data)\n } else {\n broadcast?.emitToChildren({ name }, 'setModelValue', data)\n }\n }\n // 获取model value\n proxy.getModelValue = () => {\n return getModelValue()\n }\n }\n\n //卸载处理\n onUnmounted(() => {\n //销毁domain\n domain.destroy()\n //清空引用\n proxy[DomainKey] = undefined\n //清空引用\n if (proxy[DataItemsKey]) {\n proxy[DataItemsKey].clear()\n proxy[DataItemsKey] = undefined\n }\n\n if (broadcast !== null) {\n // 销毁broadcast\n broadcast.destroy()\n // 清空引用\n proxy[BroadcastKey] = undefined\n }\n\n if (validateSchema !== null) {\n // 销毁validate schema\n validateSchema.destroy()\n // 清空引用\n proxy[ValidateSchemaKey] = undefined\n }\n })\n\n // 返回domain\n return domain\n}\n\n/**\n * domain item\n */\nexport interface DomainItem {\n // 广播\n broadcast: Broadcast\n // 校验schema\n validateSchema: ValidateSchema\n // 发布事件\n emitEvent: { (type: string, ...args: any[]): void }\n // 注册事件\n onEvent: { (type: string, listener: EventListener): void }\n // 注销事件\n offEvent: { (type: string, listener: EventListener): void }\n}\n\n/**\n * 定义domain item\n * @returns\n */\nexport function defineItem(\n descriptor: Descriptor,\n name?: string,\n exposes?: Record<string, BroadcastCallback>\n): DomainItem {\n // 获取当前instance\n const instance = getCurrentInstance() as ComponentInternalInstance\n // 获取proxy\n const proxy: any = instance?.proxy\n // 设置item名称\n const itemName = name ?? ''\n // 获取parent broadcast\n const parentBroadcast = inject<Broadcast | null>(BroadcastKey, null)\n // 创建broadcast\n const broadcast = createBroadcast(proxy, parentBroadcast, itemName, exposes)\n\n // 保存在proxy\n proxy[BroadcastKey] = broadcast\n // 提供provide\n provide(BroadcastKey, broadcast)\n\n // 暴露广播方法\n proxy.broadcast = (matched: Matched, action: string, ...args: any[]) => {\n return Reflect.apply(broadcast.emit, broadcast, [matched, action, ...args])\n }\n\n // 获取parent validate schema\n const parentValidateSchema = inject<ValidateSchema | null>(ValidateSchemaKey, null)\n\n // 创建校验器\n descriptor.fieldName = descriptor.fieldName ?? itemName\n const validateSchema = createValidateSchema(proxy, parentValidateSchema, descriptor)\n // 保存在proxy\n proxy[ValidateSchemaKey] = validateSchema\n // 提供provide\n provide(ValidateSchemaKey, validateSchema)\n\n // 暴露validate方法(term为boolean类型代表为deep, 为字符串集合代表为匹配name的集合)\n proxy.validate = (condition: boolean | string[] | ValidateCondition | null = null): Promise<ValidateResult> => {\n const promiseList: Promise<any>[] = []\n\n // term为数组,代表为条件集合,需要判断是否包括在条件中\n if (!Array.isArray(condition) || condition.indexOf(itemName) !== -1) {\n const ret = validateSchema?.validate()\n promiseList.push(ret)\n }\n\n //匹配\n let matched: Matched | null = null\n\n if (condition === true) {\n //term==true,代表调用所有孩子节点,如果为数组,需要匹配孩子节点的名称\n matched = { name: '*' }\n } else if (Array.isArray(condition) && condition.length > 0) {\n //term == array, 表示白名单\n const list = condition as string[]\n matched = {\n name: (name: string) => {\n if (!name) {\n return false\n }\n return list.indexOf(name) !== -1\n }\n }\n } else if (condition != null && typeof condition == 'object') {\n const validateCondition = condition as ValidateCondition\n // 白名单\n if (Array.isArray(validateCondition.include) && validateCondition.include.length > 0) {\n const list = validateCondition.include\n matched = {\n name: (name: string) => {\n if (!name) {\n return false\n }\n return list.indexOf(name) !== -1\n }\n }\n } else if (Array.isArray(validateCondition.exclude) && validateCondition.exclude.length > 0) {\n // 黑名单\n const list = validateCondition.exclude\n matched = {\n name: (name: string) => {\n if (!name) {\n return false\n }\n return list.indexOf(name) === -1\n }\n }\n }\n }\n if (matched) {\n // 调用其孩子节点\n const childRets = broadcast.emitToChildren(matched, 'validate', false)\n // 加入孩子节点的结果\n Reflect.apply([].push, promiseList, childRets)\n }\n\n if (promiseList.length == 1) {\n return promiseList[0]\n } else if (promiseList.length > 1) {\n return Promise.all(promiseList).then(results => {\n // 收集错误信息\n let errors: ValidateFieldError[] = []\n results.forEach(r => {\n if (r.pass === false && Array.isArray(r.errors)) {\n errors = [...errors, ...r.errors]\n }\n })\n if (errors.length > 0) {\n return {\n pass: false,\n errors\n }\n } else {\n return {\n pass: true\n }\n }\n })\n }\n return Promise.resolve({\n pass: true\n })\n }\n\n // 暴露设置validate rule方法\n proxy.setValidateRule = (rule: Rule) => {\n return validateSchema?.setRule(rule)\n }\n\n // 暴露设置name validate rule方法\n proxy.setNameValidateRules = (rules: Record<string, Rule>, deep: boolean = false) => {\n // 获取当前组件的rule\n const rule = rules[itemName]\n if (rule) {\n validateSchema?.setRule(rule)\n }\n\n if (deep) {\n // 发送到孩子节点\n const matched: Matched = {\n name: name => {\n return Reflect.ownKeys(rules).includes(name)\n }\n }\n // 调用其孩子节点\n broadcast.emitToChildren(matched, 'setNameValidateRules', rules, false)\n }\n }\n\n // 暴露clear validate方法\n proxy.clearValidate = (term: boolean | string[] | null = null) => {\n // term为数组,代表为条件集合,需要判断是否包括在条件中\n if (!Array.isArray(term) || term.indexOf(name ?? '') !== -1) {\n validateSchema?.clear()\n }\n\n //匹配\n let matched: Matched | null = null\n\n if (term === true) {\n //term==true,代表调用所有孩子节点,如果为数组,需要匹配孩子节点的名称\n matched = { name: '*' }\n } else if (Array.isArray(term) && term.length > 0) {\n //term == array, 表示白名单\n const list = term as string[]\n matched = {\n name: (name: string) => {\n if (!name) {\n return false\n }\n return list.indexOf(name) !== -1\n }\n }\n } else if (term != null && typeof term === 'object') {\n const ValidateCondition = term as ValidateCondition\n // 白名单\n if (Array.isArray(ValidateCondition.include) && ValidateCondition.include.length > 0) {\n const list = ValidateCondition.include\n matched = {\n name: (name: string) => {\n if (!name) {\n return false\n }\n return list.indexOf(name) !== -1\n }\n }\n } else if (Array.isArray(ValidateCondition.exclude) && ValidateCondition.exclude.length > 0) {\n // 黑名单\n const list = ValidateCondition.exclude\n matched = {\n name: (name: string) => {\n if (!name) {\n return false\n }\n return list.indexOf(name) === -1\n }\n }\n }\n }\n if (matched) {\n // 调用其孩子节点\n broadcast.emitToChildren(matched, 'clearValidate', false)\n }\n }\n\n // 创建 event emitter\n const eventEmitter = new EventEmitter(proxy)\n // 保存在proxy\n proxy[EventEmitterKey] = eventEmitter\n\n // 定义\n const doValidateAction = throttle((action = 'validate') => {\n if (action === 'reset') {\n validateSchema.clear()\n } else {\n validateSchema.validate()\n }\n }, 60)\n\n // 加入需要校验检查事件监听器\n const validateCheckEvents = Array.isArray(descriptor.validateCheckEvents)\n ? descriptor.validateCheckEvents\n : getGlobalValidateCheckEvents()\n\n validateCheckEvents.forEach(type => {\n eventEmitter.on(type, type => {\n doValidateAction('validate')\n })\n })\n\n // 加入需要校验重置事件监听器\n const validateResetEvents = Array.isArray(descriptor.validateResetEvents)\n ? descriptor.validateResetEvents\n : getGlobalValidateResetEvents()\n validateResetEvents.forEach(type => {\n eventEmitter.on(type, type => {\n doValidateAction('reset')\n })\n })\n\n //un mounted处理\n onUnmounted(() => {\n // 销毁broadcast\n broadcast.destroy()\n // 清空引用\n proxy[BroadcastKey] = undefined\n // 销毁validate schema\n validateSchema.destroy()\n // 清空引用\n proxy[ValidateSchemaKey] = undefined\n // 销毁event emitter\n eventEmitter.destroy()\n // 清空引用\n proxy[EventEmitterKey] = undefined\n })\n\n return {\n broadcast,\n validateSchema,\n emitEvent: (type: string, ...args): void => {\n Reflect.apply(eventEmitter.emit, eventEmitter, [type, ...args])\n },\n onEvent: (type: string, listener: EventListener): void => {\n Reflect.apply(eventEmitter.on, eventEmitter, [listener])\n },\n offEvent: (type: string, listener: EventListener): void => {\n Reflect.apply(eventEmitter.off, eventEmitter, [listener])\n }\n }\n}\n\n/**\n * 定义domain data item\n * @returns\n */\nexport function defineDataItem(\n domain: Domain,\n name: string,\n descriptor: Descriptor,\n parentBroadcast: Broadcast,\n parentValidateSchema: ValidateSchema\n) {\n const exposes: Record<string, BroadcastCallback> = {}\n // 设置item名称\n const itemName = name ?? ''\n // 创建校验器\n descriptor.fieldName = itemName\n descriptor.validateHandler = {\n getValue(proxy: FoxComponentPublicInstance): any {\n const modelValue = domain.getForSelf('modelValue')\n if (!modelValue) {\n return null\n }\n return modelValue[itemName]\n }\n }\n const validateSchema = createValidateSchema({}, parentValidateSchema, descriptor)\n\n // 暴露validate方法(term为boolean类型代表为deep, 为字符串集合代表为匹配name的集合)\n exposes.validate = (condition: boolean | string[] | ValidateCondition | null = null): Promise<ValidateResult> => {\n const promiseList: Promise<any>[] = []\n\n // term为数组,代表为条件集合,需要判断是否包括在条件中\n if (!Array.isArray(condition) || condition.indexOf(itemName) !== -1) {\n const ret = validateSchema?.validate()\n promiseList.push(ret)\n }\n\n //匹配\n let matched: Matched | null = null\n\n if (condition === true) {\n //term==true,代表调用所有孩子节点,如果为数组,需要匹配孩子节点的名称\n matched = { name: '*' }\n } else if (Array.isArray(condition) && condition.length > 0) {\n //term == array, 表示白名单\n const list = condition as string[]\n matched = {\n name: (name: string) => {\n if (!name) {\n return false\n }\n return list.indexOf(name) !== -1\n }\n }\n } else if (condition != null && typeof condition == 'object') {\n const validateCondition = condition as ValidateCondition\n // 白名单\n if (Array.isArray(validateCondition.include) && validateCondition.include.length > 0) {\n const list = validateCondition.include\n matched = {\n name: (name: string) => {\n if (!name) {\n return false\n }\n return list.indexOf(name) !== -1\n }\n }\n } else if (Array.isArray(validateCondition.exclude) && validateCondition.exclude.length > 0) {\n // 黑名单\n const list = validateCondition.exclude\n matched = {\n name: (name: string) => {\n if (!name) {\n return false\n }\n return list.indexOf(name) === -1\n }\n }\n }\n }\n if (matched) {\n // 调用其孩子节点\n const childRets = broadcast.emitToChildren(matched, 'validate', false)\n // 加入孩子节点的结果\n Reflect.apply([].push, promiseList, childRets)\n }\n\n if (promiseList.length == 1) {\n return promiseList[0]\n } else if (promiseList.length > 1) {\n return Promise.all(promiseList).then(results => {\n // 收集错误信息\n let errors: ValidateFieldError[] = []\n results.forEach(r => {\n if (r.pass === false && Array.isArray(r.errors)) {\n errors = [...errors, ...r.errors]\n }\n })\n if (errors.length > 0) {\n return {\n pass: false,\n errors\n }\n } else {\n return {\n pass: true\n }\n }\n })\n }\n return Promise.resolve({\n pass: true\n })\n }\n\n // 暴露设置validate rule方法\n exposes.setValidateRule = (rule: Rule) => {\n return validateSchema?.setRule(rule)\n }\n\n // 暴露设置name validate rule方法\n exposes.setNameValidateRules = (rules: Record<string, Rule>) => {\n // 获取当前组件的rule\n const rule = rules[itemName]\n if (rule) {\n validateSchema?.setRule(rule)\n }\n }\n\n //创建broadcast\n const broadcast = createBroadcast(null, parentBroadcast, itemName, exposes)\n\n return {\n broadcast,\n validateSchema\n }\n}\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-09-18 18:23:21\n */\nimport { isBrowser } from './commons'\n\n/**\n * to px desc\n * @param value\n * @parma size\n * @returns\n */\nexport const toPxDesc = (value: string | number, size: number = -1): string => {\n if (!value) {\n return ''\n }\n if (typeof value === 'string') {\n if (value.endsWith('%') && size <= 0) {\n return value\n }\n if (value.endsWith('vh') || value.endsWith('vw')) {\n return value\n }\n }\n return `${toPx(value, size)}px`\n}\n\n/**\n * 转换为px number数值\n * @param value\n * @param size\n */\nexport function toPx(value: number | string, size: number = -1): number {\n // number类型,直接返回\n if (typeof value === 'number') {\n //0 < value < 1 and size大于0,代表为百分比\n if (value > 0 && value < 1 && size > 0) {\n return value * size\n }\n return value\n }\n // 格式化数据\n value = value.trim().toLocaleLowerCase()\n if (value.length === 0) {\n return 0\n }\n\n // px单位转换\n let index = value.indexOf('px')\n if (index !== -1) {\n const n = Number(value.substring(0, index))\n return n\n }\n\n // rem单位转换\n index = value.indexOf('rem')\n if (index !== -1) {\n let n = Number(value.substring(0, index))\n let cellSize = 1\n if (isBrowser) {\n // 获取font size\n const { fontSize } = window.getComputedStyle(document.documentElement, null)\n const pos = fontSize.indexOf('px')\n if (pos > 0) {\n cellSize = Number(fontSize.substring(0, pos))\n }\n }\n n *= cellSize\n return n\n }\n\n // %转换\n index = value.indexOf('%')\n if (index !== -1) {\n const n = Number(value.substring(0, index))\n return (n / 100) * size\n }\n\n // 字符型数字\n const n = Number(value)\n if (isNaN(n)) {\n return 0\n }\n return n\n}\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-10-03 09:28:13\n */\n\nimport { Domain } from './domain'\nimport { reactive, UnwrapNestedRefs, watch } from 'vue'\nimport { toPx } from '@/utils/px'\n\n/**\n * 安全区域\n */\nexport interface SafeAreaInset {\n left: number | string\n top: number | string\n right: number | string\n bottom: number | string\n}\n\n/**\n * padding\n */\nexport interface Padding {\n left: number | null\n top: number | null\n right: number | null\n bottom: number | null\n}\n\n/**\n * page layout\n */\nexport interface PageLayout {\n width: number | string\n height?: number | string\n headerHeight: number | string\n footerHeight: number | string\n headerPadding?: Padding\n footerPadding?: Padding\n contentPadding?: Padding\n}\n\n// page state key\nconst PageStateKey = 'PageStateKey'\n\n// page state\nexport interface PageState {\n width: number\n height: number\n headerHeight: number\n headerPadding: Padding\n footerHeight: number\n footerPadding: Padding\n contentHeight: number | string | null\n contentPadding: Padding\n safeAreaTop: number\n safeAreaBottom: number\n safeAreaLeft: number\n safeAreaRight: number\n headerMounted?: boolean\n footerMounted?: boolean\n}\n\n/**\n * 转换为number rect\n */\nexport function toPadding(rect: any): Padding {\n const res: Padding = {\n top: null,\n left: null,\n bottom: null,\n right: null\n }\n if (!rect) {\n return res\n }\n\n if (rect.top !== null && rect.top !== undefined) {\n res.top = toPx(rect.top)\n }\n\n if (rect.left !== null && rect.left !== undefined) {\n res.left = toPx(rect.left)\n }\n\n if (rect.bottom !== null && rect.bottom !== undefined) {\n res.bottom = toPx(rect.bottom)\n }\n\n if (rect.right !== null && rect.right !== undefined) {\n res.right = toPx(rect.right)\n }\n\n return res\n}\n\n/**\n * 更新 page state\n * @param state\n * @param pageLayout\n * @param overrideProps\n */\nexport function updatePageState(\n state: PageState,\n pageLayout: any,\n overrideProps: Record<string, unknown> = {},\n root = true,\n rootWidth: number = -1,\n rootHeight: number = -1,\n headerBarHeight: number = 0,\n footerBarHeight: number = 0\n) {\n // 设置页面参数\n state.headerHeight = toPx(overrideProps.headerHeight ?? pageLayout.headerHeight)\n state.headerPadding = toPadding(overrideProps.headerPadding ?? pageLayout.headerPadding)\n state.footerHeight = toPx(overrideProps.footerHeight ?? pageLayout.footerHeight)\n state.footerPadding = toPadding(overrideProps.footerPadding ?? pageLayout.footerPadding)\n state.contentPadding = toPadding(overrideProps.contentPadding ?? pageLayout.contentPadding)\n if (root) {\n const h = overrideProps.height ?? pageLayout.height\n if (h) {\n state.height = toPx(h, rootHeight)\n } else {\n state.height = toPx(rootHeight) - toPx(headerBarHeight, rootHeight) - toPx(footerBarHeight, rootHeight)\n }\n state.width = toPx(overrideProps.width ?? pageLayout.width, rootWidth)\n }\n}\n\n/**\n * 创建page state\n *\n * @param domain\n * @param overrideProps\n */\nexport function definePageState(\n domain: Domain,\n overrideProps: Record<string, unknown> = {}\n): UnwrapNestedRefs<PageState> | null {\n const padding: Padding = {\n top: null,\n left: null,\n bottom: null,\n right: null\n }\n // page state\n const state: PageState = {\n width: 0,\n height: 0,\n headerHeight: 0,\n headerPadding: { ...padding },\n footerHeight: 0,\n footerPadding: { ...padding },\n contentPadding: { ...padding },\n contentHeight: null,\n safeAreaTop: 0,\n safeAreaBottom: 0,\n safeAreaLeft: 0,\n safeAreaRight: 0,\n headerMounted: false,\n footerMounted: false\n }\n\n // 获取safeArea\n const safeAreaInset = Object.assign(domain.get('safeAreaInset') ?? {}, overrideProps.safeAreaInset ?? {})\n if (safeAreaInset) {\n state.safeAreaTop = toPx(safeAreaInset.top)\n state.safeAreaBottom = toPx(safeAreaInset.bottom)\n state.safeAreaLeft = toPx(safeAreaInset.left)\n state.safeAreaRight = toPx(safeAreaInset.right)\n }\n\n // 获取pageLayout\n const pageLayout = domain.get('pageLayout')\n // 不存在pageLayout,不进行页面参数的初始化\n if (!pageLayout) {\n return null\n }\n // 获取root width\n const rootWidth = domain.get('rootWidth') ?? -1\n // 获取root height\n const rootHeight = domain.get('rootHeight') ?? -1\n // 获取header bar height\n const headerBarHeight = domain.get('headerBarHeight') ?? 0\n // 获取footer bar height\n const footerBarHeight = domain.get('footerBarHeight') ?? 0\n\n // 更新参数\n updatePageState(state, pageLayout, overrideProps, true, rootWidth, rootHeight, headerBarHeight, footerBarHeight)\n\n // 定义响应式state\n const reactiveState = reactive(state)\n\n // 获取parent page state\n const parentState = domain.getForParent(PageStateKey)\n // parentPageState存在代表为子页面,其w&h为父亲页面的内容区的大小\n if (parentState) {\n state.height = getPageContentAreaHeight(domain, parentState)\n state.width = getPageContentAreaWidth(domain, parentState)\n // 同步父亲容器的width, height, padding\n watch(\n [\n () => parentState.height,\n () => parentState.width,\n () => parentState.contentPadding,\n () => parentState.headerMounted,\n () => parentState.footerMounted\n ],\n () => {\n reactiveState.height = getPageContentAreaHeight(domain, parentState)\n reactiveState.width = getPageContentAreaWidth(domain, parentState)\n }\n )\n }\n\n // 是否为root page\n const rootPage = !parentState\n // 检查page layout的更新,如果为子页面,则不需要更新width和height\n watch(\n [\n () => overrideProps.height,\n () => domain.get('pageLayout'),\n () => domain.get('rootWidth'),\n () => domain.get('rootHeight'),\n () => domain.get('headerBarHeight'),\n () => domain.get('footerBarHeight')\n ],\n ([\n newPropHeight,\n updatePageLayout,\n newRootWidth = -1,\n newRootHeight = -1,\n newHeaderBarHeight = 0,\n newFooterBarHeight = 0\n ]) => {\n updatePageState(\n reactiveState,\n updatePageLayout,\n overrideProps,\n rootPage,\n newRootWidth,\n newRootHeight,\n newHeaderBarHeight,\n newFooterBarHeight\n )\n }\n )\n\n //设置group state key\n domain.set(PageStateKey, reactiveState)\n // 返回state\n return reactiveState\n}\n\n/**\n * 获取page state\n * @param domain\n * @returns\n */\nexport function usePageState(domain: Domain): PageState | null {\n const state = domain.get(PageStateKey)\n return state as PageState\n}\n\n/**\n * 获取page header区域高度(headerHeight + SafeAreaTop )\n * @param domain\n * @param state\n * @returns\n */\nexport function getPageHeaderAreaHeight(domain: Domain, state?: PageState): number {\n state = state ?? (domain.get(PageStateKey) as PageState)\n if (state && state.headerMounted) {\n return state.headerHeight + state.safeAreaTop\n }\n return 0\n}\n\n/**\n * 获取page footer区域高度(footerHeight + SafeAreaBottom )\n * @param domain\n * @param state\n * @returns\n */\nexport function getPageFooterAreaHeight(domain: Domain, state?: PageState): number {\n state = state ?? (domain.get(PageStateKey) as PageState)\n if (state && state.footerMounted) {\n return state.footerHeight + state.safeAreaBottom\n }\n return 0\n}\n\n/**\n * 获取page content区域高度(pageHeight - headerHeight - footerHeight - padding )\n * @param domain\n * @param state\n * @returns\n */\nexport function getPageContentAreaHeight(domain: Domain, state?: PageState): number {\n state = state ?? (domain.get(PageStateKey) as PageState)\n if (state) {\n const headerAreaHeight = getPageHeaderAreaHeight(domain, state)\n const footerAreaHeight = getPageFooterAreaHeight(domain, state)\n return (\n state.height -\n headerAreaHeight -\n footerAreaHeight -\n (state.contentPadding.top ?? 0) -\n (state.contentPadding.bottom ?? 0)\n )\n }\n return 0\n}\n\n/**\n * 获取page content区域宽度(pageWidth - padding )\n * @param domain\n * @param state\n * @returns\n */\nexport function getPageContentAreaWidth(domain: Domain, state?: PageState): number {\n state = state ?? (domain.get(PageStateKey) as PageState)\n if (state) {\n return state.width - (state.contentPadding.left ?? 0) - (state.contentPadding.right ?? 0)\n }\n return 0\n}\n\n/**\n * 是否为内嵌页面\n * 内嵌页面为内嵌在容器内,如dialog,不需要设置content的高度\n * @param domain\n * @param proxy\n * @returns\n */\nexport function isInnerPage(domain: Domain, proxy: any): boolean {\n // 获取inner page函数\n const func = domain.get('isInnerPage')\n // 是否有内嵌页面的函数进行判断\n if (typeof func === 'function') {\n return Reflect.apply(func, {}, [proxy, domain])\n }\n return false\n}\n\n/**\n * 是否子页面\n * @param domain\n */\nexport function isSubPage(domain: Domain): boolean {\n const state = domain.getForParent(PageStateKey)\n if (!state) {\n return false\n }\n return true\n}\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-10-10 17:14:13\n */\nimport { computed, ref, Ref, toRef, UnwrapRef, watch } from 'vue'\nimport { useDomain } from './domain'\nimport { toBoolean } from '../commons'\n\n/**\n * 优先策略\n */\nexport enum PriorityPolicy {\n // 父级属性优先\n Parent,\n // 就近原则\n Near\n}\n\n/**\n * 是否接受value过滤器\n */\nexport interface AcceptFilter {\n (value: any): boolean\n}\n\n/**\n * 是否接受value\n * @param value\n * @param filter\n * @returns\n */\nfunction isAccept(value: any, filter?: AcceptFilter): any {\n // null or undefined 类型不存在\n if (value === null || value === undefined) {\n return false\n }\n // 如果存在过滤器,则需要需要执行过滤器\n if (typeof filter === 'function') {\n return filter(value)\n }\n return true\n}\n\n/**\n * 属性\n * @param source\n * @param name\n * @param policy\n * @param filter\n */\nexport function property(\n source: Ref,\n name: string,\n policy: PriorityPolicy = PriorityPolicy.Near,\n filter?: AcceptFilter\n): Ref {\n // 获取当前domain\n const domain = useDomain()\n // 如果domain为null\n if (domain == null) {\n return source\n }\n // 父级属性优先\n if (policy === PriorityPolicy.Parent) {\n return computed(() => {\n // 获取value集合\n const values = domain.getAll(name)\n for (let i = values.length - 1; i >= 0; i--) {\n const val = values[i]\n if (isAccept(val, filter)) {\n return val\n }\n }\n const value = source.value\n if (isAccept(value, filter)) {\n return value\n }\n return null\n })\n } else {\n return computed(() => {\n const value = source.value\n if (isAccept(value, filter)) {\n return value\n }\n // 获取value集合\n return domain?.get(name)\n })\n }\n}\n\n/**\n * 只读属性\n * @param source\n */\nexport function readonlyProperty(source: Ref): Ref {\n //是否接受\n const filter = function (val: unknown): boolean {\n const boolVal = toBoolean(val)\n return boolVal\n }\n return property(source, 'readonly', PriorityPolicy.Parent, filter)\n}\n\n/**\n * 禁用属性\n * @param source\n */\nexport function disabledProperty(source: Ref): Ref {\n //是否接受\n const filter = function (val: unknown): boolean {\n const boolVal = toBoolean(val)\n return boolVal\n }\n return property(source, 'disabled', PriorityPolicy.Parent, filter)\n}\n\n/**\n * value 格式话\n */\nexport interface ValueFormat<T, K> {\n (value: T): K\n}\n\n/**\n * to model value\n * @param props\n * @param format\n * @returns\n */\nexport function toValue(\n props: UnwrapRef<Record<string, any>>,\n name = 'modelValue',\n format?: ValueFormat<any, any>\n): Ref {\n // 获取source value\n const srcValue = toRef(props, name)\n\n let formatVal = srcValue.value\n if (typeof format === 'function') {\n // 格式化value\n formatVal = format(srcValue.value)\n }\n // 创建内部 value\n const value = ref(formatVal)\n\n // 监控value的变化并同步\n watch(srcValue, newVal => {\n if (typeof format === 'function') {\n // 格式化value\n const formatVal = format(newVal)\n // new value和value不一致,才需要设置value\n if (formatVal !== value.value) {\n value.value = formatVal\n }\n } else if (newVal !== value.value) {\n // new value和value不一致,才需要设置value\n value.value = newVal\n }\n })\n return value\n}\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-10-09 23:00:39\n */\nimport { ComponentPublicInstance } from 'vue'\n\n/**\n * scope getter\n */\nexport interface ScopeGetter {\n (proxy: ComponentPublicInstance): string | null\n}\n\n// api函数集合\nconst defaultApis = new Map<string, any>()\n\n// 范围api函数集合\nconst scopeApis = new Map<string, Map<string, any>>()\n\n// 公共scope getter\nlet globalScopeGetter: ScopeGetter | null = null\n\n/**\n * 设置公共scope getter\n * @param getter\n */\nexport function setScopeGetter(getter: ScopeGetter): void {\n globalScopeGetter = getter\n}\n\n/**\n * 注册API函数\n */\nexport function setAPI(name: string, api: any, scope?: string): void {\n // 如果设置了范围,则需要把api函数设置到scope apis中\n if (scope) {\n let apis = scopeApis.get(scope)\n // 初始化api\n if (!apis) {\n apis = new Map<string, any>()\n scopeApis.set(scope, apis)\n }\n apis.set(name, api)\n } else {\n defaultApis.set(name, api)\n }\n}\n\n/**\n * 获取api\n * @param proxy\n * @param name\n * @param scope\n * @returns\n */\nexport function getAPI(proxy: ComponentPublicInstance, name: string, scope?: string): any | null {\n if (!scope && globalScopeGetter) {\n scope = globalScopeGetter(proxy) ?? undefined\n }\n\n let func: any = null\n if (scope) {\n let apis = scopeApis.get(scope)\n // 初始化api\n if (apis) {\n func = apis.get(name)\n }\n }\n if (!func) {\n func = defaultApis.get(name)\n }\n return func\n}\n\n/**\n * 批量增加api\n * @param apis\n * @param scope\n */\nexport function batchSetAPI(apis: Record<string, any>, scope?: string): void {\n for (let key in apis) {\n const api = apis[key]\n setAPI(key, api, scope)\n }\n}\n\n/**\n * 清空scope apis\n * @param scope\n */\nexport function clearScopeAPI(scope: string): void {\n scopeApis.delete(scope)\n}\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-10-03 14:57:02\n */\nimport { App, ComponentPublicInstance, Plugin } from 'vue'\nimport { getRootDomain, SafeAreaInset, PageLayout, Domain } from './utils/domain'\nimport { getAPI, setAPI, batchSetAPI, clearScopeAPI, setScopeGetter, ScopeGetter } from './api'\nimport { isBrowser, extend } from './utils/commons'\nimport { toPx } from './utils/px'\nimport { throttle } from './utils/functions'\nimport { FoxUI, FoxUIOptions } from './interface'\n\n/**\n * 获取默认安全区域\n * @returns\n */\nfunction getDefaultSafeAreaInset(): SafeAreaInset {\n return {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0\n }\n}\n\n/**\n * 获取默认的client布局\n * @param headerBarHeight\n * @param footerBarHeight\n * @returns\n */\nfunction getClientLayout(\n headerBarHeight = 0,\n footerBarHeight = 0\n): { pageLayout: PageLayout; rootHeight: number; rootWidth: number } {\n if (isBrowser) {\n const rootWidth = document.documentElement.clientWidth || document.body.clientWidth\n const rootHeight = document.documentElement.clientHeight || document.body.clientHeight\n const pageLayout = {\n width: rootWidth,\n height: rootHeight - toPx(headerBarHeight, rootHeight) - toPx(footerBarHeight, rootHeight),\n headerHeight: 44,\n footerHeight: 44\n }\n return {\n rootWidth,\n rootHeight,\n pageLayout\n }\n } else {\n const rootWidth = -1\n const rootHeight = -1\n const pageLayout = {\n width: '100%',\n height: '100%',\n headerHeight: 44,\n footerHeight: 44\n }\n return {\n rootWidth,\n rootHeight,\n pageLayout\n }\n }\n}\n\n/**\n * 安装函数\n */\nexport interface Installer {\n (app: App, options?: any): void\n}\n\n/**\n * Fox UI vue实例\n */\nexport class FoxUIVue implements FoxUI {\n /**\n * packages\n */\n private packages: any[]\n\n /**\n * 安装器\n */\n private installers: Installer[]\n\n /**\n * version\n */\n private _version: string\n // getter version\n public get version() {\n return this._version\n }\n\n /**\n * 构造函数\n * @param packages\n * @param version\n */\n public constructor(packages: any[], installers: Installer[], version: string) {\n this.packages = packages\n this.installers = installers\n this._version = version\n }\n\n /**\n * 安装\n * @param app\n * @param options\n */\n public install(app: App, options: FoxUIOptions = {}): any {\n // 注册组件\n this.packages.forEach((item: any) => {\n if (item.install) {\n app.use(item)\n } else if (item.name) {\n app.component(item.name, item)\n }\n })\n // 执行安装器\n this.installers.forEach(install => {\n install(app)\n })\n\n // 过滤属性\n const filterKeys = ['safeAreaInset', 'pageLayout', 'headerBarHeight', 'footerBarHeight']\n\n // 获取root domain\n const rootDomain = getRootDomain()\n\n // 初始化page layout\n this.initPageLayout(options, rootDomain)\n // 是否自动调整page layout\n if (options.autoAdjustPageLayout !== false && window.ResizeObserver) {\n // 创建节流的resize listener\n const listener = throttle(() => {\n const newOptions = { ...options }\n const w = document.documentElement.clientWidth || document.body.clientWidth\n const h = document.documentElement.clientHeight || document.body.clientHeight\n newOptions.width = w\n newOptions.height = h\n this.initPageLayout(newOptions, rootDomain)\n }, 150)\n let resizeObserver = new window.ResizeObserver(listener)\n resizeObserver.observe(window.document.body)\n }\n\n for (const key in options) {\n // 过滤不直接拷贝属性\n if (filterKeys.indexOf(key) !== -1) {\n continue\n }\n rootDomain.set(key, options[key])\n }\n }\n\n /**\n * 初始化page Layout\n *\n * @param options\n * @param rootDomain\n */\n public initPageLayout(options: FoxUIOptions, rootDomain?: Domain): void {\n // 获取header bar height\n const headerBarHeight = options.headerBarHeight ?? 0\n // 获取footer bar height\n const footerBarHeight = options.footerBarHeight ?? 0\n // 获取安全区域\n const safeAreaInset = extend({}, getDefaultSafeAreaInset(), options.safeAreaInset)\n // 获取client screen layout\n const clientLayout = getClientLayout(headerBarHeight, footerBarHeight)\n // 获取page布局信息\n const pageLayout = extend({}, clientLayout.pageLayout, options.pageLayout)\n // 获取root domain\n rootDomain = rootDomain ?? getRootDomain()\n // 设置安全区域\n rootDomain.set('safeAreaInset', safeAreaInset)\n // 设置header bar高度\n rootDomain.set('headerBarHeight', headerBarHeight)\n // 设置footer bar高度\n rootDomain.set('footerBarHeight', footerBarHeight)\n // 设置页面布局参数\n rootDomain.set('pageLayout', pageLayout)\n // 设置root width\n rootDomain.set('rootWidth', clientLayout.rootWidth)\n // 设置root height\n rootDomain.set('rootHeight', clientLayout.rootHeight)\n }\n\n /**\n * 设置scope getter\n * @param getter\n */\n public setScopeGetter(getter: ScopeGetter): void {\n setScopeGetter(getter)\n }\n\n /**\n * 设置API\n * @param name\n * @param api\n * @param scope\n */\n public setAPI(name: string, api: any, scope?: string): void {\n setAPI(name, api, scope)\n }\n\n /**\n * 获取API\n * @param proxy\n * @param name\n * @param scope\n */\n public getAPI(proxy: ComponentPublicInstance, name: string, scope?: string): any | null {\n return getAPI(proxy, name, scope)\n }\n\n /**\n * 批量增加api\n * @param apis\n * @param scope\n */\n public batchSetAPI(apis: Record<string, any>, scope?: string): void {\n batchSetAPI(apis, scope)\n }\n\n /**\n * 清空scope apis\n * @param scope\n */\n public clearScopeAPI(scope: string): void {\n clearScopeAPI(scope)\n }\n\n /**\n * 获取root domain\n */\n public getRootDomain(): Domain {\n return getRootDomain()\n }\n}\n","import type { Plugin, App } from 'vue'\nimport { makeInstaller } from 'element-plus'\nimport { ElAffix } from 'element-plus'\nimport { ElAlert } from 'element-plus'\nimport { ElAutocomplete } from 'element-plus'\nimport { ElAvatar } from 'element-plus'\nimport { ElBacktop } from 'element-plus'\nimport { ElBadge } from 'element-plus'\nimport { ElBreadcrumb, ElBreadcrumbItem } from 'element-plus'\nimport { ElButton, ElButtonGroup } from 'element-plus'\nimport { ElCalendar } from 'element-plus'\nimport { ElCard } from 'element-plus'\nimport { ElCarousel, ElCarouselItem } from 'element-plus'\nimport { ElCascader } from 'element-plus'\nimport { ElCascaderPanel } from 'element-plus'\nimport { ElCheckTag } from 'element-plus'\nimport { ElCheckbox, ElCheckboxButton, ElCheckboxGroup } from 'element-plus'\nimport { ElCol } from 'element-plus'\nimport { ElCollapse, ElCollapseItem } from 'element-plus'\nimport { ElCollapseTransition } from 'element-plus'\nimport { ElColorPicker } from 'element-plus'\nimport { ElConfigProvider } from 'element-plus'\nimport { ElAside, ElContainer, ElFooter, ElHeader, ElMain } from 'element-plus'\nimport { ElDatePicker } from 'element-plus'\nimport { ElDescriptions, ElDescriptionsItem } from 'element-plus'\nimport { ElDialog } from 'element-plus'\nimport { ElDivider } from 'element-plus'\nimport { ElDrawer } from 'element-plus'\nimport { ElDropdown, ElDropdownItem, ElDropdownMenu } from 'element-plus'\nimport { ElEmpty } from 'element-plus'\nimport { ElForm, ElFormItem } from 'element-plus'\nimport { ElIcon } from 'element-plus'\nimport { ElImage } from 'element-plus'\nimport { ElImageViewer } from 'element-plus'\nimport { ElInput } from 'element-plus'\nimport { ElInputNumber } from 'element-plus'\nimport { ElLink } from 'element-plus'\nimport { ElMenu, ElMenuItem, ElSubMenu, ElMenuItemGroup } from 'element-plus'\nimport { ElPageHeader } from 'element-plus'\nimport { ElPagination } from 'element-plus'\nimport { ElPopconfirm } from 'element-plus'\nimport { ElPopover } from 'element-plus'\nimport { ElPopper } from 'element-plus'\nimport { ElProgress } from 'element-plus'\nimport { ElRadio, ElRadioButton, ElRadioGroup } from 'element-plus'\nimport { ElRate } from 'element-plus'\nimport { ElResult } from 'element-plus'\nimport { ElRow } from 'element-plus'\nimport { ElScrollbar } from 'element-plus'\nimport { ElOption, ElOptionGroup, ElSelect } from 'element-plus'\nimport { ElSelectV2 } from 'element-plus'\nimport { ElSkeleton, ElSkeletonItem } from 'element-plus'\nimport { ElSlider } from 'element-plus'\nimport { ElSpace } from 'element-plus'\nimport { ElStep, ElSteps } from 'element-plus'\nimport { ElSwitch } from 'element-plus'\nimport { ElTable, ElTableColumn } from 'element-plus'\nimport { ElAutoResizer, ElTableV2 } from 'element-plus'\nimport { ElTabPane, ElTabs } from 'element-plus'\nimport { ElTag } from 'element-plus'\nimport { ElTimePicker } from 'element-plus'\nimport { ElTimeSelect } from 'element-plus'\nimport { ElTimeline, ElTimelineItem } from 'element-plus'\nimport { ElTooltip } from 'element-plus'\nimport { ElTransfer } from 'element-plus'\nimport { ElTree } from 'element-plus'\nimport { ElTreeSelect } from 'element-plus'\nimport { ElTreeV2 } from 'element-plus'\nimport { ElUpload } from 'element-plus'\n\n// 组件列表\nexport const components: Plugin[] = [\n ElAffix,\n ElAlert,\n ElAutocomplete,\n ElAutoResizer,\n ElAvatar,\n ElBacktop,\n ElBadge,\n ElBreadcrumb,\n ElBreadcrumbItem,\n ElButton,\n ElButtonGroup,\n ElCalendar,\n ElCard,\n ElCarousel,\n ElCarouselItem,\n ElCascader,\n ElCascaderPanel,\n ElCheckTag,\n ElCheckbox,\n ElCheckboxButton,\n ElCheckboxGroup,\n ElCol,\n ElCollapse,\n ElCollapseItem,\n ElCollapseTransition,\n ElColorPicker,\n ElConfigProvider,\n ElContainer,\n ElAside,\n ElFooter,\n ElHeader,\n ElMain,\n ElDatePicker,\n ElDescriptions,\n ElDescriptionsItem,\n ElDialog,\n ElDivider,\n ElDrawer,\n ElDropdown,\n ElDropdownItem,\n ElDropdownMenu,\n ElEmpty,\n ElForm,\n ElFormItem,\n ElIcon,\n ElImage,\n ElImageViewer,\n ElInput,\n ElInputNumber,\n ElLink,\n ElMenu,\n ElSubMenu,\n ElMenuItem,\n ElMenuItemGroup,\n ElPageHeader,\n ElPagination,\n ElPopconfirm,\n ElPopover,\n ElPopper,\n ElProgress,\n ElRadio,\n ElRadioButton,\n ElRadioGroup,\n ElRate,\n ElResult,\n ElRow,\n ElScrollbar,\n ElSelect,\n ElOption,\n ElOptionGroup,\n ElSelectV2,\n ElSkeleton,\n ElSkeletonItem,\n ElSlider,\n ElSpace,\n ElSteps,\n ElStep,\n ElSwitch,\n ElTable,\n ElTableColumn,\n ElTableV2,\n ElTabs,\n ElTabPane,\n ElTag,\n ElTimePicker,\n ElTimeSelect,\n ElTimeline,\n ElTimelineItem,\n ElTooltip,\n ElTransfer,\n ElTree,\n ElTreeSelect,\n ElTreeV2,\n ElUpload\n]\n\n// 导出组件\nexport {\n ElAffix,\n ElAlert,\n ElAutocomplete,\n ElAutoResizer,\n ElAvatar,\n ElBacktop,\n ElBadge,\n ElBreadcrumb,\n ElBreadcrumbItem,\n ElButton,\n ElButtonGroup,\n ElCalendar,\n ElCard,\n ElCarousel,\n ElCarouselItem,\n ElCascader,\n ElCascaderPanel,\n ElCheckTag,\n ElCheckbox,\n ElCheckboxButton,\n ElCheckboxGroup,\n ElCol,\n ElCollapse,\n ElCollapseItem,\n ElCollapseTransition,\n ElColorPicker,\n ElConfigProvider,\n ElContainer,\n ElAside,\n ElFooter,\n ElHeader,\n ElMain,\n ElDatePicker,\n ElDescriptions,\n ElDescriptionsItem,\n ElDialog,\n ElDivider,\n ElDrawer,\n ElDropdown,\n ElDropdownItem,\n ElDropdownMenu,\n ElEmpty,\n ElForm,\n ElFormItem,\n ElIcon,\n ElImage,\n ElImageViewer,\n ElInput,\n ElInputNumber,\n ElLink,\n ElMenu,\n ElSubMenu,\n ElMenuItem,\n ElMenuItemGroup,\n ElPageHeader,\n ElPagination,\n ElPopconfirm,\n ElPopover,\n ElPopper,\n ElProgress,\n ElRadio,\n ElRadioButton,\n ElRadioGroup,\n ElRate,\n ElResult,\n ElRow,\n ElScrollbar,\n ElSelect,\n ElOption,\n ElOptionGroup,\n ElSelectV2,\n ElSkeleton,\n ElSkeletonItem,\n ElSlider,\n ElSpace,\n ElSteps,\n ElStep,\n ElSwitch,\n ElTable,\n ElTableColumn,\n ElTableV2,\n ElTabs,\n ElTabPane,\n ElTag,\n ElTimePicker,\n ElTimeSelect,\n ElTimeline,\n ElTimelineItem,\n ElTooltip,\n ElTransfer,\n ElTree,\n ElTreeSelect,\n ElTreeV2,\n ElUpload\n}\n","/*\n * @Author: 江成\n * @Date: 2022-10-31 09:06:17\n */\nimport { ElInfiniteScroll } from 'element-plus'\nimport { ElLoading } from 'element-plus'\nimport { ElMessage } from 'element-plus'\nimport { ElMessageBox } from 'element-plus'\nimport { ElNotification } from 'element-plus'\nimport { ElPopoverDirective } from 'element-plus'\n\nimport type { Plugin } from 'vue'\n\nexport const plugins = [\n ElInfiniteScroll,\n ElLoading,\n ElMessage,\n ElMessageBox,\n ElNotification,\n ElPopoverDirective\n] as Plugin[]\n","/*\n * @Author: 江成\n * @Date: 2022-10-16 12:09:45\n */\nimport type { Plugin, App } from 'vue'\n// 组件列表\nimport { components } from './component'\nexport * from './component'\n// 插件列表\nimport { plugins } from './plugin'\nexport * from './plugin'\n\n// 创建installer\nexport const install = (app: App) => {\n // 安装组件\n components.forEach((item: any) => {\n let name = item.name\n if (typeof name === 'string') {\n name = `Fox${name.slice(2)}`\n app.component(name, item)\n } else {\n app.use(item)\n }\n })\n // 安装插件\n plugins.forEach((plugin: any) => {\n app.use(plugin)\n })\n}\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-09-08 23:16:48\n */\nimport {\n App,\n defineComponent,\n DefineComponent,\n ComponentPropsOptions,\n ExtractPropTypes,\n SetupContext,\n RenderFunction,\n Component\n} from 'vue'\n\ninterface CreateType {\n name: string\n translate: { (keyPath: string, ...args: unknown[]): string }\n create: DefineComponent\n createDemo: DefineComponent\n}\n\nexport function createComponent(name: string) {\n // fox组件明(前缀可以修改)\n const componentName = 'fox-' + name\n return {\n // 组件名称\n componentName,\n // 范围\n scope: name.replace('-', ''),\n // 创建组件\n create<\n PropsOptions extends Readonly<ComponentPropsOptions>,\n Props extends Readonly<ExtractPropTypes<PropsOptions>>\n >(_component: {\n name?: string\n baseName?: string\n install?: (vue: App) => void\n props?: PropsOptions\n components?: Record<string, Component>\n setup?: (props: Props, setupContext: SetupContext) => RenderFunction | Record<string, any> | any\n emits?: string[]\n [optionKey: string]: any\n }) {\n _component.baseName = name\n _component.name = componentName\n _component.install = (vue: App) => {\n vue.component(_component.name as string, _component as any)\n }\n // 定义并返回\n return defineComponent(_component as any)\n },\n // 创建demo组件\n createDemo(_component: any) {\n _component.baseName = name\n\n _component.name = 'demo-' + name\n // 定义并返回\n return defineComponent(_component)\n }\n }\n}\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-10-31 11:30:14\n */\n\nimport { PropType, CSSProperties } from 'vue'\n\n// hint type\ntype HintType = 'text' | 'number' | 'money'\n\n/**\n * item props(domain范围内生效)\n */\nexport const domainItemProps = {\n // 页面范围禁用设置\n disabled: {\n type: [Boolean, String] as PropType<boolean | string>,\n required: false\n },\n // 页面范围只读设置\n readonly: {\n type: [Boolean, String] as PropType<boolean | string>,\n required: false\n },\n // label position\n labelPosition: {\n type: String as PropType<string>,\n required: false\n },\n // label width\n labelWidth: {\n type: [String, Number] as PropType<number | string>,\n required: false\n },\n // 是否有边框\n hasBorder: {\n type: Boolean as PropType<boolean>,\n required: false,\n default: true\n }\n}\n\n/**\n * item props\n */\nexport const itemProps = {\n // item对应的value名称\n prop: {\n type: String,\n required: false\n },\n // label\n label: {\n type: String,\n required: false\n },\n // label position\n labelPosition: {\n type: String,\n required: false\n },\n // label width\n labelWidth: {\n type: [String, Number] as PropType<number | string>,\n required: false\n },\n // required\n isRequired: {\n type: [String, Boolean] as PropType<boolean | string>,\n required: false,\n default: false\n },\n // 跨列数\n span: {\n type: [Number, String] as PropType<number | string>,\n required: false,\n default: 1\n },\n // 列偏移量\n offset: {\n type: [Number, String] as PropType<number | string>,\n default: 0\n },\n // 宽度\n width: {\n type: [String, Number] as PropType<string | number>,\n required: false\n },\n // 错误提示\n errorTip: {\n type: String,\n required: false\n },\n // 错误提示icon\n errorIcon: {\n type: Object,\n required: false\n },\n // 错误提示class\n errorClass: {\n type: String,\n required: false\n },\n // 警告提示\n warnTip: {\n type: String,\n required: false\n },\n // 警告提示icon\n warnIcon: {\n type: Object,\n required: false\n },\n // 警告提示class\n warnClass: {\n type: String,\n required: false\n },\n // 信息提示\n infoTip: {\n type: String,\n required: false\n },\n // 信息提示icon\n infoIcon: {\n type: Object,\n required: false\n },\n // 信息提示class\n infoClass: {\n type: String,\n required: false\n },\n // content class\n contentClass: {\n type: String,\n required: false,\n default: 'content--default'\n },\n // content style\n contentStyle: {\n type: Object as PropType<CSSProperties>,\n required: false,\n default: {}\n },\n // hint类型\n hintType: {\n type: String as PropType<HintType>,\n required: false,\n default: 'text'\n },\n // hint text\n hintText: {\n type: [String, Number],\n required: false\n },\n // hint是否显示\n hintVisible: {\n type: [Boolean, String],\n required: false,\n default: true\n },\n // hint 属性\n hintProps: {\n type: Object,\n required: false,\n default: {}\n },\n // 是否有边框\n hasBorder: {\n type: Boolean,\n default: true\n }\n}\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-11-02 09:17:36\n */\n\nimport { PropType } from 'vue'\nimport { Rule } from '@fox-js/validator'\n\n/**\n * group props(domain范围内生效)\n */\nexport const domainGroupProps = {\n // 列属性\n column: {\n type: [String, Number] as PropType<string | number>,\n required: false\n },\n // 间隔\n gutter: {\n type: [String, Number] as PropType<string | number>,\n required: false\n },\n // 最小宽度\n minItemWidth: {\n type: [Number] as PropType<number>,\n required: false\n },\n // flex 布局下的水平排列方式\n justify: {\n type: [String] as PropType<string>,\n required: false,\n default: 'start'\n },\n //flex 布局下的垂直排列方式\n align: {\n type: [String] as PropType<'start' | 'end' | 'center'>,\n required: false,\n default: 'start'\n },\n // type=flex 情况下启用\n flexWrap: {\n type: [String] as PropType<'nowrap' | 'wrap'>,\n default: 'nowrap'\n }\n}\n/**\n * group props\n */\nexport const groupProps = {\n // 名称\n name: {\n type: String as PropType<string>,\n required: false\n },\n // model value\n modelValue: {\n type: String as PropType<Record<string, any>>,\n required: false\n },\n // 校验规则\n rules: {\n type: [Object] as PropType<Record<string, Rule>>,\n required: false\n },\n // 布局类型\n type: {\n type: [String] as PropType<'flex' | 'form' | 'flow'>,\n required: false,\n default: 'flex'\n },\n // 标题\n title: {\n type: String as PropType<string>,\n default: ''\n },\n // 跨列数\n span: {\n type: [Number, String] as PropType<number | string>,\n required: false,\n default: 1\n },\n // 列偏移量\n offset: {\n type: [Number] as PropType<number>,\n default: 0\n },\n // 自动调整布局\n autoLayout: {\n type: [Boolean] as PropType<boolean>,\n required: false,\n default: true\n },\n // 是否包裹容器\n isWrap: {\n type: [Boolean, String] as PropType<boolean | string>,\n required: false,\n default: true\n },\n // 宽度\n width: {\n type: [String, Number] as PropType<string | number>,\n required: false\n },\n // 高度\n height: {\n type: [String, Number] as PropType<string | number>,\n required: false\n },\n // 是否显示mark标志\n showMark: {\n type: [String, Boolean] as PropType<string | boolean>,\n required: false,\n default: true\n },\n // mark color\n markColor: {\n type: [String] as PropType<string>,\n required: false\n }\n}\n\n// 导出group prop key\nconst groupPropKeys: any[] = []\nfor (const name in groupProps) {\n groupPropKeys.push(name)\n}\n\nexport { groupPropKeys }\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-09-08 23:15:32\n */\nimport { getCurrentInstance, ComponentInternalInstance } from 'vue'\n\n/**\n * use expose\n * @param apis\n */\nexport function useExpose(apis: Record<string, any>, instance: ComponentInternalInstance | null = null): void {\n if (!instance) {\n instance = getCurrentInstance()\n }\n if (instance && instance.proxy) {\n let anyProxy: any = instance.proxy\n Object.assign(anyProxy, apis)\n }\n}\n","import {\n computed,\n CSSProperties,\n PropType,\n SetupContext,\n getCurrentInstance,\n inject,\n watch,\n toRaw,\n onMounted\n} from 'vue'\nimport { domainItemProps } from '../item/common'\nimport { domainGroupProps } from '../group/group-props'\nimport { Domain, SafeAreaInset, defineDomain, definePageState } from '@/utils/domain'\nimport { useExpose } from '@/utils/use-expose'\nimport {\n getPageHeaderAreaHeight,\n getPageFooterAreaHeight,\n getPageContentAreaHeight,\n getPageContentAreaWidth\n} from '@/utils/domain/page'\nimport { Rule } from '@fox-js/validator'\n\n// inner page scope key\nconst InnerPageScopeKey = Symbol.for('InnerPageScopeKey')\n\n/**\n * Rect类型\n */\nexport interface Rect {\n left: number\n top: number\n right: number\n bottom: number\n}\n\nexport const component = (componentName: string, scope: string) => {\n return {\n inheritAttrs: true, //禁用默认继\n //属性\n props: {\n // item属性(domain属性)\n ...domainItemProps,\n // group属性(domain属性)\n ...domainGroupProps,\n // 名称\n name: {\n type: String as PropType<string>,\n required: false,\n default: ''\n },\n // model value\n modelValue: {\n type: Object as PropType<Record<string, any>>,\n required: false\n },\n // 页面宽度\n width: {\n type: [Number, String] as PropType<number | string>,\n required: false\n },\n // 页面高度\n height: {\n type: [Number, String] as PropType<number | string>,\n required: false\n },\n // 安全区域\n safeAreaInset: {\n type: Object as PropType<SafeAreaInset>,\n required: false\n },\n // content padding\n contentPadding: {\n type: Object as PropType<Rect>,\n required: false\n },\n // header padding\n headerPadding: {\n type: Object as PropType<Rect>,\n required: false\n },\n // footer padding\n footerPadding: {\n type: Object as PropType<Rect>,\n required: false\n },\n // header高度\n headerHeight: {\n type: [Number, String],\n required: false\n },\n // footer高度\n footerHeight: {\n type: [Number, String] as PropType<number | string>,\n required: false\n },\n // 校验规则\n rules: {\n type: [Object] as PropType<Record<string, Rule>>,\n required: false\n }\n },\n\n /**\n * setup\n *\n * @param props\n */\n setup(props: Record<string, unknown>, context: SetupContext) {\n // 安装domain\n const domain: Domain | null = defineDomain(props.name as string, props)\n // 如果为非domain范围或者为内嵌页面,不会创建page state\n if (domain) {\n // 创建page state\n const state = definePageState(domain, props)\n // 暴露page接口\n useExpose({\n getPageContentHeight: () => {\n return getPageContentAreaHeight(domain!, state!)\n },\n getPageContentWidth: () => {\n return getPageContentAreaWidth(domain!, state!)\n },\n getPageHeaderHeight: () => {\n return getPageHeaderAreaHeight(domain!, state!)\n },\n getPageFooterHeight: () => {\n return getPageFooterAreaHeight(domain!, state!)\n }\n })\n\n // 如果为内部页面,则需要特殊处理,设置100%高度,匹配其父亲容器\n const isInnerPage = inject(InnerPageScopeKey, false)\n if (state && isInnerPage) {\n state.contentHeight = '100%'\n }\n }\n\n // class属性\n const classes = computed(() => {\n const prefixCls = componentName\n return {\n [prefixCls]: true\n }\n })\n // style属性\n const styles = computed(() => {\n const style: CSSProperties = {}\n return style\n })\n\n // 监控校验规则\n const instance = getCurrentInstance()\n // 更新rule\n const updateRules = (rules: Record<string, any>) => {\n const anyProxy: any = instance?.proxy\n if (anyProxy && typeof anyProxy['setNameValidateRules'] === 'function') {\n anyProxy['setNameValidateRules'](rules, true)\n }\n }\n watch(\n () => props.rules,\n (newRules, oldRules) => {\n if (!newRules && !oldRules) {\n return\n }\n const rawOldRules: any = toRaw(oldRules)\n const rawNewRules: any = toRaw(newRules)\n const newKeys = rawNewRules ? Reflect.ownKeys(rawNewRules) : []\n const oldKeys = rawOldRules ? Reflect.ownKeys(rawOldRules) : []\n oldKeys.forEach(key => {\n if (!newKeys.includes(key)) {\n rawNewRules[key] = []\n }\n })\n updateRules(rawNewRules)\n },\n { deep: true }\n )\n onMounted(() => {\n if (props.rules) {\n const rawRules: any = toRaw(props.rules)\n updateRules(rawRules)\n }\n })\n\n return {\n classes,\n styles\n }\n }\n }\n}\n","<!--\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-10-02 10:18:00\n-->\n\n<template src=\"./template.html\"></template>\n<script lang=\"ts\">\nimport { createComponent } from '@/utils/create'\nconst { componentName, create, scope } = createComponent('page')\nimport { component } from './common'\nexport default create(component(componentName, scope))\n</script>","<div :class=\"classes\" :style=\"styles\">\n <slot></slot>\n</div>","import { computed, PropType, SetupContext, CSSProperties, onUnmounted } from 'vue'\nimport { useDomain, usePageState, toPadding, Padding } from '@/utils/domain'\nimport { toPx } from '@/utils/px'\nimport { IconParams } from './types'\n\nexport const component = (componentName: string, scope: string) => {\n return {\n //属性\n props: {\n // 高度\n height: {\n type: [String, Number] as PropType<string | number>,\n required: false\n },\n // padding设置\n padding: {\n type: [Object] as PropType<Padding>,\n required: false\n },\n //是否显示左侧图标/文字\n leftShow: {\n type: [Boolean, String],\n required: false,\n default: false\n },\n //left icon\n leftIcon: {\n type: [String, Object] as PropType<string | IconParams>,\n required: false,\n default: 'left'\n },\n //left text\n leftText: {\n type: String,\n required: false,\n default: ''\n },\n // 是否显示标题\n titleShow: {\n type: Boolean,\n required: false,\n default: true\n },\n // 标题\n title: {\n type: String,\n required: false,\n default: ''\n },\n // 标题icon\n titleIcon: {\n type: [String, Object] as PropType<string | IconParams>,\n required: false,\n default: ''\n },\n // right是否显示\n rightShow: {\n type: [String, Boolean],\n required: false,\n default: true\n },\n // right icon\n rightIcon: {\n type: [String, Object] as PropType<string | IconParams>,\n required: false,\n default: ''\n },\n // right text\n rightText: {\n type: String,\n required: false,\n default: ''\n }\n },\n // emit定义集合\n emits: ['back', 'click-title', 'click-right', 'click-right-text'],\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 获取当前domain\n const domain = useDomain()\n // 获取 page state\n const pageState = domain ? usePageState(domain) : null\n // 设置header加载\n if (pageState) {\n pageState.headerMounted = true\n }\n\n // header root class\n const classes = computed(() => {\n const prefixCls = componentName\n return {\n [prefixCls]: true\n }\n })\n\n // 获取属性的高度\n const height = props.height !== null && props.height !== undefined ? toPx(props.height) : null\n\n // 计算header state\n const headerState = computed(() => {\n // padding\n const state: Record<string, number | null> = {\n safeAreaTop: null,\n height: null,\n left: null,\n top: null,\n right: null,\n bottom: null\n }\n\n if (domain && pageState) {\n // 获取padding\n const padding = toPadding(props.padding ?? pageState.footerPadding)\n Object.assign(state, padding)\n // 如果属性设置高度,则需要更新page state的headerHeight\n if (height) {\n pageState.headerHeight = height\n }\n state.height = pageState.headerHeight\n state.safeAreaTop = pageState.safeAreaTop\n // 根据safeAreaTop调整top和height属性\n if (state.safeAreaTop) {\n state.top = state.safeAreaTop + (padding.top ?? 0)\n state.height = state.height + pageState.safeAreaTop\n }\n // 调试日志\n console.debug('[header] height', state.height) //debug\n console.debug('[header] safeBottom', state.safeAreaTop) //debug\n return state\n }\n\n if (height) {\n state.height = height\n }\n\n if (props.padding) {\n // 获取padding\n const padding = toPadding(props.padding)\n Object.assign(state, padding)\n }\n return state\n })\n // 卸载后必须更新header height\n onUnmounted(() => {\n // 设置header卸载\n if (pageState) {\n pageState.headerMounted = false\n }\n })\n\n // header root style\n const styles = computed(() => {\n const style: CSSProperties = {}\n if (headerState.value.height !== null && headerState.value.height !== undefined) {\n style.height = `${headerState.value.height}px`\n }\n if (headerState.value.top !== null && headerState.value.top !== undefined) {\n style.paddingTop = `${headerState.value.top}px`\n }\n if (headerState.value.left !== null && headerState.value.left !== undefined) {\n style.paddingLeft = `${headerState.value.left}px`\n }\n if (headerState.value.right !== null && headerState.value.right !== undefined) {\n style.paddingRight = `${headerState.value.right}px`\n }\n if (headerState.value.bottom !== null && headerState.value.bottom !== undefined) {\n style.paddingBottom = `${headerState.value.bottom}px`\n }\n return style\n })\n // left style\n const leftStyles = computed(() => {\n const style: CSSProperties = {}\n //设置 top\n if (headerState.value.safeAreaTop !== null && headerState.value.safeAreaTop !== undefined) {\n style.top = `${headerState.value.safeAreaTop}px`\n }\n return style\n })\n // right style\n const rightStyles = computed(() => {\n const style: CSSProperties = {}\n //设置 top\n if (headerState.value.safeAreaTop !== null && headerState.value.safeAreaTop !== undefined) {\n style.top = `${headerState.value.safeAreaTop}px`\n }\n return style\n })\n\n //是否显示left部分\n const mLeftShow = computed(() => {\n if (!props.leftShow) {\n return false\n }\n return props.leftIcon || props.leftText || context.slots.left\n })\n\n // 是否显示header\n const mHeaderShow = computed(() => {\n return !(\n headerState.value.height !== null &&\n headerState.value.height !== undefined &&\n headerState.value.height <= 0\n )\n })\n\n //是否显示title部分\n const mTitleShow = computed(() => {\n if (!props.titleShow) {\n return false\n }\n return props.title || props.titleIcon || context.slots.default\n })\n\n //是否显示right部分\n const mRightShow = computed(() => {\n if (!props.rightShow) {\n return false\n }\n return props.rightIcon || props.rightText || context.slots.right\n })\n\n //left icon\n const mLeftIcon = computed(() => {\n let params: Record<string, any> = {}\n if (typeof props.leftIcon === 'object') {\n Object.assign(params, props.leftIcon)\n } else {\n params.name = props.leftIcon\n }\n return params\n })\n\n //title icon\n const mTitleIcon = computed(() => {\n let params: Record<string, any> = {}\n if (typeof props.titleIcon === 'object') {\n Object.assign(params, props.titleIcon)\n } else {\n params.name = props.titleIcon\n }\n return params\n })\n\n //right icon\n const mRightIcon = computed(() => {\n let params: Record<string, any> = {}\n if (typeof props.rightIcon === 'object') {\n Object.assign(params, props.rightIcon)\n } else {\n params.name = props.rightIcon\n }\n return params\n })\n\n // handle left icon click\n function handleLeft() {\n context.emit('back')\n }\n\n // handle center icon click\n function handleCenter() {\n context.emit('click-title')\n }\n\n //handle right icon click\n function handleRight() {\n context.emit('click-right')\n }\n\n //handle right text click\n function handleRightText() {\n context.emit('click-right-text')\n }\n\n return {\n classes,\n styles,\n mHeaderShow,\n leftStyles,\n rightStyles,\n mLeftShow,\n mTitleShow,\n mRightShow,\n mLeftIcon,\n mTitleIcon,\n mRightIcon,\n handleLeft,\n handleCenter,\n handleRight,\n handleRightText\n }\n }\n }\n}\n","<!--\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-10-06 15:04:20\n-->\n<template src=\"./template.html\"></template>\n<script lang=\"ts\">\nimport { createComponent } from '@/utils/create'\nconst { componentName, create, scope } = createComponent('header-bar')\nimport { component } from './common'\nexport default create(component(componentName, scope))\n</script>\n","<!--\n * @Author: 江成\n * @Date: 2022-08-19 18:18:38\n-->\n<view v-if=\"mHeaderShow\" :class=\"classes\" :style=\"styles\">\n <slot name=\"all\">\n <view v-if=\"mLeftShow\" class=\"fox-header-bar__left\" :style=\"leftStyles\">\n <slot name=\"left\">\n <fox-ext-icon v-if=\"leftIcon\" :color=\"mLeftIcon.color\" :name=\"mLeftIcon.name\" @click=\"handleLeft\"></fox-ext-icon>\n <view v-if=\"leftText\" @click=\"handleLeft\">{{ leftText }}</view>\n </slot>\n </view>\n <view v-if=\"mTitleShow\" class=\"fox-header-bar__title\">\n <slot>\n <view v-if=\"title\" class=\"text-title\" @click=\"handleTitle\">{{ title }}</view>\n <fox-ext-icon\n v-if=\"titleIcon\"\n class=\"icon-title\"\n :color=\"mTitleIcon.color\"\n :name=\"mTitleIcon.name\"\n @click=\"handleCenter\"\n ></fox-ext-icon>\n </slot>\n </view>\n <view v-if=\"mRightShow\" class=\"fox-header-bar__right\" :style=\"rightStyles\">\n <slot name=\"right\">\n <view v-if=\"rightText\" @click=\"handleRightText\">{{ rightText }}</view>\n <fox-ext-icon\n v-if=\"rightIcon\"\n class=\"right-icon\"\n :color=\"mRightIcon.color\"\n :name=\"mRightIcon.name\"\n @click=\"handleRight\"\n ></fox-ext-icon>\n </slot>\n </view>\n </slot>\n</view>","import { computed, PropType, SetupContext, CSSProperties, onUnmounted } from 'vue'\nimport { useDomain, usePageState, Padding, toPadding } from '@/utils/domain'\nimport { toPxDesc, toPx } from '@/utils/px'\nimport type { AlignType } from './type'\n\nexport function component(componentName: string, scope: string) {\n return {\n //属性\n props: {\n // 高度\n height: {\n type: [String, Number] as PropType<string | number>,\n required: false\n },\n // padding设置\n padding: {\n type: [Object] as PropType<Padding>,\n required: false\n },\n // align\n align: {\n type: String as PropType<AlignType>,\n required: false,\n default: 'center'\n }\n },\n\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 获取当前domain\n const domain = useDomain()\n // 获取 page state\n const pageState = domain ? usePageState(domain) : null\n // 设置footer加载\n if (pageState) {\n pageState.footerMounted = true\n }\n\n // footer root class\n const classes = computed(() => {\n const prefixCls = componentName\n let alignCls = componentName\n if (props.align === 'left') {\n alignCls = `${alignCls}__left`\n } else if (props.align === 'right') {\n alignCls = `${alignCls}__right`\n } else {\n alignCls = `${alignCls}__center`\n }\n return {\n [prefixCls]: true,\n [alignCls]: true\n }\n })\n\n // 获取属性高度\n const height = props.height !== null && props.height !== undefined ? toPx(props.height) : null\n\n // 计算footer state\n const footerState = computed(() => {\n // padding\n const state: Record<string, number | null> = {\n safeAreaBottom: null,\n height: null,\n left: null,\n top: null,\n right: null,\n bottom: null\n }\n\n if (domain && pageState) {\n // 获取padding\n const padding = toPadding(props.padding ?? pageState.footerPadding)\n // 合并参数\n Object.assign(state, padding)\n // 如果属性设置高度,则需要更新page state的footerHeight\n if (height) {\n pageState.footerHeight = height\n }\n state.height = pageState.footerHeight\n // 设置safeAreaBottom\n state.safeAreaBottom = pageState.safeAreaBottom\n // 调整height和bottom\n if (state.safeAreaBottom) {\n state.height = state.height + pageState.safeAreaBottom\n state.bottom = state.safeAreaBottom + (padding.bottom ?? 0)\n }\n\n return state\n }\n\n if (height) {\n state.height = height\n }\n\n if (props.padding) {\n // 获取padding\n const padding = toPadding(props.padding)\n Object.assign(state, padding)\n }\n return state\n })\n // 卸载后必须更新header height\n onUnmounted(() => {\n // 设置footer卸载\n if (pageState) {\n pageState.footerMounted = false\n }\n })\n\n // footer root style\n const styles = computed(() => {\n const style: CSSProperties = {}\n if (footerState.value.height !== null && footerState.value.height !== undefined) {\n style.height = toPxDesc(footerState.value.height)\n }\n if (footerState.value.top !== null && footerState.value.top !== undefined) {\n style.paddingTop = toPxDesc(footerState.value.top)\n }\n if (footerState.value.left !== null && footerState.value.left !== undefined) {\n style.paddingLeft = toPxDesc(footerState.value.left)\n }\n if (footerState.value.right !== null && footerState.value.right !== undefined) {\n style.paddingRight = toPxDesc(footerState.value.right)\n }\n if (footerState.value.bottom !== null && footerState.value.bottom !== undefined) {\n style.paddingBottom = toPxDesc(footerState.value.bottom)\n }\n return style\n })\n\n return {\n classes,\n styles\n }\n }\n }\n}\n","<!--\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-10-07 08:57:25\n-->\n<template src=\"./template.html\"></template>\n<script lang=\"ts\">\nimport { createComponent } from '@/utils/create'\nconst { componentName, create, scope } = createComponent('footer-bar')\nimport { component } from './common'\nexport default create(component(componentName, scope))\n</script>","<div :class=\"classes\" :style=\"styles\">\n <slot></slot>\n</div>","import { computed, PropType, CSSProperties } from 'vue'\nimport {\n useDomain,\n getPageFooterAreaHeight,\n getPageHeaderAreaHeight,\n usePageState,\n Padding,\n toPadding\n} from '@/utils/domain'\n\nexport function component(componentName: string, scope: string) {\n return {\n //属性\n props: {\n // padding设置\n padding: {\n type: [Object] as PropType<Padding>,\n required: false\n }\n },\n\n // setup\n setup(props: Record<string, any>) {\n // 获取当前domain\n const domain = useDomain()\n\n // header root class\n const classes = computed(() => {\n const prefixCls = componentName\n return {\n [prefixCls]: true\n }\n })\n\n // header root style\n const styles = computed(() => {\n const style: CSSProperties = {}\n if (domain) {\n // 获取page state\n const pageState = usePageState(domain)\n\n if (pageState) {\n //如果组件级别padding优先\n if (props.padding) {\n const padding = toPadding(props.padding)\n // 合并数据\n Object.assign(pageState.contentPadding, padding)\n }\n\n // header height\n const headerHeight = getPageHeaderAreaHeight(domain, pageState)\n // footer height\n const footerHeight = getPageFooterAreaHeight(domain, pageState)\n\n // page height\n let pageHeight = ''\n // 如果content height存在,则代表为inner page\n if (pageState.contentHeight) {\n // page height\n pageHeight = `${pageState.contentHeight}`\n } else {\n // page height\n pageHeight = `${pageState.height}px`\n }\n\n //计算内容器高度\n console.log('[content]page height:', pageHeight) //debug\n console.log('[content]header height:', headerHeight) //debug\n console.log('[content]footer height:', footerHeight) //debug\n console.log('[content]padding:', pageState.contentPadding) //debug\n\n style.height = pageHeight\n if (\n (pageState.contentPadding.top !== null && pageState.contentPadding.top !== undefined) ||\n headerHeight > 0\n ) {\n const top = (pageState && pageState.contentPadding && pageState.contentPadding.top) ?? 0\n style.paddingTop = `${headerHeight + top}px`\n }\n if (\n (pageState.contentPadding.bottom !== null && pageState.contentPadding.bottom !== undefined) ||\n footerHeight > 0\n ) {\n const bottom = (pageState && pageState.contentPadding && pageState.contentPadding.bottom) ?? 0\n style.paddingBottom = `${footerHeight + bottom}px`\n }\n if (pageState.contentPadding.left !== null && pageState.contentPadding.left !== undefined) {\n style.paddingLeft = `${pageState.contentPadding.left}px`\n }\n if (pageState.contentPadding.right !== null && pageState.contentPadding.right !== undefined) {\n style.paddingRight = `${pageState.contentPadding.right}px`\n }\n // 返回style\n return style\n }\n }\n\n if (props.padding) {\n const padding = toPadding(props.padding)\n if (padding.left !== null && padding.left !== undefined) {\n style.paddingLeft = `${padding.left}px`\n }\n if (padding.top !== null && padding.top !== undefined) {\n style.paddingTop = `${padding.top}px`\n }\n if (padding.right !== null && padding.right !== undefined) {\n style.paddingRight = `${padding.right}px`\n }\n if (padding.bottom !== null && padding.bottom !== undefined) {\n style.paddingBottom = `${padding.bottom}px`\n }\n }\n return style\n })\n\n return {\n classes,\n styles\n }\n }\n }\n}\n","<!--\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-10-06 15:04:20\n-->\n<template src=\"./template.html\"></template>\n<script lang=\"ts\">\nimport { createComponent } from '@/utils/create'\nconst { componentName, create, scope } = createComponent('content')\nimport { component } from './common'\nexport default create(component(componentName, scope))\n</script>","<div :class=\"classes\" :style=\"styles\">\n <slot></slot>\n</div>","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-10-31 17:07:27\n */\nimport { inject, provide, shallowRef, Ref, triggerRef, markRaw } from 'vue'\nimport { Domain } from './domain'\nimport { toPx } from '@/utils/px'\nimport { toNumber } from '@/utils/commons'\n\n// group state\nconst GroupStateKey = 'GroupStateKey'\n// group scope key\nconst GroupScopeKey = Symbol.for('GroupScopeKey')\n\n/**\n * 获取group scope的值\n * @returns\n */\nexport function injectGroupScope(): boolean {\n return inject(GroupScopeKey, false)\n}\n\n/**\n * 设置group scope的值\n * @param flag\n */\nexport function provideGroupScope(flag = true): void {\n provide(GroupScopeKey, flag)\n}\n\n/**\n * Layout信息接口\n */\nexport interface GroupLayout {\n // group类型\n type: string\n // group宽度\n width: number\n // 列数\n column: number\n // 间隔\n gutter: number\n}\n\n/**\n * 创建group state\n *\n * @param domain\n */\nexport function createGroupState(\n domain: Domain,\n props: Partial<GroupLayout> = {}\n): { layout: Ref<GroupLayout>; passport: number; order: { index: number } } {\n const w = domain.get('width', -1)\n // 创建raw layout\n const rawLayout = { type: 'form', width: w, column: -1, gutter: -1 }\n Object.assign(rawLayout, props)\n // layout\n const layout: Ref<GroupLayout> = shallowRef(rawLayout)\n // state\n const state = markRaw({\n // layout\n layout,\n // 通行证\n passport: 0,\n // 顺序\n order: {\n index: 0\n }\n })\n //设置group state key\n domain.set(GroupStateKey, state)\n // 返回state\n return state\n}\n\n/**\n * 更新group layout\n * @param domain\n * @param width\n * @param column\n * @param gutter\n * @param immediate\n */\nexport function updateGroupLayout(\n domain: Domain,\n width: number | string,\n column: number | string = -1,\n gutter: number | string = -1,\n immediate = false,\n minItemWidth: number = -1\n): void {\n // 获取group state\n const state: Record<string, any> = domain.get(GroupStateKey)\n if (!state) {\n return\n }\n\n const domainLayout: Record<string, any> = domain.get('groupLayout') ?? {}\n if (column === -1) {\n column = domainLayout.column ?? 1\n }\n if (gutter === -1) {\n gutter = domainLayout.gutter ?? 0\n }\n // 获取最小item宽度\n if (!minItemWidth) {\n minItemWidth = domainLayout.minItemWidth ?? -1\n }\n\n // 更新操作\n const update = () => {\n // 是否自动调整\n const noAutoAdjust = width === '' || width === -1\n const w: number = toPx(width)\n let col: number = toNumber(column)\n const gut: number = toPx(gutter)\n\n // 只有w>0的时候,才会自动调整\n if (!noAutoAdjust) {\n // 计算单元width, 调整列数,尽量保证item width大于min item width\n let itemWidth = (w - (col - 1) * gut) / col\n // 调整column\n while (minItemWidth !== -1 && col > 1 && itemWidth < minItemWidth) {\n col--\n itemWidth = (w - (col - 1) * gut) / col\n }\n }\n let changed = false\n\n // 获取layout\n const layout: Ref<Record<string, any>> = state.layout\n layout.value.width = width\n\n if (layout.value.column !== col) {\n layout.value.column = col\n changed = true\n }\n if (layout.value.gutter !== gut) {\n layout.value.gutter = gut\n changed = true\n }\n\n if (changed) {\n // 触发更新\n triggerRef(layout)\n }\n }\n\n //实时更新\n if (immediate) {\n update()\n } else {\n // 获取通行证\n const key = ++state.passport\n setTimeout(() => {\n // 如果通行证已经过时,则不执行\n if (key !== state.passport) {\n return\n }\n update()\n }, 50)\n }\n}\n\n/**\n * 获取 group layout\n * @param domain\n */\nexport function getGroupLayout(domain: Domain, inGroupItem = false): Ref<GroupLayout> {\n let state: Record<string, any>\n if (inGroupItem) {\n state = domain.getForParent(GroupStateKey)\n } else {\n state = domain.get(GroupStateKey)\n }\n return state.layout\n}\n\n/**\n * 获取 group layout\n * @param domain\n */\nexport function getGroupOrder(domain: Domain, inGroupItem = false): { index: number } {\n let state: Record<string, any>\n if (inGroupItem) {\n state = domain.getForParent(GroupStateKey)\n } else {\n state = domain.get(GroupStateKey)\n }\n return state.order\n}\n\n/**\n * 获取item width\n * @param column\n * @param n\n * @returns\n */\nexport function getItemPercentageWidth(column: number, n: number | string = 1): number {\n if (n === 'stretch') {\n return -1\n }\n n = toNumber(n)\n if (n === -1) {\n return 100\n }\n return (100 * (n as number)) / column\n}\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-09-08 23:08:34\n */\n/**\n 获取元素的大小及其相对于视口的位置,等价于 Element.getBoundingClientRect。\n width 宽度\tnumber\n height 高度\tnumber\n top\t顶部与视图窗口左上角的距离\tnumber\n left\t左侧与视图窗口左上角的距离\tnumber\n right\t右侧与视图窗口左上角的距离\tnumber\n bottom\t底部与视图窗口左上角的距离\tnumber\n */\n\nimport { Ref, unref } from 'vue'\n\nfunction isWindow(val: unknown): val is Window {\n return val === window\n}\n\ninterface Rect {\n top: number\n left: number\n right: number\n bottom: number\n width: number\n height: number\n}\n\nexport const useRect = (elementRef: (Element | Window) | Ref<Element | Window | undefined>): Rect => {\n const element = unref(elementRef)\n\n if (isWindow(element)) {\n const width = element.innerWidth\n const height = element.innerHeight\n\n return {\n top: 0,\n left: 0,\n right: width,\n bottom: height,\n width,\n height\n }\n }\n\n if (element && element.getBoundingClientRect) {\n return element.getBoundingClientRect()\n }\n\n return {\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: 0,\n height: 0\n }\n}\n","import {\n computed,\n ref,\n Ref,\n toRef,\n SetupContext,\n h,\n VNode,\n onUnmounted,\n onMounted,\n watch,\n getCurrentInstance,\n toRaw\n} from 'vue'\nimport { defineDomain } from '@/utils/domain'\nimport {\n createGroupState,\n updateGroupLayout,\n getItemPercentageWidth,\n getGroupLayout,\n getGroupOrder,\n injectGroupScope,\n provideGroupScope\n} from '@/utils/domain/group'\nimport { domainItemProps } from '../item/common'\nimport { domainGroupProps, groupProps, groupPropKeys } from './group-props'\nimport { toNumber, toBoolean, isBrowser } from '@/utils/commons'\nimport { useRect } from '@/utils/use-rect'\nimport { toPxDesc } from '@/utils/px'\n\n/**\n * 获取class name\n * @param prefix\n * @param type\n * @returns\n */\nconst getClass = (prefix: string, type: string) => {\n return prefix ? (type ? `fox-group__${prefix}-${type}` : '') : `fox-group__${type}`\n}\n\n/**\n * 获取item span\n * @param node\n */\nconst getItemSpan = (node: VNode): number | string => {\n // props或者span为空,则返回-1 (从Type,也就是获取属性的默认值)\n if (!node.props || node.props.span === null || node.props.span === undefined) {\n const anyType: any = node.type\n const value = (anyType.props && anyType.props.span && anyType.props.span.default) ?? 1\n if (typeof value === 'function') {\n return value()\n }\n return value\n }\n return node.props.span\n}\n\n/**\n * 获取item offset\n * @param node\n */\nconst getItemOffset = (node: VNode): number => {\n // props或者offset为空,则返回0 (从Type,也就是获取属性的默认值)\n if (!node.props || node.props.offset === null || node.props.offset === undefined) {\n const anyType: any = node.type\n const value = (anyType.props && anyType.props.offset && anyType.props.offset.default) ?? 0\n if (typeof value === 'function') {\n return value()\n }\n return value\n }\n const n = toNumber(node.props.offset)\n return n < 0 ? 0 : n\n}\n\n/**\n * 获取item type\n * @param node\n */\nconst getItemType = (node: VNode): string => {\n // props或者itemType为空,则返回Item (从Type,也就是获取属性的默认值)\n if (!node.props || node.props.foxItemType === null || node.props.foxItemType === undefined) {\n const anyType: any = node.type\n const value = (anyType.props && anyType.props.foxItemType && anyType.props.foxItemType.default) ?? 'Item'\n if (typeof value === 'function') {\n return value()\n }\n return value\n }\n return node.props.foxItemType ?? 'Item'\n}\n\n/**\n * 获取fragment item count\n * @param node\n */\nconst getFragmentItemCount = (node: VNode): number => {\n // props或者subItemCount为空,则返回1 (从Type,也就是获取属性的默认值)\n if (!node.props || node.props.foxSubItemCount === null || node.props.foxSubItemCount === undefined) {\n const anyType: any = node.type\n const value = (anyType.props && anyType.props.foxSubItemCount && anyType.props.foxSubItemCount.default) ?? 'Item'\n if (typeof value === 'function') {\n return value()\n }\n return value\n }\n const n = toNumber(node.props.foxSubItemCount)\n return n < 0 ? 1 : n\n}\n\n/**\n * 创建component\n * @param componentName\n * @param scope\n */\nexport function component(componentName: string, scope: string) {\n return {\n // 属性\n props: {\n // item属性(domain范围)\n ...domainItemProps,\n // group属性(domain范围)\n ...domainGroupProps,\n // group属性\n ...groupProps\n },\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 安装domain\n const domain = defineDomain(props.name as string, props, groupPropKeys)\n // 创建group state\n const groupState = createGroupState(domain, { type: props.type })\n // 获取是否在group scope\n const groupScope = injectGroupScope()\n // 设置为group scope\n provideGroupScope(true)\n\n // 获取layout\n const layout = computed(() => {\n if (groupScope && domain) {\n // 获取group layout\n const groupLayout = getGroupLayout(domain, true)\n return groupLayout.value\n }\n return null\n })\n\n // 监控校验规则\n const instance = getCurrentInstance()\n // 更新rule\n const updateRules = (rules: Record<string, any>) => {\n const anyProxy: any = instance?.proxy\n if (anyProxy && typeof anyProxy['setNameValidateRules'] === 'function') {\n anyProxy['setNameValidateRules'](rules, true)\n }\n }\n watch(\n () => props.rules,\n (newRules, oldRules) => {\n if (!newRules && !oldRules) {\n return\n }\n const rawOldRules: any = toRaw(oldRules)\n const rawNewRules: any = toRaw(newRules)\n const newKeys = rawNewRules ? Reflect.ownKeys(rawNewRules) : []\n const oldKeys = rawOldRules ? Reflect.ownKeys(rawOldRules) : []\n oldKeys.forEach(key => {\n if (!newKeys.includes(key)) {\n rawNewRules[key] = []\n }\n })\n updateRules(rawNewRules)\n },\n { deep: true }\n )\n onMounted(() => {\n if (props.rules) {\n const rawRules: any = toRaw(props.rules)\n updateRules(rawRules)\n }\n })\n // prefix class\n const prefixCls = componentName\n const styles = computed(() => {\n // css style\n const cssStyle: Record<string, any> = {}\n if (layout.value) {\n // 获取group layout\n const layout = getGroupLayout(domain, true)\n // 只处理flex布局\n if (layout.value.type === 'flex') {\n // 优先使用width属性的值,如果没有才计算宽度(获取百分比宽度)\n if (props.width) {\n const w = toPxDesc(props.width)\n cssStyle['width'] = w\n } else {\n const w = getItemPercentageWidth(layout.value.column, props.span)\n if (w > 0) {\n cssStyle['width'] = `${w}%`\n }\n }\n // 设置高度\n if (props.height) {\n const h = toPxDesc(props.height)\n cssStyle['height'] = h\n }\n\n // 获取百分比宽度\n const offset = getItemPercentageWidth(layout.value.column, props.offset)\n if (offset > 0) {\n cssStyle['margin-left'] = `${offset}%`\n }\n\n const padding = layout.value.gutter / 2\n if (padding > 0) {\n cssStyle['padding-left'] = `${padding}px`\n cssStyle['padding-right'] = `${padding}px`\n }\n } else if (layout.value.type === 'flow') {\n // 优先使用width属性的值,如果没有才计算宽度(获取百分比宽度)\n if (props.width) {\n const w = toPxDesc(props.width)\n cssStyle['width'] = w\n } else {\n const w = getItemPercentageWidth(layout.value.column, props.span)\n if (w > 0) {\n cssStyle['width'] = `${w}%`\n }\n }\n // 设置高度\n if (props.height) {\n const h = toPxDesc(props.height)\n cssStyle['height'] = h\n }\n\n // 获取百分比宽度\n const offset = getItemPercentageWidth(layout.value.column, props.offset)\n if (offset > 0) {\n cssStyle['margin-left'] = `${offset}%`\n }\n\n const padding = layout.value.gutter / 2\n if (padding > 0) {\n // 获取order\n const order = domain ? getGroupOrder(domain, true) : null\n if (order) {\n // 获取span\n let span = toNumber(props.offset) + toNumber(props.span)\n // 修正span\n if (span === -1 || span > layout.value.column) {\n span = layout.value.column\n }\n const startRow = Math.ceil((order.index + 1) / layout.value.column)\n const endRow = Math.ceil((order.index + span) / layout.value.column)\n if (startRow === endRow) {\n const startCol = (order.index + 1) % layout.value.column\n const endCol = (order.index + span) % layout.value.column\n const leftPadding = startCol === 1 ? 0 : padding\n const rightPadding = endCol === 0 ? 0 : padding\n cssStyle['padding-left'] = `${leftPadding}px`\n cssStyle['padding-right'] = `${rightPadding}px`\n } else {\n const endCol = span % layout.value.column\n const leftPadding = 0\n const rightPadding = endCol === 0 ? 0 : padding\n cssStyle['padding-left'] = `${leftPadding}px`\n cssStyle['padding-right'] = `${rightPadding}px`\n }\n // 更新index\n order.index += span\n } else {\n cssStyle['padding-left'] = `${padding}px`\n cssStyle['padding-right'] = `${padding}px`\n }\n }\n }\n } else {\n // 设置宽度\n if (props.width) {\n const w = toPxDesc(props.width)\n cssStyle['width'] = w\n }\n // 设置高度\n if (props.height) {\n const h = toPxDesc(props.height)\n cssStyle['height'] = h\n }\n }\n return cssStyle\n })\n //row class\n const rowClasses = computed(() => {\n if (props.type === 'flex') {\n return {\n [`${getClass('', props.type)}`]: true,\n [`${getClass('justify', props.justify)}`]: true,\n [`${getClass('align', props.align)}`]: true,\n [`${getClass('flex', props.flexWrap)}`]: true,\n [`${prefixCls}__gutter`]: true\n }\n } else if (props.type === 'flow') {\n return {\n [`${getClass('', props.type)}`]: true,\n [`${getClass('justify', props.justify)}`]: true,\n [`${getClass('align', props.align)}`]: true\n }\n } else {\n return { [`${getClass('', props.type)}`]: true, [`${prefixCls}__gutter`]: true }\n }\n })\n\n // title\n const title = toRef(props, 'title')\n // gutter\n const gutter: Ref<string | number> = toRef(props, 'gutter')\n // column\n const column: Ref<string | number> = toRef(props, 'column')\n // 是否包裹容器\n const isWrap = computed(() => {\n if (groupScope) {\n return true\n }\n return toBoolean(props.isWrap)\n })\n\n // 引用\n const rowRef = ref<any[]>([])\n // 设置引用\n const setRowRef = (el: any) => {\n rowRef.value.push(el)\n }\n // width\n const width: Ref<number> = ref<number>(-1)\n\n // 更新group layout(domain, width, column, gutter, immediate, minItemWidth)\n updateGroupLayout(domain, width.value, column.value, gutter.value, true, props.minItemWidth)\n\n // 是否自动调整布局\n if (props.autoLayout) {\n // 监控修改\n watch([width, column, gutter], ([w, col, gut]) => {\n // 重置order\n groupState.order.index = 0\n // 更新group layout\n updateGroupLayout(domain, w, col, gut, false, props.minItemWidth)\n })\n\n // resize observer\n let resizeObserver: ResizeObserver | null = null\n //mounted处理\n onMounted(() => {\n if (isBrowser && rowRef.value && rowRef.value.length > 0) {\n const el = rowRef.value[0]\n width.value = useRect(el).width\n // 监听style change\n if (window.ResizeObserver) {\n resizeObserver = new window.ResizeObserver(() => {\n const w = useRect(el).width\n if (w > 0 && w !== width.value) {\n width.value = w\n }\n })\n resizeObserver.observe(el)\n }\n }\n })\n // unmounted处理\n onUnmounted(() => {\n resizeObserver?.disconnect()\n })\n }\n // render row\n const renderRow = (nodes: VNode[], keyIndex: number, i: number, size: number) => {\n const classes = { ...rowClasses.value }\n if (keyIndex === 0) {\n classes[`${prefixCls}__first`] = true\n }\n if (i >= size - 1) {\n classes[`${prefixCls}__last`] = true\n }\n return h('div', { ref: setRowRef, key: `${keyIndex}`, class: classes }, nodes)\n }\n\n return () => {\n // 重置order\n groupState.order.index = 0\n // views 集合\n const views = []\n // key index\n let keyIndex = 0\n //title view\n if (context.slots.title) {\n const titleData = {\n key: `${keyIndex++}`,\n class: { [`${prefixCls}__title`]: true, [`${prefixCls}__first`]: true }\n }\n const titleNode = h('div', titleData, [context.slots.title()])\n views.push(titleNode)\n } else if (title.value) {\n const titleData = {\n key: `${keyIndex++}`,\n class: { [`${prefixCls}__title`]: true, [`${prefixCls}__first`]: true }\n }\n const titleChildren = []\n if (props.showMark) {\n // mark data\n const markData: Record<string, any> = {\n class: { [`${prefixCls}__title-mark`]: true }\n }\n if (props.markColor) {\n markData.style = {\n background: props.markColor\n }\n }\n // mark node\n const titleMarkNode = h('div', markData)\n titleChildren.push(titleMarkNode)\n }\n // text node\n const titleTextNode = h('div', { class: { [`${prefixCls}__title-text`]: true } }, [title.value])\n titleChildren.push(titleTextNode)\n\n const titleNode = h('div', titleData, titleChildren)\n views.push(titleNode)\n }\n // 获取item节点\n const itemNodes = context.slots.default ? context.slots.default() : []\n\n // 记录row的孩子节点\n let rowChildren: VNode[] = []\n // 游标\n let cursor = 0\n if (props.type === 'flex') {\n for (let i = 0; i < itemNodes.length; i++) {\n // 获取组件的type的字符串\n const type = String(itemNodes[i].type)\n // 注释处理\n if (type === 'Symbol(Comment)') {\n continue\n } else if (type === 'Symbol(Fragment)') {\n if (Array.isArray(itemNodes[i].children)) {\n const list = itemNodes[i].children as Array<VNode>\n Reflect.apply([].splice, itemNodes, [i, 1, ...list])\n // 空的fragment组件不参与排列\n if (list.length === 0) {\n i -= 1\n continue\n }\n } else {\n // 空的fragment组件不参与排列\n itemNodes.splice(i, 1)\n i -= 1\n continue\n }\n }\n\n // 获取item node\n const itemNode: any = itemNodes[i]\n // 获取item type(自定义组合组件)\n const itemType = getItemType(itemNode)\n if (itemType === 'fragment') {\n let integerSpan = getFragmentItemCount(itemNode)\n // 修正span\n if (integerSpan > groupState.layout.value.column) {\n integerSpan = groupState.layout.value.column\n } else if (integerSpan <= 0) {\n integerSpan = 1\n }\n\n const nextCursor = cursor + integerSpan\n // 如果下一个cursor大于column, 则创建一个row\n if (nextCursor > groupState.layout.value.column) {\n // 创建row节点(i-1, 原因是指绘制i-1前的节点)\n const rowNode = renderRow([...rowChildren], keyIndex++, i - 1, itemNodes.length)\n // 加入row\n views.push(rowNode)\n // 重置节点\n cursor = integerSpan\n rowChildren = [itemNode]\n } else {\n rowChildren.push(itemNode)\n cursor = nextCursor\n }\n continue\n }\n\n // 获取span\n const span = getItemSpan(itemNode)\n // 获取offset\n const offset = getItemOffset(itemNode)\n\n if (span === 'stretch') {\n if (cursor < groupState.layout.value.column) {\n // 加入孩子节点\n rowChildren.push(itemNode)\n // 创建row节点\n const rowNode = renderRow([...rowChildren], keyIndex++, i, itemNodes.length)\n // 加入row\n views.push(rowNode)\n } else {\n // 创建row节点\n const rowNode = renderRow([...rowChildren], keyIndex++, i - 1, itemNodes.length)\n // 加入row\n views.push(rowNode)\n // 创建stretch row节点\n const stretchRowNode = renderRow([itemNode], keyIndex++, i, itemNodes.length)\n // 加入row\n views.push(stretchRowNode)\n }\n // 重置cursor\n cursor = 0\n // 重置row children\n rowChildren = []\n // 继续执行下一次\n continue\n }\n\n // integer span\n let integerSpan = toNumber(span)\n if (integerSpan === -1) {\n if (rowChildren.length > 0) {\n // 创建row节点\n const rowNode = renderRow([...rowChildren], keyIndex++, i - 1, itemNodes.length)\n // 加入row\n views.push(rowNode)\n }\n // 创建all row节点\n const allRowNode = renderRow([itemNode], keyIndex++, i, itemNodes.length)\n // 加入row\n views.push(allRowNode)\n // 重置cursor\n cursor = 0\n // 重置row children\n rowChildren = []\n // 继续执行下一次\n continue\n }\n\n // 修正span\n if (integerSpan > groupState.layout.value.column) {\n integerSpan = groupState.layout.value.column\n } else if (integerSpan <= 0) {\n integerSpan = 1\n }\n const nextCursor = cursor + integerSpan + offset\n // 如果下一个cursor大于column, 则创建一个row\n if (nextCursor > groupState.layout.value.column) {\n // 创建row节点(i-1, 原因是指绘制i-1前的节点)\n const rowNode = renderRow([...rowChildren], keyIndex++, i - 1, itemNodes.length)\n // 加入row\n views.push(rowNode)\n // 重置节点\n cursor = integerSpan + offset\n rowChildren = [itemNode]\n } else {\n rowChildren.push(itemNode)\n cursor = nextCursor\n }\n }\n // render剩余的节点\n if (rowChildren.length > 0) {\n // 创建row节点\n const rowNode = renderRow([...rowChildren], keyIndex++, itemNodes.length, itemNodes.length)\n // 加入row\n views.push(rowNode)\n }\n } else if (props.type === 'flow') {\n // 创建row节点\n const rowNode = renderRow(itemNodes, keyIndex++, 0, itemNodes.length)\n // 加入row\n views.push(rowNode)\n } else {\n for (let i = 0; i < itemNodes.length; i++) {\n // 获取item node\n const itemNode = itemNodes[i]\n // 创建row节点\n const rowNode = renderRow([itemNode], keyIndex++, i, itemNodes.length)\n // 加入row\n views.push(rowNode)\n }\n }\n\n if (isWrap.value) {\n return h('div', { class: { [`${prefixCls}`]: true }, style: styles.value }, [views])\n } else {\n return views\n }\n }\n }\n }\n}\n","<!--\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-09-17 21:27:02\n-->\n<script lang=\"ts\">\n\nimport { createComponent } from '@/utils/create'\nconst { componentName, create, scope } = createComponent('group')\nimport { component } from './commons'\n\nexport default create(component(componentName, scope))\n\n</script>","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2022-01-07 18:37:32\n */\nexport const priceProps = {\n price: {\n type: [Number, String],\n default: 0\n },\n needSymbol: {\n type: Boolean,\n default: true\n },\n symbol: {\n type: String,\n default: '&yen;'\n },\n // 小数点数量\n decimalLength: {\n type: [Number, String],\n required: false,\n default: 2\n },\n // 分块长度\n digits: {\n type: [Number, String],\n required: false,\n default: 3\n },\n // 分块分割符\n separator: {\n type: String,\n required: false,\n default: ','\n },\n // 位置\n position: {\n type: String,\n default: 'before'\n },\n // size\n size: {\n type: String,\n default: 'large'\n }\n}\n","<!--\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-09-24 10:59:48\n-->\n<template>\n <view :class=\"classes\">\n <view v-if=\"needSymbol && position == 'before'\" class=\"fox-price--symbol\" :class=\"`fox-price--symbol-${size}`\"\n v-html=\"showSymbol\"></view>\n <view :class=\"`fox-price--${size}`\">\n {{ intText }}\n </view>\n <view :class=\"`fox-price--decimal-${size}`\" v-if=\"decimalText.length != 0\">.</view>\n <view :class=\"`fox-price--decimal-${size}`\">\n {{ decimalText }}\n </view>\n <view v-if=\"needSymbol && position == 'after'\" class=\"fox-price--symbol\" :class=\"`fox-price--symbol-${size}`\"\n v-html=\"showSymbol\"></view>\n </view>\n</template>\n\n<script lang=\"ts\">\nimport { computed } from 'vue'\nimport { numberFormat } from '@fox-js/big-decimal'\nimport { createComponent } from '@/utils/create'\nimport { valueLength, toNumber } from '@/utils/commons'\nimport { priceProps } from './price-props'\nconst { componentName, create } = createComponent('price')\n\nexport default create({\n // 属性\n props: {\n ...priceProps\n },\n // setup\n setup(props: Record<string, any>) {\n // root class\n const classes = computed(() => {\n return {\n [componentName]: true\n }\n })\n // 是否显示symbol\n const showSymbol = computed(() => {\n const symbol = props.needSymbol ? props.symbol : ''\n return symbol\n })\n\n const formatPrice = computed(() => {\n if (valueLength(props.price) == 0) {\n return ''\n }\n // 参数: value, decimalLength = -1, autoPadding = false, digits = 3, separator = ','\n let text = numberFormat(props.price, props.decimalLength, true, toNumber(props.digits), props.separator)\n return text\n })\n\n // 整数部分\n const intText = computed(() => {\n let text = formatPrice.value\n if (text.length == 0) {\n return ''\n }\n let pos = text.indexOf('.')\n return text.substring(0, pos)\n })\n // 小数部分\n const decimalText = computed(() => {\n let text = formatPrice.value\n if (text.length == 0) {\n return ''\n }\n let pos = text.indexOf('.')\n return text.substring(pos + 1)\n })\n\n return {\n classes,\n showSymbol,\n intText,\n decimalText\n }\n }\n})\n</script>\n","<!--\n * @version: 1.0\n * @Author: 江成\n * @Date: 2022-01-06 12:48:51\n-->\n<template>\n <Transition name=\"hint-text-fade\">\n <div :class=\"classes\" :style=\"styles\" v-show=\"visible\">\n <div :class=\"textClasses\" :style=\"textStyles\">\n <fox-price v-if=\"type == 'number'\" :price=\"message\" position=\"before\"></fox-price>\n <span v-else class=\"text\">{{ message }}</span>\n </div>\n <div :class=\"arrowClasses\" :style=\"arrowStyles\"></div>\n </div>\n </Transition>\n</template>\n<script lang=\"ts\">\nimport { computed, SetupContext, PropType } from 'vue'\nimport { createComponent } from '@/utils/create'\nimport { toPxDesc } from '@/utils/px'\nimport Price from '../price/index.vue'\nimport { priceProps } from '../price/price-props'\n\nconst { componentName, create } = createComponent('hint-text')\n\ntype HintTextType = 'text' | 'money' | 'number'\n\nexport default create({\n // 组件注册\n components: {\n [Price.name]: Price\n },\n // 属性\n props: {\n ...priceProps,\n // 类型\n type: {\n type: String as PropType<HintTextType>,\n default: 'number'\n },\n // ID\n id: {\n type: String\n },\n // start point\n startPoint: {\n type: Object as PropType<{ x: number; y: number }>\n },\n // 宽度\n width: {\n type: Number\n },\n // 高度\n height: {\n type: Number,\n default: 40\n },\n // 消息\n message: {\n type: String,\n default: ''\n },\n // 是否可见\n visible: {\n type: Boolean,\n default: true\n },\n // 卸载\n unmount: {\n type: Function\n }\n },\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // arrow height\n const arrowHeight = 10\n const boxShadowOffset = 4\n // root classes\n const classes = computed(() => {\n return {\n [componentName]: true\n }\n })\n // root styles\n const styles = computed(() => {\n return {\n left: toPxDesc(props.startPoint.x),\n top: toPxDesc(props.startPoint.y - props.height - arrowHeight - boxShadowOffset),\n height: toPxDesc(props.height),\n width: toPxDesc(props.width)\n }\n })\n\n // text classes\n const textClasses = computed(() => {\n return {\n [`${componentName}__content`]: true\n }\n })\n\n // text styles\n const textStyles = computed(() => {\n return {}\n })\n\n // arrow classes\n const arrowClasses = computed(() => {\n return {\n [`${componentName}__arrow`]: true\n }\n })\n\n // arrow styles\n const arrowStyles = computed(() => {\n return {\n top: toPxDesc(props.height)\n }\n })\n\n return {\n classes,\n styles,\n textClasses,\n textStyles,\n arrowClasses,\n arrowStyles\n }\n }\n})\n</script>\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-12-05 14:41:51\n */\n\nexport class UniqueID {\n /**\n * seed id\n */\n private seed: number = new Date().getTime()\n\n /**\n * 种子\n * @param seed\n */\n public constructor(seed?: number) {\n this.seed = seed ?? new Date().getTime()\n }\n\n /**\n * 获取唯一ID\n * @returns\n */\n public get(): number {\n let n = this.seed++\n if (this.seed < 0) {\n this.seed = 0\n }\n return n\n }\n}\n","/*\n * @Author: 江成\n * @Date: 2022-10-19 10:42:45\n */\nimport { Ref, unref } from 'vue'\n\nfunction isWindow(val: unknown): val is Window {\n return val === window\n}\n\n/**\n * 坐标\n */\nexport interface Point {\n x: number\n y: number\n}\n\n/**\n * 获取element 位置\n * @param elementRef\n * @returns\n */\nexport const usePosition = (elementRef: (Element | Window) | Ref<Element | Window | undefined>): Point => {\n const elm = unref(elementRef)\n if (!elm) {\n return {\n x: 0,\n y: 0\n }\n }\n if (isWindow(elm)) {\n return {\n x: 0,\n y: 0\n }\n }\n\n let x = 0\n let y = 0\n let curElm: any = elm\n while (curElm !== null) {\n x += curElm.offsetLeft\n y += curElm.offsetTop\n curElm = curElm.offsetParent\n }\n\n let scrollX = 0\n let scrollY = 0\n curElm = elm\n while (curElm !== document) {\n scrollY += curElm.scrollTop\n scrollX += curElm.scrollLeft\n curElm = curElm.parentNode\n }\n x -= scrollX\n y -= scrollY\n return {\n x,\n y\n }\n}\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-12-28 15:59:41\n */\nimport { createVNode, render } from 'vue'\nimport HintText from './index.vue'\nimport { UniqueID } from '@/utils/unique-id'\nimport { usePosition } from '@/utils/use-position'\nimport { useRect } from '@/utils/use-rect'\n\n//默认options\nconst defaultOptions = {}\n\n// 创建unique id\nconst uniqueID = new UniqueID()\n\n/**\n * options map\n */\nconst optsMap: Map<string, Record<string, any>> = new Map()\n\n/**\n * 清理hint text\n * @param id\n */\nconst clearHintText = (id?: string) => {\n // 精确删除\n if (id) {\n const container = document.getElementById(id)\n // 删除对应的配置\n optsMap.delete(id)\n\n if (container) {\n document.body.removeChild(container)\n }\n } else {\n // 清除所有\n for (const id of optsMap.keys()) {\n const container = document.getElementById(id)\n if (container) {\n document.body.removeChild(container)\n }\n }\n optsMap.clear()\n }\n}\n\n/**\n * 更新hint text\n * @param opts\n * @returns\n */\nconst updateHintText = (opts: any) => {\n const container = document.getElementById(opts.id)\n if (container) {\n const currentOpt = optsMap.get(opts.id)\n if (currentOpt) {\n opts = { ...defaultOptions, ...currentOpt, ...opts }\n } else {\n opts = { ...defaultOptions, ...opts }\n }\n const instance: any = createVNode(HintText, opts)\n render(instance, container)\n return opts.id\n }\n}\n\n/**\n * mount hint text\n * @param opts\n * @returns\n */\nconst mountHintText = (opts: any) => {\n opts.unmount = clearHintText\n let _id: string\n if (opts.id) {\n _id = opts.id\n // 如果已经存在更新已有的hint text\n if (optsMap.has(_id)) {\n return updateHintText(opts)\n }\n } else {\n _id = `hinttext_${uniqueID.get()}`\n }\n\n opts = { ...defaultOptions, ...opts }\n opts.id = _id\n // 设置options\n optsMap.set(_id, opts)\n const container = document.createElement('div')\n container.id = opts.id\n // create node\n const instance: any = createVNode(HintText, opts)\n // render\n render(instance, container)\n document.body.appendChild(container)\n // 返回id\n return _id\n}\n\n/**\n * 判断消息是否错误\n * @param msg\n * @returns\n */\nconst errorMsg = (msg: string) => {\n if (!msg) {\n console.warn('[FoxUI HintText]: msg不能为空')\n return\n }\n}\n\n/**\n * hint text function\n */\nexport const HintTextFunction = {\n /**\n * 显示\n * @param source\n * @param message\n * @param opts\n * @param only\n * @returns\n */\n show(source: HTMLElement, message: string, opts: Record<string, any> = {}, only = true): string {\n if (only) {\n clearHintText()\n }\n errorMsg(message)\n const point = usePosition(source)\n // 获取start point\n const startPoint = {\n x: point.x,\n y: point.y\n }\n\n // 获取element width\n const width = opts.width ?? useRect(source).width\n // 加载或更新hint text\n return mountHintText({ ...opts, message, startPoint, width })\n },\n\n /**\n * 隐藏\n * @param id\n */\n hide(id?: string): void {\n clearHintText(id)\n },\n\n /**\n * 安装\n * @param app\n */\n install(app: any): void {\n app.config.globalProperties.$hintText = HintTextFunction\n }\n}\n\n// 导出hint text\nexport { HintText }\n\n//导出默认\nexport default HintTextFunction\n","<!--\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-10-31 11:26:04\n-->\n<template>\n <div :class=\"classes\" :style=\"styles\">\n <div :class=\"mainClasses\">\n <div v-if=\"hasLabel\" :class=\"labelClasses\" :style=\"labelStyles\">\n <div :class=\"labelStringClasses\">\n <slot name=\"label\"> {{ label }}</slot>\n </div>\n </div>\n <div ref=\"contentRef\" :class=\"contentClasses\" :style=\"contentStyles\">\n <slot name=\"prepend\"></slot>\n <slot></slot>\n <slot name=\"append\"></slot>\n </div>\n </div>\n <transition name=\"fox-item__animate\">\n <div v-if=\"hasTip\" :class=\"tipClasses\" :style=\"tipStyles\">\n <div class=\"fox-item__tip-icon\" v-if=\"mIcon\">{{ mIcon }}</div>\n <div class=\"fox-item__tip-text\">{{ mTip }}</div>\n </div>\n </transition>\n <slot name=\"hide\"></slot>\n </div>\n</template>\n<script lang=\"ts\">\nimport { reactive, toRef, computed, SetupContext, watch, ref } from 'vue'\nimport { defineItem, useDomain, property, PriorityPolicy } from '@/utils/domain'\nimport { getGroupLayout, getGroupOrder, injectGroupScope, provideGroupScope, getItemPercentageWidth } from '@/utils/domain/group'\nimport { domainItemProps, itemProps } from './common'\nimport { toBoolean, toNumber, isEmptyString } from '@/utils/commons'\nimport { toPxDesc } from '@/utils/px'\nimport { useExpose } from '@/utils/use-expose'\nimport { createComponent } from '@/utils/create'\nimport HintTextFunction from '../hinttext'\nconst { componentName, create } = createComponent('item')\n\nexport default create({\n // 根元素继承属性\n inheritAttrs: true,\n // 属性\n props: {\n // item属性(domain范围)\n ...domainItemProps,\n // item属性\n ...itemProps\n },\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 定义domain item\n defineItem(\n {\n componentName,\n // 关闭校验\n validate: false\n },\n props.prop ?? props.name\n )\n // 获取domain\n const domain = useDomain()\n // 是否为group scope\n const groupScope = injectGroupScope()\n // 设置group scope\n provideGroupScope(false)\n\n // 获取layout\n const layout = computed(() => {\n if (groupScope && domain) {\n // 获取group layout\n const groupLayout = getGroupLayout(domain, false)\n return groupLayout.value\n }\n return null\n })\n\n // prefix class\n const prefixCls = componentName\n // root classes\n const classes = computed(() => {\n return {\n [prefixCls]: true,\n [`${prefixCls}__gutter`]: layout.value && layout.value.type !== 'flow',\n [`${prefixCls}__stretch`]: (props.span === 'stretch'),\n [`${prefixCls}__input--border`]: props.hasBorder,\n 'is-error': !!mErrorTip.value,\n 'is-warn': !!mWarnTip.value,\n 'is-info': !!mInfoTip.value\n }\n })\n\n // root style\n const styles = computed(() => {\n // css style\n const cssStyle: Record<string, any> = {}\n\n if (layout.value) {\n // 处理flex布局 or flow布局\n if (layout.value.type === 'flex') {\n if (props.width) {\n cssStyle['width'] = toPxDesc(props.width)\n } else {\n // 获取百分比宽度\n const width = getItemPercentageWidth(layout.value.column, props.span)\n if (width > 0) {\n cssStyle['width'] = `${width}%`\n }\n }\n\n // 获取百分比宽度\n const offset = getItemPercentageWidth(layout.value.column, props.offset)\n if (offset > 0) {\n cssStyle['margin-left'] = `${offset}%`\n }\n\n const padding = layout.value.gutter / 2\n if (padding > 0) {\n cssStyle['padding-left'] = `${padding}px`\n cssStyle['padding-right'] = `${padding}px`\n }\n } else if (layout.value.type === 'flow') {\n if (props.width) {\n cssStyle['width'] = toPxDesc(props.width)\n } else {\n // 获取百分比宽度\n const width = getItemPercentageWidth(layout.value.column, props.span)\n if (width > 0) {\n cssStyle['width'] = `${width}%`\n }\n }\n\n // 获取百分比宽度\n const offset = getItemPercentageWidth(layout.value.column, props.offset)\n if (offset > 0) {\n cssStyle['margin-left'] = `${offset}%`\n }\n\n const padding = layout.value.gutter / 2\n if (padding > 0) {\n // 获取order\n const order = domain ? getGroupOrder(domain, false) : null\n if (order) {\n // 获取span\n let span = toNumber(props.offset) + toNumber(props.span)\n // 修正span\n if (span === -1 || span > layout.value.column) {\n span = layout.value.column\n }\n const startRow = Math.ceil((order.index + 1) / layout.value.column)\n const endRow = Math.ceil((order.index + span) / layout.value.column)\n if (startRow === endRow) {\n const startCol = (order.index + 1) % layout.value.column\n const endCol = (order.index + span) % layout.value.column\n const leftPadding = startCol === 1 ? 0 : padding\n const rightPadding = endCol === 0 ? 0 : padding\n cssStyle['padding-left'] = `${leftPadding}px`\n cssStyle['padding-right'] = `${rightPadding}px`\n } else {\n const endCol = span % layout.value.column\n const leftPadding = 0\n const rightPadding = endCol === 0 ? 0 : padding\n cssStyle['padding-left'] = `${leftPadding}px`\n cssStyle['padding-right'] = `${rightPadding}px`\n }\n // 更新index\n order.index += span\n } else {\n cssStyle['padding-left'] = `${padding}px`\n cssStyle['padding-right'] = `${padding}px`\n }\n }\n } else {\n if (props.width) {\n cssStyle['width'] = toPxDesc(props.width)\n }\n return cssStyle\n }\n\n } else if (props.width) {\n cssStyle['width'] = toPxDesc(props.width)\n }\n return cssStyle\n })\n\n // inner required\n const innerRequired = ref<boolean | null>(null)\n //是否有必输\n const required = computed({\n get: () => {\n return innerRequired.value ?? toBoolean(props.isRequired)\n },\n set: value => {\n innerRequired.value = value\n }\n })\n\n // 是否有label\n const hasLabel = computed(() => {\n // label 属性是否存在\n if (typeof props.label === 'string' && props.label.length > 0) {\n return true\n }\n if (typeof context.slots.label === 'function') {\n return true\n }\n return false\n })\n\n // 获取domain级别属性(label position)\n const position = property(toRef(props, 'labelPosition'), 'labelPosition', PriorityPolicy.Near)\n // label position\n const mLabelPosition = computed(() => {\n if (position && position.value === 'top') {\n return 'top'\n } else if (position && position.value === 'right') {\n return 'right'\n } else {\n return 'left'\n }\n })\n\n // main class\n const mainClasses = computed(() => {\n return {\n [`${prefixCls}__main`]: true,\n [`${prefixCls}__main--${mLabelPosition.value}`]: true\n }\n })\n\n // label class\n const labelClasses = computed(() => {\n return {\n [`label`]: true,\n [`label--${mLabelPosition.value}`]: true\n }\n })\n\n // 获取domain级别属性(label width)\n const labelWidth = property(toRef(props, 'labelWidth'), 'labelWidth', PriorityPolicy.Near)\n // label style\n const labelStyles = computed(() => {\n if (labelWidth && labelWidth.value) {\n return {\n width: toPxDesc(labelWidth.value)\n }\n } else {\n return {}\n }\n })\n\n // label string classes\n const labelStringClasses = computed(() => {\n return {\n ['label--string']: true,\n ['label--required']: required.value\n }\n })\n\n // content class\n const contentClasses = computed(() => {\n return {\n [`content`]: true,\n [props.contentClass]: true\n }\n })\n\n // content style\n const contentStyles = computed(() => {\n let styles = {\n ...props.contentStyle\n }\n return styles\n })\n\n // state\n const state = reactive({\n errorTip: '',\n errorIcon: null as any,\n warnTip: '',\n warnIcon: null as any,\n infoTip: '',\n infoIcon: null as any\n })\n\n // export方法\n useExpose({\n // 设置必输\n setRequired(value: boolean) {\n required.value = value\n },\n // 设置error tip\n setErrorTip(tip: string) {\n state.errorTip = tip\n },\n // 设置error icon\n setErrorIcon(icon: any) {\n state.errorIcon = icon\n },\n // 设置warn tip\n setWarnTip(tip: any) {\n state.warnTip = tip\n },\n // 设置warn icon\n setWarnIcon(icon: any) {\n state.warnIcon = icon\n },\n // 设置info tip\n setInfoTip(tip: string) {\n state.infoTip = tip\n },\n // 设置info icon\n setInfoIcon(icon: string) {\n state.infoIcon = icon\n }\n })\n\n // 必须用||,而不能用??,目标是必须忽略空字符串\n const mInfoTip = computed(() => {\n return props.infoTip || state.infoTip\n })\n const mInfoIcon = computed(() => {\n return props.infoIcon || state.infoIcon\n })\n const mWarnTip = computed(() => {\n return props.warnTip || state.warnTip\n })\n const mWarnIcon = computed(() => {\n return props.warnIcon || state.warnIcon\n })\n const mErrorTip = computed(() => {\n return props.errorTip || state.errorTip\n })\n const mErrorIcon = computed(() => {\n return props.errorIcon || state.errorIcon\n })\n\n // tip 类型\n const tipType = computed(() => {\n if (mErrorTip.value) {\n return 'error'\n }\n if (mWarnTip.value) {\n return 'warn'\n }\n if (mInfoTip.value) {\n return 'info'\n }\n return ''\n })\n\n // 是否有tip\n const hasTip = computed(() => {\n return tipType.value.length > 0\n })\n // tip\n const mTip = computed(() => {\n if (tipType.value === 'error') {\n return mErrorTip.value\n }\n if (tipType.value === 'warn') {\n return mWarnTip.value\n }\n if (tipType.value === 'info') {\n return mInfoTip.value\n }\n return ''\n })\n // tip icon\n const mIcon = computed(() => {\n if (tipType.value === 'error') {\n return mErrorIcon.value\n }\n if (tipType.value === 'warn') {\n return mWarnIcon.value\n }\n if (tipType.value === 'info') {\n return mInfoIcon.value\n }\n return null\n })\n // tip classes\n const tipClasses = computed(() => {\n let cls = {\n [`${prefixCls}__tip`]: true,\n [`${prefixCls}__tip--${tipType.value}`]: true\n }\n if (tipType.value === 'error' && props.errorClass) {\n cls[`${props.errorClass}`] = true\n } else if (tipType.value === 'warn' && props.warnClass) {\n cls[`${props.warnClass}`] = true\n } else if (tipType.value === 'info' && props.infoClass) {\n cls[`${props.infoClass}`] = true\n }\n return cls\n })\n // tip classes\n const tipStyles = computed(() => {\n let styles: any = {}\n if (position && position.value === 'top') {\n styles['padding-left'] = '0px'\n } else if (labelWidth && labelWidth.value) {\n styles['padding-left'] = toPxDesc(labelWidth.value)\n }\n return styles\n })\n\n // content引用\n const contentRef = ref<HTMLElement>()\n // hintText Id\n let hintTextId = ''\n\n watch(\n [() => props.hintVisible, () => props.hintText, () => props.hintType, () => props.hintProps],\n ([hintVisible, hintText, type, props]) => {\n if (!contentRef.value) {\n return\n }\n if (hintVisible && !isEmptyString(hintText)) {\n if (hintTextId) {\n HintTextFunction.show(contentRef.value, hintText, { ...props, id: hintTextId, type })\n } else {\n hintTextId = HintTextFunction.show(contentRef.value, hintText, { ...props, type })\n }\n } else {\n HintTextFunction.hide(hintTextId)\n }\n }\n )\n\n return {\n classes,\n styles,\n mainClasses,\n hasLabel,\n labelClasses,\n labelStyles,\n labelStringClasses,\n contentClasses,\n contentStyles,\n contentRef,\n hasTip,\n mTip,\n mIcon,\n tipClasses,\n tipStyles\n }\n }\n})\n</script>\n","/*\n * @Author: 江成\n * @Date: 2022-11-16 16:44:06\n */\nimport { computed, SetupContext, h, PropType } from 'vue'\nimport { useDomain } from '@/utils/domain'\nimport {\n getGroupLayout,\n getGroupOrder,\n injectGroupScope,\n provideGroupScope,\n getItemPercentageWidth\n} from '@/utils/domain/group'\nimport { toNumber } from '@/utils/commons'\nimport { toPxDesc } from '@/utils/px'\n\nexport function component(componentName: string, scope: string) {\n return {\n //属性\n props: {\n // 跨列数\n span: {\n type: [Number, String],\n required: false,\n default: 1\n },\n // 列偏移量\n offset: {\n type: [Number] as PropType<number>,\n default: 0\n },\n // 宽度\n width: {\n type: [String, Number] as PropType<string | number>,\n required: false\n }\n },\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 获取domain\n const domain = useDomain()\n // 是否为group scope\n const groupScope = injectGroupScope()\n // 设置group scope\n provideGroupScope(false)\n\n // 获取layout\n const layout = computed(() => {\n if (groupScope && domain) {\n // 获取group layout\n const groupLayout = getGroupLayout(domain, false)\n return groupLayout.value\n }\n return null\n })\n\n // prefix class\n const prefixCls = componentName\n // root classes\n const classes = computed(() => {\n return {\n [prefixCls]: true,\n [`${prefixCls}__gutter`]: layout.value && layout.value.type !== 'flow',\n [`${prefixCls}__stretch`]: props.span === 'stretch'\n }\n })\n\n // root style\n const styles = computed(() => {\n // css style\n const cssStyle: Record<string, any> = {}\n\n if (layout.value) {\n // 处理flex布局 or flow布局\n if (layout.value.type === 'flex') {\n if (props.width) {\n cssStyle['width'] = toPxDesc(props.width)\n } else {\n // 获取百分比宽度\n const width = getItemPercentageWidth(layout.value.column, props.span)\n if (width > 0) {\n cssStyle['width'] = `${width}%`\n }\n }\n\n // 获取百分比宽度\n const offset = getItemPercentageWidth(layout.value.column, props.offset)\n if (offset > 0) {\n cssStyle['margin-left'] = `${offset}%`\n }\n\n const padding = layout.value.gutter / 2\n if (padding > 0) {\n cssStyle['padding-left'] = `${padding}px`\n cssStyle['padding-right'] = `${padding}px`\n }\n } else if (layout.value.type === 'flow') {\n if (props.width) {\n cssStyle['width'] = toPxDesc(props.width)\n } else {\n // 获取百分比宽度\n const width = getItemPercentageWidth(layout.value.column, props.span)\n if (width > 0) {\n cssStyle['width'] = `${width}%`\n }\n }\n\n // 获取百分比宽度\n const offset = getItemPercentageWidth(layout.value.column, props.offset)\n if (offset > 0) {\n cssStyle['margin-left'] = `${offset}%`\n }\n\n const padding = layout.value.gutter / 2\n if (padding > 0) {\n // 获取order\n const order = domain ? getGroupOrder(domain, false) : null\n if (order) {\n // 获取span\n let span = toNumber(props.offset) + toNumber(props.span)\n // 修正span\n if (span === -1 || span > layout.value.column) {\n span = layout.value.column\n }\n const startRow = Math.ceil((order.index + 1) / layout.value.column)\n const endRow = Math.ceil((order.index + span) / layout.value.column)\n if (startRow === endRow) {\n const startCol = (order.index + 1) % layout.value.column\n const endCol = (order.index + span) % layout.value.column\n const leftPadding = startCol === 1 ? 0 : padding\n const rightPadding = endCol === 0 ? 0 : padding\n cssStyle['padding-left'] = `${leftPadding}px`\n cssStyle['padding-right'] = `${rightPadding}px`\n } else {\n const endCol = span % layout.value.column\n const leftPadding = 0\n const rightPadding = endCol === 0 ? 0 : padding\n cssStyle['padding-left'] = `${leftPadding}px`\n cssStyle['padding-right'] = `${rightPadding}px`\n }\n // 更新index\n order.index += span\n } else {\n cssStyle['padding-left'] = `${padding}px`\n cssStyle['padding-right'] = `${padding}px`\n }\n }\n } else {\n if (props.width) {\n cssStyle['width'] = toPxDesc(props.width)\n }\n return cssStyle\n }\n } else if (props.width) {\n cssStyle['width'] = toPxDesc(props.width)\n }\n return cssStyle\n })\n\n return () => {\n //view data\n const viewData = {\n class: classes.value,\n style: styles.value\n }\n if (context.slots && typeof context.slots.default === 'function') {\n return h('div', viewData, context.slots.default())\n } else {\n return h('div', viewData)\n }\n }\n }\n }\n}\n","<!--\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-11-03 16:16:50\n-->\n<script lang=\"ts\">\nimport { createComponent } from '@/utils/create'\nconst { componentName, create, scope } = createComponent('slot-item')\nimport { component } from './common'\n\n// 创建组件\nexport default create(component(componentName, scope))\n</script>\n","import { computed, SetupContext, h, PropType } from 'vue'\nimport { injectGroupScope, provideGroupScope, getGroupLayout, getItemPercentageWidth } from '@/utils/domain/group'\nimport { useDomain } from '@/utils/domain'\nimport { toPxDesc } from '@/utils/px'\n\n// 创建组件\nexport function component(componentName: string, scope: string) {\n return {\n //属性\n props: {\n // 跨列数\n span: {\n type: [Number, String],\n required: false,\n default: -1\n },\n // 列偏移量\n offset: {\n type: [Number] as PropType<number>,\n default: 0\n },\n // 宽度\n width: {\n type: [String, Number] as PropType<string | number>,\n required: false\n },\n // 对齐方式\n align: {\n type: [String] as PropType<'left' | 'center' | 'right'>,\n required: false,\n default: 'center'\n },\n // content class\n contentClass: {\n type: [String],\n required: false\n },\n // content style\n contentStyle: {\n type: [Object]\n },\n // 是否分割符\n divide: {\n type: [Boolean],\n required: false,\n default: false\n }\n },\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // prefix class\n const prefixCls = componentName\n // root classes\n const classes = computed(() => {\n return {\n [prefixCls]: true,\n [`${prefixCls}__stretch`]: props.span === 'stretch',\n [`${prefixCls}__${props.align}`]: true\n }\n })\n\n // 获取domain\n const domain = useDomain()\n // 是否为group scope\n const groupScope = injectGroupScope()\n // 设置group scope\n provideGroupScope(false)\n\n // root style\n const styles = computed(() => {\n // css style\n const cssStyle: Record<string, any> = {}\n if (groupScope && domain) {\n // 获取group layout\n const layout = getGroupLayout(domain, false)\n // 只处理flex布局\n if (layout.value.type !== 'flex') {\n if (props.width) {\n cssStyle['width'] = toPxDesc(props.width)\n }\n return cssStyle\n }\n\n if (props.width) {\n cssStyle['width'] = toPxDesc(props.width)\n } else {\n // 获取百分比宽度\n const width = getItemPercentageWidth(layout.value.column, props.span)\n if (width > 0) {\n cssStyle['width'] = `${width}%`\n }\n }\n // 获取百分比offset\n const offset = getItemPercentageWidth(layout.value.column, props.offset)\n if (offset > 0) {\n cssStyle['margin-left'] = `${offset}%`\n }\n\n const padding = layout.value.gutter / 2\n if (padding > 0) {\n cssStyle['padding-left'] = `${padding}px`\n cssStyle['padding-right'] = `${padding}px`\n }\n } else if (props.width) {\n cssStyle['width'] = toPxDesc(props.width)\n }\n return cssStyle\n })\n // content class\n const contentClasses = computed(() => {\n return {\n [`${prefixCls}__content`]: true\n }\n })\n\n return () => {\n const contentChildren: any[] = []\n if (context.slots.default) {\n const nodes = context.slots.default()\n if (props.divide) {\n for (let i = 0; i < nodes.length; i++) {\n if (i > 0) {\n const divider = h('div', {\n class: {\n [`${prefixCls}__divide`]: true\n }\n })\n contentChildren.push(divider)\n }\n contentChildren.push(nodes[i])\n }\n } else {\n Reflect.apply([].push, contentChildren, nodes)\n }\n }\n // content data\n const contentData = {\n class: contentClasses.value\n }\n const contentNode = h('div', contentData, contentChildren)\n\n //root data\n const rootData = {\n class: classes.value,\n style: styles.value\n }\n return h('div', rootData, [contentNode])\n }\n }\n }\n}\n","<!--\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-11-03 16:16:50\n-->\n<script lang=\"ts\">\nimport { createComponent } from '@/utils/create'\nconst { componentName, create, scope } = createComponent('row-item')\nimport { component } from './common'\n\n// 创建组件\nexport default create(component(componentName, scope))\n</script>\n","import { h, computed, SetupContext, VNode, ref, PropType } from 'vue'\nimport { domainItemProps, itemProps } from '../item/common'\nimport { disabledProperty, readonlyProperty, toValue, property, defineItem } from '@/utils/domain'\nimport { isEmptyString, excludeProps, valueLength } from '@/utils/commons'\nimport { useExpose } from '@/utils/use-expose'\nimport { useFoxI18n } from '@fox-js/i18n'\nimport { ElInput } from '@/base'\n\n// input props\nexport const inputProps = {\n // model value\n modelValue: {\n type: [String, Object],\n required: false\n },\n // 是否支持清空\n clearable: {\n type: [Boolean, String],\n default: true\n },\n // placeholder\n placeholder: {\n type: [String] as PropType<string>,\n required: false\n },\n // 单位\n unit: {\n type: [String],\n required: false\n },\n // 键盘弹起时,是否自动上推页面(`仅支持小程序`)\n adjustPosition: {\n type: Boolean,\n default: true\n },\n // 是否强制使用系统键盘和 Web-view 创建的 input 元素\n alwaysSystem: {\n type: Boolean,\n default: false\n }\n}\n\n/**\n * 创建组件\n * @param componentName\n * @param scope\n * @param Item\n */\nexport function component(componentName: string, scope: string, Item: any) {\n return {\n // 属性\n props: {\n // item属性(domain范围)\n ...domainItemProps,\n // item属性\n ...itemProps,\n // input属性\n ...inputProps\n },\n // 事件\n emits: ['change', 'update:modelValue', 'blur', 'focus', 'clear', 'input'],\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 定义domain item\n const { emitEvent } = defineItem(\n {\n componentName\n },\n props.prop ?? props.name\n )\n // 获取国际化api\n const { toLocaleRefs } = useFoxI18n(scope)\n // 转换为locale属性\n const localeProps = toLocaleRefs(props, ['placeholder'])\n\n // 是否激活\n const active = ref(false)\n // 是否禁用\n const disabled = disabledProperty(computed(() => props.disabled))\n // 是否只读\n const readonly = readonlyProperty(computed(() => props.readonly))\n // 获取model value\n const modelValue = toValue(props, 'modelValue')\n\n const prefixCls = componentName\n // root class\n const classes = computed(() => {\n return {\n [prefixCls]: true\n }\n })\n\n // value change\n const onInput = (val: string | number) => {\n // 更新value\n modelValue.value = val\n emitEvent('update:modelValue', val)\n emitEvent('input', val)\n }\n // change\n const onChange = (val: string | number) => {\n emitEvent('change', val)\n }\n // hint text\n let hintText = toValue(props, 'hintText')\n // hint visible\n let hintVisibleRef = ref(false)\n\n const onFocus = (event: Event) => {\n const input = event.target as HTMLInputElement\n let val = input.value\n active.value = true\n // 显示hint text\n if (!isEmptyString(hintText.value)) {\n hintVisibleRef.value = true\n }\n emitEvent('focus', val, event)\n }\n const onBlur = (event: Event) => {\n setTimeout(() => {\n if (hintVisibleRef.value) {\n hintVisibleRef.value = false\n }\n active.value = false\n }, 0)\n const input = event.target as HTMLInputElement\n let val = input.value\n if (props.maxLength && val.length > Number(props.maxLength)) {\n val = val.slice(0, Number(props.maxLength))\n }\n emitEvent('blur', val, event)\n }\n // 点击clear\n const onClear = () => {\n emitEvent('clear', '')\n }\n\n // 是否有单位\n const hasUnit = computed(() => {\n let len = valueLength(props.unit)\n return len > 0\n })\n\n // 组件引用\n const inputRef = ref<any>()\n // 导出方法\n useExpose({\n //使 input 获取焦点\n focus: () => {\n inputRef?.value.focus()\n },\n // 使 input 失去焦点\n blur: () => {\n inputRef?.value.blur()\n },\n // 选中 input 中的文字\n select: () => {\n inputRef?.value.select()\n }\n })\n\n return () => {\n const attrs = context.attrs\n const inputData = {\n ...attrs,\n ref: inputRef,\n class: classes.value,\n placeholder: localeProps.placeholder.value,\n clearable: props.clearable,\n disabled: disabled.value,\n readonly: readonly.value,\n modelValue: modelValue.value,\n 'adjust-position': props.adjustPosition,\n 'always-system': props.alwaysSystem,\n onClear,\n onChange,\n onInput,\n onFocus,\n onBlur\n }\n\n const inputChildren: Record<string, any> = {}\n // 加入prepend slot\n if (context.slots.prepend) {\n inputChildren.prepend = context.slots.prepend\n }\n // 加入append slot\n if (context.slots.append) {\n inputChildren.append = context.slots.append\n }\n // 加入prefix slot\n if (context.slots.prefix) {\n inputChildren.prefix = context.slots.prefix\n }\n // 加入suffix slot\n if (context.slots.suffix) {\n inputChildren.suffix = context.slots.suffix\n } else if (hasUnit.value) {\n inputChildren.suffix = () => [props.unit]\n }\n\n // default slots\n const defaultSlots: VNode[] = []\n\n const inputNode: VNode = h(ElInput, inputData, inputChildren)\n // 加入\n defaultSlots.push(inputNode)\n\n const children: Record<string, any> = {\n default: () => defaultSlots\n }\n // 加入label slot\n if (context.slots.default) {\n const slot = context.slots.default()\n children.label = () => {\n return slot\n }\n }\n\n // 创建root node\n const formatProps = excludeProps(props, inputProps)\n const rootData = {\n ...formatProps,\n hintText: hintText.value,\n hintVisible: hintVisibleRef.value,\n prop: `${props.prop}_item`\n }\n const rootNode: VNode = h(Item, rootData, children)\n return rootNode\n }\n }\n }\n}\n","<script lang=\"ts\">\nimport Item from '../item/index.vue'\nimport { createComponent } from '@/utils/create'\nimport { component } from './common'\nconst { componentName, create, scope } = createComponent('input-item')\n\nexport default create(component(componentName, scope, Item))\n</script>\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-11-15 23:34:14\n */\nimport { toRaw, isReactive, ComponentPublicInstance, getCurrentInstance } from 'vue'\nimport { Item, SourceFunction } from './types'\nimport { isObject } from '@/utils/commons'\nimport { getAPI } from '@/api'\n\n/**\n * 获取item text\n * @param props\n * @param item\n * @returns\n */\nexport function getItemText(props: Record<string, any>, item: Item): string | number {\n if (typeof props.textKey === 'string' && props.textKey.length > 0) {\n return item[props.textKey]\n }\n return item.text\n}\n\n/**\n * 获取item value\n * @param props\n * @param item\n * @returns\n */\nexport function getItemValue(props: Record<string, any>, item: Item): string | boolean | number {\n if (typeof props.valueKey === 'string' && props.valueKey.length > 0) {\n return item[props.valueKey]\n }\n return item.value\n}\n\n/**\n * 获取item children\n * @param props\n * @param item\n * @returns\n */\nexport function getItemChildren(props: Record<string, any>, item: Item): Item[] | null {\n if (typeof props.childrenKey === 'string' && props.childrenKey.length > 0) {\n return item[props.childrenKey] || null\n }\n return item.children ?? null\n}\n\n/**\n * 数据model\n */\nexport class Model {\n /**\n * proxy\n */\n private proxy: ComponentPublicInstance\n\n /**\n * 构造函数\n * @param proxy\n */\n public constructor(proxy: ComponentPublicInstance) {\n this.proxy = proxy\n }\n\n /**\n * 加载数据源\n * @param src\n * @returns\n */\n public async load(\n componentType: string,\n src: SourceFunction | Item[][] | Item[] | string,\n params?: any\n ): Promise<Item[][] | Item[] | string[] | string[][]> {\n // 数组类型,直接返回\n if (Array.isArray(src)) {\n return src\n }\n // 函数数据源\n if (typeof src === 'function') {\n return await src(params)\n }\n\n //获取radio的api函数\n const func = getAPI(this.proxy, componentType)\n if (func === null) {\n console.error(`${componentType} component not found api function`)\n return []\n }\n if (isObject(params) && isReactive(params)) {\n params = toRaw(params)\n }\n return await func(src, params)\n }\n}\n\n/**\n * 使用model\n * @returns\n */\nexport function useModel(): Model {\n const instance = getCurrentInstance()!\n return new Model(instance.proxy!)\n}\n\n/**\n * item是否相等\n * @param props\n * @param x\n * @param y\n * @returns\n */\nexport function isEqualsItem(props: Record<string, any>, x: Item, y: Item) {\n const xText = getItemText(props, x)\n const yText = getItemText(props, y)\n if (xText !== yText) {\n return false\n }\n const xValue = getItemValue(props, x)\n const yValue = getItemValue(props, y)\n if (xValue !== yValue) {\n return false\n }\n return true\n}\n\n/**\n * value转换为items\n * @param value\n * @param valueType\n * @param items\n * @returns\n */\nexport function valuesToItems(props: Record<string, any>, value: any, valueType: string, items: Item[]): Item[] | null {\n if (items.length === 0) {\n return null\n }\n if (value === '' || value === null || value === undefined) {\n return null\n }\n if (!Array.isArray(value)) {\n value = [value]\n }\n\n // 结果item集合\n const result: Item[] = []\n\n value.forEach((curVal: any) => {\n for (let item of items) {\n const children = getItemChildren(props, item)\n // select分组处理\n if (Array.isArray(children) && children.length > 0) {\n const subItems = valuesToItems(props, curVal, valueType, children) ?? []\n Reflect.apply([].push, result, subItems)\n } else {\n let matched = false\n if (valueType === 'text') {\n const text = getItemText(props, item)\n matched = text === curVal\n } else if (valueType === 'item') {\n matched = isEqualsItem(props, item, curVal as Item)\n } else {\n // 如果item不存在value,则对比text\n let val = getItemValue(props, item)\n if (val == null) {\n val = getItemText(props, item)\n }\n matched = val === curVal\n }\n if (matched) {\n result.push(item)\n break\n }\n }\n }\n })\n return result\n}\n\n/**\n * string转换为item\n * @param text\n * @returns\n */\nexport function stringToItem(text: string): Item {\n return {\n text,\n value: text\n }\n}\n","import { h, computed, SetupContext, VNode, ref, PropType, watchEffect, watch, toRaw } from 'vue'\nimport { domainItemProps, itemProps } from '../item/common'\nimport { disabledProperty, readonlyProperty, toValue, defineItem } from '@/utils/domain'\nimport { isEmptyString, excludeProps, toBoolean } from '@/utils/commons'\nimport { useExpose } from '@/utils/use-expose'\nimport { useFoxI18n } from '@fox-js/i18n'\nimport { Item, SourceFunction, ValueType, RemoteMethod } from './types'\nimport {\n useModel,\n stringToItem,\n valuesToItems,\n isEqualsItem,\n getItemText,\n getItemValue,\n getItemChildren\n} from './model'\nimport { ElSelect, ElOption, ElOptionGroup } from '@/base'\n\n// input props\nexport const inputProps = {\n // model value\n modelValue: {\n type: [String, Object, Boolean, Number],\n required: false\n },\n // 数据源\n source: {\n type: [Array, Function, String] as PropType<Item[] | SourceFunction | string>,\n default: []\n },\n // 参数\n params: {\n type: Object\n },\n // 是否支持清空\n clearable: {\n type: [Boolean, String],\n default: true\n },\n // 是否多选\n multiple: {\n type: [Boolean],\n default: false\n },\n // 返回value类型\n valueType: {\n type: String as PropType<ValueType>,\n required: false,\n default: 'value'\n },\n // text key\n textKey: {\n type: [String],\n required: false,\n default: 'text'\n },\n // value key\n valueKey: {\n type: [String],\n required: false,\n default: 'value'\n },\n // children key\n childrenKey: {\n type: [String],\n required: false,\n default: 'children'\n },\n // remote method\n remoteMethod: {\n type: [Function] as PropType<RemoteMethod>,\n required: false\n },\n // 允许创建新条目\n allowCreate: {\n type: Boolean,\n default: false\n },\n // 单位\n unit: {\n type: [String],\n required: false\n },\n // placeholder\n placeholder: {\n type: [String] as PropType<string>,\n required: false\n }\n}\n\n/**\n * 创建组件\n * @param componentName\n * @param scope\n * @param Item\n */\nexport function component(componentName: string, scope: string, Item: any) {\n return {\n // 属性\n props: {\n // item属性(domain范围)\n ...domainItemProps,\n // item属性\n ...itemProps,\n // input属性\n ...inputProps\n },\n // 事件\n emits: ['change', 'update:modelValue', 'blur', 'focus', 'clear', 'visible-change', 'remove-tag'],\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 定义domain item\n const { emitEvent } = defineItem(\n {\n componentName\n },\n props.prop ?? props.name\n )\n // 获取国际化api\n const { toLocaleRefs } = useFoxI18n(scope)\n // 转换为locale属性\n const localeProps = toLocaleRefs(props, ['placeholder'])\n\n // inner select组件对应的model value\n const selectedValue = ref<any>(null)\n // inner select组件的select item列表\n const selectedItems = ref<Item[]>([])\n // 更新selected\n const updateSelected = (value: any, valueType: string, items: Item[], triggerEmit: boolean = true) => {\n // value 转换为 items\n const newItems = valuesToItems(props, value, valueType, items)\n if (newItems === null) {\n // 如果当前选择也为空,就不做任何处理\n if (selectedItems.value === null || selectedItems.value.length === 0) {\n return\n }\n selectedValue.value = null\n selectedItems.value = []\n if (triggerEmit) {\n emitEvent('update:modelValue', null)\n emitEvent('change', null)\n }\n return\n }\n\n // 数据是否一致\n let flag = true\n\n if (newItems.length !== selectedItems.value.length) {\n flag = false\n } else {\n for (let i = 0; i < newItems.length; i++) {\n const x = newItems[i]\n const y = selectedItems.value[i]\n if (!isEqualsItem(props, x, y)) {\n flag = false\n break\n }\n }\n }\n\n if (!flag) {\n selectedItems.value = newItems\n let newSelectedValue: any = []\n let newModelValue: any = []\n newItems.forEach(item => {\n newSelectedValue.push(getItemValue(props, item))\n if (props.valueType === 'text') {\n newModelValue.push(getItemText(props, item))\n } else if (props.valueType === 'item') {\n newModelValue.push(item)\n } else {\n newModelValue.push(getItemValue(props, item))\n }\n })\n let rawValue: any\n if (props.multiple) {\n selectedValue.value = newSelectedValue\n rawValue = toRaw(newModelValue)\n } else {\n selectedValue.value = newSelectedValue[0] ?? ''\n rawValue = toRaw(newModelValue[0] ?? '')\n }\n if (triggerEmit) {\n emitEvent('update:modelValue', rawValue)\n emitEvent('change', rawValue)\n }\n }\n }\n // 数据items\n const options = ref<Item[]>([])\n // 获取model\n const model = useModel()\n //watch source and params change\n watch(\n [() => props.source, () => props.params],\n async ([source, params]) => {\n if (source) {\n const res = await model.load('select', source, params)\n if (res.length > 0) {\n let firstItem = res[0]\n // 如果为字符串数组,则需要转换为Item数组\n if (typeof firstItem == 'string') {\n let strList = res as string[]\n let items = strList.map(str => {\n return stringToItem(str)\n })\n options.value = items\n } else {\n options.value = res as Item[]\n }\n }\n }\n },\n { immediate: true }\n )\n // 不需要立即执行,数据源加载完成后,会触发\n watch([() => options.value, () => props.modelValue], ([items, value]) => {\n updateSelected(value, props.valueType, items, false)\n })\n let remoteMethod: Function | null = null\n let loading = ref(false)\n // 处理remote函数\n if (typeof props.remoteMethod === 'function') {\n remoteMethod = async (query: string) => {\n if (query === undefined || query === null) {\n return\n }\n loading.value = true\n try {\n const res = await props.remoteMethod(query)\n options.value = res\n } catch (ex) {\n console.error(ex)\n }\n loading.value = false\n }\n }\n\n // 是否激活\n const active = ref(false)\n // 是否禁用\n const disabled = disabledProperty(computed(() => props.disabled))\n // 是否只读\n const readonly = readonlyProperty(computed(() => props.readonly))\n\n const prefixCls = componentName\n // root class\n const classes = computed(() => {\n return {\n [prefixCls]: true\n }\n })\n\n // change\n const onChange = (val: any) => {\n // 允许创建新条目特殊处理\n if (props.allowCreate) {\n emitEvent('update:modelValue', val)\n emitEvent('change', val)\n selectedValue.value = val\n } else {\n updateSelected(val, 'value', options.value, true)\n }\n }\n // hint text\n let hintText = toValue(props, 'hintText')\n // hint visible\n let hintVisibleRef = ref(false)\n // focus事件\n const onFocus = (event: Event) => {\n const input = event.target as HTMLInputElement\n let val = input.value\n active.value = true\n // 显示hint text\n if (!isEmptyString(hintText.value)) {\n hintVisibleRef.value = true\n }\n emitEvent('focus', val, event)\n }\n // blur事件\n const onBlur = (event: Event) => {\n setTimeout(() => {\n if (hintVisibleRef.value) {\n hintVisibleRef.value = false\n }\n active.value = false\n }, 0)\n const input = event.target as HTMLInputElement\n let val = input.value\n if (props.maxLength && val.length > Number(props.maxLength)) {\n val = val.slice(0, Number(props.maxLength))\n }\n // set timeout中抛出事件,是为了避免在blur事件在change事件前触发校验\n if (popupVisible.value) {\n setTimeout(() => {\n emitEvent('blur', val, event)\n }, 50)\n } else {\n emitEvent('blur', val, event)\n }\n }\n // 点击clear\n const onClear = () => {\n emitEvent('clear', '')\n }\n const popupVisible = ref(false)\n // 下拉框出现/隐藏时触发\n const onVisibleChange = (val: boolean) => {\n popupVisible.value = val\n emitEvent('visible-change', val)\n }\n //多选模式下移除tag时触发\n const onRemoveTag = (val: any) => {\n emitEvent('remove-tag', val)\n }\n\n // render select options\n const renderSelectOptions = (items: Item[], optionSlot?: Function) => {\n const optionNodes: VNode[] = []\n items.forEach((item: Item, index: number) => {\n const children = getItemChildren(props, item)\n // 如果children存在,代表为group option\n if (Array.isArray(children) && children.length > 0) {\n // render children node\n const subOptionNodes: VNode[] = renderSelectOptions(children, optionSlot)\n // 获取item label\n const label = getItemText(props, item)\n // key\n const key = `${label}_${index}`\n // option group data\n const optionGroupData = {\n key,\n label\n }\n optionNodes.push(h(ElOptionGroup as any, optionGroupData, { default: () => subOptionNodes }))\n } else {\n // 获取item value\n const value = getItemValue(props, item)\n // 获取item label\n const label = getItemText(props, item)\n // item disabled\n const disabled = toBoolean(item.disabled)\n // key\n const key = `${value}_${index}`\n // option data\n const optionData = {\n key,\n label,\n disabled,\n value\n }\n if (typeof optionSlot === 'function') {\n optionNodes.push(h(ElOption, optionData, { default: optionSlot }))\n } else {\n optionNodes.push(h(ElOption, optionData))\n }\n }\n })\n return optionNodes\n }\n\n // 组件引用\n const inputRef = ref<any>()\n // 导出方法\n useExpose({\n //使 input 获取焦点\n focus: () => {\n inputRef?.value.focus()\n },\n // 使 input 失去焦点\n blur: () => {\n inputRef?.value.blur()\n }\n })\n\n return () => {\n const attrs = context.attrs\n const inputData: any = {\n ...attrs,\n ref: inputRef,\n class: classes.value,\n clearable: props.clearable,\n multiple: props.multiple,\n placeholder: localeProps.placeholder.value,\n disabled: disabled.value || readonly.value,\n modelValue: selectedValue.value,\n [`value-key`]: props.valueKey,\n [`allow-create`]: props.allowCreate,\n onClear,\n onChange,\n onFocus,\n onBlur,\n onVisibleChange,\n onRemoveTag\n }\n\n if (typeof remoteMethod === 'function') {\n inputData[`remote-method`] = remoteMethod\n inputData['loading'] = loading.value\n }\n\n const inputChildren: Record<string, any> = {}\n // 加入prefix slot\n if (context.slots.prefix) {\n inputChildren.prefix = context.slots.prefix\n }\n // 加入empty slot\n if (context.slots.empty) {\n inputChildren.empty = context.slots.empty\n }\n // 加入default slot\n inputChildren.default = () => renderSelectOptions(options.value, context.slots.option)\n\n // default slots\n const defaultSlots: VNode[] = []\n\n const inputNode: VNode = h(ElSelect, inputData, inputChildren)\n // 加入\n defaultSlots.push(inputNode)\n\n const children: Record<string, any> = {\n default: () => defaultSlots\n }\n // 加入label slot\n if (context.slots.default) {\n const slot = context.slots.default()\n children.label = () => {\n return slot\n }\n }\n\n // 创建root node\n const formatProps = excludeProps(props, inputProps)\n const rootData = {\n ...formatProps,\n hintText: hintText.value,\n hintVisible: hintVisibleRef.value,\n prop: `${props.prop ?? props.name}_item`\n }\n const rootNode: VNode = h(Item, rootData, children)\n return rootNode\n }\n }\n }\n}\n","<script lang=\"ts\">\nimport Item from '../item/index.vue'\nimport { createComponent } from '@/utils/create'\nimport { component } from './common'\nconst { componentName, create, scope } = createComponent('select-item')\n\nexport default create(component(componentName, scope, Item))\n</script>\n","import { h, computed, SetupContext, VNode, ref, PropType } from 'vue'\nimport { domainItemProps, itemProps } from '../item/common'\nimport { disabledProperty, readonlyProperty, toValue, property, defineItem } from '@/utils/domain'\nimport { isEmptyString, excludeProps } from '@/utils/commons'\nimport { useExpose } from '@/utils/use-expose'\nimport { useFoxI18n } from '@fox-js/i18n'\nimport { ElDatePicker } from '@/base'\n\n// input props\nexport const inputProps = {\n // model value\n modelValue: {\n type: [Date, Number, String, Array],\n required: false\n },\n // 单位\n unit: {\n type: [String],\n required: false\n },\n // placeholder\n placeholder: {\n type: [String] as PropType<string>,\n required: false\n }\n}\n\n/**\n * 创建组件\n * @param componentName\n * @param scope\n * @param Item\n */\nexport function component(componentName: string, scope: string, Item: any) {\n return {\n // 属性\n props: {\n // item属性(domain范围)\n ...domainItemProps,\n // item属性\n ...itemProps,\n // input属性\n ...inputProps\n },\n // 事件\n emits: [\n 'change',\n 'update:modelValue',\n 'blur',\n 'focus',\n 'clear',\n 'visible-change',\n 'calendar-change',\n 'panel-change'\n ],\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 定义domain item\n const { emitEvent } = defineItem(\n {\n componentName\n },\n props.prop ?? props.name\n )\n // 获取国际化api\n const { toLocaleRefs } = useFoxI18n(scope)\n // 转换为locale属性\n const localeProps = toLocaleRefs(props, ['placeholder'])\n\n // 是否激活\n const active = ref(false)\n // 是否禁用\n const disabled = disabledProperty(computed(() => props.disabled))\n // 是否只读\n const readonly = readonlyProperty(computed(() => props.readonly))\n // 获取model value\n const modelValue = toValue(props, 'modelValue')\n\n const prefixCls = componentName\n // root class\n const classes = computed(() => {\n return {\n [prefixCls]: true\n }\n })\n // change\n const onChange = (val: any) => {\n // 更新value\n modelValue.value = val\n emitEvent('update:modelValue', val)\n emitEvent('change', val)\n }\n // hint text\n let hintText = toValue(props, 'hintText')\n // hint visible\n let hintVisibleRef = ref(false)\n\n const onFocus = (event: Event) => {\n const input = event.target as HTMLInputElement\n let val = input.value\n active.value = true\n // 显示hint text\n if (!isEmptyString(hintText.value)) {\n hintVisibleRef.value = true\n }\n emitEvent('focus', val, event)\n }\n const onBlur = (event: Event) => {\n setTimeout(() => {\n if (hintVisibleRef.value) {\n hintVisibleRef.value = false\n }\n active.value = false\n }, 0)\n const input = event.target as HTMLInputElement\n let val = input.value\n if (props.maxLength && val.length > Number(props.maxLength)) {\n val = val.slice(0, Number(props.maxLength))\n }\n emitEvent('blur', val, event)\n }\n // 点击clear\n const onClear = () => {\n emitEvent('clear', '')\n }\n // calendar change\n const onCalendarChange = (val: Date[]) => {\n emitEvent('calendar-change', val)\n }\n // panel change\n const onPanelChange = (date: Date, mode: any, view: any) => {\n emitEvent('panel-change', date, mode, view)\n }\n // visible change\n const onVisibleChange = (val: boolean) => {\n emitEvent('visible-change', val)\n }\n\n // 组件引用\n const inputRef = ref<any>()\n // 导出方法\n useExpose({\n //使 input 获取焦点\n focus: () => {\n inputRef?.value.focus()\n },\n // 使 input 失去焦点\n blur: () => {\n inputRef?.value.blur()\n },\n // 打开日期选择器弹窗\n handleOpen: () => {\n inputRef?.value.handleOpen()\n },\n // 关闭日期选择器弹窗\n handleClose: () => {\n inputRef?.value.handleClose()\n }\n })\n\n return () => {\n const attrs = context.attrs\n const inputData = {\n ...attrs,\n ref: inputRef,\n class: classes.value,\n placeholder: localeProps.placeholder.value,\n disabled: disabled.value,\n readonly: readonly.value,\n modelValue: modelValue.value,\n [`onUpdate:modelValue`]: onChange,\n onClear,\n onFocus,\n onBlur,\n onCalendarChange,\n onPanelChange,\n onVisibleChange\n }\n\n const inputChildren: Record<string, any> = {}\n // 加入range-separator\n if (context.slots['range-separator']) {\n inputChildren['range-separator'] = context.slots['range-separator']\n }\n // 加入自定义cell自定义插槽\n if (context.slots.cell) {\n inputChildren.default = context.slots.cell\n }\n // default slots\n const defaultSlots: VNode[] = []\n\n const inputNode: VNode = h(ElDatePicker, inputData, inputChildren)\n // 加入\n defaultSlots.push(inputNode)\n\n const children: Record<string, any> = {\n default: () => defaultSlots\n }\n // 加入label slot\n if (context.slots.default) {\n const slot = context.slots.default()\n children.label = () => {\n return slot\n }\n }\n\n // 创建root node\n const formatProps = excludeProps(props, inputProps)\n const rootData = {\n ...formatProps,\n hintText: hintText.value,\n hintVisible: hintVisibleRef.value,\n prop: `${props.prop}_item`\n }\n const rootNode: VNode = h(Item, rootData, children)\n return rootNode\n }\n }\n }\n}\n","<script lang=\"ts\">\nimport Item from '../item/index.vue'\nimport { createComponent } from '@/utils/create'\nimport { component } from './common'\nconst { componentName, create, scope } = createComponent('date-item')\n\nexport default create(component(componentName, scope, Item))\n</script>\n","import { h, computed, SetupContext, VNode, ref, PropType } from 'vue'\nimport { domainItemProps, itemProps } from '../item/common'\nimport { disabledProperty, readonlyProperty, toValue, property, defineItem } from '@/utils/domain'\nimport { isEmptyString, excludeProps } from '@/utils/commons'\nimport { useExpose } from '@/utils/use-expose'\nimport { useFoxI18n } from '@fox-js/i18n'\nimport { ElTimePicker } from '@/base'\n\n// input props\nexport const inputProps = {\n // model value\n modelValue: {\n type: [Date, Number, String, Array],\n required: false\n },\n // 单位\n unit: {\n type: [String],\n required: false\n },\n // placeholder\n placeholder: {\n type: [String] as PropType<string>,\n required: false\n }\n}\n\n/**\n * 创建组件\n * @param componentName\n * @param scope\n * @param Item\n */\nexport function component(componentName: string, scope: string, Item: any) {\n return {\n // 属性\n props: {\n // item属性(domain范围)\n ...domainItemProps,\n // item属性\n ...itemProps,\n // input属性\n ...inputProps\n },\n // 事件\n emits: ['change', 'update:modelValue', 'blur', 'focus', 'clear', 'visible-change'],\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 定义domain item\n const { emitEvent } = defineItem(\n {\n componentName\n },\n props.prop ?? props.name\n )\n // 获取国际化api\n const { toLocaleRefs } = useFoxI18n(scope)\n // 转换为locale属性\n const localeProps = toLocaleRefs(props, ['placeholder'])\n\n // 是否激活\n const active = ref(false)\n // 是否禁用\n const disabled = disabledProperty(computed(() => props.disabled))\n // 是否只读\n const readonly = readonlyProperty(computed(() => props.readonly))\n // 获取model value\n const modelValue = toValue(props, 'modelValue')\n\n const prefixCls = componentName\n // root class\n const classes = computed(() => {\n return {\n [prefixCls]: true\n }\n })\n // change\n const onChange = (val: any) => {\n // 更新value\n modelValue.value = val\n emitEvent('update:modelValue', val)\n emitEvent('change', val)\n }\n // hint text\n let hintText = toValue(props, 'hintText')\n // hint visible\n let hintVisibleRef = ref(false)\n\n const onFocus = (event: Event) => {\n const input = event.target as HTMLInputElement\n let val = input.value\n active.value = true\n // 显示hint text\n if (!isEmptyString(hintText.value)) {\n hintVisibleRef.value = true\n }\n emitEvent('focus', val, event)\n }\n const onBlur = (event: Event) => {\n setTimeout(() => {\n if (hintVisibleRef.value) {\n hintVisibleRef.value = false\n }\n active.value = false\n }, 0)\n const input = event.target as HTMLInputElement\n let val = input.value\n if (props.maxLength && val.length > Number(props.maxLength)) {\n val = val.slice(0, Number(props.maxLength))\n }\n emitEvent('blur', val, event)\n }\n // 点击clear\n const onClear = () => {\n emitEvent('clear', '')\n }\n // visible change\n const onVisibleChange = (val: boolean) => {\n emitEvent('visible-change', val)\n }\n\n // 组件引用\n const inputRef = ref<any>()\n // 导出方法\n useExpose({\n //使 input 获取焦点\n focus: () => {\n inputRef?.value.focus()\n },\n // 使 input 失去焦点\n blur: () => {\n inputRef?.value.blur()\n },\n // 打开日期选择器弹窗\n handleOpen: () => {\n inputRef?.value.handleOpen()\n },\n // 关闭日期选择器弹窗\n handleClose: () => {\n inputRef?.value.handleClose()\n }\n })\n\n return () => {\n const attrs = context.attrs\n const inputData = {\n ...attrs,\n ref: inputRef,\n class: classes.value,\n placeholder: localeProps.placeholder.value,\n disabled: disabled.value,\n readonly: readonly.value,\n modelValue: modelValue.value,\n [`onUpdate:modelValue`]: onChange,\n onClear,\n onFocus,\n onBlur,\n onVisibleChange\n }\n\n const inputChildren: Record<string, any> = {}\n // default slots\n const defaultSlots: VNode[] = []\n\n const inputNode: VNode = h(ElTimePicker, inputData, inputChildren)\n // 加入\n defaultSlots.push(inputNode)\n\n const children: Record<string, any> = {\n default: () => defaultSlots\n }\n // 加入label slot\n if (context.slots.default) {\n const slot = context.slots.default()\n children.label = () => {\n return slot\n }\n }\n\n // 创建root node\n const formatProps = excludeProps(props, inputProps)\n const rootData = {\n ...formatProps,\n hintText: hintText.value,\n hintVisible: hintVisibleRef.value,\n prop: `${props.prop}_item`\n }\n const rootNode: VNode = h(Item, rootData, children)\n return rootNode\n }\n }\n }\n}\n","<script lang=\"ts\">\nimport Item from '../item/index.vue'\nimport { createComponent } from '@/utils/create'\nimport { component } from './common'\nconst { componentName, create, scope } = createComponent('time-item')\n\nexport default create(component(componentName, scope, Item))\n</script>\n","import { h, computed, SetupContext, VNode, ref, PropType } from 'vue'\nimport { domainItemProps, itemProps } from '../item/common'\nimport { disabledProperty, readonlyProperty, toValue, property, defineItem } from '@/utils/domain'\nimport { isEmptyString, excludeProps } from '@/utils/commons'\nimport { useExpose } from '@/utils/use-expose'\nimport { useFoxI18n } from '@fox-js/i18n'\nimport { ElTimeSelect } from '@/base'\n\n// input props\nexport const inputProps = {\n // model value\n modelValue: {\n type: [Date, Number, String, Array],\n required: false\n },\n // 单位\n unit: {\n type: [String],\n required: false\n },\n // placeholder\n placeholder: {\n type: [String] as PropType<string>,\n required: false\n }\n}\n\n/**\n * 创建组件\n * @param componentName\n * @param scope\n * @param Item\n */\nexport function component(componentName: string, scope: string, Item: any) {\n return {\n // 属性\n props: {\n // item属性(domain范围)\n ...domainItemProps,\n // item属性\n ...itemProps,\n // input属性\n ...inputProps\n },\n // 事件\n emits: ['change', 'update:modelValue', 'blur', 'focus', 'clear'],\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 定义domain item\n const { emitEvent } = defineItem(\n {\n componentName\n },\n props.prop ?? props.name\n )\n // 获取国际化api\n const { toLocaleRefs } = useFoxI18n(scope)\n // 转换为locale属性\n const localeProps = toLocaleRefs(props, ['placeholder'])\n\n // 是否激活\n const active = ref(false)\n // 是否禁用\n const disabled = disabledProperty(computed(() => props.disabled))\n // 是否只读\n const readonly = readonlyProperty(computed(() => props.readonly))\n // 获取model value\n const modelValue = toValue(props, 'modelValue')\n\n const prefixCls = componentName\n // root class\n const classes = computed(() => {\n return {\n [prefixCls]: true\n }\n })\n // change\n const onChange = (val: any) => {\n // 更新value\n modelValue.value = val\n emitEvent('update:modelValue', val)\n emitEvent('change', val)\n }\n // hint text\n let hintText = toValue(props, 'hintText')\n // hint visible\n let hintVisibleRef = ref(false)\n\n const onFocus = (event: Event) => {\n const input = event.target as HTMLInputElement\n let val = input.value\n active.value = true\n // 显示hint text\n if (!isEmptyString(hintText.value)) {\n hintVisibleRef.value = true\n }\n emitEvent('focus', val, event)\n }\n const onBlur = (event: Event) => {\n setTimeout(() => {\n if (hintVisibleRef.value) {\n hintVisibleRef.value = false\n }\n active.value = false\n }, 0)\n const input = event.target as HTMLInputElement\n let val = input.value\n if (props.maxLength && val.length > Number(props.maxLength)) {\n val = val.slice(0, Number(props.maxLength))\n }\n emitEvent('blur', val, event)\n }\n // 点击clear\n const onClear = () => {\n emitEvent('clear', '')\n }\n\n // 组件引用\n const inputRef = ref<any>()\n // 导出方法\n useExpose({\n //使 input 获取焦点\n focus: () => {\n inputRef?.value.focus()\n },\n // 使 input 失去焦点\n blur: () => {\n inputRef?.value.blur()\n },\n // 打开日期选择器弹窗\n handleOpen: () => {\n inputRef?.value.handleOpen()\n },\n // 关闭日期选择器弹窗\n handleClose: () => {\n inputRef?.value.handleClose()\n }\n })\n\n return () => {\n const attrs = context.attrs\n const inputData = {\n ...attrs,\n ref: inputRef,\n class: classes.value,\n placeholder: localeProps.placeholder.value,\n disabled: disabled.value,\n readonly: readonly.value,\n modelValue: modelValue.value,\n [`onUpdate:modelValue`]: onChange,\n onClear,\n onFocus,\n onBlur\n }\n\n const inputChildren: Record<string, any> = {}\n // default slots\n const defaultSlots: VNode[] = []\n\n const inputNode: VNode = h(ElTimeSelect, inputData, inputChildren)\n // 加入\n defaultSlots.push(inputNode)\n\n const children: Record<string, any> = {\n default: () => defaultSlots\n }\n // 加入label slot\n if (context.slots.default) {\n const slot = context.slots.default()\n children.label = () => {\n return slot\n }\n }\n\n // 创建root node\n const formatProps = excludeProps(props, inputProps)\n const rootData = {\n ...formatProps,\n hintText: hintText.value,\n hintVisible: hintVisibleRef.value,\n prop: `${props.prop}_item`\n }\n const rootNode: VNode = h(Item, rootData, children)\n return rootNode\n }\n }\n }\n}\n","<script lang=\"ts\">\nimport Item from '../item/index.vue'\nimport { createComponent } from '@/utils/create'\nimport { component } from './common'\nconst { componentName, create, scope } = createComponent('time-select-item')\n\nexport default create(component(componentName, scope, Item))\n</script>\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-09-24 10:59:48\n */\n\nimport { numberFormat, unNumberFormat, multiply, divide, negate, compareTo } from '@fox-js/big-decimal'\nimport { toNumber, toBoolean } from '@/utils/commons'\n\n/**\n * 清理数据尾部无用的零\n * @param value\n * @param minDecimalLength(最小小数位长度)\n */\nexport function trimTailZero(value: string, minDecimalLength: number = 0): string {\n let s = `${value}`\n // 获取小数位位置\n let pos = s.indexOf('.')\n if (pos == -1) {\n return s\n }\n\n let index = pos\n for (let i = s.length - 1; i >= pos; i--) {\n if (s.charAt(i) != '0') {\n index = i\n break\n }\n }\n\n // 判断是否小于最小小数保留位\n if (index - pos < minDecimalLength) {\n index = pos + minDecimalLength + 1\n } else if (index != pos) {\n index += 1\n }\n\n if (index > s.length) {\n s = s.padEnd(index, '0')\n } else {\n s = s.substring(0, index)\n }\n return s\n}\n\n/**\n * 扩展数据\n * @param value\n * @param scale(scale>0代表*scale,如果scale<0代表/scale)\n */\nexport function scaleNumber(value: string, scale: number, precision: number = 20) {\n if (typeof scale == 'string') {\n scale = toNumber(scale)\n }\n\n if (scale == 1 || scale == -1) {\n return `${value}`\n } else if (scale == 0) {\n return '0'\n }\n\n if (scale > 0) {\n let n = multiply(`${value}`, `${scale}`)\n return trimTailZero(n)\n } else {\n let n = divide(`${value}`, negate(`${scale}`), 20)\n return trimTailZero(n)\n }\n}\n\n/**\n * 金额格式化\n * @param value\n * @param decimalLength\n * @param autoPadding\n * @param digits\n * @param separator\n * @returns\n */\nexport function formatMoney(\n value: string,\n decimalLength = -1,\n autoPadding = false,\n digits = 3,\n separator = ','\n): string {\n return numberFormat(value, decimalLength, autoPadding, digits, separator)\n}\n\n/**\n * 金额反格式化\n * @param value\n * @returns\n */\nexport function unFormatMoney(value: string): string {\n return unNumberFormat(value)\n}\n\n/**\n * 利率转换\n * @param value\n * @param rates\n * @param precision\n * @param flag\n * @param zeroFormat\n * @returns\n */\nexport function rateConversion(value: string, rates: number, precision: number, flag: boolean, zeroFormat = true) {\n if (value == '') {\n return ''\n }\n\n // 反格式化数据\n value = unNumberFormat(value)\n // 转换为rates\n rates = toNumber(rates)\n if (rates == 1) {\n return value\n }\n // flag为true,正向转换\n if (flag) {\n value = scaleNumber(value, rates)\n // 精度转换\n if (precision) {\n if (value == '0' && zeroFormat) {\n value = `${value}.`.padEnd(toNumber(precision) + 2, '0')\n } else {\n value = divide(value, 1, toNumber(precision))\n }\n }\n }\n // flag为false,反向转换\n else {\n let reverseRates = -1 * rates\n value = scaleNumber(value, reverseRates)\n }\n return value\n}\n\n/**\n * 校验结果\n */\nexport interface ValidResult {\n // 最大范围通过\n maxValid: boolean\n // 最小范围通过\n minValid: boolean\n // 错误消息\n message: string\n}\n\n// 判断值是否在有效的范围\nexport function inValidScope(val: number | string, props: Record<string, any>) {\n let validateResult = {\n maxValid: true,\n minValid: true,\n message: ''\n }\n if (props.min !== undefined) {\n let minInclude = toBoolean(props.minInclude)\n let flag = compareTo(val, props.min)\n if ((minInclude && flag == -1) || (!minInclude && (flag == 0 || flag == -1))) {\n let s = '请输入不小于 {0} 的数值'\n validateResult.message = s.replace('{0}', props.min)\n validateResult.minValid = false\n }\n }\n if (props.max != undefined) {\n let maxInclude = toBoolean(props.maxInclude)\n let flag = compareTo(val, props.max)\n if ((maxInclude && flag == 1) || (!maxInclude && (flag == 0 || flag == 1))) {\n validateResult.maxValid = false\n }\n }\n return validateResult\n}\n","import { h, computed, SetupContext, VNode, ref, watch, triggerRef } from 'vue'\nimport { domainItemProps, itemProps } from '../item/common'\nimport { disabledProperty, readonlyProperty, toValue, property, defineItem } from '@/utils/domain'\nimport {\n valueLength,\n isEmptyString,\n isNumberString,\n toNumber,\n toBoolean,\n integerLength,\n decimalLength,\n excludeProps\n} from '@/utils/commons'\nimport { formatMoney, rateConversion, inValidScope } from './util'\nimport { useExpose } from '@/utils/use-expose'\nimport { useFoxI18n } from '@fox-js/i18n'\nimport { ElInput } from '@/base'\n\n// input props\nexport const inputProps = {\n // model value\n modelValue: {\n type: [String, Number],\n required: false\n },\n // 清空\n clearable: {\n type: Boolean,\n default: true\n },\n // 是否显示提示\n showTip: {\n type: [Boolean, String],\n required: false,\n default: true\n },\n // 最小值\n min: {\n type: [Number, String],\n required: false\n },\n // 范围是否包括最小值\n minInclude: {\n type: [Boolean, String],\n required: false,\n default: true\n },\n // 最大值\n max: {\n type: [Number, String],\n required: false\n },\n // 范围是否包括最大值\n maxInclude: {\n type: [Boolean, String],\n required: false,\n default: true\n },\n // 单位\n unit: {\n type: String,\n required: false\n },\n // 换算汇率\n rates: {\n type: [Number, String],\n required: false,\n default: 1\n },\n // 换算精度\n precision: {\n type: [Number, String],\n required: false\n },\n // 整数部分长度\n integerLength: {\n type: [Number, String],\n required: false,\n default: -1\n },\n // 小数部分长度\n decimalLength: {\n type: [Number, String],\n required: false,\n default: 2\n },\n // 是否自动填充小数位\n autoPadding: {\n type: Boolean,\n required: false,\n default: true\n },\n // 分块长度\n digits: {\n type: Number,\n required: false,\n default: 3\n },\n // 分块分割符\n separator: {\n type: String,\n required: false,\n default: ','\n },\n // place holder\n placeholder: {\n type: String,\n required: false,\n default: ''\n },\n // text align\n textAlign: {\n type: String,\n required: false\n },\n // 键盘弹起时,是否自动上推页面(`仅支持小程序`)\n adjustPosition: {\n type: Boolean,\n default: true\n },\n // 是否强制使用系统键盘和 Web-view 创建的 input 元素\n alwaysSystem: {\n type: Boolean,\n default: false\n }\n}\n\n/**\n * 创建组件\n * @param componentName\n * @param scope\n * @param Item\n */\nexport function component(componentName: string, scope: string, Item: any) {\n return {\n // 属性\n props: {\n // item属性(domain范围)\n ...domainItemProps,\n // item属性\n ...itemProps,\n // input属性\n ...inputProps\n },\n // 事件\n emits: ['change', 'update:modelValue', 'blur', 'focus', 'clear', 'input'],\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 定义domain item\n const { emitEvent } = defineItem(\n {\n componentName\n },\n props.prop ?? props.name\n )\n\n // 是否激活\n const active = ref(false)\n // 是否禁用\n const disabled = disabledProperty(computed(() => props.disabled))\n // 是否只读\n const readonly = readonlyProperty(computed(() => props.readonly))\n // 获取model value\n const modelValue = toValue(props, 'modelValue')\n\n //raw value\n const rawValue = ref('')\n watch(\n [() => modelValue.value, () => props.rates, () => props.precision],\n ([value, rates, precision]) => {\n if (isEmptyString(value)) {\n return ''\n }\n const val = rateConversion(value, rates, precision, false)\n if (rawValue.value !== val) {\n rawValue.value = val\n }\n },\n { immediate: true }\n )\n\n // text value\n const textValue = computed(() => {\n let val = ''\n if (active.value) {\n val = rawValue.value\n }\n return val\n })\n // 获取国际化api\n const { t } = useFoxI18n(scope)\n // placeholder value\n const placeholderValue = computed(() => {\n let val = props.placeholder ?? ''\n if (!active.value && !isEmptyString(rawValue.value)) {\n // 格式化value\n val = formatMoney(rawValue.value, props.decimalLength, props.autoPadding, props.digits, props.separator)\n } else {\n val = t(['placeholder', val])\n }\n return val\n })\n\n const prefixCls = componentName\n // root class\n const classes = computed(() => {\n return {\n [prefixCls]: true,\n [`${prefixCls}__disabled`]: disabled.value,\n [`${prefixCls}__placeholder`]: rawValue.value.length > 0\n }\n })\n\n // root styles\n const textAlign = property(\n computed(() => props.textAlign),\n 'textAlign'\n )\n const styles = computed(() => {\n if (active.value) {\n return {\n textAlign: 'left'\n }\n } else {\n return {\n textAlign: textAlign.value ?? 'right'\n }\n }\n })\n\n // hight 错误提示\n const hightErrorTip = ref('')\n // 错误提示\n const errorTip = computed(() => {\n let tip = hightErrorTip.value\n if (isEmptyString(tip)) {\n tip = props.errorTip ?? ''\n }\n return tip\n })\n\n // hint text\n const hintTextRef = ref('')\n // hint visible\n const hintVisibleRef = ref(false)\n\n // update\n const onUpdate = (val: string | number, triggerEvents: string[]) => {\n val = `${val}`\n if (isEmptyString(val)) {\n // 更新raw value\n rawValue.value = ''\n // 更新model value\n modelValue.value = ''\n // 抛出事件\n triggerEvents.forEach((eventName: string) => {\n emitEvent(eventName, '')\n })\n // 关闭自动提示框\n if (toBoolean(props.showTip) && hintVisibleRef.value) {\n hintVisibleRef.value = false\n }\n return\n }\n\n // 为了避免 0000 或者 -0000的输入情况\n if (val.length >= 2) {\n let temp = val\n if (temp.charAt(0) == '-') {\n temp = temp.substring(1)\n }\n if (temp.length >= 2 && temp.charAt(0) == '0' && temp.charAt(1) != '.') {\n // 触发raw value更新\n triggerRef(rawValue)\n return\n }\n }\n\n if (val != '-') {\n // 不处理非数字字符串\n if (!isNumberString(val)) {\n // 触发raw value更新\n triggerRef(rawValue)\n return\n }\n // 判断整数部分是否符合范围\n if (props.integerLength != -1) {\n let len = integerLength(val)\n if (len > Number(props.integerLength)) {\n // 触发raw value更新\n triggerRef(rawValue)\n return\n }\n }\n // 判断小数部分是否符合范围\n if (props.decimalLength && props.decimalLength != -1) {\n let len = decimalLength(val)\n if (len > Number(props.decimalLength)) {\n // 触发raw value更新\n triggerRef(rawValue)\n return\n }\n }\n // 校验value\n let validResult = inValidScope(val, props)\n // 超过最大限制\n if (validResult.maxValid === false) {\n // 设置error tip\n hightErrorTip.value = validResult.message\n // 触发raw value更新\n triggerRef(rawValue)\n return\n }\n } else if (props.min != undefined && toNumber(props.min) >= 0) {\n // 触发raw value更新\n triggerRef(rawValue)\n return\n }\n\n // 设置显示hint\n hintTextRef.value = val\n if (toBoolean(props.showTip)) {\n hintVisibleRef.value = val.length > 0\n }\n\n // 更新raw value\n rawValue.value = val\n // 更新model value\n modelValue.value = rateConversion(val, props.rates, props.precision, true)\n // 抛出事件\n triggerEvents.forEach((eventName: string) => {\n emitEvent(eventName, modelValue.value)\n })\n }\n\n // input\n const onInput = (val: string | number) => {\n onUpdate(val, ['update:modelValue', 'input'])\n }\n\n // change\n const onChange = (val: string | number) => {\n onUpdate(val, ['update:modelValue', 'change'])\n }\n\n const onFocus = (event: Event) => {\n // 设置激活\n active.value = true\n if (toBoolean(props.showTip)) {\n // 获取hint value\n let hintText = rawValue.value\n if (isEmptyString(hintText)) {\n hintText = props.hintText\n }\n if (!isEmptyString(hintText)) {\n hintTextRef.value = hintText\n hintVisibleRef.value = true\n }\n }\n //重置置hight error tip\n hightErrorTip.value = ''\n emitEvent('focus', modelValue.value, event)\n }\n\n const onBlur = (event: Event) => {\n setTimeout(() => {\n active.value = false\n if (toBoolean(props.showTip) && hintVisibleRef.value === true) {\n hintVisibleRef.value = false\n }\n }, 0)\n\n if (!isEmptyString(rawValue.value)) {\n // 校验value\n let validResult = inValidScope(rawValue.value, props)\n // 超过最小最大限制\n if (validResult.minValid === false || validResult.maxValid) {\n // 设置error tip\n hightErrorTip.value = validResult.message\n return\n }\n }\n\n // 抛出事件\n emitEvent('update:modelValue', modelValue.value, event)\n emitEvent('blur', modelValue.value, event)\n }\n\n // 点击clear\n const onClear = () => {\n emitEvent('clear', '')\n }\n\n // 是否有单位\n const hasUnit = computed(() => {\n let len = valueLength(props.unit)\n return len > 0\n })\n\n // 组件引用\n const inputRef = ref<any>()\n // 导出方法\n useExpose({\n //使 input 获取焦点\n focus: () => {\n inputRef?.value.focus()\n },\n // 使 input 失去焦点\n blur: () => {\n inputRef?.value.blur()\n },\n // 选中 input 中的文字\n select: () => {\n inputRef?.value.select()\n }\n })\n\n return () => {\n const attrs = context.attrs\n const inputData = {\n ...attrs,\n ref: inputRef,\n class: classes.value,\n type: 'digit',\n maxlength: props.maxLength,\n placeholder: placeholderValue.value,\n clearable: props.clearable,\n disabled: disabled.value,\n readonly: readonly.value,\n modelValue: textValue.value,\n 'adjust-position': props.adjustPosition,\n 'always-system': props.alwaysSystem,\n onClear,\n onInput,\n onChange,\n onFocus,\n onBlur\n }\n\n const inputChildren: Record<string, any> = {}\n // 加入prepend slot\n if (context.slots.prepend) {\n inputChildren.prepend = context.slots.prepend\n }\n // 加入append slot\n if (context.slots.append) {\n inputChildren.append = context.slots.append\n }\n // 加入prefix slot\n if (context.slots.prefix) {\n inputChildren.prefix = context.slots.prefix\n }\n // 加入suffix slot\n if (context.slots.suffix) {\n inputChildren.suffix = context.slots.suffix\n } else if (hasUnit.value) {\n inputChildren.suffix = () => [props.unit]\n }\n\n // default slots\n const defaultSlots: VNode[] = []\n\n const inputNode: VNode = h(ElInput, inputData, inputChildren)\n // 加入\n defaultSlots.push(inputNode)\n\n const children: Record<string, any> = {\n default: () => defaultSlots\n }\n // 加入label slot\n if (context.slots.default) {\n const slot = context.slots.default()\n children.label = () => {\n return slot\n }\n }\n\n // 创建root node\n const formatProps = excludeProps(props, inputProps)\n const rootData = {\n ...formatProps,\n errorTip: errorTip.value,\n hintText: hintTextRef.value,\n hintVisible: hintVisibleRef.value,\n hintType: 'number',\n prop: `${props.prop}_item`\n }\n const rootNode: VNode = h(Item, rootData, children)\n return rootNode\n }\n }\n }\n}\n","<!--\n * @Author: 江成\n * @Date: 2022-11-13 06:52:57\n-->\n<script lang=\"ts\">\nimport Item from '../item/index.vue'\nimport { createComponent } from '@/utils/create'\nimport { component } from './common'\nconst { componentName, create, scope } = createComponent('money-item')\n\nexport default create(component(componentName, scope, Item))\n</script>\n","import { h, computed, SetupContext, VNode, ref, PropType } from 'vue'\nimport { domainItemProps, itemProps } from '../item/common'\nimport { disabledProperty, readonlyProperty, toValue, property, defineItem } from '@/utils/domain'\nimport { isEmptyString, excludeProps, valueLength } from '@/utils/commons'\nimport { useExpose } from '@/utils/use-expose'\nimport { useFoxI18n } from '@fox-js/i18n'\nimport { ElInputNumber } from '@/base'\n\n// input props\nexport const inputProps = {\n // model value\n modelValue: {\n type: [String, Number],\n required: false\n },\n // 是否支持清空\n clearable: {\n type: [Boolean, String],\n default: true\n },\n // placeholder\n placeholder: {\n type: [String] as PropType<string>,\n required: false\n },\n // 单位\n unit: {\n type: [String],\n required: false\n },\n // 键盘弹起时,是否自动上推页面(`仅支持小程序`)\n adjustPosition: {\n type: Boolean,\n default: true\n },\n // 是否强制使用系统键盘和 Web-view 创建的 input 元素\n alwaysSystem: {\n type: Boolean,\n default: false\n }\n}\n\n/**\n * 创建组件\n * @param componentName\n * @param scope\n * @param Item\n */\nexport function component(componentName: string, scope: string, Item: any) {\n return {\n // 属性\n props: {\n // item属性(domain范围)\n ...domainItemProps,\n // item属性\n ...itemProps,\n // input属性\n ...inputProps\n },\n // 事件\n emits: ['change', 'update:modelValue', 'blur', 'focus', 'clear', 'input'],\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 定义domain item\n const { emitEvent } = defineItem(\n {\n componentName\n },\n props.prop ?? props.name\n )\n // 获取国际化api\n const { toLocaleRefs } = useFoxI18n(scope)\n // 转换为locale属性\n const localeProps = toLocaleRefs(props, ['placeholder'])\n\n // 是否激活\n const active = ref(false)\n // 是否禁用\n const disabled = disabledProperty(computed(() => props.disabled))\n // 是否只读\n const readonly = readonlyProperty(computed(() => props.readonly))\n // 获取model value\n const modelValue = toValue(props, 'modelValue')\n\n const prefixCls = componentName\n // root class\n const classes = computed(() => {\n return {\n [prefixCls]: true,\n [`${prefixCls}__append`]: hasUnit.value\n }\n })\n // unit node class\n const unitClasses = computed(() => {\n return {\n [`${prefixCls}__unit`]: true\n }\n })\n\n // value change\n const onInput = (val: string | number) => {\n // 更新value\n modelValue.value = val\n emitEvent('update:modelValue', val)\n emitEvent('input', val)\n }\n // change\n const onChange = (val: string | number) => {\n emitEvent('change', val)\n }\n // hint text\n let hintText = toValue(props, 'hintText')\n // hint visible\n let hintVisibleRef = ref(false)\n\n const onFocus = (event: Event) => {\n const input = event.target as HTMLInputElement\n let val = input.value\n active.value = true\n // 显示hint text\n if (!isEmptyString(hintText.value)) {\n hintVisibleRef.value = true\n }\n emitEvent('focus', val, event)\n }\n const onBlur = (event: Event) => {\n setTimeout(() => {\n if (hintVisibleRef.value) {\n hintVisibleRef.value = false\n }\n active.value = false\n }, 0)\n const input = event.target as HTMLInputElement\n let val = input.value\n if (props.maxLength && val.length > Number(props.maxLength)) {\n val = val.slice(0, Number(props.maxLength))\n }\n emitEvent('blur', val, event)\n }\n // 点击clear\n const onClear = () => {\n emitEvent('clear', '')\n }\n\n // 是否有单位\n const hasUnit = computed(() => {\n let len = valueLength(props.unit)\n return len > 0\n })\n\n // 组件引用\n const inputRef = ref<any>()\n // 导出方法\n useExpose({\n //使 input 获取焦点\n focus: () => {\n inputRef?.value.focus()\n },\n // 使 input 失去焦点\n blur: () => {\n inputRef?.value.blur()\n }\n })\n\n return () => {\n const attrs = context.attrs\n const inputData = {\n ...attrs,\n ref: inputRef,\n class: classes.value,\n placeholder: localeProps.placeholder.value,\n clearable: props.clearable,\n disabled: disabled.value,\n readonly: readonly.value,\n modelValue: modelValue.value,\n 'adjust-position': props.adjustPosition,\n 'always-system': props.alwaysSystem,\n onClear,\n onChange,\n onInput,\n onFocus,\n onBlur\n }\n\n const inputChildren: Record<string, any> = {}\n\n // default slots\n const defaultSlots: VNode[] = []\n\n const inputNode: VNode = h(ElInputNumber, inputData, inputChildren)\n // 加入\n defaultSlots.push(inputNode)\n\n const children: Record<string, any> = {\n default: () => defaultSlots\n }\n // 加入label slot\n if (context.slots.default) {\n const slot = context.slots.default()\n children.label = () => {\n return slot\n }\n }\n\n // 创建root node\n const formatProps = excludeProps(props, inputProps)\n const rootData = {\n ...formatProps,\n hintText: hintText.value,\n hintVisible: hintVisibleRef.value,\n prop: `${props.prop}_item`\n }\n\n // 加入append slot\n if (context.slots.append) {\n children.append = context.slots.append\n } else if (hasUnit.value) {\n const unitData = {\n class: unitClasses.value\n }\n const unitNode = h('div', unitData, [props.unit])\n children.append = () => unitNode\n }\n\n const rootNode: VNode = h(Item, rootData, children)\n return rootNode\n }\n }\n }\n}\n","<!--\n * @Author: 江成\n * @Date: 2022-12-07 17:34:03\n-->\n<script lang=\"ts\">\nimport Item from '../item/index.vue'\nimport { createComponent } from '@/utils/create'\nimport { component } from './common'\nconst { componentName, create, scope } = createComponent('input-number-item')\n\nexport default create(component(componentName, scope, Item))\n</script>\n","import { toRaw, isReactive, ComponentPublicInstance, getCurrentInstance } from 'vue'\nimport { Item, SourceFunction } from './types'\nimport { isObject } from '@/utils/commons'\nimport { getAPI } from '@/api'\n\n/**\n * 获取item text\n * @param props\n * @param item\n * @returns\n */\nexport function getItemText(props: Record<string, any>, item: Item): string | number {\n if (typeof props.textKey === 'string' && props.textKey.length > 0) {\n return item[props.textKey]\n }\n return item.text\n}\n\n/**\n * 获取item value\n * @param props\n * @param item\n * @returns\n */\nexport function getItemValue(props: Record<string, any>, item: Item): string | boolean | number {\n if (typeof props.valueKey === 'string' && props.valueKey.length > 0) {\n return item[props.valueKey]\n }\n return item.value\n}\n\n/**\n * 获取item children\n * @param props\n * @param item\n * @returns\n */\nexport function getItemChildren(props: Record<string, any>, item: Item): Item[] | null {\n if (typeof props.childrenKey === 'string' && props.childrenKey.length > 0) {\n return item[props.childrenKey] || null\n }\n return item.children ?? null\n}\n\n/**\n * 数据model\n */\nexport class Model {\n /**\n * proxy\n */\n private proxy: ComponentPublicInstance\n\n /**\n * 构造函数\n * @param proxy\n */\n public constructor(proxy: ComponentPublicInstance) {\n this.proxy = proxy\n }\n\n /**\n * 加载数据源\n * @param src\n * @returns\n */\n public async load(\n componentType: string,\n src: SourceFunction | Item[][] | Item[] | string,\n params?: any\n ): Promise<Item[][] | Item[] | string[] | string[][]> {\n // 数组类型,直接返回\n if (Array.isArray(src)) {\n return src\n }\n // 函数数据源\n if (typeof src === 'function') {\n return await src(params)\n }\n\n //获取radio的api函数\n const func = getAPI(this.proxy, componentType)\n if (func === null) {\n console.error(`${componentType} component not found api function`)\n return []\n }\n if (isObject(params) && isReactive(params)) {\n params = toRaw(params)\n }\n return await func(src, params)\n }\n}\n\n/**\n * 使用model\n * @returns\n */\nexport function useModel(): Model {\n const instance = getCurrentInstance()!\n return new Model(instance.proxy!)\n}\n\n/**\n * item是否相等\n * @param props\n * @param x\n * @param y\n * @returns\n */\nexport function isEqualsItem(props: Record<string, any>, x: Item, y: Item) {\n const xText = getItemText(props, x)\n const yText = getItemText(props, y)\n if (xText !== yText) {\n return false\n }\n const xValue = getItemValue(props, x)\n const yValue = getItemValue(props, y)\n if (xValue !== yValue) {\n return false\n }\n return true\n}\n\n/**\n * value转换为items\n * @param value\n * @param valueType\n * @param items\n * @returns\n */\nexport function valuesToItems(\n props: Record<string, any>,\n value: any,\n valueType: string,\n items: Item[]\n): (Item | Item[])[] | null {\n if (items.length == 0) {\n return null\n }\n if (value === '' || value === null || value === undefined) {\n return null\n }\n if (!Array.isArray(value)) {\n value = [value]\n }\n\n // 结果item集合\n const result: (Item | Item[])[] = []\n\n let curItems: Item[] | null = items\n for (let i = 0; Array.isArray(curItems) && i < value.length; i++) {\n const curVal = value[i]\n // 多选(多行checkbox选择)\n if (Array.isArray(curVal)) {\n const subResult = valuesToItems(props, curVal, valueType, items) as Item[]\n result.push(subResult)\n } else {\n let matched = false\n for (let item of curItems) {\n if (valueType === 'text') {\n const text = getItemText(props, item)\n matched = text === curVal\n } else if (valueType === 'item') {\n matched = isEqualsItem(props, item, curVal as Item)\n } else {\n // 如果item不存在value,则对比text\n let val = getItemValue(props, item)\n if (val == null) {\n val = getItemText(props, item)\n }\n matched = val === curVal\n }\n if (matched) {\n result.push(item)\n // 获取匹配item的孩子节点\n curItems = getItemChildren(props, item)\n break\n }\n }\n // 非匹配,直接退出循环\n if (!matched) {\n break\n }\n }\n }\n return result\n}\n\n/**\n * string转换为item\n * @param text\n * @returns\n */\nexport function stringToItem(text: string): Item {\n return {\n text,\n value: text\n }\n}\n","import { h, computed, SetupContext, VNode, ref, PropType, watchEffect, watch, toRaw } from 'vue'\nimport { domainItemProps, itemProps } from '../item/common'\nimport { disabledProperty, readonlyProperty, toValue, defineItem } from '@/utils/domain'\nimport { isEmptyString, excludeProps, toBoolean } from '@/utils/commons'\nimport { useExpose } from '@/utils/use-expose'\nimport { useFoxI18n } from '@fox-js/i18n'\nimport { Item, SourceFunction, ValueType, RemoteMethod } from './types'\nimport { useModel, stringToItem, valuesToItems, isEqualsItem, getItemText, getItemValue } from './model'\nimport { ElCascader } from '@/base'\n\n// input props\nexport const inputProps = {\n // model value\n modelValue: {\n type: [Array, String] as PropType<any[] | any>,\n required: false\n },\n // 数据源\n source: {\n type: [Array, Function, String] as PropType<Item[] | SourceFunction | string>,\n default: []\n },\n // 参数\n params: {\n type: Object\n },\n // 是否支持清空\n clearable: {\n type: [Boolean, String],\n default: true\n },\n // 参数陪\n props: {\n type: [Object] as PropType<Record<string, any>>,\n required: false\n },\n // 是否多选\n multiple: {\n type: [Boolean],\n default: false\n },\n // 返回value类型\n valueType: {\n type: String as PropType<ValueType>,\n required: false,\n default: 'value'\n },\n // text key\n textKey: {\n type: [String],\n required: false,\n default: 'text'\n },\n // value key\n valueKey: {\n type: [String],\n required: false,\n default: 'value'\n },\n // children key\n childrenKey: {\n type: [String],\n required: false,\n default: 'children'\n },\n // remote method\n remoteMethod: {\n type: [Function] as PropType<RemoteMethod>,\n required: false\n }\n}\n\n/**\n * 创建组件\n * @param componentName\n * @param scope\n * @param Item\n */\nexport function component(componentName: string, scope: string, Item: any) {\n return {\n // 属性\n props: {\n // item属性(domain范围)\n ...domainItemProps,\n // item属性\n ...itemProps,\n // input属性\n ...inputProps\n },\n // 事件\n emits: ['change', 'update:modelValue', 'blur', 'focus', 'clear', 'visible-change', 'expand-change', 'remove-tag'],\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 定义domain item\n const { emitEvent } = defineItem(\n {\n componentName\n },\n props.prop ?? props.name\n )\n // 获取国际化api\n const { toLocaleRefs } = useFoxI18n(scope)\n // 转换为locale属性\n const localeProps = toLocaleRefs(props, ['placeholder'])\n\n // inner select组件对应的model value\n const selectedValue = ref<any>(null)\n // inner select组件的select item列表\n const selectedItems = ref<(Item | Item[])[]>([])\n // 更新selected\n const updateSelected = (value: any, valueType: string, items: Item[], triggerEmit: boolean = true) => {\n // lazy load特殊处理\n if (props.props && props.props.lazy === true) {\n if (selectedValue.value === value) {\n return\n }\n selectedValue.value = value\n const rawValue = toRaw(value)\n if (triggerEmit) {\n emitEvent('update:modelValue', rawValue)\n emitEvent('change', rawValue)\n }\n }\n // value 转换为 items\n const newItems = valuesToItems(props, value, valueType, items)\n // NULL处理\n if (newItems === null) {\n // 数据没改变,不进行处理\n if (selectedItems.value.length === 0 || selectedItems.value === null) {\n return\n }\n selectedItems.value = []\n selectedValue.value = null\n if (triggerEmit) {\n emitEvent('update:modelValue', null)\n emitEvent('change', null)\n }\n return\n }\n\n // 数据是否一致\n let flag = true\n if (newItems.length !== selectedItems.value.length) {\n flag = false\n } else {\n for (let i = 0; i < newItems.length; i++) {\n const x = newItems[i]\n const y = selectedItems.value[i]\n // 多行选择的情况\n if (Array.isArray(x)) {\n if (!Array.isArray(y) || x.length !== y.length) {\n flag = false\n } else {\n for (let j = 0; j < x.length; j++) {\n if (!isEqualsItem(props, x[j], y[j] as Item)) {\n flag = false\n break\n }\n }\n }\n } else if (!isEqualsItem(props, x, y as Item)) {\n flag = false\n }\n // 不匹配情况,直接退出\n if (!flag) {\n break\n }\n }\n }\n\n if (!flag) {\n selectedItems.value = newItems\n let newSelectedValue: any = []\n let newModelValue: any = []\n newItems.forEach(item => {\n if (Array.isArray(item)) {\n let rowSelectedValue: any = []\n let rowModelValue: any = []\n for (let subItem of item) {\n rowSelectedValue.push(getItemValue(props, subItem))\n if (props.valueType === 'text') {\n rowModelValue.push(getItemText(props, subItem))\n } else if (props.valueType === 'item') {\n rowModelValue.push(subItem)\n } else {\n rowModelValue.push(getItemValue(props, subItem))\n }\n }\n newSelectedValue.push(rowSelectedValue)\n newModelValue.push(rowModelValue)\n } else {\n newSelectedValue.push(getItemValue(props, item))\n if (props.valueType === 'text') {\n newModelValue.push(getItemText(props, item))\n } else if (props.valueType === 'item') {\n newModelValue.push(item)\n } else {\n newModelValue.push(getItemValue(props, item))\n }\n }\n })\n selectedValue.value = newSelectedValue\n const rawValue = toRaw(newModelValue)\n if (triggerEmit) {\n emitEvent('update:modelValue', rawValue)\n emitEvent('change', rawValue)\n }\n }\n }\n // 数据items\n const options = ref<Item[]>([])\n // 获取model\n const model = useModel()\n //watch source and params change\n watch(\n [() => props.source, () => props.params],\n async ([source, params]) => {\n if (source) {\n const res = await model.load('cascader', source, params)\n if (res.length > 0) {\n let firstItem = res[0]\n // 如果为字符串数组,则需要转换为Item数组\n if (typeof firstItem == 'string') {\n let strList = res as string[]\n let items = strList.map(str => {\n return stringToItem(str)\n })\n options.value = items\n } else {\n options.value = res as Item[]\n }\n }\n }\n },\n { immediate: true }\n )\n // 不需要立即执行,数据源加载完成后,会触发\n watch([() => options.value, () => props.modelValue], ([items, value]) => {\n updateSelected(value, props.valueType, items, false)\n })\n let remoteMethod: Function | null = null\n let loading = ref(false)\n // 处理remote函数\n if (typeof props.remoteMethod === 'function') {\n remoteMethod = async (query: string) => {\n if (query === undefined || query === null) {\n return\n }\n loading.value = true\n try {\n const res = await props.remoteMethod(query)\n options.value = res\n } catch (ex) {\n console.error(ex)\n }\n loading.value = false\n }\n }\n\n // 是否激活\n const active = ref(false)\n // 是否禁用\n const disabled = disabledProperty(computed(() => props.disabled))\n // 是否只读\n const readonly = readonlyProperty(computed(() => props.readonly))\n\n const prefixCls = componentName\n // root class\n const classes = computed(() => {\n return {\n [prefixCls]: true\n }\n })\n\n // innerProps\n const innerProps = computed(() => {\n let p: Record<string, any> = {\n label: props.textKey,\n value: props.valueKey,\n children: props.childrenKey\n }\n if (props.multiple === true) {\n p[`multiple`] = true\n }\n if (props.props) {\n Object.assign(p, props.props)\n }\n return p\n })\n\n // change\n const onChange = (val: any) => {\n // 允许创建新条目特殊处理\n if (props.allowCreate) {\n emitEvent('update:modelValue', val)\n emitEvent('change', val)\n selectedValue.value = val\n } else {\n updateSelected(val, 'value', options.value, true)\n }\n }\n // hint text\n let hintText = toValue(props, 'hintText')\n // hint visible\n let hintVisibleRef = ref(false)\n // focus事件\n const onFocus = (event: Event) => {\n const input = event.target as HTMLInputElement\n let val = input.value\n active.value = true\n // 显示hint text\n if (!isEmptyString(hintText.value)) {\n hintVisibleRef.value = true\n }\n emitEvent('focus', val, event)\n }\n // blur事件\n const onBlur = (event: Event) => {\n setTimeout(() => {\n if (hintVisibleRef.value) {\n hintVisibleRef.value = false\n }\n active.value = false\n }, 0)\n const input = event.target as HTMLInputElement\n let val = input.value\n if (props.maxLength && val.length > Number(props.maxLength)) {\n val = val.slice(0, Number(props.maxLength))\n }\n // set timeout中抛出事件,是为了避免在blur事件在change事件前触发校验\n if (popupVisible.value) {\n setTimeout(() => {\n emitEvent('blur', val, event)\n }, 50)\n } else {\n emitEvent('blur', val, event)\n }\n }\n // 点击clear\n const onClear = () => {\n emitEvent('clear', '')\n }\n const popupVisible = ref(false)\n // 下拉框出现/隐藏时触发\n const onVisibleChange = (val: boolean) => {\n popupVisible.value = val\n emitEvent('visible-change', val)\n }\n //多选模式下移除tag时触发\n const onRemoveTag = (val: any) => {\n emitEvent('remove-tag', val)\n }\n //当展开节点发生变化时触发\n const expandChange = (args: any) => {\n emitEvent('expand-change', args)\n }\n\n // 组件引用\n const inputRef = ref<any>()\n // 导出方法\n useExpose({\n //使 input 获取焦点\n focus: () => {\n inputRef?.value.focus()\n },\n // 使 input 失去焦点\n blur: () => {\n inputRef?.value.blur()\n },\n // 选择checked nodes\n getCheckedNodes: () => {\n return inputRef?.value.getCheckedNodes()\n }\n })\n\n return () => {\n const attrs = context.attrs\n const inputData: any = {\n ...attrs,\n ref: inputRef,\n class: classes.value,\n props: innerProps.value,\n clearable: props.clearable,\n placeholder: localeProps.placeholder.value,\n disabled: disabled.value || readonly.value,\n options: options.value,\n modelValue: selectedValue.value,\n onClear,\n onChange,\n onFocus,\n onBlur,\n onVisibleChange,\n onRemoveTag,\n expandChange\n }\n\n if (typeof remoteMethod === 'function') {\n inputData[`remote-method`] = remoteMethod\n inputData['loading'] = loading.value\n }\n\n const inputChildren: Record<string, any> = {}\n // 加入option slot => cascader default slot\n if (context.slots.option) {\n inputChildren.default = context.slots.option\n }\n // 加入empty slot\n if (context.slots.empty) {\n inputChildren.empty = context.slots.empty\n }\n\n // default slots\n const defaultSlots: VNode[] = []\n\n const inputNode: VNode = h(ElCascader, inputData, inputChildren)\n // 加入\n defaultSlots.push(inputNode)\n\n const children: Record<string, any> = {\n default: () => defaultSlots\n }\n // 加入label slot\n if (context.slots.default) {\n const slot = context.slots.default()\n children.label = () => {\n return slot\n }\n }\n\n // 创建root node\n const formatProps = excludeProps(props, inputProps)\n const rootData = {\n ...formatProps,\n hintText: hintText.value,\n hintVisible: hintVisibleRef.value,\n prop: `${props.prop ?? props.name}_item`\n }\n const rootNode: VNode = h(Item, rootData, children)\n return rootNode\n }\n }\n }\n}\n","<!--\n * @Author: 江成\n * @Date: 2022-11-10 08:40:23\n-->\n<script lang=\"ts\">\nimport Item from '../item/index.vue'\nimport { createComponent } from '@/utils/create'\nimport { component } from './common'\nconst { componentName, create, scope } = createComponent('cascader-item')\n\nexport default create(component(componentName, scope, Item))\n</script>\n","import { h, computed, SetupContext, VNode, ref } from 'vue'\nimport { domainItemProps, itemProps } from '../item/common'\nimport { disabledProperty, readonlyProperty, toValue, property, defineItem } from '@/utils/domain'\nimport { isEmptyString, excludeProps } from '@/utils/commons'\nimport { useExpose } from '@/utils/use-expose'\nimport { useFoxI18n } from '@fox-js/i18n'\nimport { ElAutocomplete } from '@/base'\n\n// input props\nexport const inputProps = {\n // model value\n modelValue: {\n type: [String, Object],\n required: false\n },\n // 是否支持清空\n clearable: {\n type: [Boolean, String],\n default: true\n },\n // 单位\n unit: {\n type: [String],\n required: false\n }\n}\n\n/**\n * 创建组件\n * @param componentName\n * @param scope\n * @param Item\n */\nexport function component(componentName: string, scope: string, Item: any) {\n return {\n // 属性\n props: {\n // item属性(domain范围)\n ...domainItemProps,\n // item属性\n ...itemProps,\n // input属性\n ...inputProps\n },\n // 事件\n emits: ['change', 'update:modelValue', 'blur', 'focus', 'clear', 'input', 'select'],\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 定义domain item\n const { emitEvent } = defineItem(\n {\n componentName\n },\n props.prop ?? props.name\n )\n // 获取国际化api\n const { toLocaleRefs } = useFoxI18n(scope)\n // 转换为locale属性\n const localeProps = toLocaleRefs(props, ['placeholder'])\n\n // 是否激活\n const active = ref(false)\n // 是否禁用\n const disabled = disabledProperty(computed(() => props.disabled))\n // 是否只读\n const readonly = readonlyProperty(computed(() => props.readonly))\n // 获取model value\n const modelValue = toValue(props, 'modelValue')\n\n const prefixCls = componentName\n // root class\n const classes = computed(() => {\n return {\n [prefixCls]: true\n }\n })\n\n // value change\n const onInput = (val: string | number) => {\n // 更新value\n modelValue.value = val\n emitEvent('update:modelValue', val)\n emitEvent('input', val)\n }\n // change\n const onChange = (val: string | number) => {\n emitEvent('change', val)\n }\n // hint text\n let hintText = toValue(props, 'hintText')\n // hint visible\n let hintVisibleRef = ref(false)\n\n const onFocus = (event: Event) => {\n const input = event.target as HTMLInputElement\n let val = input.value\n active.value = true\n // 显示hint text\n if (!isEmptyString(hintText.value)) {\n hintVisibleRef.value = true\n }\n emitEvent('focus', val, event)\n }\n const onBlur = (event: Event) => {\n setTimeout(() => {\n if (hintVisibleRef.value) {\n hintVisibleRef.value = false\n }\n active.value = false\n }, 0)\n const input = event.target as HTMLInputElement\n let val = input.value\n if (props.maxLength && val.length > Number(props.maxLength)) {\n val = val.slice(0, Number(props.maxLength))\n }\n emitEvent('blur', val, event)\n }\n // 点击clear\n const onClear = () => {\n emitEvent('clear', '')\n }\n\n // 组件引用\n const inputRef = ref<any>()\n // 导出方法\n useExpose({\n //使 input 获取焦点\n focus: () => {\n inputRef?.value.focus()\n },\n // 使 input 失去焦点\n blur: () => {\n inputRef?.value.blur()\n },\n // 选中 input 中的文字\n select: () => {\n inputRef?.value.select()\n }\n })\n\n return () => {\n const attrs = context.attrs\n const inputData = {\n ...attrs,\n ref: inputRef,\n class: classes.value,\n placeholder: localeProps.placeholder.value,\n clearable: props.clearable,\n disabled: disabled.value,\n readonly: readonly.value,\n modelValue: modelValue.value,\n onClear,\n onChange,\n onInput,\n onFocus,\n onBlur\n }\n\n const inputChildren: Record<string, any> = {}\n // 加入prepend slot\n if (context.slots.prepend) {\n inputChildren.prepend = context.slots.prepend\n }\n // 加入append slot\n if (context.slots.append) {\n inputChildren.append = context.slots.append\n }\n // 加入prefix slot\n if (context.slots.prefix) {\n inputChildren.prefix = context.slots.prefix\n }\n // 加入suffix slot\n if (context.slots.suffix) {\n inputChildren.suffix = context.slots.suffix\n }\n // 加入option slot => default slot\n if (context.slots.option) {\n inputChildren.default = context.slots.option\n }\n\n // default slots\n const defaultSlots: VNode[] = []\n\n const inputNode: VNode = h(ElAutocomplete, inputData, inputChildren)\n // 加入\n defaultSlots.push(inputNode)\n\n const children: Record<string, any> = {\n default: () => defaultSlots\n }\n // 加入label slot\n if (context.slots.default) {\n const slot = context.slots.default()\n children.label = () => {\n return slot\n }\n }\n\n // 创建root node\n const formatProps = excludeProps(props, inputProps)\n const rootData = {\n ...formatProps,\n hintText: hintText.value,\n hintVisible: hintVisibleRef.value,\n prop: `${props.prop}_item`\n }\n const rootNode: VNode = h(Item, rootData, children)\n return rootNode\n }\n }\n }\n}\n","<!--\n * @Author: 江成\n * @Date: 2022-11-12 10:40:19\n-->\n<script lang=\"ts\">\nimport Item from '../item/index.vue'\nimport { createComponent } from '@/utils/create'\nimport { component } from './common'\nconst { componentName, create, scope } = createComponent('autocomplete-item')\n\nexport default create(component(componentName, scope, Item))\n</script>\n","/*\n * @Author: 江成\n * @Date: 2022-11-03 15:15:21\n */\nimport { toRaw, isReactive, ComponentPublicInstance, getCurrentInstance } from 'vue'\nimport { Item, SourceFunction, Value } from './types'\nimport { isObject } from '@/utils/commons'\nimport { getAPI } from '@/api'\n\n/*\n * value 转换为 text\n */\nexport function valueToText(\n value: Value,\n items: Item[] | Item[][],\n textKey: string,\n valueKey: string,\n childrenKey: string\n): string[] {\n // 转换为队列\n let list = []\n if (!Array.isArray(value)) {\n list = [value]\n } else {\n list = value\n }\n\n // text列表\n const texts = []\n // 判断items为单列还是多列\n const firstItem = items[0]\n // 多列\n if (Array.isArray(firstItem)) {\n for (let i = 0; i < items.length && i < list.length; i++) {\n let colItems = items[i] as Item[]\n let val = list[i]\n const find = colItems.find(item => {\n return item[valueKey] === val\n })\n if (!find) {\n break\n }\n texts.push(find[textKey])\n }\n } else {\n // 记录当前items\n let curItems = items as Item[]\n for (let i = 0; curItems && i < list.length; i++) {\n let val = list[i]\n let find = curItems.find(item => {\n return item[valueKey] === val\n })\n if (!find) {\n break\n }\n texts.push(find[textKey])\n // 获取下一个children\n curItems = find[childrenKey]\n }\n }\n\n return texts\n}\n\n/**\n * 数据model\n */\nexport class Model {\n /**\n * proxy\n */\n private proxy: ComponentPublicInstance\n\n /**\n * 构造函数\n * @param proxy\n */\n public constructor(proxy: ComponentPublicInstance) {\n this.proxy = proxy\n }\n\n /**\n * 加载数据源\n * @param src\n * @returns\n */\n public async load(\n componentType: string,\n src: SourceFunction | Item[] | Item[][] | string,\n params?: any\n ): Promise<Item[] | Item[][]> {\n // 数组类型,直接返回\n if (Array.isArray(src)) {\n return src\n }\n // 函数数据源\n if (typeof src === 'function') {\n return await src(params)\n }\n\n //获取radio的api函数\n const func = getAPI(this.proxy, componentType)\n if (func === null) {\n console.error(`${componentType} component not found api function`)\n return []\n }\n if (isObject(params) && isReactive(params)) {\n params = toRaw(params)\n }\n return await func(src, params)\n }\n}\n\n/**\n * 使用model\n * @returns\n */\nexport function useModel(): Model {\n const instance = getCurrentInstance()!\n return new Model(instance.proxy!)\n}\n","/*\n * @Author: 江成\n * @Date: 2022-11-03 11:12:23\n */\nimport { PropType, SetupContext, computed, h, ref, watch, resolveComponent } from 'vue'\nimport { useModel, Model, valueToText } from './model'\nimport { Value, Item, SourceFunction } from './types'\n\n// mapping属性\nexport const mappingProps = {\n // tag标签\n tag: {\n type: [String, Object] as PropType<string | any>,\n required: false,\n default: 'span'\n },\n // 解析tag\n resolveTag: {\n type: [Boolean] as PropType<string | any>,\n required: false,\n default: false\n },\n // 数据源\n source: {\n type: [Array, Function, String] as PropType<Item[] | Item[][] | SourceFunction | string>,\n required: false\n },\n // 数据源\n sourceType: {\n type: [String] as PropType<string>,\n required: false,\n default: 'mapping'\n },\n // 参数\n params: {\n type: [Object, String] as PropType<any>,\n required: false\n },\n // value\n modelValue: {\n type: [String, Boolean, Number, Array] as PropType<Value | Value[]>,\n required: false\n },\n // 分割符\n separator: {\n type: [String, Boolean, Number, Array] as PropType<Value | Value[]>,\n required: false,\n default: '/'\n },\n // text key\n textKey: {\n type: [String],\n required: false,\n default: 'text'\n },\n // value key\n valueKey: {\n type: [String],\n required: false,\n default: 'value'\n },\n // value key\n childrenKey: {\n type: [String],\n required: false,\n default: 'children'\n }\n}\n\nexport function component(componentName: string, scope: string) {\n return {\n // 属性\n props: {\n ...mappingProps\n },\n // setup\n setup(props: Record<string, any>, { attrs }: SetupContext) {\n // 获取model\n const model = useModel()\n // 映射item\n const items = ref<Item[] | Item[][]>([])\n watch(\n [() => props.source, () => props.params],\n async ([src, params]) => {\n items.value = await model.load(props.sourceType, src, params)\n },\n { immediate: true }\n )\n\n // 格式化text\n const formatText = computed(() => {\n if (!Array.isArray(items.value) || items.value.length === 0) {\n return ''\n }\n let ret = valueToText(props.modelValue, items.value, props.textKey, props.valueKey, props.childrenKey)\n if (ret.length == 0) {\n return ''\n } else if (ret.length === 1) {\n return ret[0]\n } else {\n return ret.join(props.separator)\n }\n })\n\n // tag\n const tag = props.resolveTag ? resolveComponent(props.tag) : props.tag\n\n return () => {\n // 克隆属性\n const viewData = {\n ...attrs\n }\n if (props.resolveTag) {\n return h(tag, viewData, { default: () => formatText.value })\n } else {\n return h(tag, viewData, formatText.value)\n }\n }\n }\n }\n}\n","<!--\n * @Author: 江成\n * @Date: 2022-11-03 11:12:35\n-->\n\n<script lang=\"ts\">\nimport { component } from './common'\nimport { createComponent } from '@/utils/create'\nconst { componentName, create, scope } = createComponent('mapping')\n// 创建组件\nexport default create(component(componentName, scope))\n</script>\n\n","/*\n * @Author: 江成\n * @Date: 2022-11-03 17:44:46\n */\nimport { SetupContext, h } from 'vue'\nimport { ElTableColumn } from '@/base'\nimport Mapping from '../mapping/index.vue'\nimport { mappingProps } from '../mapping/common'\n\n/**\n * 获取row value\n * @param row\n * @param property\n */\nfunction getRowValue(row: any, property: string): any {\n // 分割id\n let keys = property.split('.')\n\n let value: any = row\n for (let i = 0; i < keys.length; i++) {\n // 获取当前key\n let key = keys[i]\n // 记录解析数组层次\n let times = 0\n // 判断是否为数组\n let sIndex = key.indexOf('[')\n let eIndex = sIndex == -1 ? -1 : key.indexOf(']', sIndex)\n while (sIndex !== -1 && eIndex !== -1) {\n let index = key.substring(sIndex + 1, eIndex)\n // 判断是否为数字\n if (/^\\d+$/.test(index)) {\n let pos = parseInt(index)\n if (times == 0) {\n let name = key.substring(0, sIndex)\n value = value[name][pos]\n } else {\n value = value[pos]\n }\n times++\n }\n sIndex = key.indexOf('[', eIndex)\n eIndex = sIndex == -1 ? -1 : key.indexOf(']', sIndex)\n }\n\n if (times === 0) {\n value = value[key]\n }\n }\n return value\n}\n\nexport function component(componentName: string, scope: string) {\n return {\n // 属性\n props: {\n ...mappingProps\n },\n // setup\n setup(props: Record<string, any>, { attrs }: SetupContext) {\n return () => {\n // slots\n const scopeSlots = {\n default: (scope: Record<string, any>) => {\n const value = getRowValue(scope.row, scope.column.property)\n return h(Mapping, { ...props, modelValue: value })\n }\n }\n return h(ElTableColumn, { ...attrs }, scopeSlots)\n }\n }\n }\n}\n","<!--\n * @Author: 江成\n * @Date: 2022-11-03 17:39:15\n-->\n<script lang=\"ts\">\nimport { component } from './common'\nimport { createComponent } from '@/utils/create'\nconst { componentName, create, scope } = createComponent('table-mapping-column')\n// 创建组件\nexport default create(component(componentName, scope))\n</script>\n\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-11-15 23:34:14\n */\nimport { toRaw, isReactive, ComponentPublicInstance, getCurrentInstance } from 'vue'\nimport { TableData, SourceFunction, RemoteSourceFunction } from './types'\nimport { isObject } from '@/utils/commons'\nimport { getAPI } from '@/api'\n\n/**\n * 数据model\n */\nexport class Model {\n /**\n * proxy\n */\n private proxy: ComponentPublicInstance\n\n /**\n * 构造函数\n * @param proxy\n */\n public constructor(proxy: ComponentPublicInstance) {\n this.proxy = proxy\n }\n\n /**\n * 加载数据源\n * @param src\n * @returns\n */\n public async load(\n componentType: string,\n src: SourceFunction | Array<Record<string, any>[]> | string,\n index: number,\n pageSize: number,\n params?: any,\n first?: boolean,\n lang?: string\n ): Promise<TableData> {\n // 数组类型,直接返回\n if (Array.isArray(src)) {\n let startIndex = (index - 1) * pageSize\n let endIndex = startIndex + pageSize\n if (endIndex > src.length) {\n endIndex = src.length\n }\n const page = src.slice(startIndex, endIndex)\n return {\n totalSize: src.length,\n page\n }\n }\n // 函数数据源\n if (typeof src === 'function') {\n return await Reflect.apply(src, null, [index, pageSize, params, first, lang])\n }\n\n //获取radio的api函数\n const func = getAPI(this.proxy, componentType)\n if (func === null) {\n console.error(`${componentType} component not found api function`)\n return {\n totalSize: 0,\n page: []\n }\n }\n if (isObject(params) && isReactive(params)) {\n params = toRaw(params)\n }\n return await await Reflect.apply(func, null, [src as string, index, pageSize, params, first, lang])\n }\n}\n\n/**\n * 使用model\n * @returns\n */\nexport function useModel(): Model {\n const instance = getCurrentInstance()!\n return new Model(instance.proxy!)\n}\n","import { h, computed, SetupContext, VNode, ref, PropType, watch, shallowRef, triggerRef, nextTick, toRaw } from 'vue'\nimport { domainItemProps, itemProps } from '../item/common'\nimport { defineItem } from '@/utils/domain'\nimport { excludeProps, toBoolean, isEqual } from '@/utils/commons'\nimport { useExpose } from '@/utils/use-expose'\nimport { useFoxI18n } from '@fox-js/i18n'\nimport { useModel } from './model'\nimport { SourceFunction } from './types'\nimport { ElTable, ElPagination } from '@/base'\n\n// Row类型\nexport type Row = Record<string, any>\n\n/**\n * 获取row value\n * @param row\n * @param property\n */\nfunction getRowValue(row: Row, property: string): any {\n // 分割id\n let keys = property.split('.')\n\n let value: any = row\n for (let i = 0; i < keys.length; i++) {\n // 获取当前key\n let key = keys[i]\n // 记录解析数组层次\n let times = 0\n // 判断是否为数组\n let sIndex = key.indexOf('[')\n let eIndex = sIndex == -1 ? -1 : key.indexOf(']', sIndex)\n while (sIndex !== -1 && eIndex !== -1) {\n let index = key.substring(sIndex + 1, eIndex)\n // 判断是否为数字\n if (/^\\d+$/.test(index)) {\n let pos = parseInt(index)\n if (times == 0) {\n let name = key.substring(0, sIndex)\n value = value[name][pos]\n } else {\n value = value[pos]\n }\n times++\n }\n sIndex = key.indexOf('[', eIndex)\n eIndex = sIndex == -1 ? -1 : key.indexOf(']', sIndex)\n }\n\n if (times === 0) {\n value = value[key]\n }\n }\n return value\n}\n\n/**\n * 通过prop获取row\n */\nfunction getRowByProp(data: Row[], prop: Record<string, any>): Row[] {\n const rows = data.filter(row => {\n // 对比prop指定的属性\n for (let key in prop) {\n const val = prop[key]\n const rowVal = getRowValue(row, key)\n if (val !== rowVal) {\n return false\n }\n }\n return true\n })\n return rows\n}\n\n// table props\nexport const tableProps = {\n // model value\n data: {\n type: [String, Array, Function] as PropType<string | Record<string, any>[][] | SourceFunction>,\n required: true\n },\n // 是否自动加载数据\n autoLoad: {\n type: [String, Boolean] as PropType<boolean | string>,\n required: false,\n default: false\n },\n // 基础参数\n baseParams: {\n type: [Object] as PropType<Record<string, any>>\n },\n // 参数\n params: {\n type: [Object] as PropType<Record<string, any>>\n }\n}\n\n// pagination props\nexport const paginationProps = {\n // page size\n pageIndex: {\n type: [Number],\n required: false,\n default: 1\n },\n // page size\n pageSize: {\n type: [Number],\n required: false,\n default: 10\n },\n // page sizes\n pageSizes: {\n type: [Array] as PropType<number[]>,\n required: false\n },\n // pagination layout\n paginationLayout: {\n type: [String] as PropType<string>,\n required: false,\n default: 'total, sizes, prev, pager, next, jumper'\n },\n // pagination align\n paginationAlign: {\n type: [String] as PropType<string>,\n required: false,\n default: 'right'\n },\n // pagination align\n paginationVisible: {\n type: [Boolean] as PropType<boolean>,\n required: false,\n default: true\n },\n // 只要一页的时候隐藏\n hideOnSinglePage: {\n type: [Boolean] as PropType<boolean>,\n required: false,\n default: true\n }\n}\n\n/**\n * 创建组件\n * @param componentName\n * @param scope\n * @param Item\n */\nexport function component(componentName: string, scope: string, Item: any) {\n return {\n inheritAttrs: false, //禁用默认继\n // 属性\n props: {\n // item属性(domain范围)\n ...domainItemProps,\n // item属性\n ...itemProps,\n // table属性\n ...tableProps,\n // pagination属性\n ...paginationProps\n },\n // 事件\n emits: ['change', 'page-size-change', 'page-index-change', 'current-change'],\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 获取国际化\n const { locale } = useFoxI18n(scope)\n // 定义domain item\n const { emitEvent } = defineItem(\n {\n componentName\n },\n props.prop ?? props.name\n )\n\n const prefixCls = componentName\n // root class\n const classes = computed(() => {\n return {\n [prefixCls]: true\n }\n })\n\n const paginationClass = computed(() => {\n return {\n [`${prefixCls}__pagination`]: true,\n [`${prefixCls}__pagination__${props.paginationAlign}`]: true\n }\n })\n // page index\n const pageIndex = ref(props.pageIndex)\n // 同步 page index属性\n watch(\n () => props.pageIndex,\n index => {\n pageIndex.value = index\n }\n )\n // page index change\n const onPageIndexChange = (index: number) => {\n pageIndex.value = index\n emitEvent('page-index-change', index)\n }\n // page size\n const pageSize = ref(props.pageSize)\n // 同步 page size属性\n watch(\n () => props.pageSize,\n size => {\n pageSize.value = size\n }\n )\n // page size change\n const onPageSizeChange = (size: number) => {\n pageSize.value = size\n emitEvent('page-size-change', size)\n }\n\n const searchParams = shallowRef({})\n // 参数\n const allParams = computed(() => {\n return { ...searchParams.value, ...(props.params ?? {}), ...(props.baseParams ?? {}) }\n })\n\n // total size\n const totalSize = ref(0)\n // table source data\n const source = ref<Record<string, any>[][]>()\n // 获取table model\n const model = useModel()\n // 标识是否为第一次加载\n let firstLoad = true\n // 判断是否支持自动加载\n const isAutoLoad = () => {\n if (Array.isArray(props.data) || typeof props.data === 'function') {\n return true\n }\n return toBoolean(props.autoLoad)\n }\n // 加载数据\n const load = async (\n src: string | SourceFunction | Record<string, any>[][],\n index: number,\n size: number,\n params?: any\n ) => {\n try {\n const ret = await model.load('table', src, index, size, params, firstLoad, locale.value)\n totalSize.value = ret.totalSize\n source.value = ret.page\n } catch (ex: any) {\n console.error('[FoxUI] Load Table Data Fail', ex)\n totalSize.value = 0\n source.value = []\n }\n // 加载完成设置first load为false\n firstLoad = false\n }\n // watch page index 和 page size\n watch([pageIndex, pageSize], ([index, size], [oldIndex, oldSize]) => {\n // 对于page size 改变的情况\n if (size !== oldSize) {\n pageIndex.value = 1\n index = 1\n }\n load(props.data, index, size, allParams.value)\n })\n // watch source 和 params\n watch([() => props.data, allParams], ([src, params], [oldSrc, oldParams]) => {\n // 如果参数为非自动加载,则data和params改变的时候,不自动重新加载数据\n if (!isAutoLoad()) {\n return\n }\n if (src !== oldSrc) {\n firstLoad = true\n }\n // 避免param的其它响应属性导致重复请求\n if (isEqual(src, oldSrc) && isEqual(params, oldParams)) {\n return\n }\n load(src, pageIndex.value, pageSize.value, params)\n })\n // 重新加载数据\n const loadData = (params: Record<string, any> = {}) => {\n searchParams.value = toRaw(params ?? {})\n triggerRef(searchParams)\n nextTick(() => {\n load(props.data, pageIndex.value, pageSize.value, allParams.value)\n })\n }\n // 清空数据\n const clearData = () => {\n totalSize.value = 0\n source.value = []\n }\n\n // 自动加载\n if (isAutoLoad()) {\n loadData()\n }\n\n let currentRow: any = null\n const onCurrentChange = (newRow: any, oldRow: any) => {\n currentRow = newRow\n emitEvent('current-change', newRow, oldRow)\n }\n\n // 组件引用\n const tableRef = ref<any>()\n // 导出方法\n useExpose({\n clearSelection: () => {\n return tableRef?.value.clearSelection()\n },\n getSelectionRows: (): Row[] => {\n return tableRef?.value.getSelectionRows()\n },\n // 设置check列的选中状态\n toggleRowSelection: (row: Row, selected: boolean) => {\n tableRef?.value.toggleRowSelection(row, selected)\n },\n // 通过属性映射设置check列的选中状态\n toggleRowSelectionByProp: (prop: Record<string, any>, selected: boolean) => {\n // source为空,不处理\n if (!source.value) {\n return\n }\n const rows = getRowByProp(source.value as Row[], prop)\n // 匹配的row为空,不处理\n if (rows.length === 0) {\n return\n }\n rows.forEach(row => {\n tableRef?.value.toggleRowSelection(row, selected)\n })\n },\n // 触发所有行的check列的状态改变\n toggleAllSelection: () => {\n tableRef?.value.toggleAllSelection()\n },\n //触发row展开\n toggleRowExpansion: (row: Row, expanded: boolean) => {\n tableRef?.value.toggleRowExpansion(row, expanded)\n },\n //通过属性触发row展开\n toggleRowExpansionByProp: (prop: Record<string, any>, expanded: boolean) => {\n // source为空,不处理\n if (!source.value) {\n return\n }\n const rows = getRowByProp(source.value as Row[], prop)\n // 匹配的row为空,不处理\n if (rows.length === 0) {\n return\n }\n rows.forEach(row => {\n tableRef?.value.toggleRowExpansion(row, expanded)\n })\n },\n // 设置选中行(单行选中)\n setCurrentRow: (row?: Row) => {\n tableRef?.value.setCurrentRow(row)\n },\n // 通过属性映射设置选中行(单行选中)\n setCurrentRowByProp: (prop: Record<string, any>) => {\n // source为空,不处理\n if (!source.value) {\n return\n }\n const rows = getRowByProp(source.value as Row[], prop)\n // 匹配的row为空,不处理\n if (rows.length === 0) {\n return\n }\n tableRef?.value.setCurrentRow(rows[0])\n },\n getCurrentRow: () => {\n return currentRow\n },\n clearSort: () => {\n tableRef?.value.clearSort()\n },\n clearFilter: (columnKeys?: string[]) => {\n tableRef?.value.clearFilter(columnKeys)\n },\n doLayout: () => {\n tableRef?.value.doLayout()\n },\n sort: (prop: string, order: string) => {\n tableRef?.value.sort(prop, order)\n },\n scrollTo: (options: ScrollToOptions | number, yCoord?: number) => {\n tableRef?.value.scrollTo(options, yCoord)\n },\n setScrollTop: (top: number) => {\n tableRef?.value.setScrollTop(top)\n },\n setScrollLeft: (left: number) => {\n tableRef?.value.setScrollLeft(left)\n },\n // 加载数据\n loadData,\n // 清空数据\n clearData,\n // 获取数据\n getData() {\n return source.value\n },\n // 获取total size\n getTotalSize() {\n return totalSize.value\n },\n // get page index\n getPageIndex() {\n return pageIndex.value\n },\n // get page size\n getPageSize() {\n return pageSize.value\n }\n })\n\n return () => {\n const attrs = context.attrs\n const tableData = {\n ...attrs,\n [`onCurrentChange`]: onCurrentChange,\n data: source.value,\n ref: tableRef,\n class: classes.value\n }\n\n const tableChildren: Record<string, any> = {}\n // 加入default slot\n if (context.slots.default) {\n tableChildren.default = context.slots.default\n }\n // 加入append slot\n if (context.slots.append) {\n tableChildren.append = context.slots.append\n }\n // 加入empty slot\n if (context.slots.empty) {\n tableChildren.empty = context.slots.empty\n }\n\n // default slots\n const defaultSlots: VNode[] = []\n\n const tableNode: VNode = h(ElTable, tableData, tableChildren)\n // 加入\n defaultSlots.push(tableNode)\n\n if (typeof context.slots.pagination === 'function') {\n const paginationNode: any = context.slots.pagination()\n defaultSlots.push(paginationNode)\n } else if (props.paginationVisible) {\n // 创建pagination\n const paginationData = {\n class: paginationClass.value,\n total: totalSize.value,\n pageSize: pageSize.value,\n [`onUpdate:pageSize`]: onPageSizeChange,\n pageSizes: props.pageSizes,\n currentPage: pageIndex.value,\n [`onUpdate:currentPage`]: onPageIndexChange,\n hideOnSinglePage: props.hideOnSinglePage,\n layout: props.paginationLayout,\n small: true\n }\n const paginationNode = h(ElPagination, paginationData)\n defaultSlots.push(paginationNode)\n }\n\n const children: Record<string, any> = {\n default: () => defaultSlots\n }\n\n // 创建root node\n const formatProps = excludeProps(props, tableProps, paginationProps)\n const rootData: Record<string, any> = { ...formatProps, prop: `${props.prop}_item` }\n rootData[`contentClass`] = `${prefixCls}__wrap`\n const rootNode: VNode = h(Item, rootData, children)\n return rootNode\n }\n }\n }\n}\n","<script lang=\"ts\">\nimport Item from '../item/index.vue'\nimport { createComponent } from '@/utils/create'\nimport { component } from './common'\nconst { componentName, create, scope } = createComponent('table-item')\n\nexport default create(component(componentName, scope, Item))\n</script>\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-11-15 23:34:14\n */\nimport { toRaw, isReactive, ComponentPublicInstance, getCurrentInstance } from 'vue'\nimport { Item, SourceFunction } from './types'\nimport { isObject } from '@/utils/commons'\nimport { getAPI } from '@/api'\n\n/**\n * 获取item text\n * @param props\n * @param item\n * @returns\n */\nexport function getItemText(props: Record<string, any>, item: Item): string | number {\n if (typeof props.textKey === 'string' && props.textKey.length > 0) {\n return item[props.textKey]\n }\n return item.text\n}\n\n/**\n * 获取item value\n * @param props\n * @param item\n * @returns\n */\nexport function getItemValue(props: Record<string, any>, item: Item): string | boolean | number {\n if (typeof props.valueKey === 'string' && props.valueKey.length > 0) {\n return item[props.valueKey]\n }\n return item.value\n}\n\n/**\n * 数据model\n */\nexport class Model {\n /**\n * proxy\n */\n private proxy: ComponentPublicInstance\n\n /**\n * 构造函数\n * @param proxy\n */\n public constructor(proxy: ComponentPublicInstance) {\n this.proxy = proxy\n }\n\n /**\n * 加载数据源\n * @param src\n * @returns\n */\n public async load(\n componentType: string,\n src: SourceFunction | Item[][] | Item[] | string,\n params?: any\n ): Promise<Item[][] | Item[] | string[] | string[][]> {\n // 数组类型,直接返回\n if (Array.isArray(src)) {\n return src\n }\n // 函数数据源\n if (typeof src === 'function') {\n return await src(params)\n }\n\n //获取radio的api函数\n const func = getAPI(this.proxy, componentType)\n if (func === null) {\n console.error(`${componentType} component not found api function`)\n return []\n }\n if (isObject(params) && isReactive(params)) {\n params = toRaw(params)\n }\n return await func(src, params)\n }\n}\n\n/**\n * 使用model\n * @returns\n */\nexport function useModel(): Model {\n const instance = getCurrentInstance()!\n return new Model(instance.proxy!)\n}\n\n/**\n * item是否相等\n * @param props\n * @param x\n * @param y\n * @returns\n */\nexport function isEqualsItem(props: Record<string, any>, x: Item | null, y: Item | null) {\n if (x === y) {\n return true\n }\n if (x === null || y === null) {\n return false\n }\n const xText = getItemText(props, x)\n const yText = getItemText(props, y)\n if (xText !== yText) {\n return false\n }\n const xValue = getItemValue(props, x)\n const yValue = getItemValue(props, y)\n if (xValue !== yValue) {\n return false\n }\n return true\n}\n\n/**\n * value转换为item\n * @param value\n * @param valueType\n * @param items\n * @returns\n */\nexport function valueToItem(props: Record<string, any>, value: any, valueType: string, items: Item[]): Item | null {\n if (items.length == 0) {\n return null\n }\n if (value === '' || value === null || value === undefined) {\n return null\n }\n\n // 结果item集合\n let result: Item | null = null\n\n for (let item of items) {\n let matched = false\n if (valueType === 'text') {\n const text = getItemText(props, item)\n matched = text === value\n } else if (valueType === 'item') {\n matched = isEqualsItem(props, item, value as Item)\n } else {\n // 如果item不存在value,则对比text\n let val = getItemValue(props, item)\n if (val == null) {\n val = getItemText(props, item)\n }\n matched = val === value\n }\n if (matched) {\n result = item\n break\n }\n }\n return result\n}\n\n/**\n * string转换为item\n * @param text\n * @returns\n */\nexport function stringToItem(text: string): Item {\n return {\n text,\n value: text\n }\n}\n","/*\n * @Author: 江成\n * @Date: 2022-11-08 12:57:56\n */\n\nimport { h, computed, SetupContext, VNode, ref, PropType, watchEffect, watch, toRaw } from 'vue'\nimport { domainItemProps, itemProps } from '../item/common'\nimport { disabledProperty, readonlyProperty, toValue, defineItem } from '@/utils/domain'\nimport { isEmptyString, excludeProps, toBoolean } from '@/utils/commons'\nimport { useExpose } from '@/utils/use-expose'\nimport { valueToItem, Model, useModel, isEqualsItem, getItemText, getItemValue, stringToItem } from './model'\nimport { ValueType, Item, SourceFunction, Size, ItemType } from './types'\n\nimport { ElRadio, ElRadioButton, ElRadioGroup } from '@/base'\n\nconst radioProps = {\n // model value\n modelValue: {\n type: [String, Object, Boolean, Number] as PropType<string | Item | boolean | number>,\n required: false\n },\n // 数据源\n source: {\n type: [Array, Function, String] as PropType<Item[] | SourceFunction | string>,\n default: []\n },\n // 参数\n params: {\n type: Object\n },\n // 返回value类型\n valueType: {\n type: String as PropType<ValueType>,\n required: false,\n default: 'value'\n },\n // text key\n textKey: {\n type: [String],\n required: false,\n default: 'text'\n },\n // value key\n valueKey: {\n type: [String],\n required: false,\n default: 'value'\n },\n // size\n size: {\n type: [String] as PropType<Size>,\n required: false\n },\n // text color\n textColor: {\n type: [String] as PropType<string>,\n required: false\n },\n // fill\n fill: {\n type: [String] as PropType<string>,\n required: false\n },\n // 边框\n border: {\n type: [Boolean] as PropType<boolean>,\n required: false\n },\n // item类型\n itemType: {\n type: [String] as PropType<ItemType>,\n required: false,\n default: 'radio'\n },\n // item class\n itemClass: {\n type: [String] as PropType<string>,\n required: false\n }\n}\n\nexport function component(componentName: string, scope: string, ItemNode: any) {\n return {\n // 是否继承属性\n inheritAttrs: true,\n // 属性\n props: {\n ...domainItemProps,\n ...itemProps,\n ...radioProps\n },\n // 事件\n emits: ['change', 'update:modelValue'],\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 定义domain item\n const { emitEvent } = defineItem(\n {\n componentName\n },\n props.prop ?? props.name\n )\n // inner radio group组件对应的model value\n const selectedValue = ref<any>(null)\n // inner radio group组件的select item列表\n const selectedItem = ref<Item | null>(null)\n // 更新selected\n const updateSelected = (value: any, valueType: string, items: Item[], triggerEmit: boolean = true) => {\n // value 转换为 items\n const newItem = valueToItem(props, value, valueType, items)\n\n // new item为null的情况\n if (newItem === null) {\n // 如果数据不变,则不做任何处理\n if (selectedItem.value === null) {\n return\n }\n selectedItem.value = null\n selectedValue.value = null\n if (triggerEmit) {\n emitEvent('update:modelValue', null)\n emitEvent('change', null)\n }\n return\n }\n\n // 数据是否一致\n const flag = isEqualsItem(props, newItem, selectedItem.value)\n if (!flag) {\n // 更新value\n selectedValue.value = value\n // 更新select item\n const rawItem = toRaw(newItem) as Item\n selectedItem.value = rawItem\n\n let newModelValue: any = null\n // 需要根据属性上的valueType转换为不同的model value\n if (props.valueType === 'text') {\n newModelValue = getItemText(props, rawItem)\n } else if (props.valueType === 'item') {\n newModelValue = rawItem\n } else {\n newModelValue = getItemValue(props, rawItem)\n }\n if (triggerEmit) {\n emitEvent('update:modelValue', newModelValue)\n emitEvent('change', newModelValue)\n }\n }\n }\n // 数据items\n const options = ref<Item[]>([])\n // 获取model\n const model = useModel()\n //watch source and params change\n watch(\n [() => props.source, () => props.params],\n async ([source, params]) => {\n if (source) {\n const res = await model.load('radio', source, params)\n if (res.length > 0) {\n let firstItem = res[0]\n // 如果为字符串数组,则需要转换为Item数组\n if (typeof firstItem == 'string') {\n let strList = res as string[]\n let items = strList.map(str => {\n return stringToItem(str)\n })\n options.value = items\n } else {\n options.value = res as Item[]\n }\n }\n }\n },\n { immediate: true }\n )\n // 不需要立即执行,数据源加载完成后,会触发\n watch([() => options.value, () => props.modelValue], ([items, value]) => {\n updateSelected(value, props.valueType, items, false)\n })\n\n // 是否禁用\n const disabled = disabledProperty(computed(() => props.disabled))\n // 是否只读\n const readonly = readonlyProperty(computed(() => props.readonly))\n\n const prefixCls = componentName\n // root class\n const classes = computed(() => {\n return {\n [prefixCls]: true\n }\n })\n\n // change\n const onChange = (val: any) => {\n updateSelected(val, 'value', options.value, true)\n }\n\n // hint text\n let hintText = toValue(props, 'hintText')\n // hint visible\n let hintVisible = toValue(props, 'hintVisible')\n\n // render radio options\n const renderRadioOptions = (items: Item[]) => {\n const optionNodes: VNode[] = []\n items.forEach((item: Item, index: number) => {\n // 获取item value\n const value = getItemValue(props, item)\n // 获取item text\n const text = getItemText(props, item)\n // item disabled\n const disabled = toBoolean(item.disabled)\n // key\n const key = `${value}_${index}`\n // option data\n const optionData = {\n key,\n class: props.itemClass,\n label: value,\n disabled,\n size: props.size,\n border: toBoolean(props.border)\n }\n if (props.itemType === 'button') {\n optionNodes.push(h(ElRadioButton, optionData, { default: () => [text] }))\n } else {\n optionNodes.push(h(ElRadio, optionData, { default: () => [text] }))\n }\n })\n return optionNodes\n }\n\n return () => {\n const attrs = context.attrs\n const radioGroupData: any = {\n ...attrs,\n class: classes.value,\n disabled: disabled.value || readonly.value,\n modelValue: selectedValue.value,\n [`text-color`]: props.textColor,\n fill: props.fill,\n onChange\n }\n\n // default slots\n const defaultSlots: VNode[] = []\n\n // radio group children\n const radioGroupChildren: Record<string, any> = {}\n if (context.slots.options) {\n // 加入radio slot\n radioGroupChildren.default = context.slots.options\n } else {\n // 加入radio slot\n radioGroupChildren.default = () => renderRadioOptions(options.value)\n }\n const radioGroupNode: VNode = h(ElRadioGroup, radioGroupData, radioGroupChildren)\n // 加入\n defaultSlots.push(radioGroupNode)\n\n // 创建item children\n const children: Record<string, any> = {\n default: () => defaultSlots\n }\n // 加入label slot\n if (context.slots.default) {\n const slot = context.slots.default()\n children.label = () => {\n return slot\n }\n }\n\n // 创建root node\n const formatProps = excludeProps(props, radioProps)\n const rootData = {\n ...formatProps,\n hintText: hintText.value,\n hintVisible: hintVisible.value,\n prop: `${props.prop ?? props.name}_item`\n }\n const rootNode: VNode = h(ItemNode, rootData, children)\n return rootNode\n }\n }\n }\n}\n","<!--\n * @Author: 江成\n * @Date: 2022-11-08 12:57:32\n-->\n<script lang=\"ts\">\nimport Item from '../item/index.vue'\nimport { createComponent } from '@/utils/create'\nimport { component } from './common'\nconst { componentName, create, scope } = createComponent('radio-item')\n\nexport default create(component(componentName, scope, Item))\n</script>\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-11-15 23:34:14\n */\nimport { toRaw, isReactive, ComponentPublicInstance, getCurrentInstance } from 'vue'\nimport { Item, SourceFunction } from './types'\nimport { isObject } from '@/utils/commons'\nimport { getAPI } from '@/api'\n\n/**\n * 获取item text\n * @param props\n * @param item\n * @returns\n */\nexport function getItemText(props: Record<string, any>, item: Item): string | number {\n if (typeof props.textKey === 'string' && props.textKey.length > 0) {\n return item[props.textKey]\n }\n return item.text\n}\n\n/**\n * 获取item value\n * @param props\n * @param item\n * @returns\n */\nexport function getItemValue(props: Record<string, any>, item: Item): string | boolean | number {\n if (typeof props.valueKey === 'string' && props.valueKey.length > 0) {\n return item[props.valueKey]\n }\n return item.value\n}\n\n/**\n * 数据model\n */\nexport class Model {\n /**\n * proxy\n */\n private proxy: ComponentPublicInstance\n\n /**\n * 构造函数\n * @param proxy\n */\n public constructor(proxy: ComponentPublicInstance) {\n this.proxy = proxy\n }\n\n /**\n * 加载数据源\n * @param src\n * @returns\n */\n public async load(\n componentType: string,\n src: SourceFunction | Item[][] | Item[] | string,\n params?: any\n ): Promise<Item[][] | Item[] | string[] | string[][]> {\n // 数组类型,直接返回\n if (Array.isArray(src)) {\n return src\n }\n // 函数数据源\n if (typeof src === 'function') {\n return await src(params)\n }\n\n //获取checkbox的api函数\n const func = getAPI(this.proxy, componentType)\n if (func === null) {\n console.error(`${componentType} component not found api function`)\n return []\n }\n if (isObject(params) && isReactive(params)) {\n params = toRaw(params)\n }\n return await func(src, params)\n }\n}\n\n/**\n * 使用model\n * @returns\n */\nexport function useModel(): Model {\n const instance = getCurrentInstance()!\n return new Model(instance.proxy!)\n}\n\n/**\n * item是否相等\n * @param props\n * @param x\n * @param y\n * @returns\n */\nexport function isEqualsItem(props: Record<string, any>, x: Item | null, y: Item | null) {\n if (x === y) {\n return true\n }\n if (x === null || y === null) {\n return false\n }\n const xText = getItemText(props, x)\n const yText = getItemText(props, y)\n if (xText !== yText) {\n return false\n }\n const xValue = getItemValue(props, x)\n const yValue = getItemValue(props, y)\n if (xValue !== yValue) {\n return false\n }\n return true\n}\n\n/**\n * value转换为item\n * @param value\n * @param valueType\n * @param items\n * @returns\n */\nexport function valuesToItems(props: Record<string, any>, value: any, valueType: string, items: Item[]): Item[] | null {\n if (items.length == 0) {\n return null\n }\n if (value === '' || value === null || value === undefined) {\n return null\n }\n if (!Array.isArray(value)) {\n value = [value]\n }\n\n // 结果item集合\n const result: Item[] = []\n\n value.forEach((curVal: any) => {\n for (let item of items) {\n let matched = false\n if (valueType === 'text') {\n const text = getItemText(props, item)\n matched = text === curVal\n } else if (valueType === 'item') {\n matched = isEqualsItem(props, item, curVal as Item)\n } else {\n // 如果item不存在value,则对比text\n let val = getItemValue(props, item)\n if (val == null) {\n val = getItemText(props, item)\n }\n matched = val === curVal\n }\n if (matched) {\n result.push(item)\n break\n }\n }\n })\n return result\n}\n\n/**\n * string转换为item\n * @param text\n * @returns\n */\nexport function stringToItem(text: string): Item {\n return {\n text,\n value: text\n }\n}\n","/*\n * @Author: 江成\n * @Date: 2022-11-08 12:57:56\n */\n\nimport { h, computed, SetupContext, VNode, ref, PropType, watchEffect, watch, toRaw } from 'vue'\nimport { domainItemProps, itemProps } from '../item/common'\nimport { disabledProperty, readonlyProperty, toValue, defineItem } from '@/utils/domain'\nimport { isEmptyString, excludeProps, toBoolean, toNumber } from '@/utils/commons'\nimport { useExpose } from '@/utils/use-expose'\nimport { valuesToItems, Model, useModel, isEqualsItem, getItemText, getItemValue, stringToItem } from './model'\nimport { ValueType, Item, SourceFunction, Size, ItemType } from './types'\n\nimport { ElCheckbox, ElCheckboxButton, ElCheckboxGroup } from '@/base'\n\nconst checkboxProps = {\n // model value\n modelValue: {\n type: [Array, String] as PropType<Array<string | Item | boolean | number> | string>,\n required: false\n },\n // 数据源\n source: {\n type: [Array, Function, String] as PropType<Item[] | SourceFunction | string>,\n default: []\n },\n // 参数\n params: {\n type: Object\n },\n // 返回value类型\n valueType: {\n type: String as PropType<ValueType>,\n required: false,\n default: 'value'\n },\n // text key\n textKey: {\n type: [String],\n required: false,\n default: 'text'\n },\n // value key\n valueKey: {\n type: [String],\n required: false,\n default: 'value'\n },\n // size\n size: {\n type: [String] as PropType<Size>,\n required: false\n },\n // text color\n textColor: {\n type: [String] as PropType<string>,\n required: false\n },\n // fill\n fill: {\n type: [String] as PropType<string>,\n required: false\n },\n // 边框\n border: {\n type: [Boolean] as PropType<boolean>,\n required: false\n },\n // 可被勾选的 checkbox 的最小数量\n min: {\n type: [String, Number] as PropType<string | number>,\n required: false\n },\n // 可被勾选的 checkbox 的最大数量\n max: {\n type: [String, Number] as PropType<string | number>,\n required: false\n },\n // item类型\n itemType: {\n type: [String] as PropType<ItemType>,\n required: false,\n default: 'checkbox'\n },\n // item class\n itemClass: {\n type: [String] as PropType<string>,\n required: false\n }\n}\n\nexport function component(componentName: string, scope: string, ItemNode: any) {\n return {\n // 是否继承属性\n inheritAttrs: false,\n // 属性\n props: {\n ...domainItemProps,\n ...itemProps,\n ...checkboxProps\n },\n // 事件\n emits: ['change', 'update:modelValue'],\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 定义domain item\n const { emitEvent } = defineItem(\n {\n componentName\n },\n props.prop ?? props.name\n )\n // inner checkbox group组件对应的model value\n const selectedValue = ref<any>([])\n // inner checkbox group组件的select item列表\n const selectedItems = ref<Item[]>([])\n // 更新selected\n const updateSelected = (value: any, valueType: string, items: Item[], triggerEmit: boolean = true) => {\n // value 转换为 items\n const newItems = valuesToItems(props, value, valueType, items)\n // null 情况处理\n if (newItems === null) {\n // 如果当前选择也为空,就不做任何处理\n if (selectedItems.value === null || selectedItems.value.length === 0) {\n return\n }\n selectedValue.value = []\n selectedItems.value = []\n if (triggerEmit) {\n emitEvent('update:modelValue', [])\n emitEvent('change', [])\n }\n return\n }\n\n // 数据是否一致\n let flag = true\n if (newItems.length !== selectedItems.value.length) {\n flag = false\n } else {\n for (let i = 0; i < newItems.length; i++) {\n const x = newItems[i]\n const y = selectedItems.value[i]\n if (!isEqualsItem(props, x, y)) {\n flag = false\n break\n }\n }\n }\n\n if (!flag) {\n // 更新select items\n selectedItems.value = newItems\n let newSelectedValue: any = []\n let newModelValue: any = []\n newItems.forEach(item => {\n newSelectedValue.push(getItemValue(props, item))\n if (props.valueType === 'text') {\n newModelValue.push(getItemText(props, item))\n } else if (props.valueType === 'item') {\n newModelValue.push(item)\n } else {\n newModelValue.push(getItemValue(props, item))\n }\n })\n selectedValue.value = newSelectedValue\n const rawValue = toRaw(newModelValue)\n if (triggerEmit) {\n emitEvent('update:modelValue', rawValue)\n emitEvent('change', rawValue)\n }\n }\n }\n // 数据items\n const options = ref<Item[]>([])\n // 获取model\n const model = useModel()\n //watch source and params change\n watch(\n [() => props.source, () => props.params],\n async ([source, params]) => {\n if (source) {\n const res = await model.load('checkbox', source, params)\n if (res.length > 0) {\n let firstItem = res[0]\n // 如果为字符串数组,则需要转换为Item数组\n if (typeof firstItem == 'string') {\n let strList = res as string[]\n let items = strList.map(str => {\n return stringToItem(str)\n })\n options.value = items\n } else {\n options.value = res as Item[]\n }\n }\n }\n },\n { immediate: true }\n )\n // 不需要立即执行,数据源加载完成后,会触发\n watch([() => options.value, () => props.modelValue], ([items, value]) => {\n updateSelected(value, props.valueType, items, false)\n })\n\n // 是否禁用\n const disabled = disabledProperty(computed(() => props.disabled))\n // 是否只读\n const readonly = readonlyProperty(computed(() => props.readonly))\n\n const prefixCls = componentName\n // root class\n const classes = computed(() => {\n return {\n [prefixCls]: true\n }\n })\n\n // change\n const onChange = (val: any) => {\n updateSelected(val, 'value', options.value, true)\n }\n\n // hint text\n let hintText = toValue(props, 'hintText')\n // hint visible\n let hintVisible = toValue(props, 'hintVisible')\n\n // render checkbox options\n const renderCheckboxOptions = (items: Item[]) => {\n const optionNodes: VNode[] = []\n items.forEach((item: Item, index: number) => {\n // 获取item value\n const value = getItemValue(props, item)\n // 获取item text\n const text = getItemText(props, item)\n // item disabled\n const disabled = toBoolean(item.disabled)\n // key\n const key = `${value}_${index}`\n // option data\n const optionData = {\n key,\n class: props.itemClass,\n label: value,\n disabled,\n size: props.size,\n border: toBoolean(props.border)\n }\n if (props.itemType === 'button') {\n optionNodes.push(h(ElCheckboxButton, optionData, { default: () => [text] }))\n } else {\n optionNodes.push(h(ElCheckbox, optionData, { default: () => [text] }))\n }\n })\n return optionNodes\n }\n\n return () => {\n const attrs = context.attrs\n const checkboxGroupData: any = {\n ...attrs,\n class: classes.value,\n disabled: disabled.value || readonly.value,\n modelValue: selectedValue.value,\n [`text-color`]: props.textColor,\n fill: props.fill,\n max: toNumber(props.max),\n min: toNumber(props.min),\n onChange\n }\n\n // default slots\n const defaultSlots: VNode[] = []\n\n // checkbox group children\n const checkboxGroupChildren: Record<string, any> = {}\n if (context.slots.options) {\n // 加入checkbox slot\n checkboxGroupChildren.default = context.slots.options\n } else {\n // 加入radio slot\n checkboxGroupChildren.default = () => renderCheckboxOptions(options.value)\n }\n const radioGroupNode: VNode = h(ElCheckboxGroup, checkboxGroupData, checkboxGroupChildren)\n // 加入\n defaultSlots.push(radioGroupNode)\n\n // 创建item children\n const children: Record<string, any> = {\n default: () => defaultSlots\n }\n // 加入label slot\n if (context.slots.default) {\n const slot = context.slots.default()\n children.label = () => {\n return slot\n }\n }\n\n // 创建root node\n const formatProps = excludeProps(props, checkboxProps)\n const rootData = {\n ...formatProps,\n hintText: hintText.value,\n hintVisible: hintVisible.value,\n prop: `${props.prop ?? props.name}_item`\n }\n const rootNode: VNode = h(ItemNode, rootData, children)\n return rootNode\n }\n }\n }\n}\n","<!--\n * @Author: 江成\n * @Date: 2022-11-08 12:57:32\n-->\n<script lang=\"ts\">\nimport Item from '../item/index.vue'\nimport { createComponent } from '@/utils/create'\nimport { component } from './common'\nconst { componentName, create, scope } = createComponent('checkbox-item')\n\nexport default create(component(componentName, scope, Item))\n</script>\n","import { h, computed, SetupContext, VNode, ref, PropType } from 'vue'\nimport { domainItemProps, itemProps } from '../item/common'\nimport { disabledProperty, readonlyProperty, toValue, property, defineItem } from '@/utils/domain'\nimport { isEmptyString, excludeProps, toNumber } from '@/utils/commons'\nimport { useExpose } from '@/utils/use-expose'\nimport { ElRate } from '@/base'\n\n// input props\nexport const inputProps = {\n // model value\n modelValue: {\n type: [Number, String] as PropType<string | number>,\n required: false\n }\n}\n\n/**\n * 创建组件\n * @param componentName\n * @param scope\n * @param Item\n */\nexport function component(componentName: string, scope: string, Item: any) {\n return {\n // 属性\n props: {\n // item属性(domain范围)\n ...domainItemProps,\n // item属性\n ...itemProps,\n // input属性\n ...inputProps\n },\n // 事件\n emits: ['change', 'update:modelValue', 'blur', 'focus', 'clear', 'input'],\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 定义domain item\n const { emitEvent } = defineItem(\n {\n componentName\n },\n props.prop ?? props.name\n )\n // 是否禁用\n const disabled = disabledProperty(computed(() => props.disabled))\n // 是否只读\n const readonly = readonlyProperty(computed(() => props.readonly))\n // 获取model value\n const modelValue = toValue(props, 'modelValue', val => {\n return toNumber(val)\n })\n\n const prefixCls = componentName\n // root class\n const classes = computed(() => {\n return {\n [prefixCls]: true\n }\n })\n\n // change\n const onChange = (val: string | number) => {\n emitEvent('update:modelValue', val)\n emitEvent('change', val)\n }\n // hint text\n let hintText = toValue(props, 'hintText')\n // hint visible\n let hintVisibleRef = ref(false)\n\n // 组件引用\n const inputRef = ref<any>()\n // 导出方法\n useExpose({})\n\n return () => {\n const attrs = context.attrs\n const inputData = {\n ...attrs,\n ref: inputRef,\n class: classes.value,\n readonly: readonly.value || disabled.value,\n modelValue: modelValue.value,\n onChange\n }\n\n const inputChildren: Record<string, any> = {}\n\n // default slots\n const defaultSlots: VNode[] = []\n\n const inputNode: VNode = h(ElRate, inputData, inputChildren)\n // 加入\n defaultSlots.push(inputNode)\n\n const children: Record<string, any> = {\n default: () => defaultSlots\n }\n // 加入label slot\n if (context.slots.default) {\n const slot = context.slots.default()\n children.label = () => {\n return slot\n }\n }\n\n // 创建root node\n const formatProps = excludeProps(props, inputProps)\n const rootData = {\n ...formatProps,\n hintText: hintText.value,\n hintVisible: hintVisibleRef.value,\n prop: `${props.prop}_item`\n }\n const rootNode: VNode = h(Item, rootData, children)\n return rootNode\n }\n }\n }\n}\n","<!--\n * @Author: 江成\n * @Date: 2022-11-12 14:37:53\n-->\n<script lang=\"ts\">\nimport Item from '../item/index.vue'\nimport { createComponent } from '@/utils/create'\nimport { component } from './common'\nconst { componentName, create, scope } = createComponent('rate-item')\n\nexport default create(component(componentName, scope, Item))\n</script>\n","import { h, computed, SetupContext, VNode, ref, PropType } from 'vue'\nimport { domainItemProps, itemProps } from '../item/common'\nimport { disabledProperty, readonlyProperty, toValue, property, defineItem } from '@/utils/domain'\nimport { isEmptyString, excludeProps } from '@/utils/commons'\nimport { useExpose } from '@/utils/use-expose'\nimport { ElSwitch } from '@/base'\n\n// input props\nexport const inputProps = {\n // model value\n modelValue: {\n type: [Boolean, String, Number] as PropType<boolean | string | string>,\n required: false\n }\n}\n\n/**\n * 创建组件\n * @param componentName\n * @param scope\n * @param Item\n */\nexport function component(componentName: string, scope: string, Item: any) {\n return {\n // 属性\n props: {\n // item属性(domain范围)\n ...domainItemProps,\n // item属性\n ...itemProps,\n // input属性\n ...inputProps\n },\n // 事件\n emits: ['change', 'update:modelValue', 'blur', 'focus', 'clear', 'input'],\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 定义domain item\n const { emitEvent } = defineItem(\n {\n componentName\n },\n props.prop ?? props.name\n )\n // 是否禁用\n const disabled = disabledProperty(computed(() => props.disabled))\n // 是否只读\n const readonly = readonlyProperty(computed(() => props.readonly))\n // 获取model value\n const modelValue = toValue(props, 'modelValue')\n\n const prefixCls = componentName\n // root class\n const classes = computed(() => {\n return {\n [prefixCls]: true\n }\n })\n\n // change\n const onChange = (val: string | number) => {\n emitEvent('update:modelValue', val)\n emitEvent('change', val)\n }\n // hint text\n let hintText = toValue(props, 'hintText')\n // hint visible\n let hintVisible = toValue(props, 'hintVisible')\n\n // 组件引用\n const inputRef = ref<any>()\n // 导出方法\n useExpose({})\n\n return () => {\n const attrs = context.attrs\n const inputData = {\n ...attrs,\n ref: inputRef,\n class: classes.value,\n readonly: readonly.value,\n disabled: disabled.value,\n modelValue: modelValue.value,\n onChange\n }\n\n const inputChildren: Record<string, any> = {}\n\n // default slots\n const defaultSlots: VNode[] = []\n\n const inputNode: VNode = h(ElSwitch, inputData, inputChildren)\n // 加入\n defaultSlots.push(inputNode)\n\n const children: Record<string, any> = {\n default: () => defaultSlots\n }\n // 加入label slot\n if (context.slots.default) {\n const slot = context.slots.default()\n children.label = () => {\n return slot\n }\n }\n\n // 创建root node\n const formatProps = excludeProps(props, inputProps)\n const rootData = {\n ...formatProps,\n hintText: hintText.value,\n hintVisible: hintVisible.value,\n prop: `${props.prop}_item`\n }\n const rootNode: VNode = h(Item, rootData, children)\n return rootNode\n }\n }\n }\n}\n","<!--\n * @Author: 江成\n * @Date: 2022-11-12 17:49:20\n-->\n<script lang=\"ts\">\nimport Item from '../item/index.vue'\nimport { createComponent } from '@/utils/create'\nimport { component } from './common'\nconst { componentName, create, scope } = createComponent('switch-item')\n\nexport default create(component(componentName, scope, Item))\n</script>\n","/*\n * @Author: 江成\n * @Date: 2022-10-28 15:19:10\n */\nimport { h, SetupContext, ref, provide } from 'vue'\nimport { ElDialog } from '@/base'\n\n// inner page scope key\nconst InnerPageScopeKey = Symbol.for('InnerPageScopeKey')\n\n// dialog item context\nconst DialogItemStateKey = Symbol.for('DialogItemStateKey')\n\n/**\n * dialog Item State\n */\ninterface DialogItemState {\n // before close 回调\n beforeClose?: Function\n}\n\nexport function component(componentName: string, scope: string) {\n return {\n // 属性\n props: {\n // 标题\n title: {\n type: [String]\n },\n // 是否可拖动\n draggable: {\n type: [Boolean],\n default: true\n },\n // 是否加入body\n appendToBody: {\n type: [Boolean],\n default: true\n },\n // 是否可以通过点击 modal 关闭 Dialog\n closeOnClickModal: {\n type: [Boolean],\n default: false\n },\n // 是否可以通过按下 ESC 关闭 Dialog\n closeOnPressEscape: {\n type: [Boolean],\n default: true\n }\n },\n // setup\n setup(props: Record<string, any>, context: SetupContext) {\n // 设置inner page范围\n provide(InnerPageScopeKey, true)\n\n // state\n const state: DialogItemState = {}\n provide(DialogItemStateKey, state)\n // before close\n const beforeClose = (done: { (): void }) => {\n if (typeof state.beforeClose === 'function') {\n state.beforeClose(done)\n }\n }\n\n const modelValue = ref(true)\n const onUpdateModelValue = (val: boolean) => {\n modelValue.value = val\n }\n return () => {\n const attrs = context.attrs\n const dialogData = {\n ...attrs,\n title: props.title,\n draggable: props.draggable,\n modelValue: modelValue.value,\n 'onUpdate:modelValue': onUpdateModelValue,\n 'append-to-body': props.appendToBody,\n 'close-on-click-modal': props.closeOnClickModal,\n 'close-on-press-escape': props.closeOnPressEscape,\n 'before-close': beforeClose\n }\n\n const children: any = {}\n if (typeof context.slots.default === 'function') {\n const node = context.slots.default()\n children.default = () => node\n }\n return h(ElDialog, dialogData, children)\n }\n }\n }\n}\n","<!--\n * @Author: 江成\n * @Date: 2022-10-28 15:17:50\n-->\n<script lang=\"ts\">\nimport { createComponent } from '@/utils/create'\nimport { component } from './common'\nconst { componentName, create, scope } = createComponent('dialog-item')\n\nexport default create(component(componentName, scope))\n</script>\n","<!--\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-12-28 09:53:09\n-->\n<script lang=\"ts\">\nimport { h, PropType, computed } from 'vue'\nimport { createComponent } from '@/utils/create'\nconst { componentName, create } = createComponent('ext-icon')\nimport { toPxDesc } from '@/utils/px'\n\nexport default create({\n props: {\n name: { type: String, default: '' },\n size: { type: [String, Number], default: '' },\n classPrefix: { type: String, default: 'fox-icon' },\n fontClassName: { type: String, default: 'foxui-iconfont' },\n color: { type: String, default: '' },\n tag: { type: String as PropType<keyof HTMLElementTagNameMap>, default: 'i' }\n },\n emits: ['click'],\n setup(props, { emit, slots }) {\n const handleClick = (event: Event) => {\n emit('click', event)\n }\n\n const isImage = computed(() => {\n return props.name ? props.name.indexOf('/') !== -1 : false\n })\n\n const prefix = \"fox-icon\"\n\n return () => {\n const _isImage = isImage.value\n return h(\n _isImage ? 'img' : props.tag,\n {\n class: _isImage\n ? `${prefix}__img`\n : `${props.fontClassName} ${prefix} ${props.classPrefix}-${props.name}`,\n style: {\n color: props.color,\n fontSize: toPxDesc(props.size),\n width: toPxDesc(props.size),\n height: toPxDesc(props.size)\n },\n onClick: handleClick,\n src: _isImage ? props.name : ''\n },\n slots.default?.()\n )\n }\n }\n})\n</script>\n","/*\n * @Author: 江成\n * @Date: 2022-12-08 08:29:55\n */\nimport { ref, SetupContext, PropType, h, computed, VNode } from 'vue'\nimport { IndicatorType } from './types'\n\nexport function component(componentName: string, scope: string) {\n return {\n // 属性\n props: {\n // type\n type: {\n type: [String] as PropType<IndicatorType>,\n required: false,\n default: ''\n },\n // color\n color: {\n type: [String] as PropType<string>,\n required: false,\n default: ''\n }\n },\n // setup\n setup(props: Record<string, any>, { slots }: SetupContext) {\n const prefixCls = componentName\n // root class\n const classes = computed(() => {\n let cls: any = {\n [prefixCls]: true\n }\n return cls\n })\n\n // mark class\n const markClasses = computed(() => {\n return {\n [`${prefixCls}__mark`]: true,\n [`${prefixCls}__mark-${props.type}`]: true\n }\n })\n // mark styles\n const markStyles = computed(() => {\n if (props.color) {\n return {\n background: props.color\n }\n } else {\n return null\n }\n })\n\n // text class\n const textClasses = computed(() => {\n return {\n [`${prefixCls}__text`]: true,\n [`${prefixCls}__text-${props.type}`]: true\n }\n })\n // text styles\n const textStyles = computed(() => {\n if (props.color) {\n return {\n color: props.color\n }\n } else {\n return null\n }\n })\n\n return () => {\n // 第一个mark node\n let markNode: VNode | null = null\n // 处理插槽\n if (slots.mark) {\n markNode = slots.mark()[0]\n } else {\n // mark\n const markData = {\n class: markClasses.value,\n style: markStyles.value\n }\n markNode = h('div', markData)\n }\n\n // text\n const textData = {\n class: textClasses.value,\n style: textStyles.value\n }\n const children = slots.default ? slots.default() : []\n const textNode = h('div', textData, children)\n // root\n const data = {\n class: classes.value\n }\n return h('div', data, [markNode, textNode])\n }\n }\n }\n}\n","<!--\n * @Author: 江成\n * @Date: 2022-12-07 23:31:32\n-->\n<script lang=\"ts\">\nimport { component } from './common'\nimport { createComponent } from '@/utils/create'\nconst { componentName, create, scope } = createComponent('indicator')\n// 创建组件\nexport default create(component(componentName, scope))\n</script>\n\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",$=\"Invalid Date\",l=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},g={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,f),s=n-i<0,u=e.clone().add(r+(s?-1:1),f);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:f,y:c,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:h}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},v=\"en\",D={};D[v]=M;var p=function(t){return t instanceof _},S=function t(e,n,r){var i;if(!e)return v;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(v=i),i||!r&&v},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=g;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match(l);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===$)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<w(t)},m.$g=function(t,e,n){return O.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!O.u(e)||e,h=O.p(t),$=function(t,e){var i=O.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},l=function(t,e){return O.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,g=\"set\"+(this.$u?\"UTC\":\"\");switch(h){case c:return r?$(1,0):$(31,11);case f:return r?$(1,M):$(0,M+1);case o:var v=this.$locale().weekStart||0,D=(y<v?y+7:y)-v;return $(r?m-D:m+(6-D),M);case a:case d:return l(g+\"Hours\",0);case u:return l(g+\"Minutes\",1);case s:return l(g+\"Seconds\",2);case i:return l(g+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=O.p(t),h=\"set\"+(this.$u?\"UTC\":\"\"),$=(n={},n[a]=h+\"Date\",n[d]=h+\"Date\",n[f]=h+\"Month\",n[c]=h+\"FullYear\",n[u]=h+\"Hours\",n[s]=h+\"Minutes\",n[i]=h+\"Seconds\",n[r]=h+\"Milliseconds\",n)[o],l=o===a?this.$D+(e-this.$W):e;if(o===f||o===c){var y=this.clone().set(d,1);y.$d[$](l),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else $&&this.$d[$](l);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[O.p(t)]()},m.add=function(r,h){var d,$=this;r=Number(r);var l=O.p(h),y=function(t){var e=w($);return O.w(e.date(e.date()+Math.round(t*r)),$)};if(l===f)return this.set(f,this.$M+r);if(l===c)return this.set(c,this.$y+r);if(l===a)return y(1);if(l===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[l]||1,m=this.$d.getTime()+r*M;return O.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||$;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=O.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,f=n.months,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},c=function(t){return O.s(s%12||12,t,\"0\")},d=n.meridiem||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r},l={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:O.s(a+1,2,\"0\"),MMM:h(n.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:O.s(this.$D,2,\"0\"),d:String(this.$W),dd:h(n.weekdaysMin,this.$W,o,2),ddd:h(n.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:O.s(s,2,\"0\"),h:c(1),hh:c(2),a:d(s,u,!0),A:d(s,u,!1),m:String(u),mm:O.s(u,2,\"0\"),s:String(this.$s),ss:O.s(this.$s,2,\"0\"),SSS:O.s(this.$ms,3,\"0\"),Z:i};return r.replace(y,(function(t,e){return e||l[t]||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,$){var l,y=O.p(d),M=w(r),m=(M.utcOffset()-this.utcOffset())*e,g=this-M,v=O.m(this,M);return v=(l={},l[c]=v/12,l[f]=v,l[h]=v/3,l[o]=(g-m)/6048e5,l[a]=(g-m)/864e5,l[u]=g/n,l[s]=g/e,l[i]=g/t,l)[y]||g,$?v:O.a(v)},m.daysInMonth=function(){return this.endOf(f).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=S(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return O.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),T=_.prototype;return w.prototype=T,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",f],[\"$y\",c],[\"$D\",d]].forEach((function(t){T[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),w.extend=function(t,e){return t.$i||(t(e,_,w),t.$i=!0),w},w.locale=S,w.isDayjs=p,w.unix=function(t){return w(1e3*t)},w.en=D[v],w.Ls=D,w.p={},w}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d\\d/,r=/\\d\\d?/,i=/\\d*[^-_:/,()\\s\\d]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)};var a=function(e){return function(t){this[e]=+t}},f=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],h=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},d={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[r,a(\"seconds\")],ss:[r,a(\"seconds\")],m:[r,a(\"minutes\")],mm:[r,a(\"minutes\")],H:[r,a(\"hours\")],h:[r,a(\"hours\")],HH:[r,a(\"hours\")],hh:[r,a(\"hours\")],D:[r,a(\"day\")],DD:[n,a(\"day\")],Do:[i,function(e){var t=o.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],M:[r,a(\"month\")],MM:[n,a(\"month\")],MMM:[i,function(e){var t=h(\"months\"),n=(h(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=h(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,a(\"year\")],YY:[n,function(e){this.year=s(e)}],YYYY:[/\\d{4}/,a(\"year\")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=s.length,f=0;f<a;f+=1){var h=s[f],u=d[h],c=u&&u[0],l=u&&u[1];s[f]=l?{regex:c,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=s[n];if(\"string\"==typeof i)r+=i.length;else{var o=i.regex,f=i.parser,h=e.slice(r),u=o.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(s=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,s=e.args;this.$u=r;var a=s[1];if(\"string\"==typeof a){var f=!0===s[2],h=!0===s[3],u=f||h,d=s[2];h&&(d=s[2]),o=this.$locale(),!f&&d&&(o=n.Ls[d]),this.$d=function(e,t,n){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var r=c(t)(e),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,h=r.seconds,u=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=h||0,g=u||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(e){return new Date(\"\")}}(t,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_advancedFormat=t()}(this,(function(){\"use strict\";return function(e,t,r){var n=t.prototype,s=n.format;r.en.ordinal=function(e){var t=[\"th\",\"st\",\"nd\",\"rd\"],r=e%100;return\"[\"+e+(t[(r-20)%10]||t[r]||t[0])+\"]\"},n.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return s.bind(this)(e);var n=this.$utils(),a=(e||\"YYYY-MM-DDTHH:mm:ssZ\").replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case\"Q\":return Math.ceil((t.$M+1)/3);case\"Do\":return r.ordinal(t.$D);case\"gggg\":return t.weekYear();case\"GGGG\":return t.isoWeekYear();case\"wo\":return r.ordinal(t.week(),\"W\");case\"w\":case\"ww\":return n.s(t.week(),\"w\"===e?1:2,\"0\");case\"W\":case\"WW\":return n.s(t.isoWeek(),\"W\"===e?1:2,\"0\");case\"k\":case\"kk\":return n.s(String(0===t.$H?24:t.$H),\"k\"===e?1:2,\"0\");case\"X\":return Math.floor(t.$d.getTime()/1e3);case\"x\":return t.$d.getTime();case\"z\":return\"[\"+t.offsetName()+\"]\";case\"zzz\":return\"[\"+t.offsetName(\"long\")+\"]\";default:return e}}));return s.bind(this)(a)}}}));","!function(n,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(n=\"undefined\"!=typeof globalThis?globalThis:n||self).dayjs_plugin_localeData=e()}(this,(function(){\"use strict\";return function(n,e,t){var r=e.prototype,o=function(n){return n&&(n.indexOf?n:n.s)},u=function(n,e,t,r,u){var i=n.name?n:n.$locale(),a=o(i[e]),s=o(i[t]),f=a||s.map((function(n){return n.slice(0,r)}));if(!u)return f;var d=i.weekStart;return f.map((function(n,e){return f[(e+(d||0))%7]}))},i=function(){return t.Ls[t.locale()]},a=function(n,e){return n.formats[e]||function(n){return n.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(n,e,t){return e||t.slice(1)}))}(n.formats[e.toUpperCase()])},s=function(){var n=this;return{months:function(e){return e?e.format(\"MMMM\"):u(n,\"months\")},monthsShort:function(e){return e?e.format(\"MMM\"):u(n,\"monthsShort\",\"months\",3)},firstDayOfWeek:function(){return n.$locale().weekStart||0},weekdays:function(e){return e?e.format(\"dddd\"):u(n,\"weekdays\")},weekdaysMin:function(e){return e?e.format(\"dd\"):u(n,\"weekdaysMin\",\"weekdays\",2)},weekdaysShort:function(e){return e?e.format(\"ddd\"):u(n,\"weekdaysShort\",\"weekdays\",3)},longDateFormat:function(e){return a(n.$locale(),e)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};r.localeData=function(){return s.bind(this)()},t.localeData=function(){var n=i();return{firstDayOfWeek:function(){return n.weekStart||0},weekdays:function(){return t.weekdays()},weekdaysShort:function(){return t.weekdaysShort()},weekdaysMin:function(){return t.weekdaysMin()},months:function(){return t.months()},monthsShort:function(){return t.monthsShort()},longDateFormat:function(e){return a(n,e)},meridiem:n.meridiem,ordinal:n.ordinal}},t.months=function(){return u(i(),\"months\")},t.monthsShort=function(){return u(i(),\"monthsShort\",\"months\",3)},t.weekdays=function(n){return u(i(),\"weekdays\",null,null,n)},t.weekdaysShort=function(n){return u(i(),\"weekdaysShort\",\"weekdays\",3,n)},t.weekdaysMin=function(n){return u(i(),\"weekdaysMin\",\"weekdays\",2,n)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekOfYear=t()}(this,(function(){\"use strict\";var e=\"week\",t=\"year\";return function(i,n,r){var f=n.prototype;f.week=function(i){if(void 0===i&&(i=null),null!==i)return this.add(7*(i-this.week()),\"day\");var n=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,\"millisecond\"),o=this.diff(a,e,!0);return o<0?r(this).startOf(\"week\").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekYear=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.weekYear=function(){var e=this.month(),t=this.week(),n=this.year();return 1===t&&11===e?n+1:0===e&&t>=52?n-1:n}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_dayOfYear=t()}(this,(function(){\"use strict\";return function(e,t,n){t.prototype.dayOfYear=function(e){var t=Math.round((n(this).startOf(\"day\")-n(this).startOf(\"year\"))/864e5)+1;return null==e?t:this.add(e-t,\"day\")}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrAfter=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)}}}));","!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrBefore=i()}(this,(function(){\"use strict\";return function(e,i){i.prototype.isSameOrBefore=function(e,i){return this.isSame(e,i)||this.isBefore(e,i)}}}));","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-08-14 07:24:07\n */\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport advancedFormat from 'dayjs/plugin/advancedFormat'\nimport localeData from 'dayjs/plugin/localeData'\nimport weekOfYear from 'dayjs/plugin/weekOfYear'\nimport weekYear from 'dayjs/plugin/weekYear'\nimport dayOfYear from 'dayjs/plugin/dayOfYear'\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter'\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore'\n\ndayjs.extend(localeData)\ndayjs.extend(advancedFormat)\ndayjs.extend(customParseFormat)\ndayjs.extend(weekOfYear)\ndayjs.extend(weekYear)\ndayjs.extend(dayOfYear)\ndayjs.extend(isSameOrAfter)\ndayjs.extend(isSameOrBefore)\n\nconst DateUtils = {\n /**\n * 格式化\n * @param date\n * @param template\n * @returns\n */\n format(date: Date, template: string): string {\n return dayjs(date).format(template)\n },\n\n /**\n * 解析\n * @param str\n * @param template\n */\n parser(str: string, template: string): Date {\n return dayjs(str, template).toDate()\n },\n\n /**\n * 是否为闫年\n * @return {Boolse} true|false\n */\n isLeapYear(y: number): boolean {\n return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0\n },\n\n /**\n * 返回星期数\n * @return {String}\n */\n getWhatDay(year: number, month: number, day: number): string {\n const date = new Date(year + '/' + month + '/' + day)\n const index = date.getDay()\n const dayNames = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']\n return dayNames[index]\n },\n\n /**\n * 返回星期数\n * @return {Number}\n */\n getMonthPreDay(year: number, month: number): number {\n const date = new Date(year + '/' + month + '/01')\n let day = date.getDay()\n if (day == 0) {\n day = 7\n }\n return day\n },\n\n /**\n * 返回月份天数\n * @return {Number}\n */\n getMonthDays(year: string, month: string): number {\n if (/^0/.test(month)) {\n month = month.split('')[1]\n }\n return ([0, 31, this.isLeapYear(Number(year)) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] as number[])[\n month as any\n ]\n },\n\n /**\n * 补齐数字位数\n * @return {string}\n */\n getNumTwoBit(n: number): string {\n n = Number(n)\n return (n > 9 ? '' : '0') + n\n },\n\n /**\n * 日期对象转成字符串\n * @return {string}\n */\n date2Str: function (date: Date, split?: string): string {\n split = split || '-'\n const y = date.getFullYear()\n const m = this.getNumTwoBit(date.getMonth() + 1)\n const d = this.getNumTwoBit(date.getDate())\n return [y, m, d].join(split)\n },\n\n /**\n * 返回日期格式字符串\n * @param {Number} 0返回今天的日期、1返回明天的日期,2返回后天得日期,依次类推\n * @return {string} '2014-12-31'\n */\n getDay(i: number): string {\n i = i || 0\n let date = new Date()\n const diff = i * (1000 * 60 * 60 * 24)\n date = new Date(date.getTime() + diff)\n return this.date2Str(date)\n },\n\n /**\n * 时间比较\n * @return\n */\n compareDate(date1: string | Date, date2: string | Date): boolean {\n let startTime\n if (typeof date1 === 'string') {\n startTime = new Date(date1.replace('-', '/').replace('-', '/'))\n } else {\n startTime = date1\n }\n\n let endTime\n if (typeof date2 === 'string') {\n endTime = new Date(date2.replace('-', '/').replace('-', '/'))\n } else {\n endTime = date2\n }\n\n if (startTime >= endTime) {\n return false\n }\n return true\n },\n\n /**\n * 时间是否相等\n * @return\n */\n isEqual(date1: string | Date | null, date2: string | Date | null): boolean {\n if (date1 === date2) {\n return true\n }\n if (!date1 || !date2) {\n return false\n }\n let startTime\n if (typeof date1 === 'string') {\n startTime = new Date(date1).getTime()\n } else {\n startTime = date1.getTime()\n }\n\n let endTime\n if (typeof date2 === 'string') {\n endTime = new Date(date2).getTime()\n } else {\n endTime = date2\n }\n\n if (startTime == endTime) {\n return true\n }\n return false\n },\n\n /**\n * 判断日期是否在范围内\n * @param date\n * @param startDate\n * @param span 允许负数\n */\n inScope4Day(date: Date, startDate: Date, span: number): boolean {\n // 计算end date\n const endDate = new Date(new Date(startDate).setDate(startDate.getDate() + span))\n\n const curTime = date.getTime()\n const endTime = endDate.getTime()\n const startTime = startDate.getTime()\n\n if (endTime > startTime) {\n return curTime >= startTime && curTime <= endTime\n } else {\n return curTime >= endTime && curTime <= startTime\n }\n },\n\n /**\n * 判断日期是否在范围内\n * @param date\n * @param startDate\n * @param span\n */\n inScope4Month(date: Date, startDate: Date, span: number): boolean {\n // 计算end date\n const endDate = new Date(new Date(startDate).setMonth(startDate.getMonth() + span))\n\n const curTime = date.getTime()\n const endTime = endDate.getTime()\n const startTime = startDate.getTime()\n\n if (endTime > startTime) {\n return curTime >= startTime && curTime <= endTime\n } else {\n return curTime >= endTime && curTime <= startTime\n }\n }\n}\n\nexport default DateUtils\n","/*\n * @version: 1.0\n * @Author: 江成\n * @Date: 2021-09-08 22:42:01\n */\nimport { ref } from 'vue'\n\nconst MIN_DISTANCE = 10\n\ntype Direction = '' | 'vertical' | 'horizontal'\n\nfunction getDirection(x: number, y: number) {\n if (x > y && x > MIN_DISTANCE) {\n return 'horizontal'\n }\n if (y > x && y > MIN_DISTANCE) {\n return 'vertical'\n }\n return ''\n}\n\nexport function useTouch() {\n const startX = ref(0)\n const startY = ref(0)\n const startTime = ref(0)\n const duration = ref(0)\n const moveX = ref(0)\n const moveY = ref(0)\n const deltaX = ref(0)\n const deltaY = ref(0)\n const offsetX = ref(0)\n const offsetY = ref(0)\n const direction = ref<Direction>('')\n\n const isVertical = () => direction.value === 'vertical'\n const isHorizontal = () => direction.value === 'horizontal'\n\n const reset = () => {\n deltaX.value = 0\n deltaY.value = 0\n offsetX.value = 0\n offsetY.value = 0\n direction.value = ''\n startTime.value = 0\n }\n\n const start = ((event: TouchEvent) => {\n reset()\n startX.value = event.touches[0].clientX\n startY.value = event.touches[0].clientY\n startTime.value = Date.now()\n }) as EventListener\n\n const move = ((event: TouchEvent) => {\n const touch = event.touches[0]\n deltaX.value = touch.clientX - startX.value\n deltaY.value = touch.clientY - startY.value\n moveX.value = touch.clientX\n moveY.value = touch.clientY\n offsetX.value = Math.abs(deltaX.value)\n offsetY.value = Math.abs(deltaY.value)\n duration.value = Date.now() - startTime.value\n\n if (!direction.value) {\n direction.value = getDirection(offsetX.value, offsetY.value)\n }\n }) as EventListener\n\n return {\n move,\n start,\n reset,\n startX,\n startY,\n startTime,\n duration,\n moveX,\n moveY,\n deltaX,\n deltaY,\n offsetX,\n offsetY,\n direction,\n isVertical,\n isHorizontal\n }\n}\n","\n\nimport { FoxUIVue } from './main'\n\n\n// 导入基础组件安装器\nimport { install as baseInstall } from './base'\nimport Page from './components/page/index.vue'\nimport HeaderBar from './components/headerbar/index.vue'\nimport FooterBar from './components/footerbar/index.vue'\nimport Content from './components/content/index.vue'\nimport Group from './components/group/index.vue'\nimport Item from './components/item/index.vue'\nimport SlotItem from './components/slotitem/index.vue'\nimport RowItem from './components/rowitem/index.vue'\nimport HintText from './components/hinttext/index.vue'\nimport InputItem from './components/inputitem/index.vue'\nimport SelectItem from './components/selectitem/index.vue'\nimport DateItem from './components/dateitem/index.vue'\nimport TimeItem from './components/timeitem/index.vue'\nimport TimeSelectItem from './components/timeselectitem/index.vue'\nimport MoneyItem from './components/moneyitem/index.vue'\nimport InputNumberItem from './components/inputnumberitem/index.vue'\nimport CascaderItem from './components/cascaderitem/index.vue'\nimport AutocompleteItem from './components/autocompleteitem/index.vue'\nimport TableMappingColumn from './components/tablemappingcolumn/index.vue'\nimport TableItem from './components/tableitem/index.vue'\nimport RadioItem from './components/radioitem/index.vue'\nimport CheckboxItem from './components/checkboxitem/index.vue'\nimport RateItem from './components/rateitem/index.vue'\nimport SwitchItem from './components/switchitem/index.vue'\nimport DialogItem from './components/dialogitem/index.vue'\nimport Mapping from './components/mapping/index.vue'\nimport Price from './components/price/index.vue'\nimport ExtIcon from './components/exticon/index.vue'\nimport Indicator from './components/indicator/index.vue'\nexport * from './utils/px'\nexport * from './utils/commons'\nexport * from './utils/functions'\nexport * from './utils/date'\nexport * from './utils/unique-id'\nexport * from './utils/domain'\nexport * from './utils/use-expose'\nexport * from './utils/use-rect'\nexport * from './utils/use-position'\nexport * from './utils/use-touch'\nexport { ElAffix as FoxAffix } from './base'\nexport { ElAlert as FoxAlert } from './base'\nexport { ElAutocomplete as FoxAutocomplete } from './base'\nexport { ElAutoResizer as FoxAutoResizer } from './base'\nexport { ElAvatar as FoxAvatar } from './base'\nexport { ElBacktop as FoxBacktop } from './base'\nexport { ElBadge as FoxBadge } from './base'\nexport { ElBreadcrumb as FoxBreadcrumb } from './base'\nexport { ElBreadcrumbItem as FoxBreadcrumbItem } from './base'\nexport { ElButton as FoxButton } from './base'\nexport { ElButtonGroup as FoxButtonGroup } from './base'\nexport { ElCalendar as FoxCalendar } from './base'\nexport { ElCard as FoxCard } from './base'\nexport { ElCarousel as FoxCarousel } from './base'\nexport { ElCarouselItem as FoxCarouselItem } from './base'\nexport { ElCascader as FoxCascader } from './base'\nexport { ElCascaderPanel as FoxCascaderPanel } from './base'\nexport { ElCheckTag as FoxCheckTag } from './base'\nexport { ElCheckbox as FoxCheckbox } from './base'\nexport { ElCheckboxButton as FoxCheckboxButton } from './base'\nexport { ElCheckboxGroup as FoxCheckboxGroup } from './base'\nexport { ElCol as FoxCol } from './base'\nexport { ElCollapse as FoxCollapse } from './base'\nexport { ElCollapseItem as FoxCollapseItem } from './base'\nexport { ElCollapseTransition as FoxCollapseTransition } from './base'\nexport { ElColorPicker as FoxColorPicker } from './base'\nexport { ElConfigProvider as FoxConfigProvider } from './base'\nexport { ElContainer as FoxContainer } from './base'\nexport { ElAside as FoxAside } from './base'\nexport { ElFooter as FoxFooter } from './base'\nexport { ElHeader as FoxHeader } from './base'\nexport { ElMain as FoxMain } from './base'\nexport { ElDatePicker as FoxDatePicker } from './base'\nexport { ElDescriptions as FoxDescriptions } from './base'\nexport { ElDescriptionsItem as FoxDescriptionsItem } from './base'\nexport { ElDialog as FoxDialog } from './base'\nexport { ElDivider as FoxDivider } from './base'\nexport { ElDrawer as FoxDrawer } from './base'\nexport { ElDropdown as FoxDropdown } from './base'\nexport { ElDropdownItem as FoxDropdownItem } from './base'\nexport { ElDropdownMenu as FoxDropdownMenu } from './base'\nexport { ElEmpty as FoxEmpty } from './base'\nexport { ElForm as FoxForm } from './base'\nexport { ElFormItem as FoxFormItem } from './base'\nexport { ElIcon as FoxIcon } from './base'\nexport { ElImage as FoxImage } from './base'\nexport { ElImageViewer as FoxImageViewer } from './base'\nexport { ElInput as FoxInput } from './base'\nexport { ElInputNumber as FoxInputNumber } from './base'\nexport { ElLink as FoxLink } from './base'\nexport { ElMenu as FoxMenu } from './base'\nexport { ElSubMenu as FoxSubMenu } from './base'\nexport { ElMenuItem as FoxMenuItem } from './base'\nexport { ElMenuItemGroup as FoxMenuItemGroup } from './base'\nexport { ElPageHeader as FoxPageHeader } from './base'\nexport { ElPagination as FoxPagination } from './base'\nexport { ElPopconfirm as FoxPopconfirm } from './base'\nexport { ElPopover as FoxPopover } from './base'\nexport { ElPopper as FoxPopper } from './base'\nexport { ElProgress as FoxProgress } from './base'\nexport { ElRadio as FoxRadio } from './base'\nexport { ElRadioButton as FoxRadioButton } from './base'\nexport { ElRadioGroup as FoxRadioGroup } from './base'\nexport { ElRate as FoxRate } from './base'\nexport { ElResult as FoxResult } from './base'\nexport { ElRow as FoxRow } from './base'\nexport { ElScrollbar as FoxScrollbar } from './base'\nexport { ElSelect as FoxSelect } from './base'\nexport { ElOption as FoxOption } from './base'\nexport { ElOptionGroup as FoxOptionGroup } from './base'\nexport { ElSelectV2 as FoxSelectV2 } from './base'\nexport { ElSkeleton as FoxSkeleton } from './base'\nexport { ElSkeletonItem as FoxSkeletonItem } from './base'\nexport { ElSlider as FoxSlider } from './base'\nexport { ElSpace as FoxSpace } from './base'\nexport { ElSteps as FoxSteps } from './base'\nexport { ElStep as FoxStep } from './base'\nexport { ElSwitch as FoxSwitch } from './base'\nexport { ElTable as FoxTable } from './base'\nexport { ElTableColumn as FoxTableColumn } from './base'\nexport { ElTableV2 as FoxTableV2 } from './base'\nexport { ElTabs as FoxTabs } from './base'\nexport { ElTabPane as FoxTabPane } from './base'\nexport { ElTag as FoxTag } from './base'\nexport { ElTimePicker as FoxTimePicker } from './base'\nexport { ElTimeSelect as FoxTimeSelect } from './base'\nexport { ElTimeline as FoxTimeline } from './base'\nexport { ElTimelineItem as FoxTimelineItem } from './base'\nexport { ElTooltip as FoxTooltip } from './base'\nexport { ElTransfer as FoxTransfer } from './base'\nexport { ElTree as FoxTree } from './base'\nexport { ElTreeSelect as FoxTreeSelect } from './base'\nexport { ElTreeV2 as FoxTreeV2 } from './base'\nexport { ElUpload as FoxUpload } from './base'\n\nconst packages = [Page,HeaderBar,FooterBar,Content,Group,Item,SlotItem,RowItem,HintText,InputItem,SelectItem,DateItem,TimeItem,TimeSelectItem,MoneyItem,InputNumberItem,CascaderItem,AutocompleteItem,TableMappingColumn,TableItem,RadioItem,CheckboxItem,RateItem,SwitchItem,DialogItem,Mapping,Price,ExtIcon,Indicator]\nexport { Page,HeaderBar,FooterBar,Content,Group,Item,SlotItem,RowItem,HintText,InputItem,SelectItem,DateItem,TimeItem,TimeSelectItem,MoneyItem,InputNumberItem,CascaderItem,AutocompleteItem,TableMappingColumn,TableItem,RadioItem,CheckboxItem,RateItem,SwitchItem,DialogItem,Mapping,Price,ExtIcon,Indicator }\nexport default new FoxUIVue(packages, [baseInstall], '4.0.0')\n"],"names":["clone","isWindow","inject","provide","onUnmounted","getCurrentInstance","effectScope","watchEffect","nextTick","proxy","reactive","toRaw","isReactive","name","ValidateCondition","type","n","watch","PriorityPolicy","computed","toRef","ref","formatVal","ElAffix","ElAlert","ElAutocomplete","ElAutoResizer","ElAvatar","ElBacktop","ElBadge","ElBreadcrumb","ElBreadcrumbItem","ElButton","ElButtonGroup","ElCalendar","ElCard","ElCarousel","ElCarouselItem","ElCascader","ElCascaderPanel","ElCheckTag","ElCheckbox","ElCheckboxButton","ElCheckboxGroup","ElCol","ElCollapse","ElCollapseItem","ElCollapseTransition","ElColorPicker","ElConfigProvider","ElContainer","ElAside","ElFooter","ElHeader","ElMain","ElDatePicker","ElDescriptions","ElDescriptionsItem","ElDialog","ElDivider","ElDrawer","ElDropdown","ElDropdownItem","ElDropdownMenu","ElEmpty","ElForm","ElFormItem","ElIcon","ElImage","ElImageViewer","ElInput","ElInputNumber","ElLink","ElMenu","ElSubMenu","ElMenuItem","ElMenuItemGroup","ElPageHeader","ElPagination","ElPopconfirm","ElPopover","ElPopper","ElProgress","ElRadio","ElRadioButton","ElRadioGroup","ElRate","ElResult","ElRow","ElScrollbar","ElSelect","ElOption","ElOptionGroup","ElSelectV2","ElSkeleton","ElSkeletonItem","ElSlider","ElSpace","ElSteps","ElStep","ElSwitch","ElTable","ElTableColumn","ElTableV2","ElTabs","ElTabPane","ElTag","ElTimePicker","ElTimeSelect","ElTimeline","ElTimelineItem","ElTooltip","ElTransfer","ElTree","ElTreeSelect","ElTreeV2","ElUpload","ElInfiniteScroll","ElLoading","ElMessage","ElMessageBox","ElNotification","ElPopoverDirective","defineComponent","InnerPageScopeKey","component","onMounted","componentName","create","scope","_createElementBlock","_normalizeClass","classes","_normalizeStyle","styles","_renderSlot","mHeaderShow","mLeftShow","leftStyles","leftIcon","_createBlock","mLeftIcon","handleLeft","_createCommentVNode","leftText","mTitleShow","_openBlock","_hoisted_1","title","titleIcon","mTitleIcon","handleCenter","mRightShow","rightStyles","rightText","rightIcon","mRightIcon","handleRight","shallowRef","markRaw","triggerRef","unref","layout","h","integerSpan","nextCursor","numberFormat","_sfc_render","_createElementVNode","_toDisplayString","_resolveComponent","_Transition","_withCtx","_withDirectives","id","createVNode","render","props","inputProps","useFoxI18n","getItemText","getItemValue","getItemChildren","useModel","Model","isEqualsItem","valuesToItems","stringToItem","Item","disabled","multiply","divide","negate","unNumberFormat","compareTo","resolveComponent","getRowValue","Mapping","this","Group","SlotItem","RowItem","InputItem","SelectItem","DateItem","TimeItem","TimeSelectItem","MoneyItem","InputNumberItem","CascaderItem","AutocompleteItem","TableMappingColumn","TableItem","RadioItem","CheckboxItem","RateItem","SwitchItem","DialogItem","ExtIcon","Indicator","baseInstall"],"mappings":"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,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC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G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAA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M,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAA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AAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;;;;;;;;;;;;GCAz6M,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAsD,MAAA,CAAA,OAAA,CAAe,CAAC,GAA2I,CAAC,CAACA,cAAI,EAAE,UAAU,CAAc,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,yFAAyF,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAA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"}