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/dayjs/plugin/weekOfYear.js"],"sourcesContent":["!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekOfYear=t()}(this,(function(){\"use strict\";var e=\"week\",t=\"year\";return function(i,n,r){var f=n.prototype;f.week=function(i){if(void 0===i&&(i=null),null!==i)return this.add(7*(i-this.week()),\"day\");var n=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,\"millisecond\"),o=this.diff(a,e,!0);return o<0?r(this).startOf(\"week\").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}));"],"names":["this","i","n","f","e"],"mappings":";;;;;;;AAAA,KAAC,SAAS,GAAE,GAAE;AAAsD,aAAA,UAAe,EAAC;AAAA,IAAoI,EAAEA,YAAM,WAAU;AAAc,UAAI,IAAE,QAAO,IAAE;AAAO,aAAO,SAAS,GAAE,GAAE,GAAE;AAAC,YAAI,IAAE,EAAE;AAAU,UAAE,OAAK,SAASC,IAAE;AAAC,cAAG,WAASA,OAAIA,KAAE,OAAM,SAAOA,GAAE,QAAO,KAAK,IAAI,KAAGA,KAAE,KAAK,KAAI,IAAI,KAAK;AAAE,cAAIC,KAAE,KAAK,QAAO,EAAG,aAAW;AAAE,cAAG,OAAK,KAAK,MAAK,KAAI,KAAK,KAAI,IAAG,IAAG;AAAC,gBAAIC,KAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,IAAI,GAAE,CAAC,EAAE,KAAKD,EAAC,GAAE,IAAE,EAAE,IAAI,EAAE,MAAM,CAAC;AAAE,gBAAGC,GAAE,SAAS,CAAC,EAAE,QAAO;AAAA,UAAC;AAAC,cAAI,IAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAKD,EAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,GAAE,aAAa,GAAE,IAAE,KAAK,KAAK,GAAE,GAAE,IAAE;AAAE,iBAAO,IAAE,IAAE,EAAE,IAAI,EAAE,QAAQ,MAAM,EAAE,KAAI,IAAG,KAAK,KAAK,CAAC;AAAA,QAAC,GAAE,EAAE,QAAM,SAASE,IAAE;AAAC,iBAAO,WAASA,OAAIA,KAAE,OAAM,KAAK,KAAKA,EAAC;AAAA,QAAC;AAAA,MAAC;AAAA,IAAC;;;;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index244.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});exports.__module={exports:{}};
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),exports.getDefaultExportFromCjs=function(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e};
2
2
  //# sourceMappingURL=index245.cjs.map
@@ -1,5 +1,7 @@
1
- var weekOfYear = { exports: {} };
1
+ function getDefaultExportFromCjs(x) {
2
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
3
+ }
2
4
  export {
3
- weekOfYear as __module
5
+ getDefaultExportFromCjs
4
6
  };
5
7
  //# sourceMappingURL=index245.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index245.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index245.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","undefined","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","name","inheritAttrs","props","emits","setup","attrs","emit","instance","getCurrentInstance","ElSelect","getUIComponent","ElSelectV2","Comp","isArray","length","globalThis","process","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","isVue2","$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","compProps","onChange","val","isV2","slotNodes","flatten","arr","out","item","sub","label","disabled","keys","forEach","scope","renderSlot","renderOptionTree","original","footer","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","undefined","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","name","inheritAttrs","props","emits","setup","attrs","emit","instance","getCurrentInstance","ElSelect","getUIComponent","ElSelectV2","Comp","isArray","length","globalThis","process","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","isVue2","$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","compProps","onChange","val","isV2","slotNodes","flatten","arr","out","item","sub","label","disabled","keys","forEach","scope","renderSlot","renderOptionTree","original","footer","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":["selectProps","modelValue","type","String","Number","Boolean","Object","Array","default","undefined","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","computeDisplayText","props","instance","vm","proxy","raw","isVue2","$attrs","value","isArray","length","sep","valueKey","labelKey","src","multiple","map","o","filter","join","values","split","s","trim","warnOnce","v","flat","it","options","push","lookup","matched","find","name","inheritAttrs","emits","setup","attrs","emit","getCurrentInstance","ElSelect","getUIComponent","ElSelectV2","Comp","globalThis","process","env","NODE_ENV","console","warn","innerValue","updateInner","emitOutside","useLooseModel","mergedSource","paginationNode","selectAllNode","onChangeWithCache","usePagination","wrapWithTip","useDisabledTip","forwarded","useForwardProps","elForwarded","useOmitForwardProps","auditMode","computed","autoAudit","useAuditInternal","enabled","config","field","comp","internalAuditState","state","trackMode","autoTrack","useTrackInternal","userOnVisibleChange","onVisibleChange","handleAuditVisibleChange","visible","cur","source","run","text","h","class","slots","useCompatSlots","listenerProps","useCompatListeners","modelBinding","onInput","_omitVc","restAttrs","compProps","onChange","val","isV2","slotNodes","flatten","arr","out","item","sub","label","disabled","keys","forEach","scope","renderSlot","renderOptionTree","original","footer","node","mainVNode","AuditFeedback"],"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":["selectProps","modelValue","type","String","Number","Boolean","Object","Array","default","undefined","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","computeDisplayText","props","instance","vm","proxy","raw","isVue2","$attrs","value","isArray","length","sep","valueKey","labelKey","src","multiple","map","o","filter","join","values","split","s","trim","warnOnce","v","flat","it","options","push","lookup","matched","find","name","inheritAttrs","emits","setup","attrs","emit","getCurrentInstance","ElSelect","getUIComponent","ElSelectV2","Comp","globalThis","process","env","NODE_ENV","console","warn","innerValue","updateInner","emitOutside","useLooseModel","mergedSource","paginationNode","selectAllNode","onChangeWithCache","usePagination","wrapWithTip","useDisabledTip","forwarded","useForwardProps","elForwarded","useOmitForwardProps","auditMode","computed","autoAudit","useAuditInternal","enabled","config","field","comp","internalAuditState","state","trackMode","autoTrack","useTrackInternal","userOnVisibleChange","onVisibleChange","handleAuditVisibleChange","visible","cur","source","run","text","h","class","slots","useCompatSlots","listenerProps","useCompatListeners","modelBinding","onInput","_omitVc","restAttrs","compProps","onChange","val","isV2","slotNodes","flatten","arr","out","item","sub","label","disabled","keys","forEach","scope","renderSlot","renderOptionTree","original","footer","node","mainVNode","AuditFeedback"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "x-sccba",
3
3
  "type": "module",
4
- "version": "0.2.3",
4
+ "version": "0.2.4",
5
5
  "license": "MIT",
6
6
  "homepage": "https://x-sccba.com",
7
7
  "repository": {
@@ -141,17 +141,13 @@
141
141
  "element-ui": "Vue2 用户需自行安装 element-ui@^2.15.0(推荐 2.15.1)。已声明为 optional peer,不会随本库自动安装;Vue3 环境无需安装",
142
142
  "element-plus": "Vue3 用户需自行安装 element-plus@>=2.0.0。已声明为 optional peer,不会随本库自动安装;Vue2 环境无需安装",
143
143
  "@element-plus/icons-vue": "Vue3 用户需自行安装 >=2.0.0。从 dependencies 迁移到 optional peerDependency,由宿主显式安装并控制版本",
144
- "@vue/composition-api": "Vue 2.6 宿主必装(本包通过 vue-demi 路由使用);标记 optional 以便 Vue 3 用户免装"
144
+ "@vue/composition-api": "Vue 2.6 宿主必装(本包通过 vue-demi 路由使用);标记 optional 以便 Vue 3 用户免装",
145
+ "vue-virtual-scroller": "XTable 虚拟滚动可选增强依赖;仅 useVirtual=true 且宿主安装后启用,未安装时回退普通表格渲染"
145
146
  },
146
147
  "_dependencies说明": {
147
- "vue-demi": "Vue 2/3 通用适配层,根据宿主自动切换",
148
- "@vueuse/core": "Vue Composition API 工具库",
149
- "lodash-es": "实用工具库 ESM 版本,支持 tree-shaking",
150
- "dompurify": "HTML 消毒库,防止 XSS",
151
- "shiki": "代码高亮引擎",
152
- "unified + remark-* + rehype-*": "Markdown 处理管线",
153
- "deepmerge": "深度合并对象,用于组件默认配置合并",
154
- "_注意": "@element-plus/icons-vue 已从 dependencies 迁移到 peerDependencies (optional),由宿主自行安装,不再随本库自动安装"
148
+ "vue-demi": "Vue 2/3 通用适配层,根据宿主自动切换(必须 external,运行时由宿主提供)",
149
+ "@vueuse/core": "已移至 devDependencies:当前源码中仅 Storybook 演示文件引用,无组件或 hooks 依赖;构建仍保持 external 作为安全网",
150
+ "_注意": "lodash-es、deepmerge、dompurify 等包已从 dependencies 移除(源码未引用);@element-plus/icons-vue 已从 dependencies 迁移到 peerDependencies (optional)"
155
151
  }
156
152
  },
157
153
  "peerDependencies": {
@@ -161,7 +157,8 @@
161
157
  "element-plus": ">=2.0.0",
162
158
  "element-ui": "^2.15.0",
163
159
  "sortablejs": ">=1.15.0",
164
- "vue": "^2.6.0 || ^3.0.0"
160
+ "vue": "^2.6.0 || ^3.0.0",
161
+ "vue-virtual-scroller": ">=1.0.0"
165
162
  },
166
163
  "peerDependenciesMeta": {
167
164
  "@vue/composition-api": {
@@ -181,25 +178,12 @@
181
178
  },
182
179
  "sortablejs": {
183
180
  "optional": true
181
+ },
182
+ "vue-virtual-scroller": {
183
+ "optional": true
184
184
  }
185
185
  },
186
186
  "dependencies": {
187
- "@shikijs/transformers": "^3.7.0",
188
- "@vueuse/core": ">=10.0.0",
189
- "deepmerge": "^4.3.1",
190
- "dompurify": ">=3.0.0",
191
- "lodash-es": ">=4.17.21",
192
- "property-information": "^6.5.0",
193
- "rehype-katex": "^7.0.1",
194
- "rehype-raw": "^7.0.0",
195
- "rehype-sanitize": "^6.0.0",
196
- "remark-breaks": "^4.0.0",
197
- "remark-gfm": "^4.0.1",
198
- "remark-math": "^6.0.0",
199
- "remark-parse": "^11.0.0",
200
- "remark-rehype": "^11.1.2",
201
- "shiki": "^3.7.0",
202
- "unified": "^11.0.5",
203
187
  "vue-demi": "^0.14.0"
204
188
  },
205
189
  "devDependencies": {
@@ -229,6 +213,7 @@
229
213
  "@vue/composition-api": "^1.7.0",
230
214
  "@vue/test-utils": "^2.4.10",
231
215
  "@vue/tsconfig": "^0.7.0",
216
+ "@vueuse/core": ">=10.0.0",
232
217
  "element-plus": "^2.13.6",
233
218
  "element-ui": "2.15.1",
234
219
  "esno": "^4.8.0",
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),t=require("./index257.cjs");exports.useDynamicScrollerItem=function(n,l,o){const u=e.inject("vscrollMeasurementContext"),i=e.inject("vscrollAnchorRegistry",null),r=e.computed(()=>{const t=e.toValue(n).el;return e.toValue(null!=l?l:t)}),c={onResize:t=>{var l,u;return null==(u=null!=(l=null==o?void 0:o.onResize)?l:e.toValue(n).onResize)?void 0:u(t)}},a=e.computed(()=>{var t;return e.toValue(null==(t=e.toValue(n).enabled)||t)}),s=t.c(n,r,u,c);let d=!1;function v(){d||(s.mount(),d=!0)}function m(){d&&(s.unmount(),d=!1)}return e.onMounted(()=>{a.value&&v()}),e.watch(a,e=>{if(e)v();else{const e=r.value;i&&e&&i.delete(e),m()}}),i&&e.watch([s.id,s.finalActive,r,a],([e,t,n,l],[o,u,r])=>{r&&r!==n&&i.delete(r),l&&n&&i.set(n,{active:t,id:e})},{immediate:!0}),e.onBeforeUnmount(()=>{const e=r.value;i&&e&&i.delete(e),m()}),{id:s.id,size:s.size,finalActive:s.finalActive,updateSize:s.updateSize}};
2
- //# sourceMappingURL=index245.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index245.cjs","sources":["../../../../node_modules/vue-virtual-scroller/dist/composables/useDynamicScrollerItem.js"],"sourcesContent":["import { inject as v, computed as z, toValue as r, onMounted as S, watch as C, onBeforeUnmount as h } from \"vue\";\nimport { c as x } from \"../dynamicScrollerMeasurement-Cq5NQLJa.js\";\nfunction _(i, A, c) {\n const R = v(\"vscrollMeasurementContext\"), n = v(\"vscrollAnchorRegistry\", null), u = z(() => {\n const e = r(i).el;\n return r(A ?? e);\n }), p = {\n onResize: (e) => {\n var o;\n return (o = (c == null ? void 0 : c.onResize) ?? r(i).onResize) == null ? void 0 : o(e);\n }\n }, s = z(() => r(\n r(i).enabled ?? !0\n )), t = x(i, u, R, p);\n let l = !1;\n function d() {\n l || (t.mount(), l = !0);\n }\n function a() {\n l && (t.unmount(), l = !1);\n }\n return S(() => {\n s.value && d();\n }), C(s, (e) => {\n if (e)\n d();\n else {\n const o = u.value;\n n && o && n.delete(o), a();\n }\n }), n && C(\n [t.id, t.finalActive, u, s],\n ([e, o, f, y], [I, g, m]) => {\n m && m !== f && n.delete(m), y && f && n.set(f, {\n active: o,\n id: e\n });\n },\n {\n immediate: !0\n }\n ), h(() => {\n const e = u.value;\n n && e && n.delete(e), a();\n }), {\n id: t.id,\n size: t.size,\n finalActive: t.finalActive,\n updateSize: t.updateSize\n };\n}\nexport {\n _ as useDynamicScrollerItem\n};\n//# sourceMappingURL=useDynamicScrollerItem.js.map\n"],"names":["i","A","c","R","v","n","u","z","e","r","el","p","onResize","o","_a","s","enabled","t","x","l","d","mount","a","unmount","S","value","C","delete","id","finalActive","f","y","I","g","m","set","active","immediate","h","size","updateSize"],"mappings":"kKAEA,SAAWA,EAAGC,EAAGC,GACf,MAAMC,EAAIC,EAAAA,OAAE,6BAA8BC,EAAID,SAAE,wBAAyB,MAAOE,EAAIC,EAAAA,SAAE,KACpF,MAAMC,EAAIC,EAAAA,QAAET,GAAGU,GACf,OAAOD,EAAAA,QAAE,MAAAR,EAAAA,EAAKO,KACZG,EAAI,CACNC,SAAWJ,UACLK,EACJ,OAAmE,OAA3DA,EAAK,OAAAC,EAAK,MAALZ,OAAY,EAASA,EAAEU,UAAvBE,EAAoCL,EAAAA,QAAET,GAAGY,eAAoB,EAASC,EAAEL,KAEtFO,EAAIR,EAAAA,SAAE,WAAME,OAAAA,EAAAA,QACbA,OAAAA,EAAAA,UAAET,GAAGgB,UAALP,KACEQ,EAAIC,EAAAA,EAAElB,EAAGM,EAAGH,EAAGQ,GACnB,IAAIQ,GAAI,EACR,SAASC,IACPD,IAAMF,EAAEI,QAASF,GAAI,EACvB,CACA,SAASG,IACPH,IAAMF,EAAEM,UAAWJ,GAAI,EACzB,CACA,OAAOK,EAAAA,UAAE,KACPT,EAAEU,OAASL,MACTM,EAAAA,MAAEX,EAAIP,IACR,GAAIA,EACFY,QACG,CACH,MAAMP,EAAIP,EAAEmB,MACZpB,GAAKQ,GAAKR,EAAEsB,OAAOd,GAAIS,GACzB,IACEjB,GAAKqB,EAAAA,MACP,CAACT,EAAEW,GAAIX,EAAEY,YAAavB,EAAGS,GACzB,EAAEP,EAAGK,EAAGiB,EAAGC,IAAKC,EAAGC,EAAGC,MACpBA,GAAKA,IAAMJ,GAAKzB,EAAEsB,OAAOO,GAAIH,GAAKD,GAAKzB,EAAE8B,IAAIL,EAAG,CAC9CM,OAAQvB,EACRe,GAAIpB,KAGR,CACE6B,WAAW,IAEZC,EAAAA,gBAAE,KACH,MAAM9B,EAAIF,EAAEmB,MACZpB,GAAKG,GAAKH,EAAEsB,OAAOnB,GAAIc,MACrB,CACFM,GAAIX,EAAEW,GACNW,KAAMtB,EAAEsB,KACRV,YAAaZ,EAAEY,YACfW,WAAYvB,EAAEuB,WAElB","x_google_ignoreList":[0]}
@@ -1,59 +0,0 @@
1
- import { inject, computed, toValue, onMounted, watch, onBeforeUnmount } from "vue";
2
- import { c as q } from "./index257.mjs";
3
- function _(i, A, c) {
4
- const R = inject("vscrollMeasurementContext"), n = inject("vscrollAnchorRegistry", null), u = computed(() => {
5
- const e = toValue(i).el;
6
- return toValue(A != null ? A : e);
7
- }), p = {
8
- onResize: (e) => {
9
- var _a;
10
- var o;
11
- return (o = (_a = c == null ? void 0 : c.onResize) != null ? _a : toValue(i).onResize) == null ? void 0 : o(e);
12
- }
13
- }, s = computed(() => {
14
- var _a;
15
- return toValue(
16
- (_a = toValue(i).enabled) != null ? _a : true
17
- );
18
- }), t = q(i, u, R, p);
19
- let l = false;
20
- function d() {
21
- l || (t.mount(), l = true);
22
- }
23
- function a() {
24
- l && (t.unmount(), l = false);
25
- }
26
- return onMounted(() => {
27
- s.value && d();
28
- }), watch(s, (e) => {
29
- if (e)
30
- d();
31
- else {
32
- const o = u.value;
33
- n && o && n.delete(o), a();
34
- }
35
- }), n && watch(
36
- [t.id, t.finalActive, u, s],
37
- ([e, o, f, y], [I, g, m]) => {
38
- m && m !== f && n.delete(m), y && f && n.set(f, {
39
- active: o,
40
- id: e
41
- });
42
- },
43
- {
44
- immediate: true
45
- }
46
- ), onBeforeUnmount(() => {
47
- const e = u.value;
48
- n && e && n.delete(e), a();
49
- }), {
50
- id: t.id,
51
- size: t.size,
52
- finalActive: t.finalActive,
53
- updateSize: t.updateSize
54
- };
55
- }
56
- export {
57
- _ as useDynamicScrollerItem
58
- };
59
- //# sourceMappingURL=index245.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index245.mjs","sources":["../../../../node_modules/vue-virtual-scroller/dist/composables/useDynamicScrollerItem.js"],"sourcesContent":["import { inject as v, computed as z, toValue as r, onMounted as S, watch as C, onBeforeUnmount as h } from \"vue\";\nimport { c as x } from \"../dynamicScrollerMeasurement-Cq5NQLJa.js\";\nfunction _(i, A, c) {\n const R = v(\"vscrollMeasurementContext\"), n = v(\"vscrollAnchorRegistry\", null), u = z(() => {\n const e = r(i).el;\n return r(A ?? e);\n }), p = {\n onResize: (e) => {\n var o;\n return (o = (c == null ? void 0 : c.onResize) ?? r(i).onResize) == null ? void 0 : o(e);\n }\n }, s = z(() => r(\n r(i).enabled ?? !0\n )), t = x(i, u, R, p);\n let l = !1;\n function d() {\n l || (t.mount(), l = !0);\n }\n function a() {\n l && (t.unmount(), l = !1);\n }\n return S(() => {\n s.value && d();\n }), C(s, (e) => {\n if (e)\n d();\n else {\n const o = u.value;\n n && o && n.delete(o), a();\n }\n }), n && C(\n [t.id, t.finalActive, u, s],\n ([e, o, f, y], [I, g, m]) => {\n m && m !== f && n.delete(m), y && f && n.set(f, {\n active: o,\n id: e\n });\n },\n {\n immediate: !0\n }\n ), h(() => {\n const e = u.value;\n n && e && n.delete(e), a();\n }), {\n id: t.id,\n size: t.size,\n finalActive: t.finalActive,\n updateSize: t.updateSize\n };\n}\nexport {\n _ as useDynamicScrollerItem\n};\n//# sourceMappingURL=useDynamicScrollerItem.js.map\n"],"names":["v","z","r","x","S","C","h"],"mappings":";;AAEA,SAAS,EAAE,GAAG,GAAG,GAAG;AAClB,QAAM,IAAIA,OAAE,2BAA2B,GAAG,IAAIA,OAAE,yBAAyB,IAAI,GAAG,IAAIC,SAAE,MAAM;AAC1F,UAAM,IAAIC,QAAE,CAAC,EAAE;AACf,WAAOA,QAAE,gBAAK,CAAC;AAAA,EACjB,CAAC,GAAG,IAAI;AAAA,IACN,UAAU,CAAC,MAAM;;AACf,UAAI;AACJ,cAAQ,KAAK,UAAK,OAAO,SAAS,EAAE,aAAvB,YAAoCA,QAAE,CAAC,EAAE,aAAa,OAAO,SAAS,EAAE,CAAC;AAAA,IACxF;AAAA,EACJ,GAAK,IAAID,SAAE;;AAAMC;AAAAA,OACbA,aAAE,CAAC,EAAE,YAALA,YAAgB;AAAA,IACpB;AAAA,GAAG,GAAG,IAAIC,EAAE,GAAG,GAAG,GAAG,CAAC;AACpB,MAAI,IAAI;AACR,WAAS,IAAI;AACX,UAAM,EAAE,SAAS,IAAI;AAAA,EACvB;AACA,WAAS,IAAI;AACX,UAAM,EAAE,WAAW,IAAI;AAAA,EACzB;AACA,SAAOC,UAAE,MAAM;AACb,MAAE,SAAS,EAAC;AAAA,EACd,CAAC,GAAGC,MAAE,GAAG,CAAC,MAAM;AACd,QAAI;AACF,QAAC;AAAA,SACE;AACH,YAAM,IAAI,EAAE;AACZ,WAAK,KAAK,EAAE,OAAO,CAAC,GAAG,EAAC;AAAA,IAC1B;AAAA,EACF,CAAC,GAAG,KAAKA;AAAAA,IACP,CAAC,EAAE,IAAI,EAAE,aAAa,GAAG,CAAC;AAAA,IAC1B,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM;AAC3B,WAAK,MAAM,KAAK,EAAE,OAAO,CAAC,GAAG,KAAK,KAAK,EAAE,IAAI,GAAG;AAAA,QAC9C,QAAQ;AAAA,QACR,IAAI;AAAA,MACZ,CAAO;AAAA,IACH;AAAA,IACA;AAAA,MACE,WAAW;AAAA,IACjB;AAAA,EACA,GAAKC,gBAAE,MAAM;AACT,UAAM,IAAI,EAAE;AACZ,SAAK,KAAK,EAAE,OAAO,CAAC,GAAG,EAAC;AAAA,EAC1B,CAAC,GAAG;AAAA,IACF,IAAI,EAAE;AAAA,IACN,MAAM,EAAE;AAAA,IACR,aAAa,EAAE;AAAA,IACf,YAAY,EAAE;AAAA,EAClB;AACA;","x_google_ignoreList":[0]}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue");exports.useIdState=function({idProp:e=t=>t.item.id}={}){const n=t.reactive({}),o=t.ref(null);let r=null;const i=t.getCurrentInstance();if(!i)throw new Error("[useIdState] Must be called inside setup()");const c="function"==typeof e?()=>e(i.proxy):()=>i.proxy[e];function u(){const t=c();t!==r&&(n[t]||function(t){const e=i.proxy.$options.idState;if("function"==typeof e){const o=e.call(i.proxy,i.proxy);return n[t]=o,r=t,o}throw new TypeError("[useIdState] Missing `idState` function on component definition.")}(t),o.value=n[t])}return t.watch(c,e=>{t.nextTick(()=>{r=e})},{immediate:!0}),u(),t.onBeforeUpdate(()=>{u()}),{idState:o}};
2
- //# sourceMappingURL=index246.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index246.cjs","sources":["../../../../node_modules/vue-virtual-scroller/dist/composables/useIdState.js"],"sourcesContent":["import { reactive as f, ref as l, getCurrentInstance as p, watch as S, nextTick as y, onBeforeUpdate as I } from \"vue\";\nfunction x({\n idProp: o = (n) => n.item.id\n} = {}) {\n const n = f({}), r = l(null);\n let i = null;\n const e = p();\n if (!e)\n throw new Error(\"[useIdState] Must be called inside setup()\");\n const a = typeof o == \"function\" ? () => o(e.proxy) : () => e.proxy[o];\n function d(t) {\n const u = e.proxy.$options.idState;\n if (typeof u == \"function\") {\n const s = u.call(e.proxy, e.proxy);\n return n[t] = s, i = t, s;\n } else\n throw new TypeError(\"[useIdState] Missing `idState` function on component definition.\");\n }\n function c() {\n const t = a();\n t == null && console.warn(`No id found for IdState with idProp: '${o}'.`), t !== i && (n[t] || d(t), r.value = n[t]);\n }\n return S(a, (t) => {\n y(() => {\n i = t;\n });\n }, { immediate: !0 }), c(), I(() => {\n c();\n }), {\n idState: r\n };\n}\nexport {\n x as useIdState\n};\n//# sourceMappingURL=useIdState.js.map\n"],"names":["idProp","o","n","item","id","f","r","l","i","e","p","Error","a","proxy","c","t","u","$options","idState","s","call","TypeError","d","value","S","y","immediate","I"],"mappings":"0HACA,UACEA,OAAQC,EAAKC,GAAMA,EAAEC,KAAKC,IACxB,IACF,MAAMF,EAAIG,EAAAA,SAAE,CAAA,GAAKC,EAAIC,EAAAA,IAAE,MACvB,IAAIC,EAAI,KACR,MAAMC,EAAIC,EAAAA,qBACV,IAAKD,EACH,MAAM,IAAIE,MAAM,8CAClB,MAAMC,EAAgB,mBAALX,EAAkB,IAAMA,EAAEQ,EAAEI,OAAS,IAAMJ,EAAEI,MAAMZ,GASpE,SAASa,IACP,MAAMC,EAAIH,IACiEG,IAAMP,IAAMN,EAAEa,IAV3F,SAAWA,GACT,MAAMC,EAAIP,EAAEI,MAAMI,SAASC,QAC3B,GAAgB,mBAALF,EAAiB,CAC1B,MAAMG,EAAIH,EAAEI,KAAKX,EAAEI,MAAOJ,EAAEI,OAC5B,OAAOX,EAAEa,GAAKI,EAAGX,EAAIO,EAAGI,CAC1B,CACE,MAAM,IAAIE,UAAU,mEACxB,CAGiGC,CAAEP,GAAIT,EAAEiB,MAAQrB,EAAEa,GACnH,CACA,OAAOS,EAAAA,MAAEZ,EAAIG,IACXU,EAAAA,SAAE,KACAjB,EAAIO,KAEL,CAAEW,WAAW,IAAOZ,IAAKa,EAAAA,eAAE,KAC5Bb,MACE,CACFI,QAASZ,EAEb","x_google_ignoreList":[0]}
@@ -1,36 +0,0 @@
1
- import { reactive, ref, getCurrentInstance, watch, nextTick, onBeforeUpdate } from "vue";
2
- function x({
3
- idProp: o = (n) => n.item.id
4
- } = {}) {
5
- const n = reactive({}), r = ref(null);
6
- let i = null;
7
- const e = getCurrentInstance();
8
- if (!e)
9
- throw new Error("[useIdState] Must be called inside setup()");
10
- const a = typeof o == "function" ? () => o(e.proxy) : () => e.proxy[o];
11
- function d(t) {
12
- const u = e.proxy.$options.idState;
13
- if (typeof u == "function") {
14
- const s = u.call(e.proxy, e.proxy);
15
- return n[t] = s, i = t, s;
16
- } else
17
- throw new TypeError("[useIdState] Missing `idState` function on component definition.");
18
- }
19
- function c() {
20
- const t = a();
21
- t == null && console.warn(`No id found for IdState with idProp: '${o}'.`), t !== i && (n[t] || d(t), r.value = n[t]);
22
- }
23
- return watch(a, (t) => {
24
- nextTick(() => {
25
- i = t;
26
- });
27
- }, { immediate: true }), c(), onBeforeUpdate(() => {
28
- c();
29
- }), {
30
- idState: r
31
- };
32
- }
33
- export {
34
- x as useIdState
35
- };
36
- //# sourceMappingURL=index246.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index246.mjs","sources":["../../../../node_modules/vue-virtual-scroller/dist/composables/useIdState.js"],"sourcesContent":["import { reactive as f, ref as l, getCurrentInstance as p, watch as S, nextTick as y, onBeforeUpdate as I } from \"vue\";\nfunction x({\n idProp: o = (n) => n.item.id\n} = {}) {\n const n = f({}), r = l(null);\n let i = null;\n const e = p();\n if (!e)\n throw new Error(\"[useIdState] Must be called inside setup()\");\n const a = typeof o == \"function\" ? () => o(e.proxy) : () => e.proxy[o];\n function d(t) {\n const u = e.proxy.$options.idState;\n if (typeof u == \"function\") {\n const s = u.call(e.proxy, e.proxy);\n return n[t] = s, i = t, s;\n } else\n throw new TypeError(\"[useIdState] Missing `idState` function on component definition.\");\n }\n function c() {\n const t = a();\n t == null && console.warn(`No id found for IdState with idProp: '${o}'.`), t !== i && (n[t] || d(t), r.value = n[t]);\n }\n return S(a, (t) => {\n y(() => {\n i = t;\n });\n }, { immediate: !0 }), c(), I(() => {\n c();\n }), {\n idState: r\n };\n}\nexport {\n x as useIdState\n};\n//# sourceMappingURL=useIdState.js.map\n"],"names":["f","l","p","S","y","I"],"mappings":";AACA,SAAS,EAAE;AAAA,EACT,QAAQ,IAAI,CAAC,MAAM,EAAE,KAAK;AAC5B,IAAI,IAAI;AACN,QAAM,IAAIA,SAAE,CAAA,CAAE,GAAG,IAAIC,IAAE,IAAI;AAC3B,MAAI,IAAI;AACR,QAAM,IAAIC,mBAAC;AACX,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,4CAA4C;AAC9D,QAAM,IAAI,OAAO,KAAK,aAAa,MAAM,EAAE,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,CAAC;AACrE,WAAS,EAAE,GAAG;AACZ,UAAM,IAAI,EAAE,MAAM,SAAS;AAC3B,QAAI,OAAO,KAAK,YAAY;AAC1B,YAAM,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;AACjC,aAAO,EAAE,CAAC,IAAI,GAAG,IAAI,GAAG;AAAA,IAC1B;AACE,YAAM,IAAI,UAAU,kEAAkE;AAAA,EAC1F;AACA,WAAS,IAAI;AACX,UAAM,IAAI,EAAC;AACX,SAAK,QAAQ,QAAQ,KAAK,yCAAyC,CAAC,IAAI,GAAG,MAAM,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;AAAA,EACpH;AACA,SAAOC,MAAE,GAAG,CAAC,MAAM;AACjBC,aAAE,MAAM;AACN,UAAI;AAAA,IACN,CAAC;AAAA,EACH,GAAG,EAAE,WAAW,KAAE,CAAE,GAAG,EAAC,GAAIC,eAAE,MAAM;AAClC,MAAC;AAAA,EACH,CAAC,GAAG;AAAA,IACF,SAAS;AAAA,EACb;AACA;","x_google_ignoreList":[0]}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue");function t(e){if(e.borderBoxSize){const t=Array.isArray(e.borderBoxSize)?e.borderBoxSize[0]:e.borderBoxSize;if(t)return t.inlineSize}return e.contentRect.width}function n(e){var t;return null!=(t=(e.tHead?[...e.tHead.rows]:[]).at(-1))?t:null}function o(e,t){if("true"===e.getAttribute("aria-hidden")||e.cells.length!==t)return!1;const n=getComputedStyle(e);return"none"!==n.display&&"hidden"!==n.visibility&&e.getBoundingClientRect().width>0}function l(e){if("true"===e.getAttribute("aria-hidden")||0===e.cells.length)return!1;const t=getComputedStyle(e);return"none"!==t.display&&"hidden"!==t.visibility&&e.getBoundingClientRect().width>0}function r(e,t){var n;for(const[o,l]of[...e.cells].entries())t[o]=Math.max(null!=(n=t[o])?n:0,Math.ceil(l.getBoundingClientRect().width))}function i(e){const t=function(e){const t=n(e);if(null!=t&&t.cells.length)return t.cells.length;for(const n of[...e.tBodies])for(const e of[...n.rows])if(l(e))return e.cells.length;return 0}(e);if(!t)return[];const i=Array.from({length:t},(e,t)=>t).fill(0),u=n(e);if(u&&u.cells.length===t&&u.getBoundingClientRect().width>0&&r(u,i),!function(e,t){for(const n of[...e.tBodies])for(const e of[...n.rows])if(o(e,t))return e;return null}(e,t)&&!u)return[];for(const n of[...e.tBodies])for(const e of[...n.rows])o(e,t)&&r(e,i);return i.some(e=>e>0)?i:[]}exports.useTableColumnWidths=function(n){const o=e.shallowRef([]),l=e.computed(()=>o.value),r=e.computed(()=>o.value.length>0),u=e.computed(()=>o.value.length>0?{tableLayout:"fixed"}:void 0);function s(){var t;return e.toValue(n.disabled)||!1===e.toValue(null==(t=n.enabled)||t)}let c=!0,a=null,d=null,f=!1,h=!1,v=!1;const g=typeof ResizeObserver>"u"?void 0:new ResizeObserver(e=>{for(const n of e){if(n.target!==a)continue;const e=t(n);e!==d&&(d=e,y())}});function b(){o.value=[]}function m(){return t=this,l=null,r=function*(){if(h)return void(v=!0);h=!0,b(),yield e.nextTick(),yield new Promise(e=>{requestAnimationFrame(()=>e())}),f=!1;const t=e.toValue(n.table);c&&t&&!s()&&(o.value=i(t)),h=!1,v&&(v=!1,y())},new Promise((e,o)=>{var i=e=>{try{s(r.next(e))}catch(n){o(n)}},u=e=>{try{s(r.throw(e))}catch(n){o(n)}},s=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,u);s((r=r.apply(t,l)).next())});var t,l,r}function y(){if(c){if(s()||!e.toValue(n.table))return void b();if(f)return void(v=!0);f=!0,m()}}return e.watch(()=>[e.toValue(n.table),s()],([e,t],n)=>{var o;const l=null==n?void 0:n[0];l&&g&&g.unobserve(l),a=null!=e?e:null,d=null!=(o=null==e?void 0:e.getBoundingClientRect().width)?o:null,e&&!t?(null==g||g.observe(e),y()):b()},{immediate:!0,flush:"post"}),e.watch(()=>{var t;return null!=(t=e.toValue(n.dependencies))?t:null},()=>{!s()&&e.toValue(n.table)&&y()},{deep:!0,flush:"post"}),e.onBeforeUnmount(()=>{c=!1,null==g||g.disconnect()}),{columnWidths:l,hasLockedWidths:r,tableStyle:u,scheduleMeasure:y,clear:b}};
2
- //# sourceMappingURL=index247.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index247.cjs","sources":["../../../../node_modules/vue-virtual-scroller/dist/composables/useTableColumnWidths.js"],"sourcesContent":["import { shallowRef as M, computed as b, toValue as s, watch as C, onBeforeUnmount as z, nextTick as T } from \"vue\";\nfunction W() {\n return new Promise((e) => {\n requestAnimationFrame(() => e());\n });\n}\nfunction p(e) {\n if (e.borderBoxSize) {\n const t = Array.isArray(e.borderBoxSize) ? e.borderBoxSize[0] : e.borderBoxSize;\n if (t)\n return t.inlineSize;\n }\n return e.contentRect.width;\n}\nfunction x(e) {\n return (e.tHead ? [...e.tHead.rows] : []).at(-1) ?? null;\n}\nfunction S(e, t) {\n if (e.getAttribute(\"aria-hidden\") === \"true\" || e.cells.length !== t)\n return !1;\n const n = getComputedStyle(e);\n return n.display === \"none\" || n.visibility === \"hidden\" ? !1 : e.getBoundingClientRect().width > 0;\n}\nfunction F(e) {\n if (e.getAttribute(\"aria-hidden\") === \"true\" || e.cells.length === 0)\n return !1;\n const t = getComputedStyle(e);\n return t.display === \"none\" || t.visibility === \"hidden\" ? !1 : e.getBoundingClientRect().width > 0;\n}\nfunction H(e, t) {\n for (const n of [...e.tBodies])\n for (const i of [...n.rows])\n if (S(i, t))\n return i;\n return null;\n}\nfunction L(e) {\n const t = x(e);\n if (t != null && t.cells.length)\n return t.cells.length;\n for (const n of [...e.tBodies])\n for (const i of [...n.rows])\n if (F(i))\n return i.cells.length;\n return 0;\n}\nfunction v(e, t) {\n for (const [n, i] of [...e.cells].entries())\n t[n] = Math.max(t[n] ?? 0, Math.ceil(i.getBoundingClientRect().width));\n}\nfunction k(e) {\n const t = L(e);\n if (!t)\n return [];\n const n = Array.from({ length: t }, (r, l) => l).fill(0), i = x(e);\n if (i && i.cells.length === t && i.getBoundingClientRect().width > 0 && v(i, n), !H(e, t) && !i)\n return [];\n for (const r of [...e.tBodies])\n for (const l of [...r.rows])\n S(l, t) && v(l, n);\n return n.some((r) => r > 0) ? n : [];\n}\nfunction D(e) {\n const t = M([]), n = b(() => t.value), i = b(() => t.value.length > 0), y = b(() => t.value.length > 0 ? { tableLayout: \"fixed\" } : void 0);\n function r() {\n return s(e.disabled) || s(e.enabled ?? !0) === !1;\n }\n let l = !0, B = null, g = null, w = !1, m = !1, c = !1;\n const u = typeof ResizeObserver > \"u\" ? void 0 : new ResizeObserver((o) => {\n for (const h of o) {\n if (h.target !== B)\n continue;\n const f = p(h);\n f !== g && (g = f, d());\n }\n });\n function a() {\n t.value = [];\n }\n async function A() {\n if (m) {\n c = !0;\n return;\n }\n m = !0, a(), await T(), await W(), w = !1;\n const o = s(e.table);\n l && o && !r() && (t.value = k(o)), m = !1, c && (c = !1, d());\n }\n function d() {\n if (l) {\n if (r() || !s(e.table)) {\n a();\n return;\n }\n if (w) {\n c = !0;\n return;\n }\n w = !0, A();\n }\n }\n return C(\n () => [s(e.table), r()],\n ([o, h], f) => {\n const R = f == null ? void 0 : f[0];\n if (R && u && u.unobserve(R), B = o ?? null, g = (o == null ? void 0 : o.getBoundingClientRect().width) ?? null, !o || h) {\n a();\n return;\n }\n u == null || u.observe(o), d();\n },\n {\n immediate: !0,\n flush: \"post\"\n }\n ), C(\n () => s(e.dependencies) ?? null,\n () => {\n !r() && s(e.table) && d();\n },\n {\n deep: !0,\n flush: \"post\"\n }\n ), z(() => {\n l = !1, u == null || u.disconnect();\n }), {\n columnWidths: n,\n hasLockedWidths: i,\n tableStyle: y,\n scheduleMeasure: d,\n clear: a\n };\n}\nexport {\n D as useTableColumnWidths\n};\n//# sourceMappingURL=useTableColumnWidths.js.map\n"],"names":["p","e","borderBoxSize","t","Array","isArray","inlineSize","contentRect","width","x","_a","tHead","rows","at","S","getAttribute","cells","length","n","getComputedStyle","display","visibility","getBoundingClientRect","F","v","i","entries","Math","max","ceil","k","tBodies","L","from","r","l","fill","H","some","M","b","value","y","tableLayout","s","disabled","enabled","B","g","w","m","c","u","ResizeObserver","o","h","target","f","d","a","A","this","T","Promise","requestAnimationFrame","table","C","R","unobserve","observe","immediate","flush","dependencies","deep","z","disconnect","columnWidths","hasLockedWidths","tableStyle","scheduleMeasure","clear"],"mappings":"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","x_google_ignoreList":[0]}