x-sccba 0.2.3 → 0.2.4

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 (207) hide show
  1. package/dist/umd/index.js +2 -2
  2. package/dist/vue2/index122.cjs +1 -1
  3. package/dist/vue2/index122.mjs +1 -1
  4. package/dist/vue2/index144.cjs +1 -1
  5. package/dist/vue2/index144.mjs +3 -3
  6. package/dist/vue2/index211.cjs +1 -1
  7. package/dist/vue2/index211.cjs.map +1 -1
  8. package/dist/vue2/index211.mjs +1 -1
  9. package/dist/vue2/index230.cjs +1 -1
  10. package/dist/vue2/index230.cjs.map +1 -1
  11. package/dist/vue2/index230.mjs +5 -167
  12. package/dist/vue2/index230.mjs.map +1 -1
  13. package/dist/vue2/index231.cjs +1 -1
  14. package/dist/vue2/index231.mjs +5 -5
  15. package/dist/vue2/index232.cjs +1 -1
  16. package/dist/vue2/index232.mjs +5 -5
  17. package/dist/vue2/index233.cjs +1 -1
  18. package/dist/vue2/index233.cjs.map +1 -1
  19. package/dist/vue2/index233.mjs +167 -5
  20. package/dist/vue2/index233.mjs.map +1 -1
  21. package/dist/vue2/index238.cjs +1 -1
  22. package/dist/vue2/index238.cjs.map +1 -1
  23. package/dist/vue2/index238.mjs +283 -49
  24. package/dist/vue2/index238.mjs.map +1 -1
  25. package/dist/vue2/index239.cjs +1 -1
  26. package/dist/vue2/index239.cjs.map +1 -1
  27. package/dist/vue2/index239.mjs +2 -127
  28. package/dist/vue2/index239.mjs.map +1 -1
  29. package/dist/vue2/index240.cjs +1 -1
  30. package/dist/vue2/index240.cjs.map +1 -1
  31. package/dist/vue2/index240.mjs +56 -35
  32. package/dist/vue2/index240.mjs.map +1 -1
  33. package/dist/vue2/index241.cjs +1 -1
  34. package/dist/vue2/index241.cjs.map +1 -1
  35. package/dist/vue2/index241.mjs +2 -208
  36. package/dist/vue2/index241.mjs.map +1 -1
  37. package/dist/vue2/index242.cjs +1 -1
  38. package/dist/vue2/index242.cjs.map +1 -1
  39. package/dist/vue2/index242.mjs +31 -170
  40. package/dist/vue2/index242.mjs.map +1 -1
  41. package/dist/vue2/index243.cjs +1 -1
  42. package/dist/vue2/index243.cjs.map +1 -1
  43. package/dist/vue2/index243.mjs +2 -970
  44. package/dist/vue2/index243.mjs.map +1 -1
  45. package/dist/vue2/index244.cjs +1 -1
  46. package/dist/vue2/index244.cjs.map +1 -1
  47. package/dist/vue2/index244.mjs +3 -845
  48. package/dist/vue2/index244.mjs.map +1 -1
  49. package/dist/vue2/index73.cjs.map +1 -1
  50. package/dist/vue2/index73.mjs.map +1 -1
  51. package/dist/vue3/index123.cjs +1 -1
  52. package/dist/vue3/index123.mjs +1 -1
  53. package/dist/vue3/index212.cjs +1 -1
  54. package/dist/vue3/index212.cjs.map +1 -1
  55. package/dist/vue3/index212.mjs +1 -1
  56. package/dist/vue3/index231.cjs +1 -1
  57. package/dist/vue3/index231.mjs +2 -2
  58. package/dist/vue3/index232.cjs +1 -1
  59. package/dist/vue3/index232.mjs +2 -2
  60. package/dist/vue3/index233.cjs +1 -1
  61. package/dist/vue3/index233.mjs +2 -2
  62. package/dist/vue3/index238.cjs +1 -1
  63. package/dist/vue3/index238.cjs.map +1 -1
  64. package/dist/vue3/index238.mjs +165 -32
  65. package/dist/vue3/index238.mjs.map +1 -1
  66. package/dist/vue3/index239.cjs +1 -1
  67. package/dist/vue3/index239.cjs.map +1 -1
  68. package/dist/vue3/index239.mjs +284 -167
  69. package/dist/vue3/index239.mjs.map +1 -1
  70. package/dist/vue3/index240.cjs +1 -1
  71. package/dist/vue3/index240.cjs.map +1 -1
  72. package/dist/vue3/index240.mjs +2 -284
  73. package/dist/vue3/index240.mjs.map +1 -1
  74. package/dist/vue3/index241.cjs +1 -1
  75. package/dist/vue3/index241.cjs.map +1 -1
  76. package/dist/vue3/index241.mjs +56 -2
  77. package/dist/vue3/index241.mjs.map +1 -1
  78. package/dist/vue3/index242.cjs +1 -1
  79. package/dist/vue3/index242.cjs.map +1 -1
  80. package/dist/vue3/index242.mjs +2 -56
  81. package/dist/vue3/index242.mjs.map +1 -1
  82. package/dist/vue3/index243.cjs +1 -1
  83. package/dist/vue3/index243.cjs.map +1 -1
  84. package/dist/vue3/index243.mjs +31 -2
  85. package/dist/vue3/index243.mjs.map +1 -1
  86. package/dist/vue3/index244.cjs +1 -1
  87. package/dist/vue3/index244.cjs.map +1 -1
  88. package/dist/vue3/index244.mjs +2 -31
  89. package/dist/vue3/index244.mjs.map +1 -1
  90. package/dist/vue3/index245.cjs +1 -1
  91. package/dist/vue3/index245.mjs +4 -2
  92. package/dist/vue3/index245.mjs.map +1 -1
  93. package/dist/vue3/index73.cjs.map +1 -1
  94. package/dist/vue3/index73.mjs.map +1 -1
  95. package/package.json +12 -27
  96. package/dist/vue2/index245.cjs +0 -2
  97. package/dist/vue2/index245.cjs.map +0 -1
  98. package/dist/vue2/index245.mjs +0 -59
  99. package/dist/vue2/index245.mjs.map +0 -1
  100. package/dist/vue2/index246.cjs +0 -2
  101. package/dist/vue2/index246.cjs.map +0 -1
  102. package/dist/vue2/index246.mjs +0 -36
  103. package/dist/vue2/index246.mjs.map +0 -1
  104. package/dist/vue2/index247.cjs +0 -2
  105. package/dist/vue2/index247.cjs.map +0 -1
  106. package/dist/vue2/index247.mjs +0 -167
  107. package/dist/vue2/index247.mjs.map +0 -1
  108. package/dist/vue2/index248.cjs +0 -2
  109. package/dist/vue2/index248.cjs.map +0 -1
  110. package/dist/vue2/index248.mjs +0 -17
  111. package/dist/vue2/index248.mjs.map +0 -1
  112. package/dist/vue2/index249.cjs +0 -2
  113. package/dist/vue2/index249.cjs.map +0 -1
  114. package/dist/vue2/index249.mjs +0 -287
  115. package/dist/vue2/index249.mjs.map +0 -1
  116. package/dist/vue2/index250.cjs +0 -2
  117. package/dist/vue2/index250.cjs.map +0 -1
  118. package/dist/vue2/index250.mjs +0 -5
  119. package/dist/vue2/index250.mjs.map +0 -1
  120. package/dist/vue2/index251.cjs +0 -2
  121. package/dist/vue2/index251.cjs.map +0 -1
  122. package/dist/vue2/index251.mjs +0 -59
  123. package/dist/vue2/index251.mjs.map +0 -1
  124. package/dist/vue2/index252.cjs +0 -2
  125. package/dist/vue2/index252.cjs.map +0 -1
  126. package/dist/vue2/index252.mjs +0 -5
  127. package/dist/vue2/index252.mjs.map +0 -1
  128. package/dist/vue2/index253.cjs +0 -2
  129. package/dist/vue2/index253.cjs.map +0 -1
  130. package/dist/vue2/index253.mjs +0 -34
  131. package/dist/vue2/index253.mjs.map +0 -1
  132. package/dist/vue2/index254.cjs +0 -2
  133. package/dist/vue2/index254.cjs.map +0 -1
  134. package/dist/vue2/index254.mjs +0 -5
  135. package/dist/vue2/index254.mjs.map +0 -1
  136. package/dist/vue2/index255.cjs +0 -2
  137. package/dist/vue2/index255.cjs.map +0 -1
  138. package/dist/vue2/index255.mjs +0 -105
  139. package/dist/vue2/index255.mjs.map +0 -1
  140. package/dist/vue2/index256.cjs +0 -2
  141. package/dist/vue2/index256.cjs.map +0 -1
  142. package/dist/vue2/index256.mjs +0 -21
  143. package/dist/vue2/index256.mjs.map +0 -1
  144. package/dist/vue2/index257.cjs +0 -2
  145. package/dist/vue2/index257.cjs.map +0 -1
  146. package/dist/vue2/index257.mjs +0 -134
  147. package/dist/vue2/index257.mjs.map +0 -1
  148. package/dist/vue2/index258.cjs +0 -2
  149. package/dist/vue2/index258.cjs.map +0 -1
  150. package/dist/vue2/index258.mjs +0 -7
  151. package/dist/vue2/index258.mjs.map +0 -1
  152. package/dist/vue3/index246.cjs +0 -2
  153. package/dist/vue3/index246.cjs.map +0 -1
  154. package/dist/vue3/index246.mjs +0 -130
  155. package/dist/vue3/index246.mjs.map +0 -1
  156. package/dist/vue3/index247.cjs +0 -2
  157. package/dist/vue3/index247.cjs.map +0 -1
  158. package/dist/vue3/index247.mjs +0 -38
  159. package/dist/vue3/index247.mjs.map +0 -1
  160. package/dist/vue3/index248.cjs +0 -2
  161. package/dist/vue3/index248.cjs.map +0 -1
  162. package/dist/vue3/index248.mjs +0 -211
  163. package/dist/vue3/index248.mjs.map +0 -1
  164. package/dist/vue3/index249.cjs +0 -2
  165. package/dist/vue3/index249.cjs.map +0 -1
  166. package/dist/vue3/index249.mjs +0 -173
  167. package/dist/vue3/index249.mjs.map +0 -1
  168. package/dist/vue3/index250.cjs +0 -2
  169. package/dist/vue3/index250.cjs.map +0 -1
  170. package/dist/vue3/index250.mjs +0 -936
  171. package/dist/vue3/index250.mjs.map +0 -1
  172. package/dist/vue3/index251.cjs +0 -2
  173. package/dist/vue3/index251.cjs.map +0 -1
  174. package/dist/vue3/index251.mjs +0 -807
  175. package/dist/vue3/index251.mjs.map +0 -1
  176. package/dist/vue3/index252.cjs +0 -2
  177. package/dist/vue3/index252.cjs.map +0 -1
  178. package/dist/vue3/index252.mjs +0 -55
  179. package/dist/vue3/index252.mjs.map +0 -1
  180. package/dist/vue3/index253.cjs +0 -2
  181. package/dist/vue3/index253.cjs.map +0 -1
  182. package/dist/vue3/index253.mjs +0 -36
  183. package/dist/vue3/index253.mjs.map +0 -1
  184. package/dist/vue3/index254.cjs +0 -2
  185. package/dist/vue3/index254.cjs.map +0 -1
  186. package/dist/vue3/index254.mjs +0 -138
  187. package/dist/vue3/index254.mjs.map +0 -1
  188. package/dist/vue3/index255.cjs +0 -2
  189. package/dist/vue3/index255.cjs.map +0 -1
  190. package/dist/vue3/index255.mjs +0 -17
  191. package/dist/vue3/index255.mjs.map +0 -1
  192. package/dist/vue3/index256.cjs +0 -2
  193. package/dist/vue3/index256.cjs.map +0 -1
  194. package/dist/vue3/index256.mjs +0 -7
  195. package/dist/vue3/index256.mjs.map +0 -1
  196. package/dist/vue3/index257.cjs +0 -2
  197. package/dist/vue3/index257.cjs.map +0 -1
  198. package/dist/vue3/index257.mjs +0 -105
  199. package/dist/vue3/index257.mjs.map +0 -1
  200. package/dist/vue3/index258.cjs +0 -2
  201. package/dist/vue3/index258.cjs.map +0 -1
  202. package/dist/vue3/index258.mjs +0 -21
  203. package/dist/vue3/index258.mjs.map +0 -1
  204. package/dist/vue3/index259.cjs +0 -2
  205. package/dist/vue3/index259.cjs.map +0 -1
  206. package/dist/vue3/index259.mjs +0 -134
  207. package/dist/vue3/index259.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index244.mjs","sources":["../../../../node_modules/vue-virtual-scroller/dist/composables/useDynamicScroller.js"],"sourcesContent":["import { nextTick as re, reactive as pe, computed as W, toValue as j, provide as G, shallowRef as Y, watchEffect as ge, shallowReactive as ie, triggerRef as he, watch as A, onActivated as Qe, onDeactivated as qe, onUnmounted as je, effectScope as Ge } from \"vue\";\nimport { a as Ye, b as X, d as ye, u as Je, f as Ve, e as Ie, r as se } from \"../useRecycleScroller-CXk06epd.js\";\nimport { r as Xe, a as ke } from \"../keyField-D6okV6nC.js\";\nimport { c as Ze } from \"../dynamicScrollerMeasurement-Cq5NQLJa.js\";\nfunction et() {\n const n = /* @__PURE__ */ new Map();\n return {\n on(i, l) {\n let a = n.get(i);\n a || (a = /* @__PURE__ */ new Set(), n.set(i, a)), a.add(l);\n },\n off(i, l) {\n const a = n.get(i);\n a && (a.delete(l), a.size || n.delete(i));\n },\n emit(i, l) {\n const a = n.get(i);\n if (a != null && a.size)\n for (const d of [...a])\n d(l);\n },\n clear() {\n n.clear();\n }\n };\n}\nfunction tt(n = {}) {\n const i = n.queueFlush ?? ((m) => re(m)), l = n.overflowQueueFlush ?? i, a = Math.max(1, n.maxTasksPerFlush ?? Number.POSITIVE_INFINITY);\n let d = !1;\n const p = /* @__PURE__ */ new Map();\n function w() {\n d || !p.size || (d = !0, i(x));\n }\n function x() {\n if (d = !1, !p.size)\n return;\n const m = [];\n for (const [g, I] of p)\n if (m.push(I), p.delete(g), m.length >= a)\n break;\n const R = m.map((g) => ({\n task: g,\n value: g.read()\n }));\n for (const g of R)\n g.value != null && g.task.write(g.value), g.task.done();\n p.size && (l(x), d = !0);\n }\n function D(m, R) {\n p.set(m, R), w();\n }\n function y(m) {\n p.delete(m);\n }\n return {\n schedule: D,\n cancel: y\n };\n}\nfunction nt(n) {\n for (let i = 0; i < n.length; i++)\n n[i];\n}\nfunction Fe(n) {\n return n.item;\n}\nfunction Q(n, i) {\n const l = i.get(n);\n return l || n;\n}\nfunction it(n) {\n const i = {};\n return Object.defineProperties(i, {\n item: {\n enumerable: !0,\n get: () => n.item.item\n },\n itemWithSize: {\n enumerable: !0,\n get: () => n.item\n },\n size: {\n enumerable: !0,\n get: () => n.item.size\n },\n position: {\n enumerable: !0,\n get: () => n.position\n },\n offset: {\n enumerable: !0,\n get: () => n.offset\n },\n id: {\n enumerable: !0,\n get: () => n.nr.id\n },\n index: {\n enumerable: !0,\n get: () => n.nr.index\n },\n used: {\n enumerable: !0,\n get: () => n.nr.used\n },\n key: {\n enumerable: !0,\n get: () => n.nr.key\n },\n type: {\n enumerable: !0,\n get: () => n.nr.type\n }\n }), i;\n}\nfunction rt(n) {\n return n._vs_styleStamp ?? 0;\n}\nfunction st(n) {\n return n._vs_visibilityStamp ?? 0;\n}\nconst Te = [\n \"position\",\n \"top\",\n \"left\",\n \"transform\",\n \"willChange\",\n \"visibility\",\n \"pointerEvents\",\n \"display\"\n];\nfunction Se(n) {\n const i = {};\n for (const l of Te)\n i[l] = n.style[l];\n return i;\n}\nfunction _e(n, i) {\n for (const l of Te)\n n.style[l] = i[l] ?? \"\";\n}\nfunction U(n, i, l) {\n n.style[i] !== l && (n.style[i] = l);\n}\nfunction ze(n, i, l, a, d, p, w) {\n if (!(\"view\" in i)) {\n _e(n, p);\n return;\n }\n const x = n.tagName === \"TR\", D = d ? se({\n direction: l,\n flowMode: !0\n }) : se({\n direction: l,\n disableTransform: a || x\n }), y = Ie(Q(i.view, w), {\n direction: l,\n mode: D\n });\n U(n, \"position\", String(y.position ?? \"\")), U(n, \"top\", String(y.top ?? \"\")), U(n, \"left\", String(y.left ?? \"\")), U(n, \"transform\", D === \"flow\" || x ? \"\" : String(y.transform ?? \"\")), U(n, \"willChange\", String(y.willChange ?? \"\")), U(n, \"visibility\", String(y.visibility ?? \"\")), U(n, \"pointerEvents\", String(y.pointerEvents ?? \"\")), U(n, \"display\", String(y.display ?? \"\"));\n}\nfunction be(n, i) {\n return \"view\" in n && !i;\n}\nfunction we(n, i, l, a, d, p) {\n if (\"view\" in n) {\n const w = Q(n.view, p);\n return {\n active: w.nr.used && d,\n id: Fe(w).id\n };\n }\n return {\n active: i.active && d,\n id: ut(\n i.item,\n l,\n a,\n i.index\n )\n };\n}\nfunction lt(n, i, l, a) {\n if (!(\"view\" in n))\n return {\n direction: i,\n flowMode: l,\n legacy: !0\n };\n if (l) {\n const p = Q(n.view, a);\n return {\n direction: i,\n flowMode: l,\n legacy: !1,\n visibilityStamp: st(p)\n };\n }\n const d = Q(n.view, a);\n return {\n active: d.nr.used,\n direction: i,\n flowMode: l,\n legacy: !1,\n styleStamp: rt(d),\n position: be(n, l) ? d.position : null,\n offset: be(n, l) ? d.offset : null\n };\n}\nfunction Re(n, i) {\n if (\"view\" in n) {\n const l = Q(n.view, i);\n return {\n item: Fe(l).item,\n active: l.nr.used,\n index: l.nr.index,\n watchData: n.watchData ?? !1,\n emitResize: n.emitResize ?? !1,\n sizeDependencies: n.sizeDependencies ?? null,\n onResize: n.onResize\n };\n }\n return {\n watchData: !1,\n emitResize: !1,\n sizeDependencies: null,\n ...n\n };\n}\nfunction ot(n, i) {\n n.item !== i.item && (n.item = i.item), n.active !== i.active && (n.active = i.active), n.index !== i.index && (n.index = i.index), n.watchData !== i.watchData && (n.watchData = i.watchData), n.sizeDependencies !== i.sizeDependencies && (n.sizeDependencies = i.sizeDependencies), n.emitResize !== i.emitResize && (n.emitResize = i.emitResize), n.onResize !== i.onResize && (n.onResize = i.onResize);\n}\nfunction ct(n, i) {\n n.onResize !== i.onResize && (n.onResize = i.onResize);\n}\nfunction ut(n, i, l, a) {\n return l ? a ?? null : ke(n, a, i);\n}\nfunction vt(n) {\n const i = Ye(n);\n let l = 0, a = {};\n const d = et();\n let p = !1, w, x = !1, D = [], y = null, m = null, R = null;\n const g = /* @__PURE__ */ new Set(), I = [], v = pe({\n active: !0,\n sizes: {},\n keyField: o().keyField,\n simpleArray: !1\n }), C = W(() => {\n const e = j(o().items);\n return nt(e), e;\n }), E = W(() => o().direction ?? \"vertical\"), b = W(() => j(o().el)), Me = W(() => j(o().before)), Ae = W(() => j(o().after)), H = /* @__PURE__ */ new Map();\n function o() {\n return i.value;\n }\n const z = W(() => j(o().enabled ?? !0));\n function $(e) {\n let t = -1;\n return t = requestAnimationFrame(() => {\n g.delete(t), e();\n }), g.add(t), t;\n }\n function le() {\n for (const e of g)\n cancelAnimationFrame(e);\n g.clear();\n }\n const xe = tt({\n // Spread row measurement across frames so one huge flush cannot monopolize layout time.\n maxTasksPerFlush: 6,\n overflowQueueFlush(e) {\n $(e);\n }\n });\n typeof ResizeObserver < \"u\" && (w = new ResizeObserver((e) => {\n $(() => {\n if (Array.isArray(e)) {\n for (const t of e)\n if (t.target && t.target.$_vs_onResize) {\n let r, s;\n if (t.borderBoxSize) {\n const u = t.borderBoxSize[0];\n r = u.inlineSize, s = u.blockSize;\n } else\n r = t.contentRect.width, s = t.contentRect.height;\n t.target.$_vs_onResize(t.target.$_vs_id, r, s);\n }\n }\n });\n }));\n const Z = {\n vscrollData: v,\n resizeObserver: w,\n measureQueue: xe,\n direction: E,\n undefinedMap: a,\n undefinedSizeCount: {\n get value() {\n return l;\n },\n set value(e) {\n l = e;\n }\n },\n onVscrollUpdate(e) {\n const t = (r) => {\n e(r);\n };\n return d.on(\"vscroll:update\", t), () => d.off(\"vscroll:update\", t);\n }\n };\n G(\"vscrollData\", v), G(\"vscrollParent\", {\n get $_undefinedSizes() {\n return l;\n },\n set $_undefinedSizes(e) {\n l = e;\n },\n get $_undefinedMap() {\n return a;\n },\n set $_undefinedMap(e) {\n a = e;\n },\n $_events: d,\n direction: E\n }), G(\"vscrollResizeObserver\", w), G(\"vscrollMeasurementContext\", Z), G(\"vscrollAnchorRegistry\", {\n delete(e) {\n H.delete(e);\n },\n set(e, t) {\n H.set(e, t);\n }\n });\n const k = W(() => {\n const e = C.value;\n return e.length > 0 && typeof e[0] != \"object\";\n }), oe = Y(0), L = Y(I);\n ge(() => {\n if (!z.value)\n return;\n const e = m || !b.value ? null : De(b.value.scrollTop, I), r = o().keyField, s = k.value, u = v.sizes, c = C.value, f = c.length;\n let S = I.length !== f, h = I.length !== f;\n for (let _ = 0; _ < f; _++) {\n const M = c[_], K = s ? _ : Xe(M, _, r);\n let B = u[K];\n typeof B > \"u\" && !a[K] && (B = 0);\n let P = I[_];\n if (!P) {\n P = ie({\n item: M,\n id: K,\n size: B\n }), I[_] = P, S = !0, h = !0;\n continue;\n }\n P.item !== M && (P.item = M, S = !0, h = !0), P.id !== K && (P.id = K, S = !0, h = !0), P.size !== B && (P.size = B, S = !0);\n }\n I.length !== f && (I.length = f, S = !0, h = !0), S && (y = e, oe.value++, h ? L.value = I.slice() : he(L));\n });\n function De(e, t) {\n if (!t.length)\n return null;\n const r = o().minItemSize;\n let s = 0, u = 0, c = t[0].id;\n for (const f of t) {\n const S = f.size || r, h = s + S;\n if (u = s, c = f.id, e < h)\n return {\n key: f.id,\n offset: e - s\n };\n s = h;\n }\n return {\n key: c,\n offset: Math.max(0, e - u)\n };\n }\n const J = o();\n D = X(C.value, k.value ? null : J.keyField), J.cache && (v.sizes = ye(J.cache, C.value, k.value ? null : J.keyField));\n function Oe() {\n var e, t;\n (t = (e = o()).onHidden) == null || t.call(e);\n }\n function Pe(e, t, r, s) {\n var u, c;\n (c = (u = o()).onUpdate) == null || c.call(u, e, t, r, s);\n }\n const Ce = pe({\n get enabled() {\n return z.value;\n },\n get items() {\n return L.value;\n },\n get keyField() {\n return \"id\";\n },\n get direction() {\n return E.value;\n },\n get itemSize() {\n return null;\n },\n get gridItems() {\n },\n get itemSecondarySize() {\n },\n get minItemSize() {\n return o().minItemSize;\n },\n get sizeField() {\n return \"size\";\n },\n get typeField() {\n return \"type\";\n },\n get buffer() {\n return o().buffer ?? 200;\n },\n get pageMode() {\n return o().pageMode ?? !1;\n },\n get shift() {\n return !1;\n },\n get cache() {\n return o().cache;\n },\n get prerender() {\n return o().prerender ?? 0;\n },\n get emitUpdate() {\n return o().emitUpdate ?? !1;\n },\n get disableTransform() {\n return o().disableTransform ?? !1;\n },\n get flowMode() {\n return o().flowMode ?? !1;\n },\n get hiddenPosition() {\n return o().hiddenPosition;\n },\n get updateInterval() {\n return o().updateInterval ?? 0;\n },\n get el() {\n return b.value;\n },\n get before() {\n return Me.value;\n },\n get after() {\n return Ae.value;\n },\n get scrollParent() {\n return o().scrollParent;\n },\n get onResize() {\n return ce;\n },\n get onVisible() {\n return ue;\n },\n get onHidden() {\n return Oe;\n },\n get onUpdate() {\n return Pe;\n }\n });\n function ce() {\n var e, t;\n N(), (t = (e = o()).onResize) == null || t.call(e);\n }\n function ue() {\n var e, t;\n d.emit(\"vscroll:update\", { force: !1 }), (t = (e = o()).onVisible) == null || t.call(e);\n }\n const F = Je(\n Ce\n ), O = /* @__PURE__ */ new WeakMap(), ae = /* @__PURE__ */ new WeakMap(), ee = Y([]);\n function Ee(e) {\n const t = o();\n return Ie(Q(e, O), {\n direction: E.value,\n mode: se({\n direction: E.value,\n disableTransform: t.disableTransform ?? !1,\n flowMode: t.flowMode ?? !1\n })\n });\n }\n function fe(e) {\n let t = ae.get(e);\n return t || (t = it(e), ae.set(e, t), O.set(t, e)), t;\n }\n ge(() => {\n const e = F.pool.value, t = e.length, r = ee.value;\n let s = r.length !== t;\n for (let u = 0; u < t; u++) {\n const c = fe(e[u]);\n r[u] !== c && (r[u] = c, s = !0);\n }\n r.length !== t && (r.length = t, s = !0), s && he(ee);\n });\n const Ke = W(\n () => F.visiblePool.value.map(fe)\n ), V = /* @__PURE__ */ new WeakMap();\n function te() {\n R != null && (cancelAnimationFrame(R), g.delete(R), R = null);\n }\n function T() {\n te(), m = null;\n }\n function Be() {\n m == null || R != null || (R = $(() => {\n R = null, ne();\n }));\n }\n function We() {\n const e = b.value;\n if (!e)\n return null;\n const t = e.getBoundingClientRect();\n let r = null;\n for (const [s, u] of H.entries()) {\n if (!u.active || getComputedStyle(s).visibility === \"hidden\")\n continue;\n const c = s.getBoundingClientRect();\n if (c.bottom <= t.top || c.top >= t.bottom)\n continue;\n const f = Math.max(c.top, t.top) - t.top;\n (!r || f < r.score) && (r = {\n key: u.id,\n offset: c.top - t.top,\n score: f\n });\n }\n return r;\n }\n function Ue(e) {\n const t = b.value;\n if (!t) {\n T();\n return;\n }\n const r = t.scrollTop, s = Math.min(F.findItemIndex(r), e.length - 1), u = e[s];\n if (u == null) {\n T();\n return;\n }\n const c = We();\n m = {\n logicalKey: u,\n logicalOffset: r - F.getItemOffset(s),\n pendingKeys: /* @__PURE__ */ new Set(),\n stableFrames: 0,\n visualKey: (c == null ? void 0 : c.key) ?? null,\n visualOffset: (c == null ? void 0 : c.offset) ?? 0\n };\n }\n function de(e) {\n const t = b.value;\n return !t || Math.abs(t.scrollTop - e) < 0.5 ? !1 : (x = !0, t.scrollTop = e, F.updateVisibleItems(!0), t.dispatchEvent(new Event(\"scroll\")), $(() => {\n x = !1;\n }), !0);\n }\n function ne() {\n const e = m, t = b.value;\n if (!e || !t)\n return;\n const r = L.value.findIndex((f) => f.id === e.logicalKey);\n if (r === -1) {\n T();\n return;\n }\n let s = !1;\n const u = F.getItemOffset(r) + e.logicalOffset;\n if (s = de(u) || s, !s && e.visualKey != null)\n for (const [f, S] of H.entries()) {\n if (!S.active || S.id !== e.visualKey || getComputedStyle(f).visibility === \"hidden\")\n continue;\n const h = f.getBoundingClientRect().top - t.getBoundingClientRect().top - e.visualOffset;\n s = de(t.scrollTop + h) || s;\n break;\n }\n let c = !0;\n for (const f of e.pendingKeys)\n if (!(typeof v.sizes[f] == \"number\" && v.sizes[f] > 0)) {\n c = !1;\n break;\n }\n if (!s && c) {\n if (e.stableFrames++, e.stableFrames >= 2) {\n T();\n return;\n }\n } else\n e.stableFrames = 0;\n Be();\n }\n function me(e, t, r, s) {\n const u = Ge(), c = Y(t), f = ie({\n ...r\n }), S = ie({\n onResize: r.onResize\n }), h = Y(e), _ = u.run(() => (A(() => we(\n c.value,\n f,\n o().keyField,\n v.simpleArray,\n v.active,\n O\n ), () => {\n const M = h.value;\n if (M) {\n const K = we(\n c.value,\n f,\n o().keyField,\n v.simpleArray,\n v.active,\n O\n ), B = K.id;\n B != null && H.set(M, {\n active: K.active,\n id: B\n });\n }\n }, {\n immediate: !0\n }), A(() => lt(\n c.value,\n E.value,\n o().flowMode ?? !1,\n O\n ), () => {\n const M = h.value;\n M && ze(\n M,\n c.value,\n E.value,\n o().disableTransform ?? !1,\n o().flowMode ?? !1,\n s,\n O\n );\n }, {\n immediate: !0\n }), Ze(\n f,\n h,\n Z,\n S\n )));\n _.mount(), V.set(e, {\n binding: c,\n scope: u,\n options: f,\n callbacks: S,\n el: h,\n controller: _,\n restoreStyles: s\n });\n }\n const $e = {\n mounted(e, t) {\n if (!z.value)\n return;\n const r = Se(e);\n me(e, t.value, Re(t.value, O), r);\n },\n updated(e, t) {\n if (!z.value)\n return;\n const r = V.get(e), s = Re(t.value, O);\n if (!r) {\n const c = Se(e);\n me(e, t.value, s, c);\n return;\n }\n const u = r.binding.value !== t.value;\n u && (r.binding.value = t.value), ot(r.options, s), ct(r.callbacks, s), r.el.value !== e && (r.el.value = e), u && ze(\n e,\n t.value,\n E.value,\n o().disableTransform ?? !1,\n o().flowMode ?? !1,\n r.restoreStyles,\n O\n );\n },\n unmounted(e) {\n const t = V.get(e);\n t && (t.controller.unmount(), t.scope.stop(), _e(e, t.restoreStyles), H.delete(e), V.delete(e));\n }\n };\n function N(e = !1) {\n z.value && ((e || k.value) && (v.sizes = {}), d.emit(\"vscroll:update\", { force: !0 }));\n }\n function He(e, t) {\n F.scrollToItem(e, t);\n }\n function ve(e) {\n const t = o();\n return v.sizes = ye(e, C.value, k.value ? null : t.keyField), F.restoreCache(e);\n }\n function Le(e, t) {\n const r = o(), s = t ?? C.value.indexOf(e), u = k.value ? s : ke(e, s >= 0 ? s : t, r.keyField);\n return v.sizes[u] || 0;\n }\n function Ne() {\n if (!z.value)\n return;\n const e = b.value;\n e && (p || (p = !0, re(() => {\n e.scrollTop = e.scrollHeight + 5e3;\n const t = () => {\n e.scrollTop = e.scrollHeight + 5e3, $(() => {\n e.scrollTop = e.scrollHeight + 5e3, l === 0 ? p = !1 : $(t);\n });\n };\n $(t);\n })));\n }\n function q() {\n m && !x && T();\n }\n return A(() => C.value.slice(), (e, t) => {\n if (!z.value)\n return;\n const r = o(), s = k.value ? null : r.keyField, u = X(e, s);\n if (r.shift) {\n const c = t ? X(t, s) : D, f = Ve(c, u);\n f > 0 ? (Ue(c), m && (m.pendingKeys = new Set(u.slice(0, f)), m.stableFrames = 0, re(() => {\n m && ne();\n }))) : T();\n } else\n T();\n D = u, N();\n }, { flush: \"sync\" }), A(() => o().cache, (e) => {\n z.value && e && ve(e);\n }), A(() => o().keyField, (e) => {\n z.value && (v.keyField = e, D = X(C.value, k.value ? null : e), T(), N(!0));\n }, { flush: \"sync\" }), A(k, (e) => {\n v.simpleArray = e;\n }, { immediate: !0 }), A(() => o().direction, () => {\n z.value && (T(), N(!0));\n }), A(b, (e, t) => {\n t == null || t.removeEventListener(\"scroll\", q), z.value && (e == null || e.addEventListener(\"scroll\", q));\n }, {\n immediate: !0\n }), A(z, (e) => {\n const t = b.value;\n e ? (t == null || t.addEventListener(\"scroll\", q), N()) : (t == null || t.removeEventListener(\"scroll\", q), te(), le(), T());\n }), A(oe, () => {\n if (!z.value)\n return;\n const e = b.value;\n if (!e)\n return;\n if (m) {\n ne();\n return;\n }\n const t = y;\n if (y = null, !t)\n return;\n const r = L.value.findIndex((c) => c.id === t.key);\n if (r === -1)\n return;\n const s = F.getItemOffset(r) + t.offset;\n s - e.scrollTop !== 0 && (e.scrollTop = s);\n }, { flush: \"post\" }), Qe(() => {\n v.active = !0;\n }), qe(() => {\n v.active = !1;\n }), je(() => {\n var e;\n te(), le(), (e = b.value) == null || e.removeEventListener(\"scroll\", q), d.clear();\n }), {\n vscrollData: v,\n itemsWithSize: L,\n resizeObserver: w,\n measurementContext: Z,\n vDynamicScrollerItem: $e,\n ...F,\n pool: ee,\n visiblePool: Ke,\n simpleArray: k,\n forceUpdate: N,\n scrollToItem: He,\n restoreCache: ve,\n getItemSize: Le,\n getViewStyle: Ee,\n scrollToBottom: Ne,\n onScrollerResize: ce,\n onScrollerVisible: ue\n };\n}\nexport {\n vt as useDynamicScroller\n};\n//# sourceMappingURL=useDynamicScroller.js.map\n"],"names":["re","se","Ie","_e","ke","Ye","pe","W","e","j","G","Y","ge","f","Xe","ie","he","X","ye","Je","Be","Ge","A","Ze","q","Ve","Qe","qe","je"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index244.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index73.cjs","sources":["../../src/components/XSelect/index.tsx"],"sourcesContent":["import type { PropType } from 'vue-demi';\nimport type {\n AuditFieldConfig,\n AuditState,\n TrackFieldConfig,\n TrackState,\n PermissionFieldConfig\n} from '../../hooks/capability/types';\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n isVue2\n} from 'vue-demi';\nimport { getUIComponent } from '../../adapters/ui-provider';\nimport { h } from '../../compat/h';\nimport {\n renderSlot,\n useCompatListeners,\n useCompatSlots\n} from '../../compat/slots';\nimport { useForwardProps, useOmitForwardProps } from '../../hooks';\nimport { useAuditInternal } from '../../hooks/capability/useAuditInternal';\n\nimport { useTrackInternal } from '../../hooks/capability/useTrackInternal';\nimport { useDisabledTip } from '../../hooks/useDisabledTip';\nimport { useLooseModel } from '../../hooks/useLooseModel';\nimport { warnOnce } from '../../utils/warnOnce';\nimport AuditFeedback from '../AuditFeedback/index';\nimport { renderOptionTree } from './render-options';\nimport { usePagination } from './usePagination';\nimport './style.scss';\n\n// ============ Props 声明 ============\nexport const selectProps = {\n // v-model:必须声明,否则 Vue3 下 modelValue 进入 attrs 而非 props,\n // 导致 useLooseModel 的 readExternal() 读取 props.modelValue 为 undefined,\n // innerValue 始终为 undefined,选中值后无法回显。\n // 参考 XInput/index.tsx 既定范式。\n modelValue: {\n type: [String, Number, Boolean, Object, Array] as PropType<any>,\n default: undefined\n },\n loose: { type: Boolean, default: false },\n multipleString: { type: Boolean, default: false },\n valueSeparator: { type: String, default: ',' },\n disabledTip: { type: String, default: '' },\n disabledTipPlacement: { type: String, default: 'top' },\n useVirtual: { type: Boolean, default: false },\n optionSource: { type: Array as PropType<any[]>, default: () => [] },\n optionValueKey: { type: String, default: 'value' },\n optionLabelKey: { type: String, default: 'label' },\n customLabel: {\n type: [Function, String] as PropType<\n ((option: Record<string, any>, index: number) => any) | string\n >,\n default: ''\n },\n returnObject: { type: Boolean, default: false },\n isShowPagination: { type: Boolean, default: false },\n paginationOption: {\n type: Object as PropType<{\n pageSize?: number;\n currentPage?: number;\n pagerCount?: number;\n total?: number;\n }>,\n default: () => ({ pageSize: 6, currentPage: 1, pagerCount: 5, total: 0 })\n },\n isCached: { type: Boolean, default: true },\n isRadioEchoLabel: { type: Boolean, default: true },\n radioSelectValLabel: { type: String, default: '' },\n selectAllTxt: { type: String, default: '' },\n showSelectAll: { type: Boolean, default: true },\n // 文本模式:true 时跳过 ElSelect 渲染,以 <span> 展示当前选中项 label,用于只读回显\n textMode: { type: Boolean, default: false },\n // ---- 审查能力 ----\n audit: {\n type: [Boolean, Object] as PropType<boolean | AuditFieldConfig | undefined>,\n default: undefined\n },\n auditState: {\n type: Object as PropType<AuditState | undefined>,\n default: undefined\n },\n // ---- 埋点能力 ----\n track: {\n type: [Boolean, Object] as PropType<boolean | TrackFieldConfig | undefined>,\n default: undefined\n },\n trackState: {\n type: Object as PropType<TrackState | undefined>,\n default: undefined\n },\n // ---- 权限能力 ----\n /** 权限配置:控制 disabled/hidden/readonly 效果 */\n permission: {\n type: [Boolean, Object] as PropType<\n boolean | PermissionFieldConfig | undefined\n >,\n default: undefined\n }\n} as const;\n\nexport const selectEmits = [\n 'update:modelValue',\n 'input',\n 'change',\n 'select-all',\n 'pagination-change',\n 'audit-trigger',\n 'track-event',\n 'permission-check'\n] as const;\n\n// SELF_PROP_KEYS 仅驼峰(Vue 模板编译已转驼峰;useOmitForwardProps 按字符串 delete)\nconst SELF_PROP_KEYS = [\n 'modelValue',\n 'loose',\n 'multipleString',\n 'valueSeparator',\n 'disabledTip',\n 'disabledTipPlacement',\n 'useVirtual',\n 'optionSource',\n 'optionValueKey',\n 'optionLabelKey',\n 'customLabel',\n 'returnObject',\n 'isShowPagination',\n 'paginationOption',\n 'isCached',\n 'isRadioEchoLabel',\n 'radioSelectValLabel',\n 'selectAllTxt',\n 'showSelectAll',\n 'textMode',\n 'audit',\n 'auditState',\n 'track',\n 'trackState',\n 'permission'\n] as const;\n\n/**\n * 计算 textMode 下的展示文本。\n * 优先级:returnObject > multipleString(string) > multiple(array) > 单值。\n * optionSource 为空时降级为 String(原始值),并 dev warn 一次。\n */\nfunction computeDisplayText(props: any, instance: any): string {\n // 双端读外部值(与 useLooseModel.readExternal 思路一致)\n const vm = instance?.proxy || instance;\n const raw = isVue2\n ? (vm?.$attrs?.value ?? (vm as any)?.value)\n : props.modelValue;\n if (raw == null || raw === '') return '';\n if (Array.isArray(raw) && raw.length === 0) return '';\n\n const sep = props.valueSeparator || ',';\n const valueKey = props.optionValueKey || 'value';\n const labelKey = props.optionLabelKey || 'label';\n const src: any[] = Array.isArray(props.optionSource)\n ? props.optionSource\n : [];\n\n // returnObject 分支:直接读对象上的 label\n if (props.returnObject) {\n if (props.multiple && Array.isArray(raw)) {\n return raw\n .map(o => (o && o[labelKey] != null ? String(o[labelKey]) : ''))\n .filter(Boolean)\n .join(sep);\n }\n return raw && typeof raw === 'object' ? String(raw[labelKey] ?? '') : '';\n }\n\n // 拆分为值数组\n let values: any[];\n if (props.multiple && props.multipleString && typeof raw === 'string') {\n values = raw\n .split(sep)\n .map((s: string) => s.trim())\n .filter((s: string) => s !== '');\n } else if (Array.isArray(raw)) {\n values = raw;\n } else {\n values = [raw];\n }\n\n // optionSource 为空(slot 模式)→ 降级为原始值 + dev warn 一次\n if (src.length === 0) {\n warnOnce(\n 'XSelect:textMode-noSource',\n '[XSelect] textMode=true 但 optionSource 为空,无法查找 label,已降级为原始值展示。推荐配合 optionSource 使用。'\n );\n return values.map(v => String(v ?? '')).join(sep);\n }\n\n // 扁平化 optionSource(展开 group 子项),与 render-options.tsx 的 group 识别一致\n const flat: any[] = [];\n for (const it of src) {\n if (it && Array.isArray(it.options)) flat.push(...it.options);\n else if (it) flat.push(it);\n }\n\n // 每个 value 查 label(loose=true 时宽松比较)\n const lookup = (v: any): string => {\n const matched = flat.find(o =>\n props.loose ? String(o?.[valueKey]) === String(v) : o?.[valueKey] === v\n );\n return matched && matched[labelKey] != null\n ? String(matched[labelKey])\n : String(v ?? '');\n };\n\n return values.map(lookup).join(sep);\n}\n\nexport default defineComponent({\n name: 'XSelect',\n inheritAttrs: false,\n props: selectProps,\n emits: [...selectEmits],\n setup(props, { attrs, emit }) {\n const instance = getCurrentInstance()!;\n const ElSelect = getUIComponent('Select');\n const ElSelectV2 = getUIComponent('SelectV2'); // Vue2 下 undefined\n\n // 组件选择:useVirtual 且存在 ElSelectV2 → SelectV2;否则回退 Select\n const Comp = (() => {\n if (!props.useVirtual) return ElSelect;\n if (ElSelectV2) {\n // ElSelectV2 要求 options 必填,若 optionSource 为空则降级\n if (\n !Array.isArray(props.optionSource) ||\n props.optionSource.length === 0\n ) {\n // 注意:不可用 import process from 'node:process'(webpack 4 运行时无法解析 node: 协议,得到 undefined)\n // 用 (globalThis as any).process?.env?.NODE_ENV 保证浏览器运行时安全(同 XButton 范式)\n if ((globalThis as any).process?.env?.NODE_ENV !== 'production') {\n console.warn(\n '[XSelect] useVirtual=true 但 optionSource 为空,已降级为 ElSelect'\n );\n }\n return ElSelect;\n }\n return ElSelectV2;\n }\n if ((globalThis as any).process?.env?.NODE_ENV !== 'production') {\n console.warn(\n '[XSelect] useVirtual 在 Vue2/element-ui 下降级为 ElSelect'\n );\n }\n return ElSelect;\n })();\n\n // —— 三大 hooks ——\n const { innerValue, updateInner, emitOutside } = useLooseModel(\n props,\n emit,\n instance\n );\n const { mergedSource, paginationNode, selectAllNode, onChangeWithCache } =\n usePagination(props, emit, instance, updateInner);\n const wrapWithTip = useDisabledTip(props);\n\n // 属性隔离:先全量 forward,再 delete 自有 prop\n const forwarded = useForwardProps(props);\n const elForwarded = useOmitForwardProps(forwarded, SELF_PROP_KEYS);\n\n // ---- 审查能力 ----\n const auditMode = computed<'controlled' | 'auto' | 'off'>(() => {\n if (props.auditState) return 'controlled';\n if (typeof props.audit === 'object' && props.audit !== null)\n return 'auto';\n return 'off';\n });\n\n const autoAudit = useAuditInternal({\n enabled: () => auditMode.value === 'auto',\n config: () =>\n typeof props.audit === 'object'\n ? (props.audit as AuditFieldConfig)\n : null,\n value: () => innerValue.value,\n field: () => (attrs as any).name ?? 'unknown',\n comp: 'x-select'\n });\n\n const internalAuditState = computed<AuditState | null>(() => {\n if (auditMode.value === 'controlled') return props.auditState!;\n if (auditMode.value === 'auto') return autoAudit.state.value;\n return null;\n });\n\n // ---- 埋点能力 ----\n const trackMode = computed<'controlled' | 'auto' | 'off'>(() => {\n if (props.trackState) return 'controlled';\n if (typeof props.track === 'object' && props.track !== null)\n return 'auto';\n return 'off';\n });\n\n const autoTrack = useTrackInternal({\n enabled: () => trackMode.value === 'auto',\n config: () =>\n typeof props.track === 'object'\n ? (props.track as TrackFieldConfig)\n : null,\n value: () => innerValue.value,\n field: () => (attrs as any).name ?? 'unknown',\n comp: 'x-select'\n });\n\n const userOnVisibleChange = (attrs as any).onVisibleChange;\n const handleAuditVisibleChange = (visible: boolean) => {\n if (typeof userOnVisibleChange === 'function')\n userOnVisibleChange(visible);\n if (\n !visible &&\n !props.textMode &&\n props.audit !== undefined &&\n props.audit !== false\n ) {\n const cur = innerValue.value;\n emit('audit-trigger', cur, { source: 'visible-change' as const });\n if (auditMode.value === 'auto') autoAudit.run();\n }\n // 埋点触发\n if (!visible && props.track !== undefined && props.track !== false) {\n emit('track-event', 'visible-change', {\n value: innerValue.value,\n field: (attrs as any).name ?? 'unknown'\n });\n if (trackMode.value === 'auto') autoTrack.run();\n }\n };\n\n return () => {\n // 文本模式:完全跳过 ElSelect 渲染,仅展示当前选中项的 label。\n // 优先级最高,覆盖 useVirtual / 分页 / 全选 / 禁用提示。\n if (props.textMode) {\n const text = computeDisplayText(props, instance);\n return h('span', { class: 'x-select__text' }, [text]);\n }\n\n const slots = useCompatSlots(instance);\n const listenerProps = useCompatListeners(instance);\n\n // v-model 双端分流(参见 XInput/index.tsx 既定范式)\n const modelBinding = isVue2\n ? {\n value: innerValue.value,\n onInput: (v: any) => emitOutside(updateInner(v))\n }\n : {\n modelValue: innerValue.value,\n 'onUpdate:modelValue': (v: any) => emitOutside(updateInner(v))\n };\n\n // 合并顺序(不可变更):透传 props < attrs < listeners < modelBinding < 自有覆盖\n const { onVisibleChange: _omitVc, ...restAttrs } = attrs as any;\n const compProps: Record<string, any> = {\n ...elForwarded.value,\n ...restAttrs,\n ...listenerProps,\n ...modelBinding,\n onChange: (val: any) => {\n onChangeWithCache(val);\n if (\n !props.textMode &&\n props.audit !== undefined &&\n props.audit !== false\n ) {\n emit('audit-trigger', val, { source: 'change' as const });\n if (auditMode.value === 'auto') autoAudit.run();\n }\n // 埋点触发\n if (props.track !== undefined && props.track !== false) {\n emit('track-event', 'change', {\n value: val,\n field: (attrs as any).name ?? 'unknown'\n });\n if (trackMode.value === 'auto') autoTrack.run();\n }\n },\n onVisibleChange: handleAuditVisibleChange\n };\n\n // 子节点策略:\n // useVirtual + ElSelectV2:通过 options prop 传扁平数组,不走 slot\n // 否则 optionSource 非空:数据驱动 slot.default\n // 否则:透传默认 slot\n const isV2 = props.useVirtual && ElSelectV2 && Comp === ElSelectV2;\n\n const slotNodes: Record<string, any> = {};\n\n if (isV2) {\n // ElSelectV2 需要扁平 { value, label, disabled } 数组,不支持 group 嵌套\n const valueKey = props.optionValueKey || 'value';\n const labelKey = props.optionLabelKey || 'label';\n const flatten = (arr: any[]): any[] => {\n const out: any[] = [];\n for (const item of arr || []) {\n if (item && Array.isArray(item.options)) {\n out.push(\n ...item.options.map((sub: any) => ({\n value: sub[valueKey],\n label: sub[labelKey],\n disabled: !!sub.disabled\n }))\n );\n } else if (item) {\n out.push({\n value: item[valueKey],\n label: item[labelKey],\n disabled: !!item.disabled\n });\n }\n }\n return out;\n };\n compProps.options = flatten(mergedSource.value);\n // ElSelectV2 仍可能用到其他 slot(如 empty),透传\n Object.keys(slots).forEach(name => {\n if (name !== 'default') {\n slotNodes[name] = (scope: any) => renderSlot(slots, name, scope);\n }\n });\n } else if (props.optionSource && props.optionSource.length) {\n slotNodes.default = () => renderOptionTree(mergedSource.value, props);\n if (slots.default && (globalThis as any).process?.env?.NODE_ENV !== 'production') {\n console.warn(\n '[XSelect] optionSource 与默认 slot 同时存在,已忽略 slot'\n );\n }\n } else {\n Object.keys(slots).forEach(name => {\n slotNodes[name] = (scope: any) => renderSlot(slots, name, scope);\n });\n }\n\n // 全选 checkbox:multiple && showSelectAll && !useVirtual && !isShowPagination\n if (selectAllNode) {\n const original = slotNodes.default;\n slotNodes.default = (s: any) => [\n selectAllNode(),\n original ? original(s) : null\n ];\n }\n\n // 分页节点:Vue3/element-plus 用 footer slot;Vue2/element-ui 注入 default 末尾\n if (paginationNode) {\n if (!isVue2) {\n slotNodes.footer = () => paginationNode();\n } else {\n const original = slotNodes.default;\n slotNodes.default = (s: any) => [\n original ? original(s) : null,\n paginationNode()\n ];\n }\n }\n\n const node = h(Comp, compProps, slotNodes);\n const mainVNode = wrapWithTip(node);\n if (internalAuditState.value) {\n return h('div', { class: 'x-select-wrapper' }, [\n mainVNode,\n h(AuditFeedback, { state: internalAuditState.value })\n ]);\n }\n return mainVNode;\n };\n }\n});\n"],"names":["selectProps","modelValue","type","String","Number","Boolean","Object","Array","default","loose","multipleString","valueSeparator","disabledTip","disabledTipPlacement","useVirtual","optionSource","optionValueKey","optionLabelKey","customLabel","Function","returnObject","isShowPagination","paginationOption","pageSize","currentPage","pagerCount","total","isCached","isRadioEchoLabel","radioSelectValLabel","selectAllTxt","showSelectAll","textMode","audit","auditState","track","trackState","permission","selectEmits","SELF_PROP_KEYS","XSelect","defineComponent","name","inheritAttrs","props","emits","setup","attrs","emit","instance","getCurrentInstance","ElSelect","getUIComponent","ElSelectV2","Comp","isArray","length","_b","process","_a","env","NODE_ENV","_d","_c","innerValue","updateInner","emitOutside","useLooseModel","mergedSource","paginationNode","selectAllNode","onChangeWithCache","usePagination","wrapWithTip","useDisabledTip","forwarded","useForwardProps","elForwarded","useOmitForwardProps","auditMode","computed","autoAudit","useAuditInternal","enabled","value","config","field","comp","internalAuditState","state","trackMode","autoTrack","useTrackInternal","userOnVisibleChange","onVisibleChange","handleAuditVisibleChange","visible","cur","source","run","text","vm","proxy","raw","$attrs","sep","valueKey","labelKey","src","multiple","map","o","filter","join","values","split","s","trim","warnOnce","v","flat","it","options","push","matched","find","computeDisplayText","h","class","slots","useCompatSlots","listenerProps","useCompatListeners","modelBinding","onInput","_omitVc","restAttrs","__objRest","compProps","__spreadValues","onChange","val","isV2","slotNodes","flatten","arr","out","item","sub","label","disabled","keys","forEach","scope","renderSlot","renderOptionTree","globalThis","original","node","mainVNode","AuditFeedback"],"mappings":"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"}
1
+ {"version":3,"file":"index73.cjs","sources":["../../src/components/XSelect/index.tsx"],"sourcesContent":["import type { PropType } from 'vue-demi';\nimport type {\n AuditFieldConfig,\n AuditState,\n TrackFieldConfig,\n TrackState,\n PermissionFieldConfig\n} from '../../hooks/capability/types';\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n isVue2\n} from 'vue-demi';\nimport { getUIComponent } from '../../adapters/ui-provider';\nimport { h } from '../../compat/h';\nimport {\n renderSlot,\n useCompatListeners,\n useCompatSlots\n} from '../../compat/slots';\nimport { useForwardProps, useOmitForwardProps } from '../../hooks';\nimport { useAuditInternal } from '../../hooks/capability/useAuditInternal';\n\nimport { useTrackInternal } from '../../hooks/capability/useTrackInternal';\nimport { useDisabledTip } from '../../hooks/useDisabledTip';\nimport { useLooseModel } from '../../hooks/useLooseModel';\nimport { warnOnce } from '../../utils/warnOnce';\nimport AuditFeedback from '../AuditFeedback/index';\nimport { renderOptionTree } from './render-options';\nimport { usePagination } from './usePagination';\nimport './style.scss';\n\n// ============ Props 声明 ============\nexport const selectProps = {\n // v-model:必须声明,否则 Vue3 下 modelValue 进入 attrs 而非 props,\n // 导致 useLooseModel 的 readExternal() 读取 props.modelValue 为 undefined,\n // innerValue 始终为 undefined,选中值后无法回显。\n // 参考 XInput/index.tsx 既定范式。\n modelValue: {\n type: [String, Number, Boolean, Object, Array] as PropType<any>,\n default: undefined\n },\n loose: { type: Boolean, default: false },\n multipleString: { type: Boolean, default: false },\n valueSeparator: { type: String, default: ',' },\n disabledTip: { type: String, default: '' },\n disabledTipPlacement: { type: String, default: 'top' },\n useVirtual: { type: Boolean, default: false },\n optionSource: { type: Array as PropType<any[]>, default: () => [] },\n optionValueKey: { type: String, default: 'value' },\n optionLabelKey: { type: String, default: 'label' },\n customLabel: {\n type: [Function, String] as PropType<\n ((option: Record<string, any>, index: number) => any) | string\n >,\n default: ''\n },\n returnObject: { type: Boolean, default: false },\n isShowPagination: { type: Boolean, default: false },\n paginationOption: {\n type: Object as PropType<{\n pageSize?: number;\n currentPage?: number;\n pagerCount?: number;\n total?: number;\n }>,\n default: () => ({ pageSize: 6, currentPage: 1, pagerCount: 5, total: 0 })\n },\n isCached: { type: Boolean, default: true },\n isRadioEchoLabel: { type: Boolean, default: true },\n radioSelectValLabel: { type: String, default: '' },\n selectAllTxt: { type: String, default: '' },\n showSelectAll: { type: Boolean, default: true },\n // 文本模式:true 时跳过 ElSelect 渲染,以 <span> 展示当前选中项 label,用于只读回显\n textMode: { type: Boolean, default: false },\n // ---- 审查能力 ----\n audit: {\n type: [Boolean, Object] as PropType<boolean | AuditFieldConfig | undefined>,\n default: undefined\n },\n auditState: {\n type: Object as PropType<AuditState | undefined>,\n default: undefined\n },\n // ---- 埋点能力 ----\n track: {\n type: [Boolean, Object] as PropType<boolean | TrackFieldConfig | undefined>,\n default: undefined\n },\n trackState: {\n type: Object as PropType<TrackState | undefined>,\n default: undefined\n },\n // ---- 权限能力 ----\n /** 权限配置:控制 disabled/hidden/readonly 效果 */\n permission: {\n type: [Boolean, Object] as PropType<\n boolean | PermissionFieldConfig | undefined\n >,\n default: undefined\n }\n} as const;\n\nexport const selectEmits = [\n 'update:modelValue',\n 'input',\n 'change',\n 'select-all',\n 'pagination-change',\n 'audit-trigger',\n 'track-event',\n 'permission-check'\n] as const;\n\n// SELF_PROP_KEYS 仅驼峰(Vue 模板编译已转驼峰;useOmitForwardProps 按字符串 delete)\nconst SELF_PROP_KEYS = [\n 'modelValue',\n 'loose',\n 'multipleString',\n 'valueSeparator',\n 'disabledTip',\n 'disabledTipPlacement',\n 'useVirtual',\n 'optionSource',\n 'optionValueKey',\n 'optionLabelKey',\n 'customLabel',\n 'returnObject',\n 'isShowPagination',\n 'paginationOption',\n 'isCached',\n 'isRadioEchoLabel',\n 'radioSelectValLabel',\n 'selectAllTxt',\n 'showSelectAll',\n 'textMode',\n 'audit',\n 'auditState',\n 'track',\n 'trackState',\n 'permission'\n] as const;\n\n/**\n * 计算 textMode 下的展示文本。\n * 优先级:returnObject > multipleString(string) > multiple(array) > 单值。\n * optionSource 为空时降级为 String(原始值),并 dev warn 一次。\n */\nfunction computeDisplayText(props: any, instance: any): string {\n // 双端读外部值(与 useLooseModel.readExternal 思路一致)\n const vm = instance?.proxy || instance;\n const raw = isVue2\n ? (vm?.$attrs?.value ?? (vm as any)?.value)\n : props.modelValue;\n if (raw == null || raw === '') return '';\n if (Array.isArray(raw) && raw.length === 0) return '';\n\n const sep = props.valueSeparator || ',';\n const valueKey = props.optionValueKey || 'value';\n const labelKey = props.optionLabelKey || 'label';\n const src: any[] = Array.isArray(props.optionSource)\n ? props.optionSource\n : [];\n\n // returnObject 分支:直接读对象上的 label\n if (props.returnObject) {\n if (props.multiple && Array.isArray(raw)) {\n return raw\n .map(o => (o && o[labelKey] != null ? String(o[labelKey]) : ''))\n .filter(Boolean)\n .join(sep);\n }\n return raw && typeof raw === 'object' ? String(raw[labelKey] ?? '') : '';\n }\n\n // 拆分为值数组\n let values: any[];\n if (props.multiple && props.multipleString && typeof raw === 'string') {\n values = raw\n .split(sep)\n .map((s: string) => s.trim())\n .filter((s: string) => s !== '');\n } else if (Array.isArray(raw)) {\n values = raw;\n } else {\n values = [raw];\n }\n\n // optionSource 为空(slot 模式)→ 降级为原始值 + dev warn 一次\n if (src.length === 0) {\n warnOnce(\n 'XSelect:textMode-noSource',\n '[XSelect] textMode=true 但 optionSource 为空,无法查找 label,已降级为原始值展示。推荐配合 optionSource 使用。'\n );\n return values.map(v => String(v ?? '')).join(sep);\n }\n\n // 扁平化 optionSource(展开 group 子项),与 render-options.tsx 的 group 识别一致\n const flat: any[] = [];\n for (const it of src) {\n if (it && Array.isArray(it.options)) flat.push(...it.options);\n else if (it) flat.push(it);\n }\n\n // 每个 value 查 label(loose=true 时宽松比较)\n const lookup = (v: any): string => {\n const matched = flat.find(o =>\n props.loose ? String(o?.[valueKey]) === String(v) : o?.[valueKey] === v\n );\n return matched && matched[labelKey] != null\n ? String(matched[labelKey])\n : String(v ?? '');\n };\n\n return values.map(lookup).join(sep);\n}\n\nexport default defineComponent({\n name: 'XSelect',\n inheritAttrs: false,\n props: selectProps,\n emits: [...selectEmits],\n setup(props, { attrs, emit }) {\n const instance = getCurrentInstance()!;\n const ElSelect = getUIComponent('Select');\n const ElSelectV2 = getUIComponent('SelectV2'); // Vue2 下 undefined\n\n // 组件选择:useVirtual 且存在 ElSelectV2 → SelectV2;否则回退 Select\n const Comp = (() => {\n if (!props.useVirtual) return ElSelect;\n if (ElSelectV2) {\n // ElSelectV2 要求 options 必填,若 optionSource 为空则降级\n if (\n !Array.isArray(props.optionSource) ||\n props.optionSource.length === 0\n ) {\n // 注意:不可用 import process from 'node:process'(webpack 4 运行时无法解析 node: 协议,得到 undefined)\n // 用 (globalThis as any).process?.env?.NODE_ENV 保证浏览器运行时安全(同 XButton 范式)\n if ((globalThis as any).process?.env?.NODE_ENV !== 'production') {\n console.warn(\n '[XSelect] useVirtual=true 但 optionSource 为空,已降级为 ElSelect'\n );\n }\n return ElSelect;\n }\n return ElSelectV2;\n }\n if ((globalThis as any).process?.env?.NODE_ENV !== 'production') {\n console.warn(\n '[XSelect] useVirtual 在 Vue2/element-ui 下降级为 ElSelect'\n );\n }\n return ElSelect;\n })();\n\n // —— 三大 hooks ——\n const { innerValue, updateInner, emitOutside } = useLooseModel(\n props,\n emit,\n instance\n );\n const { mergedSource, paginationNode, selectAllNode, onChangeWithCache } =\n usePagination(props, emit, instance, updateInner);\n const wrapWithTip = useDisabledTip(props);\n\n // 属性隔离:先全量 forward,再 delete 自有 prop\n const forwarded = useForwardProps(props);\n const elForwarded = useOmitForwardProps(forwarded, SELF_PROP_KEYS);\n\n // ---- 审查能力 ----\n const auditMode = computed<'controlled' | 'auto' | 'off'>(() => {\n if (props.auditState) return 'controlled';\n if (typeof props.audit === 'object' && props.audit !== null)\n return 'auto';\n return 'off';\n });\n\n const autoAudit = useAuditInternal({\n enabled: () => auditMode.value === 'auto',\n config: () =>\n typeof props.audit === 'object'\n ? (props.audit as AuditFieldConfig)\n : null,\n value: () => innerValue.value,\n field: () => (attrs as any).name ?? 'unknown',\n comp: 'x-select'\n });\n\n const internalAuditState = computed<AuditState | null>(() => {\n if (auditMode.value === 'controlled') return props.auditState!;\n if (auditMode.value === 'auto') return autoAudit.state.value;\n return null;\n });\n\n // ---- 埋点能力 ----\n const trackMode = computed<'controlled' | 'auto' | 'off'>(() => {\n if (props.trackState) return 'controlled';\n if (typeof props.track === 'object' && props.track !== null)\n return 'auto';\n return 'off';\n });\n\n const autoTrack = useTrackInternal({\n enabled: () => trackMode.value === 'auto',\n config: () =>\n typeof props.track === 'object'\n ? (props.track as TrackFieldConfig)\n : null,\n value: () => innerValue.value,\n field: () => (attrs as any).name ?? 'unknown',\n comp: 'x-select'\n });\n\n const userOnVisibleChange = (attrs as any).onVisibleChange;\n const handleAuditVisibleChange = (visible: boolean) => {\n if (typeof userOnVisibleChange === 'function')\n userOnVisibleChange(visible);\n if (\n !visible &&\n !props.textMode &&\n props.audit !== undefined &&\n props.audit !== false\n ) {\n const cur = innerValue.value;\n emit('audit-trigger', cur, { source: 'visible-change' as const });\n if (auditMode.value === 'auto') autoAudit.run();\n }\n // 埋点触发\n if (!visible && props.track !== undefined && props.track !== false) {\n emit('track-event', 'visible-change', {\n value: innerValue.value,\n field: (attrs as any).name ?? 'unknown'\n });\n if (trackMode.value === 'auto') autoTrack.run();\n }\n };\n\n return () => {\n // 文本模式:完全跳过 ElSelect 渲染,仅展示当前选中项的 label。\n // 优先级最高,覆盖 useVirtual / 分页 / 全选 / 禁用提示。\n if (props.textMode) {\n const text = computeDisplayText(props, instance);\n return h('span', { class: 'x-select__text' }, [text]);\n }\n\n const slots = useCompatSlots(instance);\n const listenerProps = useCompatListeners(instance);\n\n // v-model 双端分流(参见 XInput/index.tsx 既定范式)\n const modelBinding = isVue2\n ? {\n value: innerValue.value,\n onInput: (v: any) => emitOutside(updateInner(v))\n }\n : {\n modelValue: innerValue.value,\n 'onUpdate:modelValue': (v: any) => emitOutside(updateInner(v))\n };\n\n // 合并顺序(不可变更):透传 props < attrs < listeners < modelBinding < 自有覆盖\n const { onVisibleChange: _omitVc, ...restAttrs } = attrs as any;\n const compProps: Record<string, any> = {\n ...elForwarded.value,\n ...restAttrs,\n ...listenerProps,\n ...modelBinding,\n onChange: (val: any) => {\n onChangeWithCache(val);\n if (\n !props.textMode &&\n props.audit !== undefined &&\n props.audit !== false\n ) {\n emit('audit-trigger', val, { source: 'change' as const });\n if (auditMode.value === 'auto') autoAudit.run();\n }\n // 埋点触发\n if (props.track !== undefined && props.track !== false) {\n emit('track-event', 'change', {\n value: val,\n field: (attrs as any).name ?? 'unknown'\n });\n if (trackMode.value === 'auto') autoTrack.run();\n }\n },\n onVisibleChange: handleAuditVisibleChange\n };\n\n // 子节点策略:\n // useVirtual + ElSelectV2:通过 options prop 传扁平数组,不走 slot\n // 否则 optionSource 非空:数据驱动 slot.default\n // 否则:透传默认 slot\n const isV2 = props.useVirtual && ElSelectV2 && Comp === ElSelectV2;\n\n const slotNodes: Record<string, any> = {};\n\n if (isV2) {\n // ElSelectV2 需要扁平 { value, label, disabled } 数组,不支持 group 嵌套\n const valueKey = props.optionValueKey || 'value';\n const labelKey = props.optionLabelKey || 'label';\n const flatten = (arr: any[]): any[] => {\n const out: any[] = [];\n for (const item of arr || []) {\n if (item && Array.isArray(item.options)) {\n out.push(\n ...item.options.map((sub: any) => ({\n value: sub[valueKey],\n label: sub[labelKey],\n disabled: !!sub.disabled\n }))\n );\n } else if (item) {\n out.push({\n value: item[valueKey],\n label: item[labelKey],\n disabled: !!item.disabled\n });\n }\n }\n return out;\n };\n compProps.options = flatten(mergedSource.value);\n // ElSelectV2 仍可能用到其他 slot(如 empty),透传\n Object.keys(slots).forEach(name => {\n if (name !== 'default') {\n slotNodes[name] = (scope: any) => renderSlot(slots, name, scope);\n }\n });\n } else if (props.optionSource && props.optionSource.length) {\n slotNodes.default = () => renderOptionTree(mergedSource.value, props);\n if (\n slots.default &&\n (globalThis as any).process?.env?.NODE_ENV !== 'production'\n ) {\n console.warn(\n '[XSelect] optionSource 与默认 slot 同时存在,已忽略 slot'\n );\n }\n } else {\n Object.keys(slots).forEach(name => {\n slotNodes[name] = (scope: any) => renderSlot(slots, name, scope);\n });\n }\n\n // 全选 checkbox:multiple && showSelectAll && !useVirtual && !isShowPagination\n if (selectAllNode) {\n const original = slotNodes.default;\n slotNodes.default = (s: any) => [\n selectAllNode(),\n original ? original(s) : null\n ];\n }\n\n // 分页节点:Vue3/element-plus 用 footer slot;Vue2/element-ui 注入 default 末尾\n if (paginationNode) {\n if (!isVue2) {\n slotNodes.footer = () => paginationNode();\n } else {\n const original = slotNodes.default;\n slotNodes.default = (s: any) => [\n original ? original(s) : null,\n paginationNode()\n ];\n }\n }\n\n const node = h(Comp, compProps, slotNodes);\n const mainVNode = wrapWithTip(node);\n if (internalAuditState.value) {\n return h('div', { class: 'x-select-wrapper' }, [\n mainVNode,\n h(AuditFeedback, { state: internalAuditState.value })\n ]);\n }\n return mainVNode;\n };\n }\n});\n"],"names":["selectProps","modelValue","type","String","Number","Boolean","Object","Array","default","loose","multipleString","valueSeparator","disabledTip","disabledTipPlacement","useVirtual","optionSource","optionValueKey","optionLabelKey","customLabel","Function","returnObject","isShowPagination","paginationOption","pageSize","currentPage","pagerCount","total","isCached","isRadioEchoLabel","radioSelectValLabel","selectAllTxt","showSelectAll","textMode","audit","auditState","track","trackState","permission","selectEmits","SELF_PROP_KEYS","XSelect","defineComponent","name","inheritAttrs","props","emits","setup","attrs","emit","instance","getCurrentInstance","ElSelect","getUIComponent","ElSelectV2","Comp","isArray","length","_b","process","_a","env","NODE_ENV","_d","_c","innerValue","updateInner","emitOutside","useLooseModel","mergedSource","paginationNode","selectAllNode","onChangeWithCache","usePagination","wrapWithTip","useDisabledTip","forwarded","useForwardProps","elForwarded","useOmitForwardProps","auditMode","computed","autoAudit","useAuditInternal","enabled","value","config","field","comp","internalAuditState","state","trackMode","autoTrack","useTrackInternal","userOnVisibleChange","onVisibleChange","handleAuditVisibleChange","visible","cur","source","run","text","vm","proxy","raw","$attrs","sep","valueKey","labelKey","src","multiple","map","o","filter","join","values","split","s","trim","warnOnce","v","flat","it","options","push","matched","find","computeDisplayText","h","class","slots","useCompatSlots","listenerProps","useCompatListeners","modelBinding","onInput","_omitVc","restAttrs","__objRest","compProps","__spreadValues","onChange","val","isV2","slotNodes","flatten","arr","out","item","sub","label","disabled","keys","forEach","scope","renderSlot","renderOptionTree","globalThis","original","node","mainVNode","AuditFeedback"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index73.mjs","sources":["../../src/components/XSelect/index.tsx"],"sourcesContent":["import type { PropType } from 'vue-demi';\nimport type {\n AuditFieldConfig,\n AuditState,\n TrackFieldConfig,\n TrackState,\n PermissionFieldConfig\n} from '../../hooks/capability/types';\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n isVue2\n} from 'vue-demi';\nimport { getUIComponent } from '../../adapters/ui-provider';\nimport { h } from '../../compat/h';\nimport {\n renderSlot,\n useCompatListeners,\n useCompatSlots\n} from '../../compat/slots';\nimport { useForwardProps, useOmitForwardProps } from '../../hooks';\nimport { useAuditInternal } from '../../hooks/capability/useAuditInternal';\n\nimport { useTrackInternal } from '../../hooks/capability/useTrackInternal';\nimport { useDisabledTip } from '../../hooks/useDisabledTip';\nimport { useLooseModel } from '../../hooks/useLooseModel';\nimport { warnOnce } from '../../utils/warnOnce';\nimport AuditFeedback from '../AuditFeedback/index';\nimport { renderOptionTree } from './render-options';\nimport { usePagination } from './usePagination';\nimport './style.scss';\n\n// ============ Props 声明 ============\nexport const selectProps = {\n // v-model:必须声明,否则 Vue3 下 modelValue 进入 attrs 而非 props,\n // 导致 useLooseModel 的 readExternal() 读取 props.modelValue 为 undefined,\n // innerValue 始终为 undefined,选中值后无法回显。\n // 参考 XInput/index.tsx 既定范式。\n modelValue: {\n type: [String, Number, Boolean, Object, Array] as PropType<any>,\n default: undefined\n },\n loose: { type: Boolean, default: false },\n multipleString: { type: Boolean, default: false },\n valueSeparator: { type: String, default: ',' },\n disabledTip: { type: String, default: '' },\n disabledTipPlacement: { type: String, default: 'top' },\n useVirtual: { type: Boolean, default: false },\n optionSource: { type: Array as PropType<any[]>, default: () => [] },\n optionValueKey: { type: String, default: 'value' },\n optionLabelKey: { type: String, default: 'label' },\n customLabel: {\n type: [Function, String] as PropType<\n ((option: Record<string, any>, index: number) => any) | string\n >,\n default: ''\n },\n returnObject: { type: Boolean, default: false },\n isShowPagination: { type: Boolean, default: false },\n paginationOption: {\n type: Object as PropType<{\n pageSize?: number;\n currentPage?: number;\n pagerCount?: number;\n total?: number;\n }>,\n default: () => ({ pageSize: 6, currentPage: 1, pagerCount: 5, total: 0 })\n },\n isCached: { type: Boolean, default: true },\n isRadioEchoLabel: { type: Boolean, default: true },\n radioSelectValLabel: { type: String, default: '' },\n selectAllTxt: { type: String, default: '' },\n showSelectAll: { type: Boolean, default: true },\n // 文本模式:true 时跳过 ElSelect 渲染,以 <span> 展示当前选中项 label,用于只读回显\n textMode: { type: Boolean, default: false },\n // ---- 审查能力 ----\n audit: {\n type: [Boolean, Object] as PropType<boolean | AuditFieldConfig | undefined>,\n default: undefined\n },\n auditState: {\n type: Object as PropType<AuditState | undefined>,\n default: undefined\n },\n // ---- 埋点能力 ----\n track: {\n type: [Boolean, Object] as PropType<boolean | TrackFieldConfig | undefined>,\n default: undefined\n },\n trackState: {\n type: Object as PropType<TrackState | undefined>,\n default: undefined\n },\n // ---- 权限能力 ----\n /** 权限配置:控制 disabled/hidden/readonly 效果 */\n permission: {\n type: [Boolean, Object] as PropType<\n boolean | PermissionFieldConfig | undefined\n >,\n default: undefined\n }\n} as const;\n\nexport const selectEmits = [\n 'update:modelValue',\n 'input',\n 'change',\n 'select-all',\n 'pagination-change',\n 'audit-trigger',\n 'track-event',\n 'permission-check'\n] as const;\n\n// SELF_PROP_KEYS 仅驼峰(Vue 模板编译已转驼峰;useOmitForwardProps 按字符串 delete)\nconst SELF_PROP_KEYS = [\n 'modelValue',\n 'loose',\n 'multipleString',\n 'valueSeparator',\n 'disabledTip',\n 'disabledTipPlacement',\n 'useVirtual',\n 'optionSource',\n 'optionValueKey',\n 'optionLabelKey',\n 'customLabel',\n 'returnObject',\n 'isShowPagination',\n 'paginationOption',\n 'isCached',\n 'isRadioEchoLabel',\n 'radioSelectValLabel',\n 'selectAllTxt',\n 'showSelectAll',\n 'textMode',\n 'audit',\n 'auditState',\n 'track',\n 'trackState',\n 'permission'\n] as const;\n\n/**\n * 计算 textMode 下的展示文本。\n * 优先级:returnObject > multipleString(string) > multiple(array) > 单值。\n * optionSource 为空时降级为 String(原始值),并 dev warn 一次。\n */\nfunction computeDisplayText(props: any, instance: any): string {\n // 双端读外部值(与 useLooseModel.readExternal 思路一致)\n const vm = instance?.proxy || instance;\n const raw = isVue2\n ? (vm?.$attrs?.value ?? (vm as any)?.value)\n : props.modelValue;\n if (raw == null || raw === '') return '';\n if (Array.isArray(raw) && raw.length === 0) return '';\n\n const sep = props.valueSeparator || ',';\n const valueKey = props.optionValueKey || 'value';\n const labelKey = props.optionLabelKey || 'label';\n const src: any[] = Array.isArray(props.optionSource)\n ? props.optionSource\n : [];\n\n // returnObject 分支:直接读对象上的 label\n if (props.returnObject) {\n if (props.multiple && Array.isArray(raw)) {\n return raw\n .map(o => (o && o[labelKey] != null ? String(o[labelKey]) : ''))\n .filter(Boolean)\n .join(sep);\n }\n return raw && typeof raw === 'object' ? String(raw[labelKey] ?? '') : '';\n }\n\n // 拆分为值数组\n let values: any[];\n if (props.multiple && props.multipleString && typeof raw === 'string') {\n values = raw\n .split(sep)\n .map((s: string) => s.trim())\n .filter((s: string) => s !== '');\n } else if (Array.isArray(raw)) {\n values = raw;\n } else {\n values = [raw];\n }\n\n // optionSource 为空(slot 模式)→ 降级为原始值 + dev warn 一次\n if (src.length === 0) {\n warnOnce(\n 'XSelect:textMode-noSource',\n '[XSelect] textMode=true 但 optionSource 为空,无法查找 label,已降级为原始值展示。推荐配合 optionSource 使用。'\n );\n return values.map(v => String(v ?? '')).join(sep);\n }\n\n // 扁平化 optionSource(展开 group 子项),与 render-options.tsx 的 group 识别一致\n const flat: any[] = [];\n for (const it of src) {\n if (it && Array.isArray(it.options)) flat.push(...it.options);\n else if (it) flat.push(it);\n }\n\n // 每个 value 查 label(loose=true 时宽松比较)\n const lookup = (v: any): string => {\n const matched = flat.find(o =>\n props.loose ? String(o?.[valueKey]) === String(v) : o?.[valueKey] === v\n );\n return matched && matched[labelKey] != null\n ? String(matched[labelKey])\n : String(v ?? '');\n };\n\n return values.map(lookup).join(sep);\n}\n\nexport default defineComponent({\n name: 'XSelect',\n inheritAttrs: false,\n props: selectProps,\n emits: [...selectEmits],\n setup(props, { attrs, emit }) {\n const instance = getCurrentInstance()!;\n const ElSelect = getUIComponent('Select');\n const ElSelectV2 = getUIComponent('SelectV2'); // Vue2 下 undefined\n\n // 组件选择:useVirtual 且存在 ElSelectV2 → SelectV2;否则回退 Select\n const Comp = (() => {\n if (!props.useVirtual) return ElSelect;\n if (ElSelectV2) {\n // ElSelectV2 要求 options 必填,若 optionSource 为空则降级\n if (\n !Array.isArray(props.optionSource) ||\n props.optionSource.length === 0\n ) {\n // 注意:不可用 import process from 'node:process'(webpack 4 运行时无法解析 node: 协议,得到 undefined)\n // 用 (globalThis as any).process?.env?.NODE_ENV 保证浏览器运行时安全(同 XButton 范式)\n if ((globalThis as any).process?.env?.NODE_ENV !== 'production') {\n console.warn(\n '[XSelect] useVirtual=true 但 optionSource 为空,已降级为 ElSelect'\n );\n }\n return ElSelect;\n }\n return ElSelectV2;\n }\n if ((globalThis as any).process?.env?.NODE_ENV !== 'production') {\n console.warn(\n '[XSelect] useVirtual 在 Vue2/element-ui 下降级为 ElSelect'\n );\n }\n return ElSelect;\n })();\n\n // —— 三大 hooks ——\n const { innerValue, updateInner, emitOutside } = useLooseModel(\n props,\n emit,\n instance\n );\n const { mergedSource, paginationNode, selectAllNode, onChangeWithCache } =\n usePagination(props, emit, instance, updateInner);\n const wrapWithTip = useDisabledTip(props);\n\n // 属性隔离:先全量 forward,再 delete 自有 prop\n const forwarded = useForwardProps(props);\n const elForwarded = useOmitForwardProps(forwarded, SELF_PROP_KEYS);\n\n // ---- 审查能力 ----\n const auditMode = computed<'controlled' | 'auto' | 'off'>(() => {\n if (props.auditState) return 'controlled';\n if (typeof props.audit === 'object' && props.audit !== null)\n return 'auto';\n return 'off';\n });\n\n const autoAudit = useAuditInternal({\n enabled: () => auditMode.value === 'auto',\n config: () =>\n typeof props.audit === 'object'\n ? (props.audit as AuditFieldConfig)\n : null,\n value: () => innerValue.value,\n field: () => (attrs as any).name ?? 'unknown',\n comp: 'x-select'\n });\n\n const internalAuditState = computed<AuditState | null>(() => {\n if (auditMode.value === 'controlled') return props.auditState!;\n if (auditMode.value === 'auto') return autoAudit.state.value;\n return null;\n });\n\n // ---- 埋点能力 ----\n const trackMode = computed<'controlled' | 'auto' | 'off'>(() => {\n if (props.trackState) return 'controlled';\n if (typeof props.track === 'object' && props.track !== null)\n return 'auto';\n return 'off';\n });\n\n const autoTrack = useTrackInternal({\n enabled: () => trackMode.value === 'auto',\n config: () =>\n typeof props.track === 'object'\n ? (props.track as TrackFieldConfig)\n : null,\n value: () => innerValue.value,\n field: () => (attrs as any).name ?? 'unknown',\n comp: 'x-select'\n });\n\n const userOnVisibleChange = (attrs as any).onVisibleChange;\n const handleAuditVisibleChange = (visible: boolean) => {\n if (typeof userOnVisibleChange === 'function')\n userOnVisibleChange(visible);\n if (\n !visible &&\n !props.textMode &&\n props.audit !== undefined &&\n props.audit !== false\n ) {\n const cur = innerValue.value;\n emit('audit-trigger', cur, { source: 'visible-change' as const });\n if (auditMode.value === 'auto') autoAudit.run();\n }\n // 埋点触发\n if (!visible && props.track !== undefined && props.track !== false) {\n emit('track-event', 'visible-change', {\n value: innerValue.value,\n field: (attrs as any).name ?? 'unknown'\n });\n if (trackMode.value === 'auto') autoTrack.run();\n }\n };\n\n return () => {\n // 文本模式:完全跳过 ElSelect 渲染,仅展示当前选中项的 label。\n // 优先级最高,覆盖 useVirtual / 分页 / 全选 / 禁用提示。\n if (props.textMode) {\n const text = computeDisplayText(props, instance);\n return h('span', { class: 'x-select__text' }, [text]);\n }\n\n const slots = useCompatSlots(instance);\n const listenerProps = useCompatListeners(instance);\n\n // v-model 双端分流(参见 XInput/index.tsx 既定范式)\n const modelBinding = isVue2\n ? {\n value: innerValue.value,\n onInput: (v: any) => emitOutside(updateInner(v))\n }\n : {\n modelValue: innerValue.value,\n 'onUpdate:modelValue': (v: any) => emitOutside(updateInner(v))\n };\n\n // 合并顺序(不可变更):透传 props < attrs < listeners < modelBinding < 自有覆盖\n const { onVisibleChange: _omitVc, ...restAttrs } = attrs as any;\n const compProps: Record<string, any> = {\n ...elForwarded.value,\n ...restAttrs,\n ...listenerProps,\n ...modelBinding,\n onChange: (val: any) => {\n onChangeWithCache(val);\n if (\n !props.textMode &&\n props.audit !== undefined &&\n props.audit !== false\n ) {\n emit('audit-trigger', val, { source: 'change' as const });\n if (auditMode.value === 'auto') autoAudit.run();\n }\n // 埋点触发\n if (props.track !== undefined && props.track !== false) {\n emit('track-event', 'change', {\n value: val,\n field: (attrs as any).name ?? 'unknown'\n });\n if (trackMode.value === 'auto') autoTrack.run();\n }\n },\n onVisibleChange: handleAuditVisibleChange\n };\n\n // 子节点策略:\n // useVirtual + ElSelectV2:通过 options prop 传扁平数组,不走 slot\n // 否则 optionSource 非空:数据驱动 slot.default\n // 否则:透传默认 slot\n const isV2 = props.useVirtual && ElSelectV2 && Comp === ElSelectV2;\n\n const slotNodes: Record<string, any> = {};\n\n if (isV2) {\n // ElSelectV2 需要扁平 { value, label, disabled } 数组,不支持 group 嵌套\n const valueKey = props.optionValueKey || 'value';\n const labelKey = props.optionLabelKey || 'label';\n const flatten = (arr: any[]): any[] => {\n const out: any[] = [];\n for (const item of arr || []) {\n if (item && Array.isArray(item.options)) {\n out.push(\n ...item.options.map((sub: any) => ({\n value: sub[valueKey],\n label: sub[labelKey],\n disabled: !!sub.disabled\n }))\n );\n } else if (item) {\n out.push({\n value: item[valueKey],\n label: item[labelKey],\n disabled: !!item.disabled\n });\n }\n }\n return out;\n };\n compProps.options = flatten(mergedSource.value);\n // ElSelectV2 仍可能用到其他 slot(如 empty),透传\n Object.keys(slots).forEach(name => {\n if (name !== 'default') {\n slotNodes[name] = (scope: any) => renderSlot(slots, name, scope);\n }\n });\n } else if (props.optionSource && props.optionSource.length) {\n slotNodes.default = () => renderOptionTree(mergedSource.value, props);\n if (slots.default && (globalThis as any).process?.env?.NODE_ENV !== 'production') {\n console.warn(\n '[XSelect] optionSource 与默认 slot 同时存在,已忽略 slot'\n );\n }\n } else {\n Object.keys(slots).forEach(name => {\n slotNodes[name] = (scope: any) => renderSlot(slots, name, scope);\n });\n }\n\n // 全选 checkbox:multiple && showSelectAll && !useVirtual && !isShowPagination\n if (selectAllNode) {\n const original = slotNodes.default;\n slotNodes.default = (s: any) => [\n selectAllNode(),\n original ? original(s) : null\n ];\n }\n\n // 分页节点:Vue3/element-plus 用 footer slot;Vue2/element-ui 注入 default 末尾\n if (paginationNode) {\n if (!isVue2) {\n slotNodes.footer = () => paginationNode();\n } else {\n const original = slotNodes.default;\n slotNodes.default = (s: any) => [\n original ? original(s) : null,\n paginationNode()\n ];\n }\n }\n\n const node = h(Comp, compProps, slotNodes);\n const mainVNode = wrapWithTip(node);\n if (internalAuditState.value) {\n return h('div', { class: 'x-select-wrapper' }, [\n mainVNode,\n h(AuditFeedback, { state: internalAuditState.value })\n ]);\n }\n return mainVNode;\n };\n }\n});\n"],"names":["_a"],"mappings":"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"}
1
+ {"version":3,"file":"index73.mjs","sources":["../../src/components/XSelect/index.tsx"],"sourcesContent":["import type { PropType } from 'vue-demi';\nimport type {\n AuditFieldConfig,\n AuditState,\n TrackFieldConfig,\n TrackState,\n PermissionFieldConfig\n} from '../../hooks/capability/types';\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n isVue2\n} from 'vue-demi';\nimport { getUIComponent } from '../../adapters/ui-provider';\nimport { h } from '../../compat/h';\nimport {\n renderSlot,\n useCompatListeners,\n useCompatSlots\n} from '../../compat/slots';\nimport { useForwardProps, useOmitForwardProps } from '../../hooks';\nimport { useAuditInternal } from '../../hooks/capability/useAuditInternal';\n\nimport { useTrackInternal } from '../../hooks/capability/useTrackInternal';\nimport { useDisabledTip } from '../../hooks/useDisabledTip';\nimport { useLooseModel } from '../../hooks/useLooseModel';\nimport { warnOnce } from '../../utils/warnOnce';\nimport AuditFeedback from '../AuditFeedback/index';\nimport { renderOptionTree } from './render-options';\nimport { usePagination } from './usePagination';\nimport './style.scss';\n\n// ============ Props 声明 ============\nexport const selectProps = {\n // v-model:必须声明,否则 Vue3 下 modelValue 进入 attrs 而非 props,\n // 导致 useLooseModel 的 readExternal() 读取 props.modelValue 为 undefined,\n // innerValue 始终为 undefined,选中值后无法回显。\n // 参考 XInput/index.tsx 既定范式。\n modelValue: {\n type: [String, Number, Boolean, Object, Array] as PropType<any>,\n default: undefined\n },\n loose: { type: Boolean, default: false },\n multipleString: { type: Boolean, default: false },\n valueSeparator: { type: String, default: ',' },\n disabledTip: { type: String, default: '' },\n disabledTipPlacement: { type: String, default: 'top' },\n useVirtual: { type: Boolean, default: false },\n optionSource: { type: Array as PropType<any[]>, default: () => [] },\n optionValueKey: { type: String, default: 'value' },\n optionLabelKey: { type: String, default: 'label' },\n customLabel: {\n type: [Function, String] as PropType<\n ((option: Record<string, any>, index: number) => any) | string\n >,\n default: ''\n },\n returnObject: { type: Boolean, default: false },\n isShowPagination: { type: Boolean, default: false },\n paginationOption: {\n type: Object as PropType<{\n pageSize?: number;\n currentPage?: number;\n pagerCount?: number;\n total?: number;\n }>,\n default: () => ({ pageSize: 6, currentPage: 1, pagerCount: 5, total: 0 })\n },\n isCached: { type: Boolean, default: true },\n isRadioEchoLabel: { type: Boolean, default: true },\n radioSelectValLabel: { type: String, default: '' },\n selectAllTxt: { type: String, default: '' },\n showSelectAll: { type: Boolean, default: true },\n // 文本模式:true 时跳过 ElSelect 渲染,以 <span> 展示当前选中项 label,用于只读回显\n textMode: { type: Boolean, default: false },\n // ---- 审查能力 ----\n audit: {\n type: [Boolean, Object] as PropType<boolean | AuditFieldConfig | undefined>,\n default: undefined\n },\n auditState: {\n type: Object as PropType<AuditState | undefined>,\n default: undefined\n },\n // ---- 埋点能力 ----\n track: {\n type: [Boolean, Object] as PropType<boolean | TrackFieldConfig | undefined>,\n default: undefined\n },\n trackState: {\n type: Object as PropType<TrackState | undefined>,\n default: undefined\n },\n // ---- 权限能力 ----\n /** 权限配置:控制 disabled/hidden/readonly 效果 */\n permission: {\n type: [Boolean, Object] as PropType<\n boolean | PermissionFieldConfig | undefined\n >,\n default: undefined\n }\n} as const;\n\nexport const selectEmits = [\n 'update:modelValue',\n 'input',\n 'change',\n 'select-all',\n 'pagination-change',\n 'audit-trigger',\n 'track-event',\n 'permission-check'\n] as const;\n\n// SELF_PROP_KEYS 仅驼峰(Vue 模板编译已转驼峰;useOmitForwardProps 按字符串 delete)\nconst SELF_PROP_KEYS = [\n 'modelValue',\n 'loose',\n 'multipleString',\n 'valueSeparator',\n 'disabledTip',\n 'disabledTipPlacement',\n 'useVirtual',\n 'optionSource',\n 'optionValueKey',\n 'optionLabelKey',\n 'customLabel',\n 'returnObject',\n 'isShowPagination',\n 'paginationOption',\n 'isCached',\n 'isRadioEchoLabel',\n 'radioSelectValLabel',\n 'selectAllTxt',\n 'showSelectAll',\n 'textMode',\n 'audit',\n 'auditState',\n 'track',\n 'trackState',\n 'permission'\n] as const;\n\n/**\n * 计算 textMode 下的展示文本。\n * 优先级:returnObject > multipleString(string) > multiple(array) > 单值。\n * optionSource 为空时降级为 String(原始值),并 dev warn 一次。\n */\nfunction computeDisplayText(props: any, instance: any): string {\n // 双端读外部值(与 useLooseModel.readExternal 思路一致)\n const vm = instance?.proxy || instance;\n const raw = isVue2\n ? (vm?.$attrs?.value ?? (vm as any)?.value)\n : props.modelValue;\n if (raw == null || raw === '') return '';\n if (Array.isArray(raw) && raw.length === 0) return '';\n\n const sep = props.valueSeparator || ',';\n const valueKey = props.optionValueKey || 'value';\n const labelKey = props.optionLabelKey || 'label';\n const src: any[] = Array.isArray(props.optionSource)\n ? props.optionSource\n : [];\n\n // returnObject 分支:直接读对象上的 label\n if (props.returnObject) {\n if (props.multiple && Array.isArray(raw)) {\n return raw\n .map(o => (o && o[labelKey] != null ? String(o[labelKey]) : ''))\n .filter(Boolean)\n .join(sep);\n }\n return raw && typeof raw === 'object' ? String(raw[labelKey] ?? '') : '';\n }\n\n // 拆分为值数组\n let values: any[];\n if (props.multiple && props.multipleString && typeof raw === 'string') {\n values = raw\n .split(sep)\n .map((s: string) => s.trim())\n .filter((s: string) => s !== '');\n } else if (Array.isArray(raw)) {\n values = raw;\n } else {\n values = [raw];\n }\n\n // optionSource 为空(slot 模式)→ 降级为原始值 + dev warn 一次\n if (src.length === 0) {\n warnOnce(\n 'XSelect:textMode-noSource',\n '[XSelect] textMode=true 但 optionSource 为空,无法查找 label,已降级为原始值展示。推荐配合 optionSource 使用。'\n );\n return values.map(v => String(v ?? '')).join(sep);\n }\n\n // 扁平化 optionSource(展开 group 子项),与 render-options.tsx 的 group 识别一致\n const flat: any[] = [];\n for (const it of src) {\n if (it && Array.isArray(it.options)) flat.push(...it.options);\n else if (it) flat.push(it);\n }\n\n // 每个 value 查 label(loose=true 时宽松比较)\n const lookup = (v: any): string => {\n const matched = flat.find(o =>\n props.loose ? String(o?.[valueKey]) === String(v) : o?.[valueKey] === v\n );\n return matched && matched[labelKey] != null\n ? String(matched[labelKey])\n : String(v ?? '');\n };\n\n return values.map(lookup).join(sep);\n}\n\nexport default defineComponent({\n name: 'XSelect',\n inheritAttrs: false,\n props: selectProps,\n emits: [...selectEmits],\n setup(props, { attrs, emit }) {\n const instance = getCurrentInstance()!;\n const ElSelect = getUIComponent('Select');\n const ElSelectV2 = getUIComponent('SelectV2'); // Vue2 下 undefined\n\n // 组件选择:useVirtual 且存在 ElSelectV2 → SelectV2;否则回退 Select\n const Comp = (() => {\n if (!props.useVirtual) return ElSelect;\n if (ElSelectV2) {\n // ElSelectV2 要求 options 必填,若 optionSource 为空则降级\n if (\n !Array.isArray(props.optionSource) ||\n props.optionSource.length === 0\n ) {\n // 注意:不可用 import process from 'node:process'(webpack 4 运行时无法解析 node: 协议,得到 undefined)\n // 用 (globalThis as any).process?.env?.NODE_ENV 保证浏览器运行时安全(同 XButton 范式)\n if ((globalThis as any).process?.env?.NODE_ENV !== 'production') {\n console.warn(\n '[XSelect] useVirtual=true 但 optionSource 为空,已降级为 ElSelect'\n );\n }\n return ElSelect;\n }\n return ElSelectV2;\n }\n if ((globalThis as any).process?.env?.NODE_ENV !== 'production') {\n console.warn(\n '[XSelect] useVirtual 在 Vue2/element-ui 下降级为 ElSelect'\n );\n }\n return ElSelect;\n })();\n\n // —— 三大 hooks ——\n const { innerValue, updateInner, emitOutside } = useLooseModel(\n props,\n emit,\n instance\n );\n const { mergedSource, paginationNode, selectAllNode, onChangeWithCache } =\n usePagination(props, emit, instance, updateInner);\n const wrapWithTip = useDisabledTip(props);\n\n // 属性隔离:先全量 forward,再 delete 自有 prop\n const forwarded = useForwardProps(props);\n const elForwarded = useOmitForwardProps(forwarded, SELF_PROP_KEYS);\n\n // ---- 审查能力 ----\n const auditMode = computed<'controlled' | 'auto' | 'off'>(() => {\n if (props.auditState) return 'controlled';\n if (typeof props.audit === 'object' && props.audit !== null)\n return 'auto';\n return 'off';\n });\n\n const autoAudit = useAuditInternal({\n enabled: () => auditMode.value === 'auto',\n config: () =>\n typeof props.audit === 'object'\n ? (props.audit as AuditFieldConfig)\n : null,\n value: () => innerValue.value,\n field: () => (attrs as any).name ?? 'unknown',\n comp: 'x-select'\n });\n\n const internalAuditState = computed<AuditState | null>(() => {\n if (auditMode.value === 'controlled') return props.auditState!;\n if (auditMode.value === 'auto') return autoAudit.state.value;\n return null;\n });\n\n // ---- 埋点能力 ----\n const trackMode = computed<'controlled' | 'auto' | 'off'>(() => {\n if (props.trackState) return 'controlled';\n if (typeof props.track === 'object' && props.track !== null)\n return 'auto';\n return 'off';\n });\n\n const autoTrack = useTrackInternal({\n enabled: () => trackMode.value === 'auto',\n config: () =>\n typeof props.track === 'object'\n ? (props.track as TrackFieldConfig)\n : null,\n value: () => innerValue.value,\n field: () => (attrs as any).name ?? 'unknown',\n comp: 'x-select'\n });\n\n const userOnVisibleChange = (attrs as any).onVisibleChange;\n const handleAuditVisibleChange = (visible: boolean) => {\n if (typeof userOnVisibleChange === 'function')\n userOnVisibleChange(visible);\n if (\n !visible &&\n !props.textMode &&\n props.audit !== undefined &&\n props.audit !== false\n ) {\n const cur = innerValue.value;\n emit('audit-trigger', cur, { source: 'visible-change' as const });\n if (auditMode.value === 'auto') autoAudit.run();\n }\n // 埋点触发\n if (!visible && props.track !== undefined && props.track !== false) {\n emit('track-event', 'visible-change', {\n value: innerValue.value,\n field: (attrs as any).name ?? 'unknown'\n });\n if (trackMode.value === 'auto') autoTrack.run();\n }\n };\n\n return () => {\n // 文本模式:完全跳过 ElSelect 渲染,仅展示当前选中项的 label。\n // 优先级最高,覆盖 useVirtual / 分页 / 全选 / 禁用提示。\n if (props.textMode) {\n const text = computeDisplayText(props, instance);\n return h('span', { class: 'x-select__text' }, [text]);\n }\n\n const slots = useCompatSlots(instance);\n const listenerProps = useCompatListeners(instance);\n\n // v-model 双端分流(参见 XInput/index.tsx 既定范式)\n const modelBinding = isVue2\n ? {\n value: innerValue.value,\n onInput: (v: any) => emitOutside(updateInner(v))\n }\n : {\n modelValue: innerValue.value,\n 'onUpdate:modelValue': (v: any) => emitOutside(updateInner(v))\n };\n\n // 合并顺序(不可变更):透传 props < attrs < listeners < modelBinding < 自有覆盖\n const { onVisibleChange: _omitVc, ...restAttrs } = attrs as any;\n const compProps: Record<string, any> = {\n ...elForwarded.value,\n ...restAttrs,\n ...listenerProps,\n ...modelBinding,\n onChange: (val: any) => {\n onChangeWithCache(val);\n if (\n !props.textMode &&\n props.audit !== undefined &&\n props.audit !== false\n ) {\n emit('audit-trigger', val, { source: 'change' as const });\n if (auditMode.value === 'auto') autoAudit.run();\n }\n // 埋点触发\n if (props.track !== undefined && props.track !== false) {\n emit('track-event', 'change', {\n value: val,\n field: (attrs as any).name ?? 'unknown'\n });\n if (trackMode.value === 'auto') autoTrack.run();\n }\n },\n onVisibleChange: handleAuditVisibleChange\n };\n\n // 子节点策略:\n // useVirtual + ElSelectV2:通过 options prop 传扁平数组,不走 slot\n // 否则 optionSource 非空:数据驱动 slot.default\n // 否则:透传默认 slot\n const isV2 = props.useVirtual && ElSelectV2 && Comp === ElSelectV2;\n\n const slotNodes: Record<string, any> = {};\n\n if (isV2) {\n // ElSelectV2 需要扁平 { value, label, disabled } 数组,不支持 group 嵌套\n const valueKey = props.optionValueKey || 'value';\n const labelKey = props.optionLabelKey || 'label';\n const flatten = (arr: any[]): any[] => {\n const out: any[] = [];\n for (const item of arr || []) {\n if (item && Array.isArray(item.options)) {\n out.push(\n ...item.options.map((sub: any) => ({\n value: sub[valueKey],\n label: sub[labelKey],\n disabled: !!sub.disabled\n }))\n );\n } else if (item) {\n out.push({\n value: item[valueKey],\n label: item[labelKey],\n disabled: !!item.disabled\n });\n }\n }\n return out;\n };\n compProps.options = flatten(mergedSource.value);\n // ElSelectV2 仍可能用到其他 slot(如 empty),透传\n Object.keys(slots).forEach(name => {\n if (name !== 'default') {\n slotNodes[name] = (scope: any) => renderSlot(slots, name, scope);\n }\n });\n } else if (props.optionSource && props.optionSource.length) {\n slotNodes.default = () => renderOptionTree(mergedSource.value, props);\n if (\n slots.default &&\n (globalThis as any).process?.env?.NODE_ENV !== 'production'\n ) {\n console.warn(\n '[XSelect] optionSource 与默认 slot 同时存在,已忽略 slot'\n );\n }\n } else {\n Object.keys(slots).forEach(name => {\n slotNodes[name] = (scope: any) => renderSlot(slots, name, scope);\n });\n }\n\n // 全选 checkbox:multiple && showSelectAll && !useVirtual && !isShowPagination\n if (selectAllNode) {\n const original = slotNodes.default;\n slotNodes.default = (s: any) => [\n selectAllNode(),\n original ? original(s) : null\n ];\n }\n\n // 分页节点:Vue3/element-plus 用 footer slot;Vue2/element-ui 注入 default 末尾\n if (paginationNode) {\n if (!isVue2) {\n slotNodes.footer = () => paginationNode();\n } else {\n const original = slotNodes.default;\n slotNodes.default = (s: any) => [\n original ? original(s) : null,\n paginationNode()\n ];\n }\n }\n\n const node = h(Comp, compProps, slotNodes);\n const mainVNode = wrapWithTip(node);\n if (internalAuditState.value) {\n return h('div', { class: 'x-select-wrapper' }, [\n mainVNode,\n h(AuditFeedback, { state: internalAuditState.value })\n ]);\n }\n return mainVNode;\n };\n }\n});\n"],"names":["_a"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index2.cjs"),t=require("vue-demi"),r=require("./index239.cjs");function n(e){return(r,n)=>u(r,n,t.unref(e))}function u(e,t,r){return function(e,t,r){const n=t.split(".").reduce((e,t)=>null!=e?e[t]:void 0,e);return void 0!==n?n:r}(r,e,e).replace(/\{(\w+)\}/g,(e,r)=>`${t?.[r]??`{${r}}`}`)}function o(e){return{lang:t.computed(()=>t.unref(e).name),locale:t.isRef(e)?e:t.ref(e),t:n(e)}}exports.buildLocaleContext=o,exports.buildTranslator=n,exports.translate=u,exports.useLocale=function(n){const u=e.getLocaleContextKey(),c=n||(u?t.inject(u,t.ref()):t.ref());return o(t.computed(()=>c?.value?.plus?c.value:r.default))};
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index2.cjs"),t=require("vue-demi"),r=require("./index238.cjs");function n(e){return(r,n)=>u(r,n,t.unref(e))}function u(e,t,r){return function(e,t,r){const n=t.split(".").reduce((e,t)=>null!=e?e[t]:void 0,e);return void 0!==n?n:r}(r,e,e).replace(/\{(\w+)\}/g,(e,r)=>`${t?.[r]??`{${r}}`}`)}function o(e){return{lang:t.computed(()=>t.unref(e).name),locale:t.isRef(e)?e:t.ref(e),t:n(e)}}exports.buildLocaleContext=o,exports.buildTranslator=n,exports.translate=u,exports.useLocale=function(n){const u=e.getLocaleContextKey(),c=n||(u?t.inject(u,t.ref()):t.ref());return o(t.computed(()=>c?.value?.plus?c.value:r.default))};
2
2
  //# sourceMappingURL=index123.cjs.map
@@ -1,6 +1,6 @@
1
1
  import { getLocaleContextKey } from "./index2.mjs";
2
2
  import { ref, computed, unref, isRef, inject } from "vue-demi";
3
- import plusZhCn from "./index239.mjs";
3
+ import plusZhCn from "./index238.mjs";
4
4
  function getByPath(obj, path, defaultValue) {
5
5
  const result = path.split(".").reduce(
6
6
  (current, key) => current != null ? current[key] : void 0,
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue-demi"),l=require("./index147.cjs"),r=require("./index234.cjs");let t=null,u=!1,a=!1;async function c(){if(u)return t;if(a)return null;try{const e=await Promise.resolve().then(()=>require("./index238.cjs")),r=e.RecycleScroller||e.default?.RecycleScroller;return r?(t={RecycleScroller:r},u=!0,t):(a=!0,l.warnOnce("XTable:virtualScroll:noExport","[XTable] vue-virtual-scroller 已加载但未导出 RecycleScroller,虚拟滚动已禁用"),null)}catch{return a=!0,l.warnOnce("XTable:virtualScroll:notInstalled","[XTable] useVirtual=true 需要安装 vue-virtual-scroller,请运行: pnpm add vue-virtual-scroller"),null}}exports.loadVirtualScroller=c,exports.useVirtualScroll=function(t,u,a,o){const n=e.shallowRef(null),i=e.ref(!1),s=e.computed(()=>t.value&&!!n.value),d=e.computed(()=>a.value||r.DEFAULT_VIRTUAL_ITEM_HEIGHT),v=e.computed(()=>u.value||r.DEFAULT_VIRTUAL_SHOW_SIZE);return{shouldVirtualize:s,RecycleScroller:n,loadFailed:i,itemSize:d,bufferSize:v,ensureLoaded:async()=>{if(!t.value)return;if(n.value||i.value)return;const e=await c();e?n.value=e.RecycleScroller:i.value=!0},checkCompat:()=>{if(!t.value)return;const e=o()||{};(e["span-method"]||e.spanMethod)&&l.warnOnce("XTable:virtualScroll:spanMethod","[XTable] 虚拟滚动模式下 span-method 不可用,合并行/列将被忽略"),(e["tree-props"]||e.treeProps)&&l.warnOnce("XTable:virtualScroll:treeProps","[XTable] 虚拟滚动模式下 tree-props 不可用,请使用平铺数据")}}};
1
+ "use strict";Object.create,Object.defineProperty,Object.getOwnPropertyDescriptor,Object.getOwnPropertyNames,Object.getPrototypeOf,Object.prototype.hasOwnProperty;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue-demi"),r=require("./index147.cjs"),l=require("./index234.cjs");let t=null,c=!1,o=!1;async function a(){if(c)return t;if(o)return null;try{const e=await import("vue-virtual-scroller"),l=e.RecycleScroller||e.default?.RecycleScroller;return l?(t={RecycleScroller:l},c=!0,t):(o=!0,r.warnOnce("XTable:virtualScroll:noExport","[XTable] vue-virtual-scroller 已加载但未导出 RecycleScroller,虚拟滚动已禁用"),null)}catch{return o=!0,r.warnOnce("XTable:virtualScroll:notInstalled","[XTable] useVirtual=true 需要安装 vue-virtual-scroller,请运行: pnpm add vue-virtual-scroller"),null}}exports.loadVirtualScroller=a,exports.useVirtualScroll=function(t,c,o,u){const n=e.shallowRef(null),i=e.ref(!1),s=e.computed(()=>t.value&&!!n.value),p=e.computed(()=>o.value||l.DEFAULT_VIRTUAL_ITEM_HEIGHT),v=e.computed(()=>c.value||l.DEFAULT_VIRTUAL_SHOW_SIZE);return{shouldVirtualize:s,RecycleScroller:n,loadFailed:i,itemSize:p,bufferSize:v,ensureLoaded:async()=>{if(!t.value)return;if(n.value||i.value)return;const e=await a();e?n.value=e.RecycleScroller:i.value=!0},checkCompat:()=>{if(!t.value)return;const e=u()||{};(e["span-method"]||e.spanMethod)&&r.warnOnce("XTable:virtualScroll:spanMethod","[XTable] 虚拟滚动模式下 span-method 不可用,合并行/列将被忽略"),(e["tree-props"]||e.treeProps)&&r.warnOnce("XTable:virtualScroll:treeProps","[XTable] 虚拟滚动模式下 tree-props 不可用,请使用平铺数据")}}};
2
2
  //# sourceMappingURL=index212.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index212.cjs","sources":["../../src/components/XTable/useVirtualScroll.ts"],"sourcesContent":["// packages/core/src/components/XTable/useVirtualScroll.ts\n//\n// useVirtualScroll —— 虚拟滚动接入 vue-virtual-scroller(optional peer)\n//\n// 设计目标:\n// - 用户安装 vue-virtual-scroller 时,useVirtual=true 启用大数据量虚拟滚动\n// - 用户未安装时,给出友好 warn 并回退到普通 ElTable 渲染(不崩溃)\n// - 检测到不兼容场景(fixed columns / span-method / tree-props)时 dev warn\n//\n// 与 ElTable 的协作:\n// - ElTable 自身不暴露虚拟滚动 API(TableV2 是独立组件,且 Vue2 端不可用)\n// - 本 hook 在 useVirtual=true 时旁路 ElTable,改用 RecycleScroller 渲染行\n// - 表头仍由 ElTable 渲染(仅渲染表头部分,不渲染 tbody),保持样式一致\n//\n// 性能要点:\n// - vue-virtual-scroller 的 RecycleScroller 自带 itemSize + buffer 优化\n// - 避免在循环内创建闭包(render 函数引用稳定)\n\nimport type { Component, ComputedRef, Ref } from 'vue-demi';\nimport { computed, ref, shallowRef } from 'vue-demi';\nimport { warnOnce } from '../../utils/warnOnce';\nimport {\n DEFAULT_VIRTUAL_ITEM_HEIGHT,\n DEFAULT_VIRTUAL_SHOW_SIZE\n} from './src/constants';\n// vue-virtual-scroller 类型桩在 ./vue-virtual-scroller.types.d.ts 中声明(optional peer)\n\n// 模块级缓存:避免每次启用虚拟滚动都触发 import()\nlet _scrollerCache: { RecycleScroller: Component } | null = null;\nlet _scrollerLoaded = false;\nlet _scrollerFailed = false;\n\n/**\n * 运行时动态加载 vue-virtual-scroller。\n * 失败一次后不再重试,避免反复触发网络请求或抛错。\n *\n * 返回值:\n * - 成功:{ RecycleScroller }(vue-virtual-scroller v1.x/v2.x 都导出此命名)\n * - 失败:null(用户未安装该 peer)\n */\nexport async function loadVirtualScroller(): Promise<{\n RecycleScroller: Component;\n} | null> {\n if (_scrollerLoaded) {\n return _scrollerCache;\n }\n if (_scrollerFailed) {\n return null;\n }\n try {\n // @vite-ignore 注释避免 Vite 静态分析时抛 unresolved 错误(peerDep 未必装)\n const mod: any = await import(/* @vite-ignore */ 'vue-virtual-scroller');\n const RecycleScroller = mod.RecycleScroller || mod.default?.RecycleScroller;\n if (!RecycleScroller) {\n _scrollerFailed = true;\n warnOnce(\n 'XTable:virtualScroll:noExport',\n '[XTable] vue-virtual-scroller 已加载但未导出 RecycleScroller,虚拟滚动已禁用'\n );\n return null;\n }\n _scrollerCache = { RecycleScroller };\n _scrollerLoaded = true;\n return _scrollerCache;\n } catch {\n _scrollerFailed = true;\n warnOnce(\n 'XTable:virtualScroll:notInstalled',\n '[XTable] useVirtual=true 需要安装 vue-virtual-scroller,请运行: pnpm add vue-virtual-scroller'\n );\n return null;\n }\n}\n\n/**\n * useVirtualScroll —— 虚拟滚动状态与异步加载控制。\n *\n * @param useVirtual - 是否启用虚拟滚动(响应式)\n * @param virtualShowSize - 可视区域渲染行数(响应式,默认 30)\n * @param virtualItemHeight - 预估行高 px(响应式,默认 50)\n * @param attrsRef - 用户透传给 ElTable 的 attrs(用于检测不兼容场景)\n *\n * 返回:\n * - shouldVirtualize:最终是否启用虚拟模式(useVirtual + 加载成功)\n * - RecycleScroller:vue-virtual-scroller 组件(响应式,加载完成后填充)\n * - itemSize:合并后的行高\n * - bufferSize:合并后的可视区行数\n */\nexport interface UseVirtualScrollReturn {\n shouldVirtualize: ComputedRef<boolean>;\n RecycleScroller: Ref<Component | null>;\n loadFailed: Ref<boolean>;\n itemSize: ComputedRef<number>;\n bufferSize: ComputedRef<number>;\n ensureLoaded: () => Promise<void>;\n checkCompat: () => void;\n}\n\nexport function useVirtualScroll(\n useVirtual: Ref<boolean>,\n virtualShowSize: Ref<number>,\n virtualItemHeight: Ref<number>,\n attrsRef: () => Record<string, any>\n): UseVirtualScrollReturn {\n // 使用 shallowRef 存储组件定义,避免 Vue3 将组件对象深度 reactive 化\n // 导致 \"Component that was made a reactive object\" 警告\n const RecycleScroller = shallowRef(null) as Ref<Component | null>;\n const loadFailed = ref(false);\n\n const shouldVirtualize = computed(\n () => useVirtual.value && !!RecycleScroller.value\n );\n\n // 不兼容场景检测(dev only)—— 仅在 useVirtual=true 时触发\n const checkCompat = () => {\n if (!useVirtual.value) {\n return;\n }\n const a = attrsRef() || {};\n if (a['span-method'] || a.spanMethod) {\n warnOnce(\n 'XTable:virtualScroll:spanMethod',\n '[XTable] 虚拟滚动模式下 span-method 不可用,合并行/列将被忽略'\n );\n }\n if (a['tree-props'] || a.treeProps) {\n warnOnce(\n 'XTable:virtualScroll:treeProps',\n '[XTable] 虚拟滚动模式下 tree-props 不可用,请使用平铺数据'\n );\n }\n // 检测固定列:通过判断列配置中是否含 fixed(由主组件在调用时传入)\n // 此处仅检测 attrs 上的 default-sort 等无关属性即可,固定列在 columns 渲染处再 warn\n };\n\n // 启动加载(异步,不阻塞渲染)\n const ensureLoaded = async () => {\n if (!useVirtual.value) {\n return;\n }\n if (RecycleScroller.value || loadFailed.value) {\n return;\n }\n const mod = await loadVirtualScroller();\n if (mod) {\n RecycleScroller.value = mod.RecycleScroller as Component;\n } else {\n loadFailed.value = true;\n }\n };\n\n const itemSize = computed(\n () => virtualItemHeight.value || DEFAULT_VIRTUAL_ITEM_HEIGHT\n );\n const bufferSize = computed(\n () => virtualShowSize.value || DEFAULT_VIRTUAL_SHOW_SIZE\n );\n\n return {\n shouldVirtualize,\n RecycleScroller,\n loadFailed,\n itemSize,\n bufferSize,\n ensureLoaded,\n checkCompat\n };\n}\n\n// @internal 测试用:重置模块级缓存\nexport function _resetVirtualScrollerCache(): void {\n _scrollerCache = null;\n _scrollerLoaded = false;\n _scrollerFailed = false;\n}\n"],"names":["_scrollerCache","_scrollerLoaded","_scrollerFailed","async","loadVirtualScroller","mod","Promise","resolve","then","require","RecycleScroller","default","warnOnce","useVirtual","virtualShowSize","virtualItemHeight","attrsRef","shallowRef","loadFailed","ref","shouldVirtualize","computed","value","itemSize","DEFAULT_VIRTUAL_ITEM_HEIGHT","bufferSize","DEFAULT_VIRTUAL_SHOW_SIZE","ensureLoaded","checkCompat","a","spanMethod","treeProps"],"mappings":"oKA4BA,IAAIA,EAAwD,KACxDC,GAAkB,EAClBC,GAAkB,EAUtBC,eAAsBC,IAGpB,GAAIH,EACF,OAAOD,EAET,GAAIE,EACF,OAAO,KAET,IAEE,MAAMG,QAAiBC,QAAAC,UAAAC,KAAA,IAAAC,QAA0B,mBAC3CC,EAAkBL,EAAIK,iBAAmBL,EAAIM,SAASD,gBAC5D,OAAKA,GAQLV,EAAiB,CAAEU,mBACnBT,GAAkB,EACXD,IATLE,GAAkB,EAClBU,EAAAA,SACE,gCACA,iEAEK,KAKX,CAAA,MAME,OALAV,GAAkB,EAClBU,EAAAA,SACE,oCACA,yFAEK,IACT,CACF,wDA0BO,SACLC,EACAC,EACAC,EACAC,GAIA,MAAMN,EAAkBO,EAAAA,WAAW,MAC7BC,EAAaC,EAAAA,KAAI,GAEjBC,EAAmBC,EAAAA,SACvB,IAAMR,EAAWS,SAAWZ,EAAgBY,OAyCxCC,EAAWF,EAAAA,SACf,IAAMN,EAAkBO,OAASE,EAAAA,6BAE7BC,EAAaJ,EAAAA,SACjB,IAAMP,EAAgBQ,OAASI,EAAAA,2BAGjC,MAAO,CACLN,mBACAV,kBACAQ,aACAK,WACAE,aACAE,aA5BmBxB,UACnB,IAAKU,EAAWS,MACd,OAEF,GAAIZ,EAAgBY,OAASJ,EAAWI,MACtC,OAEF,MAAMjB,QAAYD,IACdC,EACFK,EAAgBY,MAAQjB,EAAIK,gBAE5BQ,EAAWI,OAAQ,GAkBrBM,YAnDkB,KAClB,IAAKf,EAAWS,MACd,OAEF,MAAMO,EAAIb,KAAc,CAAA,GACpBa,EAAE,gBAAkBA,EAAEC,aACxBlB,EAAAA,SACE,kCACA,+CAGAiB,EAAE,eAAiBA,EAAEE,YACvBnB,EAAAA,SACE,iCACA,4CAuCR"}
1
+ {"version":3,"file":"index212.cjs","sources":["../../src/components/XTable/useVirtualScroll.ts"],"sourcesContent":["// packages/core/src/components/XTable/useVirtualScroll.ts\n//\n// useVirtualScroll —— 虚拟滚动接入 vue-virtual-scroller(optional peer)\n//\n// 设计目标:\n// - 用户安装 vue-virtual-scroller 时,useVirtual=true 启用大数据量虚拟滚动\n// - 用户未安装时,给出友好 warn 并回退到普通 ElTable 渲染(不崩溃)\n// - 检测到不兼容场景(fixed columns / span-method / tree-props)时 dev warn\n//\n// 与 ElTable 的协作:\n// - ElTable 自身不暴露虚拟滚动 API(TableV2 是独立组件,且 Vue2 端不可用)\n// - 本 hook 在 useVirtual=true 时旁路 ElTable,改用 RecycleScroller 渲染行\n// - 表头仍由 ElTable 渲染(仅渲染表头部分,不渲染 tbody),保持样式一致\n//\n// 性能要点:\n// - vue-virtual-scroller 的 RecycleScroller 自带 itemSize + buffer 优化\n// - 避免在循环内创建闭包(render 函数引用稳定)\n\nimport type { Component, ComputedRef, Ref } from 'vue-demi';\nimport { computed, ref, shallowRef } from 'vue-demi';\nimport { warnOnce } from '../../utils/warnOnce';\nimport {\n DEFAULT_VIRTUAL_ITEM_HEIGHT,\n DEFAULT_VIRTUAL_SHOW_SIZE\n} from './src/constants';\n// vue-virtual-scroller 类型桩在 ./vue-virtual-scroller.types.d.ts 中声明(optional peer)\n\n// 模块级缓存:避免每次启用虚拟滚动都触发 import()\nlet _scrollerCache: { RecycleScroller: Component } | null = null;\nlet _scrollerLoaded = false;\nlet _scrollerFailed = false;\n\n/**\n * 运行时动态加载 vue-virtual-scroller。\n * 失败一次后不再重试,避免反复触发网络请求或抛错。\n *\n * 返回值:\n * - 成功:{ RecycleScroller }(vue-virtual-scroller v1.x/v2.x 都导出此命名)\n * - 失败:null(用户未安装该 peer)\n */\nexport async function loadVirtualScroller(): Promise<{\n RecycleScroller: Component;\n} | null> {\n if (_scrollerLoaded) {\n return _scrollerCache;\n }\n if (_scrollerFailed) {\n return null;\n }\n try {\n // @vite-ignore 注释避免 Vite 静态分析时抛 unresolved 错误(peerDep 未必装)\n const mod: any = await import(/* @vite-ignore */ 'vue-virtual-scroller');\n const RecycleScroller = mod.RecycleScroller || mod.default?.RecycleScroller;\n if (!RecycleScroller) {\n _scrollerFailed = true;\n warnOnce(\n 'XTable:virtualScroll:noExport',\n '[XTable] vue-virtual-scroller 已加载但未导出 RecycleScroller,虚拟滚动已禁用'\n );\n return null;\n }\n _scrollerCache = { RecycleScroller };\n _scrollerLoaded = true;\n return _scrollerCache;\n } catch {\n _scrollerFailed = true;\n warnOnce(\n 'XTable:virtualScroll:notInstalled',\n '[XTable] useVirtual=true 需要安装 vue-virtual-scroller,请运行: pnpm add vue-virtual-scroller'\n );\n return null;\n }\n}\n\n/**\n * useVirtualScroll —— 虚拟滚动状态与异步加载控制。\n *\n * @param useVirtual - 是否启用虚拟滚动(响应式)\n * @param virtualShowSize - 可视区域渲染行数(响应式,默认 30)\n * @param virtualItemHeight - 预估行高 px(响应式,默认 50)\n * @param attrsRef - 用户透传给 ElTable 的 attrs(用于检测不兼容场景)\n *\n * 返回:\n * - shouldVirtualize:最终是否启用虚拟模式(useVirtual + 加载成功)\n * - RecycleScroller:vue-virtual-scroller 组件(响应式,加载完成后填充)\n * - itemSize:合并后的行高\n * - bufferSize:合并后的可视区行数\n */\nexport interface UseVirtualScrollReturn {\n shouldVirtualize: ComputedRef<boolean>;\n RecycleScroller: Ref<Component | null>;\n loadFailed: Ref<boolean>;\n itemSize: ComputedRef<number>;\n bufferSize: ComputedRef<number>;\n ensureLoaded: () => Promise<void>;\n checkCompat: () => void;\n}\n\nexport function useVirtualScroll(\n useVirtual: Ref<boolean>,\n virtualShowSize: Ref<number>,\n virtualItemHeight: Ref<number>,\n attrsRef: () => Record<string, any>\n): UseVirtualScrollReturn {\n // 使用 shallowRef 存储组件定义,避免 Vue3 将组件对象深度 reactive 化\n // 导致 \"Component that was made a reactive object\" 警告\n const RecycleScroller = shallowRef(null) as Ref<Component | null>;\n const loadFailed = ref(false);\n\n const shouldVirtualize = computed(\n () => useVirtual.value && !!RecycleScroller.value\n );\n\n // 不兼容场景检测(dev only)—— 仅在 useVirtual=true 时触发\n const checkCompat = () => {\n if (!useVirtual.value) {\n return;\n }\n const a = attrsRef() || {};\n if (a['span-method'] || a.spanMethod) {\n warnOnce(\n 'XTable:virtualScroll:spanMethod',\n '[XTable] 虚拟滚动模式下 span-method 不可用,合并行/列将被忽略'\n );\n }\n if (a['tree-props'] || a.treeProps) {\n warnOnce(\n 'XTable:virtualScroll:treeProps',\n '[XTable] 虚拟滚动模式下 tree-props 不可用,请使用平铺数据'\n );\n }\n // 检测固定列:通过判断列配置中是否含 fixed(由主组件在调用时传入)\n // 此处仅检测 attrs 上的 default-sort 等无关属性即可,固定列在 columns 渲染处再 warn\n };\n\n // 启动加载(异步,不阻塞渲染)\n const ensureLoaded = async () => {\n if (!useVirtual.value) {\n return;\n }\n if (RecycleScroller.value || loadFailed.value) {\n return;\n }\n const mod = await loadVirtualScroller();\n if (mod) {\n RecycleScroller.value = mod.RecycleScroller as Component;\n } else {\n loadFailed.value = true;\n }\n };\n\n const itemSize = computed(\n () => virtualItemHeight.value || DEFAULT_VIRTUAL_ITEM_HEIGHT\n );\n const bufferSize = computed(\n () => virtualShowSize.value || DEFAULT_VIRTUAL_SHOW_SIZE\n );\n\n return {\n shouldVirtualize,\n RecycleScroller,\n loadFailed,\n itemSize,\n bufferSize,\n ensureLoaded,\n checkCompat\n };\n}\n\n// @internal 测试用:重置模块级缓存\nexport function _resetVirtualScrollerCache(): void {\n _scrollerCache = null;\n _scrollerLoaded = false;\n _scrollerFailed = false;\n}\n"],"names":["_scrollerCache","_scrollerLoaded","_scrollerFailed","async","loadVirtualScroller","mod","import","RecycleScroller","default","warnOnce","useVirtual","virtualShowSize","virtualItemHeight","attrsRef","shallowRef","loadFailed","ref","shouldVirtualize","computed","value","itemSize","DEFAULT_VIRTUAL_ITEM_HEIGHT","bufferSize","DEFAULT_VIRTUAL_SHOW_SIZE","ensureLoaded","checkCompat","a","spanMethod","treeProps"],"mappings":"yTA4BA,IAAIA,EAAwD,KACxDC,GAAkB,EAClBC,GAAkB,EAUtBC,eAAsBC,IAGpB,GAAIH,EACF,OAAOD,EAET,GAAIE,EACF,OAAO,KAET,IAEE,MAAMG,QAAiBC,OAA0B,wBAC3CC,EAAkBF,EAAIE,iBAAmBF,EAAIG,SAASD,gBAC5D,OAAKA,GAQLP,EAAiB,CAAEO,mBACnBN,GAAkB,EACXD,IATLE,GAAkB,EAClBO,EAAAA,SACE,gCACA,iEAEK,KAKX,CAAA,MAME,OALAP,GAAkB,EAClBO,EAAAA,SACE,oCACA,yFAEK,IACT,CACF,wDA0BO,SACLC,EACAC,EACAC,EACAC,GAIA,MAAMN,EAAkBO,EAAAA,WAAW,MAC7BC,EAAaC,EAAAA,KAAI,GAEjBC,EAAmBC,EAAAA,SACvB,IAAMR,EAAWS,SAAWZ,EAAgBY,OAyCxCC,EAAWF,EAAAA,SACf,IAAMN,EAAkBO,OAASE,EAAAA,6BAE7BC,EAAaJ,EAAAA,SACjB,IAAMP,EAAgBQ,OAASI,EAAAA,2BAGjC,MAAO,CACLN,mBACAV,kBACAQ,aACAK,WACAE,aACAE,aA5BmBrB,UACnB,IAAKO,EAAWS,MACd,OAEF,GAAIZ,EAAgBY,OAASJ,EAAWI,MACtC,OAEF,MAAMd,QAAYD,IACdC,EACFE,EAAgBY,MAAQd,EAAIE,gBAE5BQ,EAAWI,OAAQ,GAkBrBM,YAnDkB,KAClB,IAAKf,EAAWS,MACd,OAEF,MAAMO,EAAIb,KAAc,CAAA,GACpBa,EAAE,gBAAkBA,EAAEC,aACxBlB,EAAAA,SACE,kCACA,+CAGAiB,EAAE,eAAiBA,EAAEE,YACvBnB,EAAAA,SACE,iCACA,4CAuCR"}
@@ -14,7 +14,7 @@ async function loadVirtualScroller() {
14
14
  try {
15
15
  const mod = await import(
16
16
  /* @vite-ignore */
17
- "./index238.mjs"
17
+ "vue-virtual-scroller"
18
18
  );
19
19
  const RecycleScroller = mod.RecycleScroller || mod.default?.RecycleScroller;
20
20
  if (!RecycleScroller) {
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./index256.cjs");var r=require("./index240.cjs").__require();const t=e.getDefaultExportFromCjs(r);exports.default=t;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./index245.cjs");var r=require("./index239.cjs").__require();const t=e.getDefaultExportFromCjs(r);exports.default=t;
2
2
  //# sourceMappingURL=index231.cjs.map
@@ -1,5 +1,5 @@
1
- import { getDefaultExportFromCjs } from "./index256.mjs";
2
- import { __require as requireDayjs_min } from "./index240.mjs";
1
+ import { getDefaultExportFromCjs } from "./index245.mjs";
2
+ import { __require as requireDayjs_min } from "./index239.mjs";
3
3
  var dayjs_minExports = requireDayjs_min();
4
4
  const dayjs = /* @__PURE__ */ getDefaultExportFromCjs(dayjs_minExports);
5
5
  export {
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./index256.cjs");var r=require("./index242.cjs").__require();const t=e.getDefaultExportFromCjs(r);exports.default=t;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./index245.cjs");var r=require("./index241.cjs").__require();const t=e.getDefaultExportFromCjs(r);exports.default=t;
2
2
  //# sourceMappingURL=index232.cjs.map
@@ -1,5 +1,5 @@
1
- import { getDefaultExportFromCjs } from "./index256.mjs";
2
- import { __require as requireAdvancedFormat } from "./index242.mjs";
1
+ import { getDefaultExportFromCjs } from "./index245.mjs";
2
+ import { __require as requireAdvancedFormat } from "./index241.mjs";
3
3
  var advancedFormatExports = requireAdvancedFormat();
4
4
  const advancedFormat = /* @__PURE__ */ getDefaultExportFromCjs(advancedFormatExports);
5
5
  export {
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./index256.cjs");var r=require("./index244.cjs").__require();const t=e.getDefaultExportFromCjs(r);exports.default=t;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./index245.cjs");var r=require("./index243.cjs").__require();const t=e.getDefaultExportFromCjs(r);exports.default=t;
2
2
  //# sourceMappingURL=index233.cjs.map
@@ -1,5 +1,5 @@
1
- import { getDefaultExportFromCjs } from "./index256.mjs";
2
- import { __require as requireWeekOfYear } from "./index244.mjs";
1
+ import { getDefaultExportFromCjs } from "./index245.mjs";
2
+ import { __require as requireWeekOfYear } from "./index243.mjs";
3
3
  var weekOfYearExports = requireWeekOfYear();
4
4
  const weekOfYear = /* @__PURE__ */ getDefaultExportFromCjs(weekOfYearExports);
5
5
  export {
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./index246.cjs"),r=require("./index247.cjs"),o=require("./index248.cjs"),c=require("./index249.cjs"),n=require("./index250.cjs"),l=require("./index251.cjs"),s=require("./index252.cjs"),t=require("./index253.cjs"),i=require("./index254.cjs"),u=require("./index255.cjs");const m={version:"3.0.4",install(l,s){const t={installComponents:!0,componentsPrefix:"",...s};for(const e in t)typeof t[e]<"u"&&(n.c[e]=t[e]);t.installComponents&&function(n,l){n.component(`${l}recycle-scroller`,o._),n.component(`${l}RecycleScroller`,o._),n.component(`${l}dynamic-scroller`,e._),n.component(`${l}DynamicScroller`,e._),n.component(`${l}dynamic-scroller-item`,r._),n.component(`${l}DynamicScrollerItem`,r._),n.component(`${l}window-scroller`,c._),n.component(`${l}WindowScroller`,c._)}(l,t.componentsPrefix)}};exports.DynamicScroller=e._,exports.DynamicScrollerItem=r._,exports.RecycleScroller=o._,exports.WindowScroller=c._,exports.useRecycleScroller=n.u,exports.useDynamicScroller=l.useDynamicScroller,exports.useDynamicScrollerItem=s.useDynamicScrollerItem,exports.useIdState=t.useIdState,exports.useTableColumnWidths=i.useTableColumnWidths,exports.useWindowScroller=u.useWindowScroller,exports.default=m;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});exports.default={name:"zh-cn",plus:{datepicker:{date:"请选择日期",dates:"请选择日期",week:"请选择周",month:"请选择月份",months:"请选择月份",year:"请选择年份",years:"请选择年份",startDatePlaceholder:"请选择开始日期",endDatePlaceholder:"请选择结束日期",datetime:"请选择日期时间",startMonthPlaceholder:"请选择开始月份",endMonthPlaceholder:"请选择结束月份",startTimePlaceholder:"请选择开始时间",endTimePlaceholder:"请选择结束时间",shortcutsDate:{today:"今天",yesterday:"昨天",lastWeek:"一周前"},shortcutsDaterange:{pastWeek:"最近一周",pastMonth:"最近一个月",pastThreeMonths:"最近三个月"},shortcutsMonthrange:{thisMonth:"本月",thisYear:"今年至今",pastSixMonths:"最近六个月"},shortcutsDatetime:{today:"今天",yesterday:"昨天",lastWeek:"一周前"},shortcutsDatetimerange:{pastWeek:"最近一周",pastMonth:"最近一个月",pastThreeMonths:"最近三个月"}},form:{pleaseEnter:"请输入",pleaseSelect:"请选择"},input:{placeholder:"请输入",appendTitle:"元",validatePhone:"请输入正确的手机号码",validateIdCard:"请输入正确的身份证号码",validateInteger:"请输入正确的整数",format:"请输入正确的",amount:"金额",numbers:"数字",digitUppercase:"请输入正确的金额格式",validateError:"请输入正确的格式",escaped:{0:"角",1:"分",2:"零",3:"壹",4:"贰",5:"叁",6:"肆",7:"伍",8:"陆",9:"柒",10:"捌",11:"玖",12:"元",13:"万",14:"亿",15:"兆",16:"拾",17:"佰",18:"仟",19:"欠",20:"整"}},moduleForm:{save:"保存",back:"返回"},search:{searchText:"查询",resetText:"重置",expand:"展开",retract:"收起",pleaseEnter:"请输入",pleaseSelect:"请选择",popoverAttrs:{showTxt:"更多",title:"所有条件",allTxt:"全选",reverseTxt:"反选",clearTxt:"清空"}},select:{selectAllTxt:"全选"},selectIcon:{placeholder:"请选择图标",dialogTitle:"请选择图标",searchPlaceholder:"搜索图标",emptyDescription:"未搜索到您要找的图标"},copy:{copySuccess:"复制成功",copyFail:"复制失败",invalidCopyContent:"无效的复制内容"},selectTable:{searchBtnTxt:"关闭下拉框",radioTxt:"单选",loadingTxt:"加载中..."},stepWizard:{lastBtnTitle:"完成"},table:{columnBind:{btnTxt:"列设置",title:"列设置"},fistColumn:{label:"序号",radio:"单选"},operator:{label:"操作",more:"更多",sum:"当页合计",total:"合计",allSum:"全部合计"},singleEdit:{tipText:"单击可编辑"},pleaseEnter:"请输入",pleaseSelect:"请选择",loadingTxt:"加载中...",saveBtnTxt:"保存",dragTxt:"拖动",density:"密度",default:"默认",loose:"宽松",compact:"紧凑"}}};
2
2
  //# sourceMappingURL=index238.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index238.cjs","sources":["../../../../node_modules/vue-virtual-scroller/dist/vue-virtual-scroller.js"],"sourcesContent":["import { _ as c } from \"./DynamicScroller.vue_vue_type_script_setup_true_lang-1pN0JYQz.js\";\nimport { _ as l } from \"./DynamicScrollerItem.vue_vue_type_script_setup_true_lang-qh6MY0wl.js\";\nimport { _ as m } from \"./RecycleScroller.vue_vue_type_script_setup_true_lang-Dxq64Bue.js\";\nimport \"./scroller.css_vue_type_style_index_0_src_true_lang--7gJ3zh_.js\";\nimport { _ as t } from \"./WindowScroller.vue_vue_type_script_setup_true_lang-Dpwklg_y.js\";\nimport { c as s } from \"./useRecycleScroller-CXk06epd.js\";\nimport { u as D } from \"./useRecycleScroller-CXk06epd.js\";\nimport { useDynamicScroller as C } from \"./composables/useDynamicScroller.js\";\nimport { useDynamicScrollerItem as W } from \"./composables/useDynamicScrollerItem.js\";\nimport { useIdState as R } from \"./composables/useIdState.js\";\nimport { useTableColumnWidths as P } from \"./composables/useTableColumnWidths.js\";\nimport { useWindowScroller as h } from \"./composables/useWindowScroller.js\";\nfunction i(o, e) {\n o.component(`${e}recycle-scroller`, m), o.component(`${e}RecycleScroller`, m), o.component(`${e}dynamic-scroller`, c), o.component(`${e}DynamicScroller`, c), o.component(`${e}dynamic-scroller-item`, l), o.component(`${e}DynamicScrollerItem`, l), o.component(`${e}window-scroller`, t), o.component(`${e}WindowScroller`, t);\n}\nconst d = {\n version: \"3.0.4\",\n install(o, e) {\n const n = { installComponents: !0, componentsPrefix: \"\", ...e };\n for (const r in n)\n typeof n[r] < \"u\" && (s[r] = n[r]);\n n.installComponents && i(o, n.componentsPrefix);\n }\n};\nexport {\n c as DynamicScroller,\n l as DynamicScrollerItem,\n m as RecycleScroller,\n t as WindowScroller,\n d as default,\n C as useDynamicScroller,\n W as useDynamicScrollerItem,\n R as useIdState,\n D as useRecycleScroller,\n P as useTableColumnWidths,\n h as useWindowScroller\n};\n//# sourceMappingURL=vue-virtual-scroller.js.map\n"],"names":["d","version","install","o","e","n","installComponents","componentsPrefix","r","s","component","m","c","l","t","i"],"mappings":"0YAeK,MAACA,EAAI,CACRC,QAAS,QACT,OAAAC,CAAQC,EAAGC,GACT,MAAMC,EAAI,CAAEC,mBAAmB,EAAIC,iBAAkB,MAAOH,GAC5D,IAAA,MAAWI,KAAKH,SACPA,EAAEG,GAAK,MAAQC,EAAAA,EAAED,GAAKH,EAAEG,IACjCH,EAAEC,mBATN,SAAWH,EAAGC,GACZD,EAAEO,UAAU,GAAGN,oBAAqBO,EAAAA,GAAIR,EAAEO,UAAU,GAAGN,mBAAoBO,EAAAA,GAAIR,EAAEO,UAAU,GAAGN,oBAAqBQ,EAAAA,GAAIT,EAAEO,UAAU,GAAGN,mBAAoBQ,EAAAA,GAAIT,EAAEO,UAAU,GAAGN,yBAA0BS,EAAAA,GAAIV,EAAEO,UAAU,GAAGN,uBAAwBS,EAAAA,GAAIV,EAAEO,UAAU,GAAGN,mBAAoBU,EAAAA,GAAIX,EAAEO,UAAU,GAAGN,kBAAmBU,EAAAA,EACjU,CAO2BC,CAAEZ,EAAGE,EAAEE,iBAChC","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index238.cjs","sources":["../../src/locale/lang/zh-cn.ts"],"sourcesContent":["/**\n * @description 中文语言包\n * 提供组件库所有文本的中文翻译\n */\nexport default {\n name: 'zh-cn',\n plus: {\n // ===== 日期选择器 =====\n datepicker: {\n date: '请选择日期',\n dates: '请选择日期',\n week: '请选择周',\n month: '请选择月份',\n months: '请选择月份',\n year: '请选择年份',\n years: '请选择年份',\n startDatePlaceholder: '请选择开始日期',\n endDatePlaceholder: '请选择结束日期',\n datetime: '请选择日期时间',\n startMonthPlaceholder: '请选择开始月份',\n endMonthPlaceholder: '请选择结束月份',\n startTimePlaceholder: '请选择开始时间',\n endTimePlaceholder: '请选择结束时间',\n shortcutsDate: {\n today: '今天',\n yesterday: '昨天',\n lastWeek: '一周前'\n },\n shortcutsDaterange: {\n pastWeek: '最近一周',\n pastMonth: '最近一个月',\n pastThreeMonths: '最近三个月'\n },\n shortcutsMonthrange: {\n thisMonth: '本月',\n thisYear: '今年至今',\n pastSixMonths: '最近六个月'\n },\n shortcutsDatetime: {\n today: '今天',\n yesterday: '昨天',\n lastWeek: '一周前'\n },\n shortcutsDatetimerange: {\n pastWeek: '最近一周',\n pastMonth: '最近一个月',\n pastThreeMonths: '最近三个月'\n }\n },\n\n // ===== 表单相关 =====\n form: {\n pleaseEnter: '请输入',\n pleaseSelect: '请选择'\n },\n\n // ===== 输入框 =====\n input: {\n placeholder: '请输入',\n appendTitle: '元',\n validatePhone: '请输入正确的手机号码',\n validateIdCard: '请输入正确的身份证号码',\n validateInteger: '请输入正确的整数',\n format: '请输入正确的',\n amount: '金额',\n numbers: '数字',\n digitUppercase: '请输入正确的金额格式',\n validateError: '请输入正确的格式',\n escaped: {\n 0: '角',\n 1: '分',\n 2: '零',\n 3: '壹',\n 4: '贰',\n 5: '叁',\n 6: '肆',\n 7: '伍',\n 8: '陆',\n 9: '柒',\n 10: '捌',\n 11: '玖',\n 12: '元',\n 13: '万',\n 14: '亿',\n 15: '兆',\n 16: '拾',\n 17: '佰',\n 18: '仟',\n 19: '欠',\n 20: '整'\n }\n },\n\n // ===== 模块表单 =====\n moduleForm: {\n save: '保存',\n back: '返回'\n },\n\n // ===== 搜索/查询条件 =====\n search: {\n searchText: '查询',\n resetText: '重置',\n expand: '展开',\n retract: '收起',\n pleaseEnter: '请输入',\n pleaseSelect: '请选择',\n popoverAttrs: {\n showTxt: '更多',\n title: '所有条件',\n allTxt: '全选',\n reverseTxt: '反选',\n clearTxt: '清空'\n }\n },\n\n // ===== 下拉选择 =====\n select: {\n selectAllTxt: '全选'\n },\n\n // ===== 图标选择器 =====\n selectIcon: {\n placeholder: '请选择图标',\n dialogTitle: '请选择图标',\n searchPlaceholder: '搜索图标',\n emptyDescription: '未搜索到您要找的图标'\n },\n\n // ===== 复制功能 =====\n copy: {\n copySuccess: '复制成功',\n copyFail: '复制失败',\n invalidCopyContent: '无效的复制内容'\n },\n\n // ===== 下拉表格 =====\n selectTable: {\n searchBtnTxt: '关闭下拉框',\n radioTxt: '单选',\n loadingTxt: '加载中...'\n },\n\n // ===== 步骤向导 =====\n stepWizard: {\n lastBtnTitle: '完成'\n },\n\n // ===== 表格组件 =====\n table: {\n columnBind: {\n btnTxt: '列设置',\n title: '列设置'\n },\n fistColumn: {\n label: '序号',\n radio: '单选'\n },\n operator: {\n label: '操作',\n more: '更多',\n sum: '当页合计',\n total: '合计',\n allSum: '全部合计'\n },\n singleEdit: {\n tipText: '单击可编辑'\n },\n pleaseEnter: '请输入',\n pleaseSelect: '请选择',\n loadingTxt: '加载中...',\n saveBtnTxt: '保存',\n dragTxt: '拖动',\n density: '密度',\n default: '默认',\n loose: '宽松',\n compact: '紧凑'\n }\n }\n};\n"],"names":["name","plus","datepicker","date","dates","week","month","months","year","years","startDatePlaceholder","endDatePlaceholder","datetime","startMonthPlaceholder","endMonthPlaceholder","startTimePlaceholder","endTimePlaceholder","shortcutsDate","today","yesterday","lastWeek","shortcutsDaterange","pastWeek","pastMonth","pastThreeMonths","shortcutsMonthrange","thisMonth","thisYear","pastSixMonths","shortcutsDatetime","shortcutsDatetimerange","form","pleaseEnter","pleaseSelect","input","placeholder","appendTitle","validatePhone","validateIdCard","validateInteger","format","amount","numbers","digitUppercase","validateError","escaped","moduleForm","save","back","search","searchText","resetText","expand","retract","popoverAttrs","showTxt","title","allTxt","reverseTxt","clearTxt","select","selectAllTxt","selectIcon","dialogTitle","searchPlaceholder","emptyDescription","copy","copySuccess","copyFail","invalidCopyContent","selectTable","searchBtnTxt","radioTxt","loadingTxt","stepWizard","lastBtnTitle","table","columnBind","btnTxt","fistColumn","label","radio","operator","more","sum","total","allSum","singleEdit","tipText","saveBtnTxt","dragTxt","density","default","loose","compact"],"mappings":"4HAIe,CACbA,KAAM,QACNC,KAAM,CAEJC,WAAY,CACVC,KAAM,QACNC,MAAO,QACPC,KAAM,OACNC,MAAO,QACPC,OAAQ,QACRC,KAAM,QACNC,MAAO,QACPC,qBAAsB,UACtBC,mBAAoB,UACpBC,SAAU,UACVC,sBAAuB,UACvBC,oBAAqB,UACrBC,qBAAsB,UACtBC,mBAAoB,UACpBC,cAAe,CACbC,MAAO,KACPC,UAAW,KACXC,SAAU,OAEZC,mBAAoB,CAClBC,SAAU,OACVC,UAAW,QACXC,gBAAiB,SAEnBC,oBAAqB,CACnBC,UAAW,KACXC,SAAU,OACVC,cAAe,SAEjBC,kBAAmB,CACjBX,MAAO,KACPC,UAAW,KACXC,SAAU,OAEZU,uBAAwB,CACtBR,SAAU,OACVC,UAAW,QACXC,gBAAiB,UAKrBO,KAAM,CACJC,YAAa,MACbC,aAAc,OAIhBC,MAAO,CACLC,YAAa,MACbC,YAAa,IACbC,cAAe,aACfC,eAAgB,cAChBC,gBAAiB,WACjBC,OAAQ,SACRC,OAAQ,KACRC,QAAS,KACTC,eAAgB,aAChBC,cAAe,WACfC,QAAS,CACP,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,MAKRC,WAAY,CACVC,KAAM,KACNC,KAAM,MAIRC,OAAQ,CACNC,WAAY,KACZC,UAAW,KACXC,OAAQ,KACRC,QAAS,KACTrB,YAAa,MACbC,aAAc,MACdqB,aAAc,CACZC,QAAS,KACTC,MAAO,OACPC,OAAQ,KACRC,WAAY,KACZC,SAAU,OAKdC,OAAQ,CACNC,aAAc,MAIhBC,WAAY,CACV3B,YAAa,QACb4B,YAAa,QACbC,kBAAmB,OACnBC,iBAAkB,cAIpBC,KAAM,CACJC,YAAa,OACbC,SAAU,OACVC,mBAAoB,WAItBC,YAAa,CACXC,aAAc,QACdC,SAAU,KACVC,WAAY,UAIdC,WAAY,CACVC,aAAc,MAIhBC,MAAO,CACLC,WAAY,CACVC,OAAQ,MACRtB,MAAO,OAETuB,WAAY,CACVC,MAAO,KACPC,MAAO,MAETC,SAAU,CACRF,MAAO,KACPG,KAAM,KACNC,IAAK,OACLC,MAAO,KACPC,OAAQ,QAEVC,WAAY,CACVC,QAAS,SAEXxD,YAAa,MACbC,aAAc,MACdwC,WAAY,SACZgB,WAAY,KACZC,QAAS,KACTC,QAAS,KACTC,QAAS,KACTC,MAAO,KACPC,QAAS"}