@element-plus/nightly 0.0.20260223 → 0.0.20260225

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 (315) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/index.full.js +15 -8
  3. package/dist/index.full.min.js +8 -8
  4. package/dist/index.full.min.js.map +1 -1
  5. package/dist/index.full.min.mjs +7 -7
  6. package/dist/index.full.min.mjs.map +1 -1
  7. package/dist/index.full.mjs +15 -8
  8. package/dist/locale/af.js +1 -1
  9. package/dist/locale/af.min.js +1 -1
  10. package/dist/locale/af.min.mjs +1 -1
  11. package/dist/locale/af.mjs +1 -1
  12. package/dist/locale/ar-eg.js +1 -1
  13. package/dist/locale/ar-eg.min.js +1 -1
  14. package/dist/locale/ar-eg.min.mjs +1 -1
  15. package/dist/locale/ar-eg.mjs +1 -1
  16. package/dist/locale/ar.js +1 -1
  17. package/dist/locale/ar.min.js +1 -1
  18. package/dist/locale/ar.min.mjs +1 -1
  19. package/dist/locale/ar.mjs +1 -1
  20. package/dist/locale/az.js +1 -1
  21. package/dist/locale/az.min.js +1 -1
  22. package/dist/locale/az.min.mjs +1 -1
  23. package/dist/locale/az.mjs +1 -1
  24. package/dist/locale/bg.js +1 -1
  25. package/dist/locale/bg.min.js +1 -1
  26. package/dist/locale/bg.min.mjs +1 -1
  27. package/dist/locale/bg.mjs +1 -1
  28. package/dist/locale/bn.js +1 -1
  29. package/dist/locale/bn.min.js +1 -1
  30. package/dist/locale/bn.min.mjs +1 -1
  31. package/dist/locale/bn.mjs +1 -1
  32. package/dist/locale/ca.js +1 -1
  33. package/dist/locale/ca.min.js +1 -1
  34. package/dist/locale/ca.min.mjs +1 -1
  35. package/dist/locale/ca.mjs +1 -1
  36. package/dist/locale/ckb.js +1 -1
  37. package/dist/locale/ckb.min.js +1 -1
  38. package/dist/locale/ckb.min.mjs +1 -1
  39. package/dist/locale/ckb.mjs +1 -1
  40. package/dist/locale/cs.js +1 -1
  41. package/dist/locale/cs.min.js +1 -1
  42. package/dist/locale/cs.min.mjs +1 -1
  43. package/dist/locale/cs.mjs +1 -1
  44. package/dist/locale/da.js +1 -1
  45. package/dist/locale/da.min.js +1 -1
  46. package/dist/locale/da.min.mjs +1 -1
  47. package/dist/locale/da.mjs +1 -1
  48. package/dist/locale/de.js +1 -1
  49. package/dist/locale/de.min.js +1 -1
  50. package/dist/locale/de.min.mjs +1 -1
  51. package/dist/locale/de.mjs +1 -1
  52. package/dist/locale/el.js +1 -1
  53. package/dist/locale/el.min.js +1 -1
  54. package/dist/locale/el.min.mjs +1 -1
  55. package/dist/locale/el.mjs +1 -1
  56. package/dist/locale/en.js +1 -1
  57. package/dist/locale/en.min.js +1 -1
  58. package/dist/locale/en.min.mjs +1 -1
  59. package/dist/locale/en.mjs +1 -1
  60. package/dist/locale/eo.js +1 -1
  61. package/dist/locale/eo.min.js +1 -1
  62. package/dist/locale/eo.min.mjs +1 -1
  63. package/dist/locale/eo.mjs +1 -1
  64. package/dist/locale/es.js +1 -1
  65. package/dist/locale/es.min.js +1 -1
  66. package/dist/locale/es.min.mjs +1 -1
  67. package/dist/locale/es.mjs +1 -1
  68. package/dist/locale/et.js +1 -1
  69. package/dist/locale/et.min.js +1 -1
  70. package/dist/locale/et.min.mjs +1 -1
  71. package/dist/locale/et.mjs +1 -1
  72. package/dist/locale/eu.js +1 -1
  73. package/dist/locale/eu.min.js +1 -1
  74. package/dist/locale/eu.min.mjs +1 -1
  75. package/dist/locale/eu.mjs +1 -1
  76. package/dist/locale/fa.js +1 -1
  77. package/dist/locale/fa.min.js +1 -1
  78. package/dist/locale/fa.min.mjs +1 -1
  79. package/dist/locale/fa.mjs +1 -1
  80. package/dist/locale/fi.js +1 -1
  81. package/dist/locale/fi.min.js +1 -1
  82. package/dist/locale/fi.min.mjs +1 -1
  83. package/dist/locale/fi.mjs +1 -1
  84. package/dist/locale/fr.js +1 -1
  85. package/dist/locale/fr.min.js +1 -1
  86. package/dist/locale/fr.min.mjs +1 -1
  87. package/dist/locale/fr.mjs +1 -1
  88. package/dist/locale/he.js +1 -1
  89. package/dist/locale/he.min.js +1 -1
  90. package/dist/locale/he.min.mjs +1 -1
  91. package/dist/locale/he.mjs +1 -1
  92. package/dist/locale/hi.js +1 -1
  93. package/dist/locale/hi.min.js +1 -1
  94. package/dist/locale/hi.min.mjs +1 -1
  95. package/dist/locale/hi.mjs +1 -1
  96. package/dist/locale/hr.js +1 -1
  97. package/dist/locale/hr.min.js +1 -1
  98. package/dist/locale/hr.min.mjs +1 -1
  99. package/dist/locale/hr.mjs +1 -1
  100. package/dist/locale/hu.js +1 -1
  101. package/dist/locale/hu.min.js +1 -1
  102. package/dist/locale/hu.min.mjs +1 -1
  103. package/dist/locale/hu.mjs +1 -1
  104. package/dist/locale/hy-am.js +1 -1
  105. package/dist/locale/hy-am.min.js +1 -1
  106. package/dist/locale/hy-am.min.mjs +1 -1
  107. package/dist/locale/hy-am.mjs +1 -1
  108. package/dist/locale/id.js +1 -1
  109. package/dist/locale/id.min.js +1 -1
  110. package/dist/locale/id.min.mjs +1 -1
  111. package/dist/locale/id.mjs +1 -1
  112. package/dist/locale/it.js +1 -1
  113. package/dist/locale/it.min.js +1 -1
  114. package/dist/locale/it.min.mjs +1 -1
  115. package/dist/locale/it.mjs +1 -1
  116. package/dist/locale/ja.js +1 -1
  117. package/dist/locale/ja.min.js +1 -1
  118. package/dist/locale/ja.min.mjs +1 -1
  119. package/dist/locale/ja.mjs +1 -1
  120. package/dist/locale/kk.js +1 -1
  121. package/dist/locale/kk.min.js +1 -1
  122. package/dist/locale/kk.min.mjs +1 -1
  123. package/dist/locale/kk.mjs +1 -1
  124. package/dist/locale/km.js +1 -1
  125. package/dist/locale/km.min.js +1 -1
  126. package/dist/locale/km.min.mjs +1 -1
  127. package/dist/locale/km.mjs +1 -1
  128. package/dist/locale/ko.js +1 -1
  129. package/dist/locale/ko.min.js +1 -1
  130. package/dist/locale/ko.min.mjs +1 -1
  131. package/dist/locale/ko.mjs +1 -1
  132. package/dist/locale/ku.js +1 -1
  133. package/dist/locale/ku.min.js +1 -1
  134. package/dist/locale/ku.min.mjs +1 -1
  135. package/dist/locale/ku.mjs +1 -1
  136. package/dist/locale/ky.js +1 -1
  137. package/dist/locale/ky.min.js +1 -1
  138. package/dist/locale/ky.min.mjs +1 -1
  139. package/dist/locale/ky.mjs +1 -1
  140. package/dist/locale/lo.js +1 -1
  141. package/dist/locale/lo.min.js +1 -1
  142. package/dist/locale/lo.min.mjs +1 -1
  143. package/dist/locale/lo.mjs +1 -1
  144. package/dist/locale/lt.js +1 -1
  145. package/dist/locale/lt.min.js +1 -1
  146. package/dist/locale/lt.min.mjs +1 -1
  147. package/dist/locale/lt.mjs +1 -1
  148. package/dist/locale/lv.js +1 -1
  149. package/dist/locale/lv.min.js +1 -1
  150. package/dist/locale/lv.min.mjs +1 -1
  151. package/dist/locale/lv.mjs +1 -1
  152. package/dist/locale/mg.js +1 -1
  153. package/dist/locale/mg.min.js +1 -1
  154. package/dist/locale/mg.min.mjs +1 -1
  155. package/dist/locale/mg.mjs +1 -1
  156. package/dist/locale/mn.js +1 -1
  157. package/dist/locale/mn.min.js +1 -1
  158. package/dist/locale/mn.min.mjs +1 -1
  159. package/dist/locale/mn.mjs +1 -1
  160. package/dist/locale/ms.js +1 -1
  161. package/dist/locale/ms.min.js +1 -1
  162. package/dist/locale/ms.min.mjs +1 -1
  163. package/dist/locale/ms.mjs +1 -1
  164. package/dist/locale/my.js +1 -1
  165. package/dist/locale/my.min.js +1 -1
  166. package/dist/locale/my.min.mjs +1 -1
  167. package/dist/locale/my.mjs +1 -1
  168. package/dist/locale/nb-no.js +1 -1
  169. package/dist/locale/nb-no.min.js +1 -1
  170. package/dist/locale/nb-no.min.mjs +1 -1
  171. package/dist/locale/nb-no.mjs +1 -1
  172. package/dist/locale/nl.js +1 -1
  173. package/dist/locale/nl.min.js +1 -1
  174. package/dist/locale/nl.min.mjs +1 -1
  175. package/dist/locale/nl.mjs +1 -1
  176. package/dist/locale/no.js +1 -1
  177. package/dist/locale/no.min.js +1 -1
  178. package/dist/locale/no.min.mjs +1 -1
  179. package/dist/locale/no.mjs +1 -1
  180. package/dist/locale/pa.js +1 -1
  181. package/dist/locale/pa.min.js +1 -1
  182. package/dist/locale/pa.min.mjs +1 -1
  183. package/dist/locale/pa.mjs +1 -1
  184. package/dist/locale/pl.js +1 -1
  185. package/dist/locale/pl.min.js +1 -1
  186. package/dist/locale/pl.min.mjs +1 -1
  187. package/dist/locale/pl.mjs +1 -1
  188. package/dist/locale/pt-br.js +1 -1
  189. package/dist/locale/pt-br.min.js +1 -1
  190. package/dist/locale/pt-br.min.mjs +1 -1
  191. package/dist/locale/pt-br.mjs +1 -1
  192. package/dist/locale/pt.js +1 -1
  193. package/dist/locale/pt.min.js +1 -1
  194. package/dist/locale/pt.min.mjs +1 -1
  195. package/dist/locale/pt.mjs +1 -1
  196. package/dist/locale/ro.js +1 -1
  197. package/dist/locale/ro.min.js +1 -1
  198. package/dist/locale/ro.min.mjs +1 -1
  199. package/dist/locale/ro.mjs +1 -1
  200. package/dist/locale/ru.js +1 -1
  201. package/dist/locale/ru.min.js +1 -1
  202. package/dist/locale/ru.min.mjs +1 -1
  203. package/dist/locale/ru.mjs +1 -1
  204. package/dist/locale/sk.js +1 -1
  205. package/dist/locale/sk.min.js +1 -1
  206. package/dist/locale/sk.min.mjs +1 -1
  207. package/dist/locale/sk.mjs +1 -1
  208. package/dist/locale/sl.js +1 -1
  209. package/dist/locale/sl.min.js +1 -1
  210. package/dist/locale/sl.min.mjs +1 -1
  211. package/dist/locale/sl.mjs +1 -1
  212. package/dist/locale/sr.js +1 -1
  213. package/dist/locale/sr.min.js +1 -1
  214. package/dist/locale/sr.min.mjs +1 -1
  215. package/dist/locale/sr.mjs +1 -1
  216. package/dist/locale/sv.js +1 -1
  217. package/dist/locale/sv.min.js +1 -1
  218. package/dist/locale/sv.min.mjs +1 -1
  219. package/dist/locale/sv.mjs +1 -1
  220. package/dist/locale/sw.js +1 -1
  221. package/dist/locale/sw.min.js +1 -1
  222. package/dist/locale/sw.min.mjs +1 -1
  223. package/dist/locale/sw.mjs +1 -1
  224. package/dist/locale/ta.js +1 -1
  225. package/dist/locale/ta.min.js +1 -1
  226. package/dist/locale/ta.min.mjs +1 -1
  227. package/dist/locale/ta.mjs +1 -1
  228. package/dist/locale/te.js +1 -1
  229. package/dist/locale/te.min.js +1 -1
  230. package/dist/locale/te.min.mjs +1 -1
  231. package/dist/locale/te.mjs +1 -1
  232. package/dist/locale/th.js +1 -1
  233. package/dist/locale/th.min.js +1 -1
  234. package/dist/locale/th.min.mjs +1 -1
  235. package/dist/locale/th.mjs +1 -1
  236. package/dist/locale/tk.js +1 -1
  237. package/dist/locale/tk.min.js +1 -1
  238. package/dist/locale/tk.min.mjs +1 -1
  239. package/dist/locale/tk.mjs +1 -1
  240. package/dist/locale/tr.js +1 -1
  241. package/dist/locale/tr.min.js +1 -1
  242. package/dist/locale/tr.min.mjs +1 -1
  243. package/dist/locale/tr.mjs +1 -1
  244. package/dist/locale/ug-cn.js +1 -1
  245. package/dist/locale/ug-cn.min.js +1 -1
  246. package/dist/locale/ug-cn.min.mjs +1 -1
  247. package/dist/locale/ug-cn.mjs +1 -1
  248. package/dist/locale/uk.js +1 -1
  249. package/dist/locale/uk.min.js +1 -1
  250. package/dist/locale/uk.min.mjs +1 -1
  251. package/dist/locale/uk.mjs +1 -1
  252. package/dist/locale/uz-uz.js +1 -1
  253. package/dist/locale/uz-uz.min.js +1 -1
  254. package/dist/locale/uz-uz.min.mjs +1 -1
  255. package/dist/locale/uz-uz.mjs +1 -1
  256. package/dist/locale/vi.js +1 -1
  257. package/dist/locale/vi.min.js +1 -1
  258. package/dist/locale/vi.min.mjs +1 -1
  259. package/dist/locale/vi.mjs +1 -1
  260. package/dist/locale/zh-cn.js +1 -1
  261. package/dist/locale/zh-cn.min.js +1 -1
  262. package/dist/locale/zh-cn.min.mjs +1 -1
  263. package/dist/locale/zh-cn.mjs +1 -1
  264. package/dist/locale/zh-hk.js +1 -1
  265. package/dist/locale/zh-hk.min.js +1 -1
  266. package/dist/locale/zh-hk.min.mjs +1 -1
  267. package/dist/locale/zh-hk.mjs +1 -1
  268. package/dist/locale/zh-mo.js +1 -1
  269. package/dist/locale/zh-mo.min.js +1 -1
  270. package/dist/locale/zh-mo.min.mjs +1 -1
  271. package/dist/locale/zh-mo.mjs +1 -1
  272. package/dist/locale/zh-tw.js +1 -1
  273. package/dist/locale/zh-tw.min.js +1 -1
  274. package/dist/locale/zh-tw.min.mjs +1 -1
  275. package/dist/locale/zh-tw.mjs +1 -1
  276. package/es/components/select/src/useSelect.mjs +1 -1
  277. package/es/components/select/src/useSelect.mjs.map +1 -1
  278. package/es/components/select-v2/src/useSelect.mjs +1 -1
  279. package/es/components/select-v2/src/useSelect.mjs.map +1 -1
  280. package/es/components/tree/src/tree-node.vue.mjs.map +1 -1
  281. package/es/components/tree/src/tree-node.vue2.mjs +1 -1
  282. package/es/components/tree/src/tree-node.vue2.mjs.map +1 -1
  283. package/es/components/tree/src/tree.vue.mjs.map +1 -1
  284. package/es/components/tree/src/tree.vue2.mjs +1 -1
  285. package/es/components/tree/src/tree.vue2.mjs.map +1 -1
  286. package/es/components/upload/src/ajax.mjs +10 -3
  287. package/es/components/upload/src/ajax.mjs.map +1 -1
  288. package/es/components/upload/src/upload.d.ts +1 -1
  289. package/es/components/upload/src/upload.mjs.map +1 -1
  290. package/es/version.d.ts +1 -1
  291. package/es/version.mjs +1 -1
  292. package/es/version.mjs.map +1 -1
  293. package/lib/components/select/src/useSelect.js +1 -1
  294. package/lib/components/select/src/useSelect.js.map +1 -1
  295. package/lib/components/select-v2/src/useSelect.js +1 -1
  296. package/lib/components/select-v2/src/useSelect.js.map +1 -1
  297. package/lib/components/tree/src/tree-node.vue.js.map +1 -1
  298. package/lib/components/tree/src/tree-node.vue2.js +1 -1
  299. package/lib/components/tree/src/tree-node.vue2.js.map +1 -1
  300. package/lib/components/tree/src/tree.vue.js.map +1 -1
  301. package/lib/components/tree/src/tree.vue2.js +1 -1
  302. package/lib/components/tree/src/tree.vue2.js.map +1 -1
  303. package/lib/components/upload/src/ajax.js +9 -2
  304. package/lib/components/upload/src/ajax.js.map +1 -1
  305. package/lib/components/upload/src/upload.d.ts +1 -1
  306. package/lib/components/upload/src/upload.js.map +1 -1
  307. package/lib/version.d.ts +1 -1
  308. package/lib/version.js +1 -1
  309. package/lib/version.js.map +1 -1
  310. package/package.json +2 -2
  311. package/theme-chalk/el-checkbox-button.css +1 -1
  312. package/theme-chalk/index.css +1 -1
  313. package/theme-chalk/src/checkbox-button.scss +6 -0
  314. package/theme-chalk/src/common/var.scss +1 -0
  315. package/web-types.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useSelect.mjs","sources":["../../../../../../packages/components/select-v2/src/useSelect.ts"],"sourcesContent":["import {\n computed,\n nextTick,\n onMounted,\n reactive,\n ref,\n useSlots,\n watch,\n watchEffect,\n} from 'vue'\nimport { findLastIndex, get, isEqual } from 'lodash-unified'\nimport { useDebounceFn, useResizeObserver } from '@vueuse/core'\nimport {\n ValidateComponentsMap,\n debugWarn,\n escapeStringRegexp,\n getEventCode,\n isArray,\n isEmpty,\n isFunction,\n isNumber,\n isObject,\n isUndefined,\n} from '@element-plus/utils'\nimport {\n useComposition,\n useEmptyValues,\n useFocusController,\n useLocale,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n CHANGE_EVENT,\n EVENT_CODE,\n MINIMUM_INPUT_WIDTH,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\nimport { useAllowCreate } from './useAllowCreate'\nimport { useProps } from './useProps'\n\nimport type { Option, OptionType, SelectStates } from './select.types'\nimport type { SelectV2Props } from './token'\nimport type { SelectV2EmitFn } from './defaults'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type { SelectDropdownInstance } from './select-dropdown'\n\nconst useSelect = (props: SelectV2Props, emit: SelectV2EmitFn) => {\n // inject\n const { t } = useLocale()\n const slots = useSlots()\n const nsSelect = useNamespace('select')\n const nsInput = useNamespace('input')\n const { form: elForm, formItem: elFormItem } = useFormItem()\n const { inputId } = useFormItemInputId(props, {\n formItemContext: elFormItem,\n })\n const { aliasProps, getLabel, getValue, getDisabled, getOptions } =\n useProps(props)\n const { valueOnClear, isEmptyValue } = useEmptyValues(props)\n\n const states: SelectStates = reactive({\n inputValue: '',\n cachedOptions: [],\n createdOptions: [],\n hoveringIndex: -1,\n inputHovering: false,\n selectionWidth: 0,\n collapseItemWidth: 0,\n previousQuery: null,\n previousValue: undefined,\n selectedLabel: '',\n menuVisibleOnFocus: false,\n isBeforeHide: false,\n })\n\n // data refs\n const popperSize = ref(-1)\n const debouncing = ref(false)\n\n // DOM & Component refs\n const selectRef = ref<HTMLElement>()\n const selectionRef = ref<HTMLElement>()\n const tooltipRef = ref<TooltipInstance>()\n const tagTooltipRef = ref<TooltipInstance>()\n const inputRef = ref<HTMLElement>()\n const prefixRef = ref<HTMLElement>()\n const suffixRef = ref<HTMLElement>()\n const menuRef = ref<SelectDropdownInstance>()\n const tagMenuRef = ref<HTMLElement>()\n const collapseItemRef = ref<HTMLElement>()\n\n const {\n isComposing,\n handleCompositionStart,\n handleCompositionEnd,\n handleCompositionUpdate,\n } = useComposition({\n afterComposition: (e) => onInput(e),\n })\n\n const selectDisabled = useFormDisabled()\n\n const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {\n disabled: selectDisabled,\n afterFocus() {\n if (props.automaticDropdown && !expanded.value) {\n expanded.value = true\n states.menuVisibleOnFocus = true\n }\n },\n beforeBlur(event) {\n return (\n tooltipRef.value?.isFocusInsideContent(event) ||\n tagTooltipRef.value?.isFocusInsideContent(event)\n )\n },\n afterBlur() {\n expanded.value = false\n states.menuVisibleOnFocus = false\n if (props.validateEvent) {\n elFormItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n },\n })\n\n const allOptions = computed(() => filterOptions(''))\n\n const hasOptions = computed(() => {\n if (props.loading) return false\n return props.options.length > 0 || states.createdOptions.length > 0\n })\n\n const filteredOptions = ref<OptionType[]>([])\n // the controller of the expanded popup\n const expanded = ref(false)\n\n const needStatusIcon = computed(() => elForm?.statusIcon ?? false)\n\n const popupHeight = computed(() => {\n const totalHeight = filteredOptions.value.length * props.itemHeight\n return totalHeight > props.height ? props.height : totalHeight\n })\n\n const hasModelValue = computed(() => {\n return props.multiple\n ? isArray(props.modelValue) && props.modelValue.length > 0\n : !isEmptyValue(props.modelValue)\n })\n\n const showClearBtn = computed(() => {\n return (\n props.clearable &&\n !selectDisabled.value &&\n hasModelValue.value &&\n (isFocused.value || states.inputHovering)\n )\n })\n\n const iconComponent = computed(() =>\n props.remote && props.filterable && !props.remoteShowSuffix\n ? ''\n : props.suffixIcon\n )\n\n const iconReverse = computed(\n () => iconComponent.value && nsSelect.is('reverse', expanded.value)\n )\n\n const validateState = computed(() => elFormItem?.validateState || '')\n const validateIcon = computed(() => {\n // When we use indexed access to get the type of an undeclared property,\n // the unsafe type `any` will be inferred, which TypeScript throws an error to emphasize it.\n // To avoid TypeScript complaining about it, we use truthiness narrowing to narrow the type of validateState.\n if (!validateState.value) return\n return ValidateComponentsMap[validateState.value]\n })\n\n const debounce = computed(() => (props.remote ? props.debounce : 0))\n\n const isRemoteSearchEmpty = computed(\n () => props.remote && !states.inputValue && !hasOptions.value\n )\n\n // filteredOptions includes flatten the data into one dimensional array.\n const emptyText = computed(() => {\n if (props.loading) {\n return props.loadingText || t('el.select.loading')\n } else {\n if (\n props.filterable &&\n states.inputValue &&\n hasOptions.value &&\n filteredOptions.value.length === 0\n ) {\n return props.noMatchText || t('el.select.noMatch')\n }\n if (!hasOptions.value) {\n return props.noDataText || t('el.select.noData')\n }\n }\n return null\n })\n\n const isFilterMethodValid = computed(\n () => props.filterable && isFunction(props.filterMethod)\n )\n const isRemoteMethodValid = computed(\n () => props.filterable && props.remote && isFunction(props.remoteMethod)\n )\n\n const filterOptions = (query: string) => {\n const regexp = new RegExp(escapeStringRegexp(query), 'i')\n\n const isValidOption = (o: Option): boolean => {\n if (isFilterMethodValid.value || isRemoteMethodValid.value) return true\n // when query was given, we should test on the label see whether the label contains the given query\n return query ? regexp.test(getLabel(o) || '') : true\n }\n if (props.loading) {\n return []\n }\n\n return [...states.createdOptions, ...props.options].reduce((all, item) => {\n const options = getOptions(item)\n\n if (isArray(options)) {\n const filtered = options.filter(isValidOption)\n\n if (filtered.length > 0) {\n all.push(\n {\n label: getLabel(item),\n type: 'Group',\n },\n ...filtered\n )\n }\n } else if (props.remote || isValidOption(item)) {\n all.push(item)\n }\n\n return all\n }, []) as OptionType[]\n }\n\n const updateOptions = () => {\n filteredOptions.value = filterOptions(states.inputValue)\n }\n\n const allOptionsValueMap = computed(() => {\n const valueMap = new Map()\n\n allOptions.value.forEach((option, index) => {\n valueMap.set(getValueKey(getValue(option)), { option, index })\n })\n return valueMap\n })\n\n const filteredOptionsValueMap = computed(() => {\n const valueMap = new Map()\n\n filteredOptions.value.forEach((option, index) => {\n valueMap.set(getValueKey(getValue(option)), { option, index })\n })\n return valueMap\n })\n\n const optionsAllDisabled = computed(() =>\n filteredOptions.value.every((option) => getDisabled(option))\n )\n\n const selectSize = useFormSize()\n\n const collapseTagSize = computed(() =>\n 'small' === selectSize.value ? 'small' : 'default'\n )\n\n const calculatePopperSize = () => {\n if (isNumber(props.fitInputWidth)) {\n popperSize.value = props.fitInputWidth\n return\n }\n const width = selectRef.value?.offsetWidth || 200\n if (!props.fitInputWidth && hasOptions.value) {\n nextTick(() => {\n popperSize.value = Math.max(width, calculateLabelMaxWidth())\n })\n } else {\n popperSize.value = width\n }\n }\n\n // TODO Caching implementation\n // 1. There is no need to calculate options that have already been calculated\n // 2. Repeatedly expand and close when persistent is set to false, no need for repeated calculations\n const calculateLabelMaxWidth = () => {\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')\n const selector = nsSelect.be('dropdown', 'item')\n const dom = menuRef.value?.listRef?.innerRef || document\n const dropdownItemEl = dom.querySelector(`.${selector}`)\n if (dropdownItemEl === null || ctx === null) return 0\n const style = getComputedStyle(dropdownItemEl)\n const padding =\n Number.parseFloat(style.paddingLeft) +\n Number.parseFloat(style.paddingRight)\n ctx.font = `bold ${style.font.replace(\n new RegExp(`\\\\b${style.fontWeight}\\\\b`),\n ''\n )}`\n const maxWidth = filteredOptions.value.reduce((max, option) => {\n const metrics = ctx.measureText(getLabel(option))\n return Math.max(metrics.width, max)\n }, 0)\n return maxWidth + padding\n }\n\n const getGapWidth = () => {\n if (!selectionRef.value) return 0\n const style = window.getComputedStyle(selectionRef.value)\n return Number.parseFloat(style.gap || '6px')\n }\n\n // computed style\n const tagStyle = computed(() => {\n const gapWidth = getGapWidth()\n const inputSlotWidth = props.filterable ? gapWidth + MINIMUM_INPUT_WIDTH : 0\n const maxWidth =\n collapseItemRef.value && props.maxCollapseTags === 1\n ? states.selectionWidth -\n states.collapseItemWidth -\n gapWidth -\n inputSlotWidth\n : states.selectionWidth - inputSlotWidth\n return { maxWidth: `${maxWidth}px` }\n })\n\n const collapseTagStyle = computed(() => {\n return { maxWidth: `${states.selectionWidth}px` }\n })\n\n const shouldShowPlaceholder = computed(() => {\n if (isArray(props.modelValue)) {\n return props.modelValue.length === 0 && !states.inputValue\n }\n\n // when it's not multiple mode, we only determine this flag based on filterable and expanded\n // when filterable flag is true, which means we have input box on the screen\n return props.filterable ? !states.inputValue : true\n })\n\n const currentPlaceholder = computed(() => {\n const _placeholder = props.placeholder ?? t('el.select.placeholder')\n return props.multiple || !hasModelValue.value\n ? _placeholder\n : states.selectedLabel\n })\n\n // this obtains the actual popper DOM element.\n const popperRef = computed(() => tooltipRef.value?.popperRef?.contentRef)\n\n // the index with current value in options\n const indexRef = computed<number>(() => {\n if (props.multiple) {\n const len = (props.modelValue as []).length\n if (\n len > 0 &&\n filteredOptionsValueMap.value.has(props.modelValue[len - 1])\n ) {\n const { index } = filteredOptionsValueMap.value.get(\n props.modelValue[len - 1]\n )\n return index\n }\n } else {\n if (\n !isEmptyValue(props.modelValue) &&\n filteredOptionsValueMap.value.has(props.modelValue)\n ) {\n const { index } = filteredOptionsValueMap.value.get(props.modelValue)\n return index\n }\n }\n return -1\n })\n\n const dropdownMenuVisible = computed({\n get() {\n return (\n expanded.value &&\n (props.loading ||\n !isRemoteSearchEmpty.value ||\n (props.remote && !!slots.empty)) &&\n (!debouncing.value || !isEmpty(states.previousQuery))\n )\n },\n set(val: boolean) {\n expanded.value = val\n },\n })\n\n const showTagList = computed(() => {\n if (!props.multiple) {\n return []\n }\n return props.collapseTags\n ? states.cachedOptions.slice(0, props.maxCollapseTags)\n : states.cachedOptions\n })\n\n const collapseTagList = computed(() => {\n if (!props.multiple) {\n return []\n }\n return props.collapseTags\n ? states.cachedOptions.slice(props.maxCollapseTags)\n : []\n })\n\n // hooks\n const {\n createNewOption,\n removeNewOption,\n selectNewOption,\n clearAllNewOption,\n } = useAllowCreate(props, states)\n\n // methods\n const toggleMenu = (event?: Event) => {\n if (\n selectDisabled.value ||\n (props.filterable &&\n expanded.value &&\n event &&\n !suffixRef.value?.contains(event.target as Node))\n )\n return\n\n if (states.menuVisibleOnFocus) {\n // controlled by automaticDropdown\n states.menuVisibleOnFocus = false\n } else {\n expanded.value = !expanded.value\n }\n }\n\n const onInputChange = () => {\n if (states.inputValue.length > 0 && !expanded.value) {\n expanded.value = true\n }\n createNewOption(states.inputValue)\n nextTick(() => {\n handleQueryChange(states.inputValue)\n })\n }\n\n const debouncedOnInputChange = useDebounceFn(() => {\n onInputChange()\n debouncing.value = false\n }, debounce)\n\n const handleQueryChange = (val: string) => {\n if (states.previousQuery === val || isComposing.value) {\n return\n }\n states.previousQuery = val\n if (props.filterable && isFunction(props.filterMethod)) {\n props.filterMethod(val)\n } else if (\n props.filterable &&\n props.remote &&\n isFunction(props.remoteMethod)\n ) {\n props.remoteMethod(val)\n }\n if (\n props.defaultFirstOption &&\n (props.filterable || props.remote) &&\n filteredOptions.value.length\n ) {\n nextTick(checkDefaultFirstOption)\n } else {\n nextTick(updateHoveringIndex)\n }\n }\n\n /**\n * find and highlight first option as default selected\n * @remark\n * - if the first option in dropdown list is user-created,\n * it would be at the end of the optionsArray\n * so find it and set hover.\n * (NOTE: there must be only one user-created option in dropdown list with query)\n * - if there's no user-created option in list, just find the first one as usual\n * (NOTE: exclude options that are disabled or in disabled-group)\n */\n const checkDefaultFirstOption = () => {\n const optionsInDropdown = filteredOptions.value.filter(\n (n) => !n.disabled && n.type !== 'Group'\n )\n const userCreatedOption = optionsInDropdown.find((n) => n.created)\n const firstOriginOption = optionsInDropdown[0]\n states.hoveringIndex = getValueIndex(\n filteredOptions.value,\n userCreatedOption || firstOriginOption\n )\n }\n\n const emitChange = (val: any | any[]) => {\n if (!isEqual(props.modelValue, val)) {\n emit(CHANGE_EVENT, val)\n }\n }\n\n const update = (val: any) => {\n emit(UPDATE_MODEL_EVENT, val)\n emitChange(val)\n states.previousValue = props.multiple ? String(val) : val\n\n nextTick(() => {\n if (props.multiple && isArray(props.modelValue)) {\n const cachedOptions = states.cachedOptions.slice()\n const selectedOptions = props.modelValue.map((value) =>\n getOption(value, cachedOptions)\n )\n\n if (!isEqual(states.cachedOptions, selectedOptions)) {\n states.cachedOptions = selectedOptions\n }\n } else {\n initStates(true)\n }\n })\n }\n\n const getValueIndex = (arr: unknown[] = [], value: unknown) => {\n if (!isObject(value)) {\n return arr.indexOf(value)\n }\n const valueKey = props.valueKey\n let index = -1\n arr.some((item, i) => {\n if (get(item, valueKey) === get(value, valueKey)) {\n index = i\n return true\n }\n return false\n })\n return index\n }\n\n const getValueKey = (item: unknown) => {\n return isObject(item) ? get(item, props.valueKey) : item\n }\n\n const handleResize = () => {\n calculatePopperSize()\n }\n\n const resetSelectionWidth = () => {\n states.selectionWidth = Number.parseFloat(\n window.getComputedStyle(selectionRef.value!).width\n )\n }\n\n const resetCollapseItemWidth = () => {\n states.collapseItemWidth =\n collapseItemRef.value!.getBoundingClientRect().width\n }\n\n const updateTooltip = () => {\n tooltipRef.value?.updatePopper?.()\n }\n\n const updateTagTooltip = () => {\n tagTooltipRef.value?.updatePopper?.()\n }\n\n const onSelect = (option: Option) => {\n const optionValue = getValue(option)\n\n if (props.multiple) {\n let selectedOptions = (props.modelValue as any[]).slice()\n\n const index = getValueIndex(selectedOptions, optionValue)\n if (index > -1) {\n selectedOptions = [\n ...selectedOptions.slice(0, index),\n ...selectedOptions.slice(index + 1),\n ]\n states.cachedOptions.splice(index, 1)\n removeNewOption(option)\n } else if (\n props.multipleLimit <= 0 ||\n selectedOptions.length < props.multipleLimit\n ) {\n selectedOptions = [...selectedOptions, optionValue]\n states.cachedOptions.push(option)\n selectNewOption(option)\n }\n update(selectedOptions)\n if (option.created) {\n handleQueryChange('')\n }\n if (props.filterable && !props.reserveKeyword) {\n states.inputValue = ''\n }\n } else {\n states.selectedLabel = getLabel(option)\n !isEqual(props.modelValue, optionValue) && update(optionValue)\n expanded.value = false\n selectNewOption(option)\n if (!option.created) {\n clearAllNewOption()\n }\n }\n focus()\n }\n\n const deleteTag = (event: MouseEvent, option: Option) => {\n let selectedOptions = (props.modelValue as any[]).slice()\n\n const index = getValueIndex(selectedOptions, getValue(option))\n\n if (index > -1 && !selectDisabled.value) {\n selectedOptions = [\n ...(props.modelValue as Array<unknown>).slice(0, index),\n ...(props.modelValue as Array<unknown>).slice(index + 1),\n ]\n states.cachedOptions.splice(index, 1)\n update(selectedOptions)\n emit('remove-tag', getValue(option))\n removeNewOption(option)\n }\n event.stopPropagation()\n focus()\n }\n\n const focus = () => {\n inputRef.value?.focus()\n }\n\n const blur = () => {\n if (expanded.value) {\n expanded.value = false\n nextTick(() => inputRef.value?.blur())\n return\n }\n inputRef.value?.blur()\n }\n\n // keyboard handlers\n const handleEsc = () => {\n if (states.inputValue.length > 0) {\n states.inputValue = ''\n } else {\n expanded.value = false\n }\n }\n\n const getLastNotDisabledIndex = (value: unknown[]) =>\n findLastIndex(\n value,\n (it) =>\n !states.cachedOptions.some(\n (option) => getValue(option) === it && getDisabled(option)\n )\n )\n\n const handleDel = (e: KeyboardEvent) => {\n const code = getEventCode(e)\n if (!props.multiple) return\n if (code === EVENT_CODE.delete) return\n if (states.inputValue.length === 0) {\n e.preventDefault()\n const selected = (props.modelValue as Array<any>).slice()\n const lastNotDisabledIndex = getLastNotDisabledIndex(selected)\n if (lastNotDisabledIndex < 0) return\n const removeTagValue = selected[lastNotDisabledIndex]\n selected.splice(lastNotDisabledIndex, 1)\n const option = states.cachedOptions[lastNotDisabledIndex]\n states.cachedOptions.splice(lastNotDisabledIndex, 1)\n removeNewOption(option)\n update(selected)\n emit('remove-tag', removeTagValue)\n }\n }\n\n const handleClear = () => {\n let emptyValue: string | any[]\n if (isArray(props.modelValue)) {\n emptyValue = []\n } else {\n emptyValue = valueOnClear.value\n }\n\n states.selectedLabel = ''\n\n expanded.value = false\n update(emptyValue)\n emit('clear')\n clearAllNewOption()\n focus()\n }\n\n const onKeyboardNavigate = (\n direction: 'forward' | 'backward',\n hoveringIndex: number | undefined = undefined\n ): void => {\n const options = filteredOptions.value\n if (\n !['forward', 'backward'].includes(direction) ||\n selectDisabled.value ||\n options.length <= 0 ||\n optionsAllDisabled.value ||\n isComposing.value\n ) {\n return\n }\n if (!expanded.value) {\n return toggleMenu()\n }\n if (isUndefined(hoveringIndex)) {\n hoveringIndex = states.hoveringIndex\n }\n let newIndex = -1\n if (direction === 'forward') {\n newIndex = hoveringIndex + 1\n if (newIndex >= options.length) {\n // return to the first option\n newIndex = 0\n }\n } else if (direction === 'backward') {\n newIndex = hoveringIndex - 1\n if (newIndex < 0 || newIndex >= options.length) {\n // navigate to the last one\n newIndex = options.length - 1\n }\n }\n const option = options[newIndex]\n if (getDisabled(option) || option.type === 'Group') {\n // prevent dispatching multiple nextTick callbacks.\n return onKeyboardNavigate(direction, newIndex)\n } else {\n states.hoveringIndex = newIndex\n scrollToItem(newIndex)\n }\n }\n\n const onKeyboardSelect = () => {\n if (!expanded.value) {\n return toggleMenu()\n } else if (\n ~states.hoveringIndex &&\n filteredOptions.value[states.hoveringIndex]\n ) {\n onSelect(filteredOptions.value[states.hoveringIndex])\n }\n }\n\n const onHoverOption = (idx?: number) => {\n states.hoveringIndex = idx ?? -1\n }\n\n const updateHoveringIndex = () => {\n if (!props.multiple) {\n states.hoveringIndex = filteredOptions.value.findIndex((item) => {\n return getValueKey(getValue(item)) === getValueKey(props.modelValue)\n })\n } else {\n const length = props.modelValue.length\n if (length > 0) {\n const lastValue = props.modelValue[length - 1]\n states.hoveringIndex = filteredOptions.value.findIndex(\n (item) => getValueKey(lastValue) === getValueKey(getValue(item))\n )\n } else {\n states.hoveringIndex = -1\n }\n }\n }\n\n const onInput = (event: Event) => {\n states.inputValue = (event.target as HTMLInputElement).value\n if (props.remote) {\n debouncing.value = true\n debouncedOnInputChange()\n } else {\n return onInputChange()\n }\n }\n\n const handleClickOutside = (event: Event) => {\n expanded.value = false\n\n if (isFocused.value) {\n const _event = new FocusEvent('blur', event)\n handleBlur(_event)\n }\n }\n\n const handleMenuEnter = () => {\n states.isBeforeHide = false\n return nextTick(() => {\n if (~indexRef.value) {\n scrollToItem(indexRef.value)\n }\n })\n }\n\n const scrollToItem = (index: number) => {\n menuRef.value!.scrollToItem(index)\n }\n\n const getOption = (value: unknown, cachedOptions?: Option[]) => {\n // match the option with the given value, if not found, create a new option\n const selectValue = getValueKey(value)\n\n if (allOptionsValueMap.value.has(selectValue)) {\n const { option } = allOptionsValueMap.value.get(selectValue)\n\n return option\n }\n if (cachedOptions && cachedOptions.length) {\n const option = cachedOptions.find(\n (option) => getValueKey(getValue(option)) === selectValue\n )\n if (option) {\n return option\n }\n }\n\n return {\n [aliasProps.value.value]: value,\n [aliasProps.value.label]: value,\n }\n }\n\n const getIndex = (option: Option) =>\n allOptionsValueMap.value.get(getValue(option))?.index ?? -1\n\n const initStates = (needUpdateSelectedLabel = false) => {\n if (props.multiple) {\n if ((props.modelValue as Array<any>).length > 0) {\n const cachedOptions = states.cachedOptions.slice()\n states.cachedOptions.length = 0\n states.previousValue = props.modelValue.toString()\n\n for (const value of props.modelValue) {\n const option = getOption(value, cachedOptions)\n states.cachedOptions.push(option)\n }\n } else {\n states.cachedOptions = []\n states.previousValue = undefined\n }\n } else {\n if (hasModelValue.value) {\n states.previousValue = props.modelValue\n const options = filteredOptions.value\n const selectedItemIndex = options.findIndex(\n (option) =>\n getValueKey(getValue(option)) === getValueKey(props.modelValue)\n )\n if (~selectedItemIndex) {\n states.selectedLabel = getLabel(options[selectedItemIndex])\n } else {\n if (!states.selectedLabel || needUpdateSelectedLabel) {\n states.selectedLabel = getValueKey(props.modelValue)\n }\n }\n } else {\n states.selectedLabel = ''\n states.previousValue = undefined\n }\n }\n clearAllNewOption()\n calculatePopperSize()\n }\n\n watch(\n () => props.fitInputWidth,\n () => {\n calculatePopperSize()\n }\n )\n\n // in order to track these individually, we need to turn them into refs instead of watching the entire\n // reactive object which could cause perf penalty when unnecessary field gets changed the watch method will\n // be invoked.\n\n watch(expanded, (val) => {\n if (val) {\n if (!props.persistent) {\n calculatePopperSize()\n }\n handleQueryChange('')\n } else {\n states.inputValue = ''\n states.previousQuery = null\n states.isBeforeHide = true\n states.menuVisibleOnFocus = false\n createNewOption('')\n }\n })\n\n watch(\n () => props.modelValue,\n (val, oldVal) => {\n const isValEmpty = !val || (isArray(val) && val.length === 0)\n\n if (\n isValEmpty ||\n (props.multiple && !isEqual(val.toString(), states.previousValue)) ||\n (!props.multiple &&\n getValueKey(val) !== getValueKey(states.previousValue))\n ) {\n initStates(true)\n }\n if (!isEqual(val, oldVal) && props.validateEvent) {\n elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n },\n {\n deep: true,\n }\n )\n\n watch(\n () => props.options,\n () => {\n const input = inputRef.value\n // filter or remote-search scenarios are not initialized\n if (!input || (input && document.activeElement !== input)) {\n initStates()\n }\n },\n {\n deep: true,\n flush: 'post',\n }\n )\n\n // fix the problem that scrollTop is not reset in filterable mode\n watch(\n () => filteredOptions.value,\n () => {\n calculatePopperSize()\n return menuRef.value && nextTick(menuRef.value.resetScrollTop)\n }\n )\n\n watchEffect(() => {\n // Anything could cause options changed, then update options\n // If you want to control it by condition, write here\n if (states.isBeforeHide) return\n updateOptions()\n })\n\n watchEffect(() => {\n const { valueKey, options } = props\n const duplicateValue = new Map()\n for (const item of options) {\n const optionValue = getValue(item)\n let v = optionValue\n if (isObject(v)) {\n v = get(optionValue, valueKey)\n }\n if (duplicateValue.get(v)) {\n debugWarn(\n 'ElSelectV2',\n `The option values you provided seem to be duplicated, which may cause some problems, please check.`\n )\n break\n } else {\n duplicateValue.set(v, true)\n }\n }\n })\n\n onMounted(() => {\n initStates()\n })\n useResizeObserver(selectRef, handleResize)\n useResizeObserver(selectionRef, resetSelectionWidth)\n useResizeObserver(wrapperRef, updateTooltip)\n useResizeObserver(tagMenuRef, updateTagTooltip)\n useResizeObserver(collapseItemRef, resetCollapseItemWidth)\n\n // #21498\n let stop: (() => void) | undefined\n watch(\n () => dropdownMenuVisible.value,\n (newVal) => {\n if (newVal) {\n stop = useResizeObserver(menuRef, updateTooltip).stop\n } else {\n stop?.()\n stop = undefined\n }\n emit('visible-change', newVal)\n }\n )\n\n return {\n // data exports\n inputId,\n collapseTagSize,\n currentPlaceholder,\n expanded,\n emptyText,\n popupHeight,\n debounce,\n allOptions,\n allOptionsValueMap,\n filteredOptions,\n iconComponent,\n iconReverse,\n tagStyle,\n collapseTagStyle,\n popperSize,\n dropdownMenuVisible,\n hasModelValue,\n shouldShowPlaceholder,\n selectDisabled,\n selectSize,\n needStatusIcon,\n showClearBtn,\n states,\n isFocused,\n nsSelect,\n nsInput,\n\n // refs items exports\n inputRef,\n menuRef,\n tagMenuRef,\n tooltipRef,\n tagTooltipRef,\n selectRef,\n wrapperRef,\n selectionRef,\n prefixRef,\n suffixRef,\n collapseItemRef,\n\n popperRef,\n\n validateState,\n validateIcon,\n showTagList,\n collapseTagList,\n\n // methods exports\n debouncedOnInputChange,\n deleteTag,\n getLabel,\n getValue,\n getDisabled,\n getValueKey,\n getIndex,\n handleClear,\n handleClickOutside,\n handleDel,\n handleEsc,\n focus,\n blur,\n handleMenuEnter,\n handleResize,\n resetSelectionWidth,\n updateTooltip,\n updateTagTooltip,\n updateOptions,\n toggleMenu,\n scrollTo: scrollToItem,\n onInput,\n onKeyboardNavigate,\n onKeyboardSelect,\n onSelect,\n onHover: onHoverOption,\n handleCompositionStart,\n handleCompositionEnd,\n handleCompositionUpdate,\n }\n}\n\nexport default useSelect\n"],"names":["_a","option"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAoDA,MAAM,SAAA,GAAY,CAAC,KAAA,EAAsB,IAAA,KAAyB;AAEhE,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,SAAA,EAAU;AACxB,EAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,EAAA,MAAM,QAAA,GAAW,aAAa,QAAQ,CAAA;AACtC,EAAA,MAAM,OAAA,GAAU,aAAa,OAAO,CAAA;AACpC,EAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,UAAA,KAAe,WAAA,EAAY;AAC3D,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,kBAAA,CAAmB,KAAA,EAAO;AAAA,IAC5C,eAAA,EAAiB;AAAA,GAClB,CAAA;AACD,EAAA,MAAM,EAAE,YAAY,QAAA,EAAU,QAAA,EAAU,aAAa,UAAA,EAAW,GAC9D,SAAS,KAAK,CAAA;AAChB,EAAA,MAAM,EAAE,YAAA,EAAc,YAAA,EAAa,GAAI,eAAe,KAAK,CAAA;AAE3D,EAAA,MAAM,SAAuB,QAAA,CAAS;AAAA,IACpC,UAAA,EAAY,EAAA;AAAA,IACZ,eAAe,EAAC;AAAA,IAChB,gBAAgB,EAAC;AAAA,IACjB,aAAA,EAAe,EAAA;AAAA,IACf,aAAA,EAAe,KAAA;AAAA,IACf,cAAA,EAAgB,CAAA;AAAA,IAChB,iBAAA,EAAmB,CAAA;AAAA,IACnB,aAAA,EAAe,IAAA;AAAA,IACf,aAAA,EAAe,MAAA;AAAA,IACf,aAAA,EAAe,EAAA;AAAA,IACf,kBAAA,EAAoB,KAAA;AAAA,IACpB,YAAA,EAAc;AAAA,GACf,CAAA;AAGD,EAAA,MAAM,UAAA,GAAa,IAAI,EAAE,CAAA;AACzB,EAAA,MAAM,UAAA,GAAa,IAAI,KAAK,CAAA;AAG5B,EAAA,MAAM,YAAY,GAAA,EAAiB;AACnC,EAAA,MAAM,eAAe,GAAA,EAAiB;AACtC,EAAA,MAAM,aAAa,GAAA,EAAqB;AACxC,EAAA,MAAM,gBAAgB,GAAA,EAAqB;AAC3C,EAAA,MAAM,WAAW,GAAA,EAAiB;AAClC,EAAA,MAAM,YAAY,GAAA,EAAiB;AACnC,EAAA,MAAM,YAAY,GAAA,EAAiB;AACnC,EAAA,MAAM,UAAU,GAAA,EAA4B;AAC5C,EAAA,MAAM,aAAa,GAAA,EAAiB;AACpC,EAAA,MAAM,kBAAkB,GAAA,EAAiB;AAEzC,EAAA,MAAM;AAAA,IACJ,WAAA;AAAA,IACA,sBAAA;AAAA,IACA,oBAAA;AAAA,IACA;AAAA,MACE,cAAA,CAAe;AAAA,IACjB,gBAAA,EAAkB,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC;AAAA,GACnC,CAAA;AAED,EAAA,MAAM,iBAAiB,eAAA,EAAgB;AAEvC,EAAA,MAAM,EAAE,UAAA,EAAY,SAAA,EAAW,UAAA,EAAW,GAAI,mBAAmB,QAAA,EAAU;AAAA,IACzE,QAAA,EAAU,cAAA;AAAA,IACV,UAAA,GAAa;AACX,MAAA,IAAI,KAAA,CAAM,iBAAA,IAAqB,CAAC,QAAA,CAAS,KAAA,EAAO;AAC9C,QAAA,QAAA,CAAS,KAAA,GAAQ,IAAA;AACjB,QAAA,MAAA,CAAO,kBAAA,GAAqB,IAAA;AAAA,MAC9B;AAAA,IACF,CAAA;AAAA,IACA,WAAW,KAAA,EAAO;AApHtB,MAAA,IAAA,EAAA,EAAA,EAAA;AAqHM,MAAA,OAAA,CAAA,CACE,EAAA,GAAA,UAAA,CAAW,UAAX,IAAA,GAAA,MAAA,GAAA,EAAA,CAAkB,oBAAA,CAAqB,aACvC,EAAA,GAAA,aAAA,CAAc,KAAA,KAAd,mBAAqB,oBAAA,CAAqB,KAAA,CAAA,CAAA;AAAA,IAE9C,CAAA;AAAA,IACA,SAAA,GAAY;AA1HhB,MAAA,IAAA,EAAA;AA2HM,MAAA,QAAA,CAAS,KAAA,GAAQ,KAAA;AACjB,MAAA,MAAA,CAAO,kBAAA,GAAqB,KAAA;AAC5B,MAAA,IAAI,MAAM,aAAA,EAAe;AACvB,QAAA,CAAA,EAAA,GAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAY,aAAZ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,UAAA,EAAuB,MAAA,CAAA,CAAQ,MAAM,CAAC,GAAA,KAAQ,UAAU,GAAG,CAAA,CAAA;AAAA,MAC7D;AAAA,IACF;AAAA,GACD,CAAA;AAED,EAAA,MAAM,UAAA,GAAa,QAAA,CAAS,MAAM,aAAA,CAAc,EAAE,CAAC,CAAA;AAEnD,EAAA,MAAM,UAAA,GAAa,SAAS,MAAM;AAChC,IAAA,IAAI,KAAA,CAAM,SAAS,OAAO,KAAA;AAC1B,IAAA,OAAO,MAAM,OAAA,CAAQ,MAAA,GAAS,CAAA,IAAK,MAAA,CAAO,eAAe,MAAA,GAAS,CAAA;AAAA,EACpE,CAAC,CAAA;AAED,EAAA,MAAM,eAAA,GAAkB,GAAA,CAAkB,EAAE,CAAA;AAE5C,EAAA,MAAM,QAAA,GAAW,IAAI,KAAK,CAAA;AAE1B,EAAA,MAAM,cAAA,GAAiB,SAAS,MAAG;AA9IrC,IAAA,IAAA,EAAA;AA8IwC,IAAA,OAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,eAAR,IAAA,GAAA,EAAA,GAAsB,KAAA;AAAA,EAAA,CAAK,CAAA;AAEjE,EAAA,MAAM,WAAA,GAAc,SAAS,MAAM;AACjC,IAAA,MAAM,WAAA,GAAc,eAAA,CAAgB,KAAA,CAAM,MAAA,GAAS,KAAA,CAAM,UAAA;AACzD,IAAA,OAAO,WAAA,GAAc,KAAA,CAAM,MAAA,GAAS,KAAA,CAAM,MAAA,GAAS,WAAA;AAAA,EACrD,CAAC,CAAA;AAED,EAAA,MAAM,aAAA,GAAgB,SAAS,MAAM;AACnC,IAAA,OAAO,KAAA,CAAM,QAAA,GACT,OAAA,CAAQ,KAAA,CAAM,UAAU,CAAA,IAAK,KAAA,CAAM,UAAA,CAAW,MAAA,GAAS,CAAA,GACvD,CAAC,YAAA,CAAa,MAAM,UAAU,CAAA;AAAA,EACpC,CAAC,CAAA;AAED,EAAA,MAAM,YAAA,GAAe,SAAS,MAAM;AAClC,IAAA,OACE,KAAA,CAAM,aACN,CAAC,cAAA,CAAe,SAChB,aAAA,CAAc,KAAA,KACb,SAAA,CAAU,KAAA,IAAS,MAAA,CAAO,aAAA,CAAA;AAAA,EAE/B,CAAC,CAAA;AAED,EAAA,MAAM,aAAA,GAAgB,QAAA;AAAA,IAAS,MAC7B,MAAM,MAAA,IAAU,KAAA,CAAM,cAAc,CAAC,KAAA,CAAM,gBAAA,GACvC,EAAA,GACA,KAAA,CAAM;AAAA,GACZ;AAEA,EAAA,MAAM,WAAA,GAAc,QAAA;AAAA,IAClB,MAAM,aAAA,CAAc,KAAA,IAAS,SAAS,EAAA,CAAG,SAAA,EAAW,SAAS,KAAK;AAAA,GACpE;AAEA,EAAA,MAAM,aAAA,GAAgB,QAAA,CAAS,MAAA,CAAM,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAY,kBAAiB,EAAE,CAAA;AACpE,EAAA,MAAM,YAAA,GAAe,SAAS,MAAM;AAIlC,IAAA,IAAI,CAAC,cAAc,KAAA,EAAO;AAC1B,IAAA,OAAO,qBAAA,CAAsB,cAAc,KAAK,CAAA;AAAA,EAClD,CAAC,CAAA;AAED,EAAA,MAAM,WAAW,QAAA,CAAS,MAAO,MAAM,MAAA,GAAS,KAAA,CAAM,WAAW,CAAE,CAAA;AAEnE,EAAA,MAAM,mBAAA,GAAsB,QAAA;AAAA,IAC1B,MAAM,KAAA,CAAM,MAAA,IAAU,CAAC,MAAA,CAAO,UAAA,IAAc,CAAC,UAAA,CAAW;AAAA,GAC1D;AAGA,EAAA,MAAM,SAAA,GAAY,SAAS,MAAM;AAC/B,IAAA,IAAI,MAAM,OAAA,EAAS;AACjB,MAAA,OAAO,KAAA,CAAM,WAAA,IAAe,CAAA,CAAE,mBAAmB,CAAA;AAAA,IACnD,CAAA,MAAO;AACL,MAAA,IACE,KAAA,CAAM,cACN,MAAA,CAAO,UAAA,IACP,WAAW,KAAA,IACX,eAAA,CAAgB,KAAA,CAAM,MAAA,KAAW,CAAA,EACjC;AACA,QAAA,OAAO,KAAA,CAAM,WAAA,IAAe,CAAA,CAAE,mBAAmB,CAAA;AAAA,MACnD;AACA,MAAA,IAAI,CAAC,WAAW,KAAA,EAAO;AACrB,QAAA,OAAO,KAAA,CAAM,UAAA,IAAc,CAAA,CAAE,kBAAkB,CAAA;AAAA,MACjD;AAAA,IACF;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAC,CAAA;AAED,EAAA,MAAM,mBAAA,GAAsB,QAAA;AAAA,IAC1B,MAAM,KAAA,CAAM,UAAA,IAAc,UAAA,CAAW,MAAM,YAAY;AAAA,GACzD;AACA,EAAA,MAAM,mBAAA,GAAsB,QAAA;AAAA,IAC1B,MAAM,KAAA,CAAM,UAAA,IAAc,MAAM,MAAA,IAAU,UAAA,CAAW,MAAM,YAAY;AAAA,GACzE;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAkB;AACvC,IAAA,MAAM,SAAS,IAAI,MAAA,CAAO,kBAAA,CAAmB,KAAK,GAAG,GAAG,CAAA;AAExD,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAuB;AAC5C,MAAA,IAAI,mBAAA,CAAoB,KAAA,IAAS,mBAAA,CAAoB,KAAA,EAAO,OAAO,IAAA;AAEnE,MAAA,OAAO,QAAQ,MAAA,CAAO,IAAA,CAAK,SAAS,CAAC,CAAA,IAAK,EAAE,CAAA,GAAI,IAAA;AAAA,IAClD,CAAA;AACA,IAAA,IAAI,MAAM,OAAA,EAAS;AACjB,MAAA,OAAO,EAAC;AAAA,IACV;AAEA,IAAA,OAAO,CAAC,GAAG,MAAA,CAAO,cAAA,EAAgB,GAAG,KAAA,CAAM,OAAO,CAAA,CAAE,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS;AACxE,MAAA,MAAM,OAAA,GAAU,WAAW,IAAI,CAAA;AAE/B,MAAA,IAAI,OAAA,CAAQ,OAAO,CAAA,EAAG;AACpB,QAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,MAAA,CAAO,aAAa,CAAA;AAE7C,QAAA,IAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AACvB,UAAA,GAAA,CAAI,IAAA;AAAA,YACF;AAAA,cACE,KAAA,EAAO,SAAS,IAAI,CAAA;AAAA,cACpB,IAAA,EAAM;AAAA,aACR;AAAA,YACA,GAAG;AAAA,WACL;AAAA,QACF;AAAA,MACF,CAAA,MAAA,IAAW,KAAA,CAAM,MAAA,IAAU,aAAA,CAAc,IAAI,CAAA,EAAG;AAC9C,QAAA,GAAA,CAAI,KAAK,IAAI,CAAA;AAAA,MACf;AAEA,MAAA,OAAO,GAAA;AAAA,IACT,CAAA,EAAG,EAAE,CAAA;AAAA,EACP,CAAA;AAEA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,eAAA,CAAgB,KAAA,GAAQ,aAAA,CAAc,MAAA,CAAO,UAAU,CAAA;AAAA,EACzD,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,SAAS,MAAM;AACxC,IAAA,MAAM,QAAA,uBAAe,GAAA,EAAI;AAEzB,IAAA,UAAA,CAAW,KAAA,CAAM,OAAA,CAAQ,CAAC,MAAA,EAAQ,KAAA,KAAU;AAC1C,MAAA,QAAA,CAAS,GAAA,CAAI,YAAY,QAAA,CAAS,MAAM,CAAC,CAAA,EAAG,EAAE,MAAA,EAAQ,KAAA,EAAO,CAAA;AAAA,IAC/D,CAAC,CAAA;AACD,IAAA,OAAO,QAAA;AAAA,EACT,CAAC,CAAA;AAED,EAAA,MAAM,uBAAA,GAA0B,SAAS,MAAM;AAC7C,IAAA,MAAM,QAAA,uBAAe,GAAA,EAAI;AAEzB,IAAA,eAAA,CAAgB,KAAA,CAAM,OAAA,CAAQ,CAAC,MAAA,EAAQ,KAAA,KAAU;AAC/C,MAAA,QAAA,CAAS,GAAA,CAAI,YAAY,QAAA,CAAS,MAAM,CAAC,CAAA,EAAG,EAAE,MAAA,EAAQ,KAAA,EAAO,CAAA;AAAA,IAC/D,CAAC,CAAA;AACD,IAAA,OAAO,QAAA;AAAA,EACT,CAAC,CAAA;AAED,EAAA,MAAM,kBAAA,GAAqB,QAAA;AAAA,IAAS,MAClC,gBAAgB,KAAA,CAAM,KAAA,CAAM,CAAC,MAAA,KAAW,WAAA,CAAY,MAAM,CAAC;AAAA,GAC7D;AAEA,EAAA,MAAM,aAAa,WAAA,EAAY;AAE/B,EAAA,MAAM,eAAA,GAAkB,QAAA;AAAA,IAAS,MAC/B,OAAA,KAAY,UAAA,CAAW,KAAA,GAAQ,OAAA,GAAU;AAAA,GAC3C;AAEA,EAAA,MAAM,sBAAsB,MAAM;AA3RpC,IAAA,IAAA,EAAA;AA4RI,IAAA,IAAI,QAAA,CAAS,KAAA,CAAM,aAAa,CAAA,EAAG;AACjC,MAAA,UAAA,CAAW,QAAQ,KAAA,CAAM,aAAA;AACzB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,KAAA,GAAA,CAAA,CAAQ,EAAA,GAAA,SAAA,CAAU,KAAA,KAAV,IAAA,GAAA,MAAA,GAAA,EAAA,CAAiB,WAAA,KAAe,GAAA;AAC9C,IAAA,IAAI,CAAC,KAAA,CAAM,aAAA,IAAiB,UAAA,CAAW,KAAA,EAAO;AAC5C,MAAA,QAAA,CAAS,MAAM;AACb,QAAA,UAAA,CAAW,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,wBAAwB,CAAA;AAAA,MAC7D,CAAC,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,UAAA,CAAW,KAAA,GAAQ,KAAA;AAAA,IACrB;AAAA,EACF,CAAA;AAKA,EAAA,MAAM,yBAAyB,MAAM;AA7SvC,IAAA,IAAA,EAAA,EAAA,EAAA;AA8SI,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AAC9C,IAAA,MAAM,GAAA,GAAM,MAAA,CAAO,UAAA,CAAW,IAAI,CAAA;AAClC,IAAA,MAAM,QAAA,GAAW,QAAA,CAAS,EAAA,CAAG,UAAA,EAAY,MAAM,CAAA;AAC/C,IAAA,MAAM,QAAM,EAAA,GAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,KAAA,KAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAe,OAAA,KAAf,mBAAwB,QAAA,KAAY,QAAA;AAChD,IAAA,MAAM,cAAA,GAAiB,GAAA,CAAI,aAAA,CAAc,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,CAAA;AACvD,IAAA,IAAI,cAAA,KAAmB,IAAA,IAAQ,GAAA,KAAQ,IAAA,EAAM,OAAO,CAAA;AACpD,IAAA,MAAM,KAAA,GAAQ,iBAAiB,cAAc,CAAA;AAC7C,IAAA,MAAM,OAAA,GACJ,OAAO,UAAA,CAAW,KAAA,CAAM,WAAW,CAAA,GACnC,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,YAAY,CAAA;AACtC,IAAA,GAAA,CAAI,IAAA,GAAO,CAAA,KAAA,EAAQ,KAAA,CAAM,IAAA,CAAK,OAAA;AAAA,MAC5B,IAAI,MAAA,CAAO,CAAA,GAAA,EAAM,KAAA,CAAM,UAAU,CAAA,GAAA,CAAK,CAAA;AAAA,MACtC;AAAA,KACD,CAAA,CAAA;AACD,IAAA,MAAM,WAAW,eAAA,CAAgB,KAAA,CAAM,MAAA,CAAO,CAAC,KAAK,MAAA,KAAW;AAC7D,MAAA,MAAM,OAAA,GAAU,GAAA,CAAI,WAAA,CAAY,QAAA,CAAS,MAAM,CAAC,CAAA;AAChD,MAAA,OAAO,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA;AAAA,IACpC,GAAG,CAAC,CAAA;AACJ,IAAA,OAAO,QAAA,GAAW,OAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,CAAC,YAAA,CAAa,KAAA,EAAO,OAAO,CAAA;AAChC,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,gBAAA,CAAiB,YAAA,CAAa,KAAK,CAAA;AACxD,IAAA,OAAO,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,GAAA,IAAO,KAAK,CAAA;AAAA,EAC7C,CAAA;AAGA,EAAA,MAAM,QAAA,GAAW,SAAS,MAAM;AAC9B,IAAA,MAAM,WAAW,WAAA,EAAY;AAC7B,IAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,UAAA,GAAa,QAAA,GAAW,mBAAA,GAAsB,CAAA;AAC3E,IAAA,MAAM,QAAA,GACJ,eAAA,CAAgB,KAAA,IAAS,KAAA,CAAM,eAAA,KAAoB,CAAA,GAC/C,MAAA,CAAO,cAAA,GACP,MAAA,CAAO,iBAAA,GACP,QAAA,GACA,cAAA,GACA,OAAO,cAAA,GAAiB,cAAA;AAC9B,IAAA,OAAO,EAAE,QAAA,EAAU,CAAA,EAAG,QAAQ,CAAA,EAAA,CAAA,EAAK;AAAA,EACrC,CAAC,CAAA;AAED,EAAA,MAAM,gBAAA,GAAmB,SAAS,MAAM;AACtC,IAAA,OAAO,EAAE,QAAA,EAAU,CAAA,EAAG,MAAA,CAAO,cAAc,CAAA,EAAA,CAAA,EAAK;AAAA,EAClD,CAAC,CAAA;AAED,EAAA,MAAM,qBAAA,GAAwB,SAAS,MAAM;AAC3C,IAAA,IAAI,OAAA,CAAQ,KAAA,CAAM,UAAU,CAAA,EAAG;AAC7B,MAAA,OAAO,KAAA,CAAM,UAAA,CAAW,MAAA,KAAW,CAAA,IAAK,CAAC,MAAA,CAAO,UAAA;AAAA,IAClD;AAIA,IAAA,OAAO,KAAA,CAAM,UAAA,GAAa,CAAC,MAAA,CAAO,UAAA,GAAa,IAAA;AAAA,EACjD,CAAC,CAAA;AAED,EAAA,MAAM,kBAAA,GAAqB,SAAS,MAAM;AArW5C,IAAA,IAAA,EAAA;AAsWI,IAAA,MAAM,YAAA,GAAA,CAAe,EAAA,GAAA,KAAA,CAAM,WAAA,KAAN,IAAA,GAAA,EAAA,GAAqB,EAAE,uBAAuB,CAAA;AACnE,IAAA,OAAO,MAAM,QAAA,IAAY,CAAC,aAAA,CAAc,KAAA,GACpC,eACA,MAAA,CAAO,aAAA;AAAA,EACb,CAAC,CAAA;AAGD,EAAA,MAAM,SAAA,GAAY,SAAS,MAAG;AA7WhC,IAAA,IAAA,EAAA,EAAA,EAAA;AA6WmC,IAAA,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAA,CAAW,KAAA,KAAX,IAAA,GAAA,MAAA,GAAA,EAAA,CAAkB,SAAA,KAAlB,IAAA,GAAA,MAAA,GAAA,EAAA,CAA6B,UAAA;AAAA,EAAA,CAAU,CAAA;AAGxE,EAAA,MAAM,QAAA,GAAW,SAAiB,MAAM;AACtC,IAAA,IAAI,MAAM,QAAA,EAAU;AAClB,MAAA,MAAM,GAAA,GAAO,MAAM,UAAA,CAAkB,MAAA;AACrC,MAAA,IACE,GAAA,GAAM,CAAA,IACN,uBAAA,CAAwB,KAAA,CAAM,GAAA,CAAI,MAAM,UAAA,CAAW,GAAA,GAAM,CAAC,CAAC,CAAA,EAC3D;AACA,QAAA,MAAM,EAAE,KAAA,EAAM,GAAI,uBAAA,CAAwB,KAAA,CAAM,GAAA;AAAA,UAC9C,KAAA,CAAM,UAAA,CAAW,GAAA,GAAM,CAAC;AAAA,SAC1B;AACA,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF,CAAA,MAAO;AACL,MAAA,IACE,CAAC,YAAA,CAAa,KAAA,CAAM,UAAU,CAAA,IAC9B,wBAAwB,KAAA,CAAM,GAAA,CAAI,KAAA,CAAM,UAAU,CAAA,EAClD;AACA,QAAA,MAAM,EAAE,KAAA,EAAM,GAAI,wBAAwB,KAAA,CAAM,GAAA,CAAI,MAAM,UAAU,CAAA;AACpE,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF;AACA,IAAA,OAAO,EAAA;AAAA,EACT,CAAC,CAAA;AAED,EAAA,MAAM,sBAAsB,QAAA,CAAS;AAAA,IACnC,GAAA,GAAM;AACJ,MAAA,OACE,SAAS,KAAA,KACR,KAAA,CAAM,WACL,CAAC,mBAAA,CAAoB,SACpB,KAAA,CAAM,MAAA,IAAU,CAAC,CAAC,KAAA,CAAM,WAC1B,CAAC,UAAA,CAAW,SAAS,CAAC,OAAA,CAAQ,OAAO,aAAa,CAAA,CAAA;AAAA,IAEvD,CAAA;AAAA,IACA,IAAI,GAAA,EAAc;AAChB,MAAA,QAAA,CAAS,KAAA,GAAQ,GAAA;AAAA,IACnB;AAAA,GACD,CAAA;AAED,EAAA,MAAM,WAAA,GAAc,SAAS,MAAM;AACjC,IAAA,IAAI,CAAC,MAAM,QAAA,EAAU;AACnB,MAAA,OAAO,EAAC;AAAA,IACV;AACA,IAAA,OAAO,KAAA,CAAM,eACT,MAAA,CAAO,aAAA,CAAc,MAAM,CAAA,EAAG,KAAA,CAAM,eAAe,CAAA,GACnD,MAAA,CAAO,aAAA;AAAA,EACb,CAAC,CAAA;AAED,EAAA,MAAM,eAAA,GAAkB,SAAS,MAAM;AACrC,IAAA,IAAI,CAAC,MAAM,QAAA,EAAU;AACnB,MAAA,OAAO,EAAC;AAAA,IACV;AACA,IAAA,OAAO,KAAA,CAAM,eACT,MAAA,CAAO,aAAA,CAAc,MAAM,KAAA,CAAM,eAAe,IAChD,EAAC;AAAA,EACP,CAAC,CAAA;AAGD,EAAA,MAAM;AAAA,IACJ,eAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF,GAAI,cAAA,CAAe,KAAA,EAAO,MAAM,CAAA;AAGhC,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAAkB;AAlbxC,IAAA,IAAA,EAAA;AAmbI,IAAA,IACE,cAAA,CAAe,KAAA,IACd,KAAA,CAAM,UAAA,IACL,QAAA,CAAS,KAAA,IACT,KAAA,IACA,EAAA,CAAC,EAAA,GAAA,SAAA,CAAU,KAAA,KAAV,IAAA,GAAA,MAAA,GAAA,EAAA,CAAiB,QAAA,CAAS,KAAA,CAAM,MAAA,CAAA,CAAA;AAEnC,MAAA;AAEF,IAAA,IAAI,OAAO,kBAAA,EAAoB;AAE7B,MAAA,MAAA,CAAO,kBAAA,GAAqB,KAAA;AAAA,IAC9B,CAAA,MAAO;AACL,MAAA,QAAA,CAAS,KAAA,GAAQ,CAAC,QAAA,CAAS,KAAA;AAAA,IAC7B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,IAAI,OAAO,UAAA,CAAW,MAAA,GAAS,CAAA,IAAK,CAAC,SAAS,KAAA,EAAO;AACnD,MAAA,QAAA,CAAS,KAAA,GAAQ,IAAA;AAAA,IACnB;AACA,IAAA,eAAA,CAAgB,OAAO,UAAU,CAAA;AACjC,IAAA,QAAA,CAAS,MAAM;AACb,MAAA,iBAAA,CAAkB,OAAO,UAAU,CAAA;AAAA,IACrC,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,sBAAA,GAAyB,cAAc,MAAM;AACjD,IAAA,aAAA,EAAc;AACd,IAAA,UAAA,CAAW,KAAA,GAAQ,KAAA;AAAA,EACrB,GAAG,QAAQ,CAAA;AAEX,EAAA,MAAM,iBAAA,GAAoB,CAAC,GAAA,KAAgB;AACzC,IAAA,IAAI,MAAA,CAAO,aAAA,KAAkB,GAAA,IAAO,WAAA,CAAY,KAAA,EAAO;AACrD,MAAA;AAAA,IACF;AACA,IAAA,MAAA,CAAO,aAAA,GAAgB,GAAA;AACvB,IAAA,IAAI,KAAA,CAAM,UAAA,IAAc,UAAA,CAAW,KAAA,CAAM,YAAY,CAAA,EAAG;AACtD,MAAA,KAAA,CAAM,aAAa,GAAG,CAAA;AAAA,IACxB,CAAA,MAAA,IACE,MAAM,UAAA,IACN,KAAA,CAAM,UACN,UAAA,CAAW,KAAA,CAAM,YAAY,CAAA,EAC7B;AACA,MAAA,KAAA,CAAM,aAAa,GAAG,CAAA;AAAA,IACxB;AACA,IAAA,IACE,KAAA,CAAM,uBACL,KAAA,CAAM,UAAA,IAAc,MAAM,MAAA,CAAA,IAC3B,eAAA,CAAgB,MAAM,MAAA,EACtB;AACA,MAAA,QAAA,CAAS,uBAAuB,CAAA;AAAA,IAClC,CAAA,MAAO;AACL,MAAA,QAAA,CAAS,mBAAmB,CAAA;AAAA,IAC9B;AAAA,EACF,CAAA;AAYA,EAAA,MAAM,0BAA0B,MAAM;AACpC,IAAA,MAAM,iBAAA,GAAoB,gBAAgB,KAAA,CAAM,MAAA;AAAA,MAC9C,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,QAAA,IAAY,EAAE,IAAA,KAAS;AAAA,KACnC;AACA,IAAA,MAAM,oBAAoB,iBAAA,CAAkB,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,OAAO,CAAA;AACjE,IAAA,MAAM,iBAAA,GAAoB,kBAAkB,CAAC,CAAA;AAC7C,IAAA,MAAA,CAAO,aAAA,GAAgB,aAAA;AAAA,MACrB,eAAA,CAAgB,KAAA;AAAA,MAChB,iBAAA,IAAqB;AAAA,KACvB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,GAAA,KAAqB;AACvC,IAAA,IAAI,CAAC,OAAA,CAAQ,KAAA,CAAM,UAAA,EAAY,GAAG,CAAA,EAAG;AACnC,MAAA,IAAA,CAAK,cAAc,GAAG,CAAA;AAAA,IACxB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,CAAC,GAAA,KAAa;AAC3B,IAAA,IAAA,CAAK,oBAAoB,GAAG,CAAA;AAC5B,IAAA,UAAA,CAAW,GAAG,CAAA;AACd,IAAA,MAAA,CAAO,aAAA,GAAgB,KAAA,CAAM,QAAA,GAAW,MAAA,CAAO,GAAG,CAAA,GAAI,GAAA;AAEtD,IAAA,QAAA,CAAS,MAAM;AACb,MAAA,IAAI,KAAA,CAAM,QAAA,IAAY,OAAA,CAAQ,KAAA,CAAM,UAAU,CAAA,EAAG;AAC/C,QAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,aAAA,CAAc,KAAA,EAAM;AACjD,QAAA,MAAM,eAAA,GAAkB,MAAM,UAAA,CAAW,GAAA;AAAA,UAAI,CAAC,KAAA,KAC5C,SAAA,CAAU,KAAA,EAAO,aAAa;AAAA,SAChC;AAEA,QAAA,IAAI,CAAC,OAAA,CAAQ,MAAA,CAAO,aAAA,EAAe,eAAe,CAAA,EAAG;AACnD,UAAA,MAAA,CAAO,aAAA,GAAgB,eAAA;AAAA,QACzB;AAAA,MACF,CAAA,MAAO;AACL,QAAA,UAAA,CAAW,IAAI,CAAA;AAAA,MACjB;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,GAAA,GAAiB,IAAI,KAAA,KAAmB;AAC7D,IAAA,IAAI,CAAC,QAAA,CAAS,KAAK,CAAA,EAAG;AACpB,MAAA,OAAO,GAAA,CAAI,QAAQ,KAAK,CAAA;AAAA,IAC1B;AACA,IAAA,MAAM,WAAW,KAAA,CAAM,QAAA;AACvB,IAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,IAAA,GAAA,CAAI,IAAA,CAAK,CAAC,IAAA,EAAM,CAAA,KAAM;AACpB,MAAA,IAAI,IAAI,IAAA,EAAM,QAAQ,MAAM,GAAA,CAAI,KAAA,EAAO,QAAQ,CAAA,EAAG;AAChD,QAAA,KAAA,GAAQ,CAAA;AACR,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAC,CAAA;AACD,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,IAAA,KAAkB;AACrC,IAAA,OAAO,SAAS,IAAI,CAAA,GAAI,IAAI,IAAA,EAAM,KAAA,CAAM,QAAQ,CAAA,GAAI,IAAA;AAAA,EACtD,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,mBAAA,EAAoB;AAAA,EACtB,CAAA;AAEA,EAAA,MAAM,sBAAsB,MAAM;AAChC,IAAA,MAAA,CAAO,iBAAiB,MAAA,CAAO,UAAA;AAAA,MAC7B,MAAA,CAAO,gBAAA,CAAiB,YAAA,CAAa,KAAM,CAAA,CAAE;AAAA,KAC/C;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAA,CAAO,iBAAA,GACL,eAAA,CAAgB,KAAA,CAAO,qBAAA,EAAsB,CAAE,KAAA;AAAA,EACnD,CAAA;AAEA,EAAA,MAAM,gBAAgB,MAAM;AAhkB9B,IAAA,IAAA,EAAA,EAAA,EAAA;AAikBI,IAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAA,CAAW,KAAA,KAAX,mBAAkB,YAAA,KAAlB,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,mBAAmB,MAAM;AApkBjC,IAAA,IAAA,EAAA,EAAA,EAAA;AAqkBI,IAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,aAAA,CAAc,KAAA,KAAd,mBAAqB,YAAA,KAArB,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,CAAC,MAAA,KAAmB;AACnC,IAAA,MAAM,WAAA,GAAc,SAAS,MAAM,CAAA;AAEnC,IAAA,IAAI,MAAM,QAAA,EAAU;AAClB,MAAA,IAAI,eAAA,GAAmB,KAAA,CAAM,UAAA,CAAqB,KAAA,EAAM;AAExD,MAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,eAAA,EAAiB,WAAW,CAAA;AACxD,MAAA,IAAI,QAAQ,EAAA,EAAI;AACd,QAAA,eAAA,GAAkB;AAAA,UAChB,GAAG,eAAA,CAAgB,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA;AAAA,UACjC,GAAG,eAAA,CAAgB,KAAA,CAAM,KAAA,GAAQ,CAAC;AAAA,SACpC;AACA,QAAA,MAAA,CAAO,aAAA,CAAc,MAAA,CAAO,KAAA,EAAO,CAAC,CAAA;AACpC,QAAA,eAAA,CAAgB,MAAM,CAAA;AAAA,MACxB,WACE,KAAA,CAAM,aAAA,IAAiB,KACvB,eAAA,CAAgB,MAAA,GAAS,MAAM,aAAA,EAC/B;AACA,QAAA,eAAA,GAAkB,CAAC,GAAG,eAAA,EAAiB,WAAW,CAAA;AAClD,QAAA,MAAA,CAAO,aAAA,CAAc,KAAK,MAAM,CAAA;AAChC,QAAA,eAAA,CAAgB,MAAM,CAAA;AAAA,MACxB;AACA,MAAA,MAAA,CAAO,eAAe,CAAA;AACtB,MAAA,IAAI,OAAO,OAAA,EAAS;AAClB,QAAA,iBAAA,CAAkB,EAAE,CAAA;AAAA,MACtB;AACA,MAAA,IAAI,KAAA,CAAM,UAAA,IAAc,CAAC,KAAA,CAAM,cAAA,EAAgB;AAC7C,QAAA,MAAA,CAAO,UAAA,GAAa,EAAA;AAAA,MACtB;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,aAAA,GAAgB,SAAS,MAAM,CAAA;AACtC,MAAA,CAAC,QAAQ,KAAA,CAAM,UAAA,EAAY,WAAW,CAAA,IAAK,OAAO,WAAW,CAAA;AAC7D,MAAA,QAAA,CAAS,KAAA,GAAQ,KAAA;AACjB,MAAA,eAAA,CAAgB,MAAM,CAAA;AACtB,MAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,QAAA,iBAAA,EAAkB;AAAA,MACpB;AAAA,IACF;AACA,IAAA,KAAA,EAAM;AAAA,EACR,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,CAAC,KAAA,EAAmB,MAAA,KAAmB;AACvD,IAAA,IAAI,eAAA,GAAmB,KAAA,CAAM,UAAA,CAAqB,KAAA,EAAM;AAExD,IAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,eAAA,EAAiB,QAAA,CAAS,MAAM,CAAC,CAAA;AAE7D,IAAA,IAAI,KAAA,GAAQ,EAAA,IAAM,CAAC,cAAA,CAAe,KAAA,EAAO;AACvC,MAAA,eAAA,GAAkB;AAAA,QAChB,GAAI,KAAA,CAAM,UAAA,CAA8B,KAAA,CAAM,GAAG,KAAK,CAAA;AAAA,QACtD,GAAI,KAAA,CAAM,UAAA,CAA8B,KAAA,CAAM,QAAQ,CAAC;AAAA,OACzD;AACA,MAAA,MAAA,CAAO,aAAA,CAAc,MAAA,CAAO,KAAA,EAAO,CAAC,CAAA;AACpC,MAAA,MAAA,CAAO,eAAe,CAAA;AACtB,MAAA,IAAA,CAAK,YAAA,EAAc,QAAA,CAAS,MAAM,CAAC,CAAA;AACnC,MAAA,eAAA,CAAgB,MAAM,CAAA;AAAA,IACxB;AACA,IAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,IAAA,KAAA,EAAM;AAAA,EACR,CAAA;AAEA,EAAA,MAAM,QAAQ,MAAM;AApoBtB,IAAA,IAAA,EAAA;AAqoBI,IAAA,CAAA,EAAA,GAAA,QAAA,CAAS,UAAT,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgB,KAAA,EAAA;AAAA,EAClB,CAAA;AAEA,EAAA,MAAM,OAAO,MAAM;AAxoBrB,IAAA,IAAA,EAAA;AAyoBI,IAAA,IAAI,SAAS,KAAA,EAAO;AAClB,MAAA,QAAA,CAAS,KAAA,GAAQ,KAAA;AACjB,MAAA,QAAA,CAAS,MAAG;AA3oBlB,QAAA,IAAAA,GAAAA;AA2oBqB,QAAA,OAAA,CAAAA,GAAAA,GAAA,QAAA,CAAS,KAAA,KAAT,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAgB,IAAA,EAAA;AAAA,MAAA,CAAM,CAAA;AACrC,MAAA;AAAA,IACF;AACA,IAAA,CAAA,EAAA,GAAA,QAAA,CAAS,UAAT,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgB,IAAA,EAAA;AAAA,EAClB,CAAA;AAGA,EAAA,MAAM,YAAY,MAAM;AACtB,IAAA,IAAI,MAAA,CAAO,UAAA,CAAW,MAAA,GAAS,CAAA,EAAG;AAChC,MAAA,MAAA,CAAO,UAAA,GAAa,EAAA;AAAA,IACtB,CAAA,MAAO;AACL,MAAA,QAAA,CAAS,KAAA,GAAQ,KAAA;AAAA,IACnB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,uBAAA,GAA0B,CAAC,KAAA,KAC/B,aAAA;AAAA,IACE,KAAA;AAAA,IACA,CAAC,EAAA,KACC,CAAC,MAAA,CAAO,aAAA,CAAc,IAAA;AAAA,MACpB,CAAC,MAAA,KAAW,QAAA,CAAS,MAAM,CAAA,KAAM,EAAA,IAAM,YAAY,MAAM;AAAA;AAC3D,GACJ;AAEF,EAAA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAqB;AACtC,IAAA,MAAM,IAAA,GAAO,aAAa,CAAC,CAAA;AAC3B,IAAA,IAAI,CAAC,MAAM,QAAA,EAAU;AACrB,IAAA,IAAI,IAAA,KAAS,WAAW,MAAA,EAAQ;AAChC,IAAA,IAAI,MAAA,CAAO,UAAA,CAAW,MAAA,KAAW,CAAA,EAAG;AAClC,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,MAAM,QAAA,GAAY,KAAA,CAAM,UAAA,CAA0B,KAAA,EAAM;AACxD,MAAA,MAAM,oBAAA,GAAuB,wBAAwB,QAAQ,CAAA;AAC7D,MAAA,IAAI,uBAAuB,CAAA,EAAG;AAC9B,MAAA,MAAM,cAAA,GAAiB,SAAS,oBAAoB,CAAA;AACpD,MAAA,QAAA,CAAS,MAAA,CAAO,sBAAsB,CAAC,CAAA;AACvC,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,aAAA,CAAc,oBAAoB,CAAA;AACxD,MAAA,MAAA,CAAO,aAAA,CAAc,MAAA,CAAO,oBAAA,EAAsB,CAAC,CAAA;AACnD,MAAA,eAAA,CAAgB,MAAM,CAAA;AACtB,MAAA,MAAA,CAAO,QAAQ,CAAA;AACf,MAAA,IAAA,CAAK,cAAc,cAAc,CAAA;AAAA,IACnC;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,UAAA;AACJ,IAAA,IAAI,OAAA,CAAQ,KAAA,CAAM,UAAU,CAAA,EAAG;AAC7B,MAAA,UAAA,GAAa,EAAC;AAAA,IAChB,CAAA,MAAO;AACL,MAAA,UAAA,GAAa,YAAA,CAAa,KAAA;AAAA,IAC5B;AAEA,IAAA,MAAA,CAAO,aAAA,GAAgB,EAAA;AAEvB,IAAA,QAAA,CAAS,KAAA,GAAQ,KAAA;AACjB,IAAA,MAAA,CAAO,UAAU,CAAA;AACjB,IAAA,IAAA,CAAK,OAAO,CAAA;AACZ,IAAA,iBAAA,EAAkB;AAClB,IAAA,KAAA,EAAM;AAAA,EACR,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,CACzB,SAAA,EACA,aAAA,GAAoC,MAAA,KAC3B;AACT,IAAA,MAAM,UAAU,eAAA,CAAgB,KAAA;AAChC,IAAA,IACE,CAAC,CAAC,SAAA,EAAW,UAAU,CAAA,CAAE,SAAS,SAAS,CAAA,IAC3C,cAAA,CAAe,KAAA,IACf,QAAQ,MAAA,IAAU,CAAA,IAClB,kBAAA,CAAmB,KAAA,IACnB,YAAY,KAAA,EACZ;AACA,MAAA;AAAA,IACF;AACA,IAAA,IAAI,CAAC,SAAS,KAAA,EAAO;AACnB,MAAA,OAAO,UAAA,EAAW;AAAA,IACpB;AACA,IAAA,IAAI,WAAA,CAAY,aAAa,CAAA,EAAG;AAC9B,MAAA,aAAA,GAAgB,MAAA,CAAO,aAAA;AAAA,IACzB;AACA,IAAA,IAAI,QAAA,GAAW,EAAA;AACf,IAAA,IAAI,cAAc,SAAA,EAAW;AAC3B,MAAA,QAAA,GAAW,aAAA,GAAgB,CAAA;AAC3B,MAAA,IAAI,QAAA,IAAY,QAAQ,MAAA,EAAQ;AAE9B,QAAA,QAAA,GAAW,CAAA;AAAA,MACb;AAAA,IACF,CAAA,MAAA,IAAW,cAAc,UAAA,EAAY;AACnC,MAAA,QAAA,GAAW,aAAA,GAAgB,CAAA;AAC3B,MAAA,IAAI,QAAA,GAAW,CAAA,IAAK,QAAA,IAAY,OAAA,CAAQ,MAAA,EAAQ;AAE9C,QAAA,QAAA,GAAW,QAAQ,MAAA,GAAS,CAAA;AAAA,MAC9B;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GAAS,QAAQ,QAAQ,CAAA;AAC/B,IAAA,IAAI,WAAA,CAAY,MAAM,CAAA,IAAK,MAAA,CAAO,SAAS,OAAA,EAAS;AAElD,MAAA,OAAO,kBAAA,CAAmB,WAAW,QAAQ,CAAA;AAAA,IAC/C,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,aAAA,GAAgB,QAAA;AACvB,MAAA,YAAA,CAAa,QAAQ,CAAA;AAAA,IACvB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,IAAI,CAAC,SAAS,KAAA,EAAO;AACnB,MAAA,OAAO,UAAA,EAAW;AAAA,IACpB,CAAA,MAAA,IACE,CAAC,MAAA,CAAO,aAAA,IACR,gBAAgB,KAAA,CAAM,MAAA,CAAO,aAAa,CAAA,EAC1C;AACA,MAAA,QAAA,CAAS,eAAA,CAAgB,KAAA,CAAM,MAAA,CAAO,aAAa,CAAC,CAAA;AAAA,IACtD;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,GAAA,KAAiB;AACtC,IAAA,MAAA,CAAO,gBAAgB,GAAA,IAAA,IAAA,GAAA,GAAA,GAAO,EAAA;AAAA,EAChC,CAAA;AAEA,EAAA,MAAM,sBAAsB,MAAM;AAChC,IAAA,IAAI,CAAC,MAAM,QAAA,EAAU;AACnB,MAAA,MAAA,CAAO,aAAA,GAAgB,eAAA,CAAgB,KAAA,CAAM,SAAA,CAAU,CAAC,IAAA,KAAS;AAC/D,QAAA,OAAO,YAAY,QAAA,CAAS,IAAI,CAAC,CAAA,KAAM,WAAA,CAAY,MAAM,UAAU,CAAA;AAAA,MACrE,CAAC,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,MAAM,MAAA,GAAS,MAAM,UAAA,CAAW,MAAA;AAChC,MAAA,IAAI,SAAS,CAAA,EAAG;AACd,QAAA,MAAM,SAAA,GAAY,KAAA,CAAM,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA;AAC7C,QAAA,MAAA,CAAO,aAAA,GAAgB,gBAAgB,KAAA,CAAM,SAAA;AAAA,UAC3C,CAAC,SAAS,WAAA,CAAY,SAAS,MAAM,WAAA,CAAY,QAAA,CAAS,IAAI,CAAC;AAAA,SACjE;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,aAAA,GAAgB,EAAA;AAAA,MACzB;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU,CAAC,KAAA,KAAiB;AAChC,IAAA,MAAA,CAAO,UAAA,GAAc,MAAM,MAAA,CAA4B,KAAA;AACvD,IAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,MAAA,UAAA,CAAW,KAAA,GAAQ,IAAA;AACnB,MAAA,sBAAA,EAAuB;AAAA,IACzB,CAAA,MAAO;AACL,MAAA,OAAO,aAAA,EAAc;AAAA,IACvB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,CAAC,KAAA,KAAiB;AAC3C,IAAA,QAAA,CAAS,KAAA,GAAQ,KAAA;AAEjB,IAAA,IAAI,UAAU,KAAA,EAAO;AACnB,MAAA,MAAM,MAAA,GAAS,IAAI,UAAA,CAAW,MAAA,EAAQ,KAAK,CAAA;AAC3C,MAAA,UAAA,CAAW,MAAM,CAAA;AAAA,IACnB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,MAAA,CAAO,YAAA,GAAe,KAAA;AACtB,IAAA,OAAO,SAAS,MAAM;AACpB,MAAA,IAAI,CAAC,SAAS,KAAA,EAAO;AACnB,QAAA,YAAA,CAAa,SAAS,KAAK,CAAA;AAAA,MAC7B;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAkB;AACtC,IAAA,OAAA,CAAQ,KAAA,CAAO,aAAa,KAAK,CAAA;AAAA,EACnC,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,CAAC,KAAA,EAAgB,aAAA,KAA6B;AAE9D,IAAA,MAAM,WAAA,GAAc,YAAY,KAAK,CAAA;AAErC,IAAA,IAAI,kBAAA,CAAmB,KAAA,CAAM,GAAA,CAAI,WAAW,CAAA,EAAG;AAC7C,MAAA,MAAM,EAAE,MAAA,EAAO,GAAI,kBAAA,CAAmB,KAAA,CAAM,IAAI,WAAW,CAAA;AAE3D,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,IAAI,aAAA,IAAiB,cAAc,MAAA,EAAQ;AACzC,MAAA,MAAM,SAAS,aAAA,CAAc,IAAA;AAAA,QAC3B,CAACC,OAAAA,KAAW,WAAA,CAAY,QAAA,CAASA,OAAM,CAAC,CAAA,KAAM;AAAA,OAChD;AACA,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,IACF;AAEA,IAAA,OAAO;AAAA,MACL,CAAC,UAAA,CAAW,KAAA,CAAM,KAAK,GAAG,KAAA;AAAA,MAC1B,CAAC,UAAA,CAAW,KAAA,CAAM,KAAK,GAAG;AAAA,KAC5B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,CAAC,MAAA,KAAgB;AA50BpC,IAAA,IAAA,EAAA,EAAA,EAAA;AA60BI,IAAA,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,kBAAA,CAAmB,KAAA,CAAM,IAAI,QAAA,CAAS,MAAM,CAAC,CAAA,KAA7C,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgD,UAAhD,IAAA,GAAA,EAAA,GAAyD,EAAA;AAAA,EAAA,CAAA;AAE3D,EAAA,MAAM,UAAA,GAAa,CAAC,uBAAA,GAA0B,KAAA,KAAU;AACtD,IAAA,IAAI,MAAM,QAAA,EAAU;AAClB,MAAA,IAAK,KAAA,CAAM,UAAA,CAA0B,MAAA,GAAS,CAAA,EAAG;AAC/C,QAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,aAAA,CAAc,KAAA,EAAM;AACjD,QAAA,MAAA,CAAO,cAAc,MAAA,GAAS,CAAA;AAC9B,QAAA,MAAA,CAAO,aAAA,GAAgB,KAAA,CAAM,UAAA,CAAW,QAAA,EAAS;AAEjD,QAAA,KAAA,MAAW,KAAA,IAAS,MAAM,UAAA,EAAY;AACpC,UAAA,MAAM,MAAA,GAAS,SAAA,CAAU,KAAA,EAAO,aAAa,CAAA;AAC7C,UAAA,MAAA,CAAO,aAAA,CAAc,KAAK,MAAM,CAAA;AAAA,QAClC;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,gBAAgB,EAAC;AACxB,QAAA,MAAA,CAAO,aAAA,GAAgB,MAAA;AAAA,MACzB;AAAA,IACF,CAAA,MAAO;AACL,MAAA,IAAI,cAAc,KAAA,EAAO;AACvB,QAAA,MAAA,CAAO,gBAAgB,KAAA,CAAM,UAAA;AAC7B,QAAA,MAAM,UAAU,eAAA,CAAgB,KAAA;AAChC,QAAA,MAAM,oBAAoB,OAAA,CAAQ,SAAA;AAAA,UAChC,CAAC,WACC,WAAA,CAAY,QAAA,CAAS,MAAM,CAAC,CAAA,KAAM,WAAA,CAAY,KAAA,CAAM,UAAU;AAAA,SAClE;AACA,QAAA,IAAI,CAAC,iBAAA,EAAmB;AACtB,UAAA,MAAA,CAAO,aAAA,GAAgB,QAAA,CAAS,OAAA,CAAQ,iBAAiB,CAAC,CAAA;AAAA,QAC5D,CAAA,MAAO;AACL,UAAA,IAAI,CAAC,MAAA,CAAO,aAAA,IAAiB,uBAAA,EAAyB;AACpD,YAAA,MAAA,CAAO,aAAA,GAAgB,WAAA,CAAY,KAAA,CAAM,UAAU,CAAA;AAAA,UACrD;AAAA,QACF;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,aAAA,GAAgB,EAAA;AACvB,QAAA,MAAA,CAAO,aAAA,GAAgB,MAAA;AAAA,MACzB;AAAA,IACF;AACA,IAAA,iBAAA,EAAkB;AAClB,IAAA,mBAAA,EAAoB;AAAA,EACtB,CAAA;AAEA,EAAA,KAAA;AAAA,IACE,MAAM,KAAA,CAAM,aAAA;AAAA,IACZ,MAAM;AACJ,MAAA,mBAAA,EAAoB;AAAA,IACtB;AAAA,GACF;AAMA,EAAA,KAAA,CAAM,QAAA,EAAU,CAAC,GAAA,KAAQ;AACvB,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,IAAI,CAAC,MAAM,UAAA,EAAY;AACrB,QAAA,mBAAA,EAAoB;AAAA,MACtB;AACA,MAAA,iBAAA,CAAkB,EAAE,CAAA;AAAA,IACtB,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,UAAA,GAAa,EAAA;AACpB,MAAA,MAAA,CAAO,aAAA,GAAgB,IAAA;AACvB,MAAA,MAAA,CAAO,YAAA,GAAe,IAAA;AACtB,MAAA,MAAA,CAAO,kBAAA,GAAqB,KAAA;AAC5B,MAAA,eAAA,CAAgB,EAAE,CAAA;AAAA,IACpB;AAAA,EACF,CAAC,CAAA;AAED,EAAA,KAAA;AAAA,IACE,MAAM,KAAA,CAAM,UAAA;AAAA,IACZ,CAAC,KAAK,MAAA,KAAW;AAl5BrB,MAAA,IAAA,EAAA;AAm5BM,MAAA,MAAM,aAAa,CAAC,GAAA,IAAQ,QAAQ,GAAG,CAAA,IAAK,IAAI,MAAA,KAAW,CAAA;AAE3D,MAAA,IACE,UAAA,IACC,MAAM,QAAA,IAAY,CAAC,QAAQ,GAAA,CAAI,QAAA,IAAY,MAAA,CAAO,aAAa,KAC/D,CAAC,KAAA,CAAM,YACN,WAAA,CAAY,GAAG,MAAM,WAAA,CAAY,MAAA,CAAO,aAAa,CAAA,EACvD;AACA,QAAA,UAAA,CAAW,IAAI,CAAA;AAAA,MACjB;AACA,MAAA,IAAI,CAAC,OAAA,CAAQ,GAAA,EAAK,MAAM,CAAA,IAAK,MAAM,aAAA,EAAe;AAChD,QAAA,CAAA,EAAA,GAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAY,aAAZ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,UAAA,EAAuB,QAAA,CAAA,CAAU,MAAM,CAAC,GAAA,KAAQ,UAAU,GAAG,CAAA,CAAA;AAAA,MAC/D;AAAA,IACF,CAAA;AAAA,IACA;AAAA,MACE,IAAA,EAAM;AAAA;AACR,GACF;AAEA,EAAA,KAAA;AAAA,IACE,MAAM,KAAA,CAAM,OAAA;AAAA,IACZ,MAAM;AACJ,MAAA,MAAM,QAAQ,QAAA,CAAS,KAAA;AAEvB,MAAA,IAAI,CAAC,KAAA,IAAU,KAAA,IAAS,QAAA,CAAS,kBAAkB,KAAA,EAAQ;AACzD,QAAA,UAAA,EAAW;AAAA,MACb;AAAA,IACF,CAAA;AAAA,IACA;AAAA,MACE,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO;AAAA;AACT,GACF;AAGA,EAAA,KAAA;AAAA,IACE,MAAM,eAAA,CAAgB,KAAA;AAAA,IACtB,MAAM;AACJ,MAAA,mBAAA,EAAoB;AACpB,MAAA,OAAO,OAAA,CAAQ,KAAA,IAAS,QAAA,CAAS,OAAA,CAAQ,MAAM,cAAc,CAAA;AAAA,IAC/D;AAAA,GACF;AAEA,EAAA,WAAA,CAAY,MAAM;AAGhB,IAAA,IAAI,OAAO,YAAA,EAAc;AACzB,IAAA,aAAA,EAAc;AAAA,EAChB,CAAC,CAAA;AAED,EAAA,WAAA,CAAY,MAAM;AAChB,IAAA,MAAM,EAAE,QAAA,EAAU,OAAA,EAAQ,GAAI,KAAA;AAC9B,IAAA,MAAM,cAAA,uBAAqB,GAAA,EAAI;AAC/B,IAAA,KAAA,MAAW,QAAQ,OAAA,EAAS;AAC1B,MAAA,MAAM,WAAA,GAAc,SAAS,IAAI,CAAA;AACjC,MAAA,IAAI,CAAA,GAAI,WAAA;AACR,MAAA,IAAI,QAAA,CAAS,CAAC,CAAA,EAAG;AACf,QAAA,CAAA,GAAI,GAAA,CAAI,aAAa,QAAQ,CAAA;AAAA,MAC/B;AACA,MAAA,IAAI,cAAA,CAAe,GAAA,CAAI,CAAC,CAAA,EAAG;AACzB,QAAA,SAAA;AAAA,UACE,YAAA;AAAA,UACA,CAAA,kGAAA;AAAA,SACF;AACA,QAAA;AAAA,MACF,CAAA,MAAO;AACL,QAAA,cAAA,CAAe,GAAA,CAAI,GAAG,IAAI,CAAA;AAAA,MAC5B;AAAA,IACF;AAAA,EACF,CAAC,CAAA;AAED,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,UAAA,EAAW;AAAA,EACb,CAAC,CAAA;AACD,EAAA,iBAAA,CAAkB,WAAW,YAAY,CAAA;AACzC,EAAA,iBAAA,CAAkB,cAAc,mBAAmB,CAAA;AACnD,EAAA,iBAAA,CAAkB,YAAY,aAAa,CAAA;AAC3C,EAAA,iBAAA,CAAkB,YAAY,gBAAgB,CAAA;AAC9C,EAAA,iBAAA,CAAkB,iBAAiB,sBAAsB,CAAA;AAGzD,EAAA,IAAI,IAAA;AACJ,EAAA,KAAA;AAAA,IACE,MAAM,mBAAA,CAAoB,KAAA;AAAA,IAC1B,CAAC,MAAA,KAAW;AACV,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,IAAA,GAAO,iBAAA,CAAkB,OAAA,EAAS,aAAa,CAAA,CAAE,IAAA;AAAA,MACnD,CAAA,MAAO;AACL,QAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,EAAA;AACA,QAAA,IAAA,GAAO,MAAA;AAAA,MACT;AACA,MAAA,IAAA,CAAK,kBAAkB,MAAM,CAAA;AAAA,IAC/B;AAAA,GACF;AAEA,EAAA,OAAO;AAAA;AAAA,IAEL,OAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,kBAAA;AAAA,IACA,eAAA;AAAA,IACA,aAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,gBAAA;AAAA,IACA,UAAA;AAAA,IACA,mBAAA;AAAA,IACA,aAAA;AAAA,IACA,qBAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA;AAAA,IAGA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,eAAA;AAAA,IAEA,SAAA;AAAA,IAEA,aAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,eAAA;AAAA;AAAA,IAGA,sBAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,kBAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,eAAA;AAAA,IACA,YAAA;AAAA,IACA,mBAAA;AAAA,IACA,aAAA;AAAA,IACA,gBAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA,EAAU,YAAA;AAAA,IACV,OAAA;AAAA,IACA,kBAAA;AAAA,IACA,gBAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA,EAAS,aAAA;AAAA,IACT,sBAAA;AAAA,IACA,oBAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"useSelect.mjs","sources":["../../../../../../packages/components/select-v2/src/useSelect.ts"],"sourcesContent":["import {\n computed,\n nextTick,\n onMounted,\n reactive,\n ref,\n useSlots,\n watch,\n watchEffect,\n} from 'vue'\nimport { findLastIndex, get, isEqual } from 'lodash-unified'\nimport { useDebounceFn, useResizeObserver } from '@vueuse/core'\nimport {\n ValidateComponentsMap,\n debugWarn,\n escapeStringRegexp,\n getEventCode,\n isArray,\n isEmpty,\n isFunction,\n isNumber,\n isObject,\n isUndefined,\n} from '@element-plus/utils'\nimport {\n useComposition,\n useEmptyValues,\n useFocusController,\n useLocale,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n CHANGE_EVENT,\n EVENT_CODE,\n MINIMUM_INPUT_WIDTH,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\nimport { useAllowCreate } from './useAllowCreate'\nimport { useProps } from './useProps'\n\nimport type { Option, OptionType, SelectStates } from './select.types'\nimport type { SelectV2Props } from './token'\nimport type { SelectV2EmitFn } from './defaults'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type { SelectDropdownInstance } from './select-dropdown'\n\nconst useSelect = (props: SelectV2Props, emit: SelectV2EmitFn) => {\n // inject\n const { t } = useLocale()\n const slots = useSlots()\n const nsSelect = useNamespace('select')\n const nsInput = useNamespace('input')\n const { form: elForm, formItem: elFormItem } = useFormItem()\n const { inputId } = useFormItemInputId(props, {\n formItemContext: elFormItem,\n })\n const { aliasProps, getLabel, getValue, getDisabled, getOptions } =\n useProps(props)\n const { valueOnClear, isEmptyValue } = useEmptyValues(props)\n\n const states: SelectStates = reactive({\n inputValue: '',\n cachedOptions: [],\n createdOptions: [],\n hoveringIndex: -1,\n inputHovering: false,\n selectionWidth: 0,\n collapseItemWidth: 0,\n previousQuery: null,\n previousValue: undefined,\n selectedLabel: '',\n menuVisibleOnFocus: false,\n isBeforeHide: false,\n })\n\n // data refs\n const popperSize = ref(-1)\n const debouncing = ref(false)\n\n // DOM & Component refs\n const selectRef = ref<HTMLElement>()\n const selectionRef = ref<HTMLElement>()\n const tooltipRef = ref<TooltipInstance>()\n const tagTooltipRef = ref<TooltipInstance>()\n const inputRef = ref<HTMLElement>()\n const prefixRef = ref<HTMLElement>()\n const suffixRef = ref<HTMLElement>()\n const menuRef = ref<SelectDropdownInstance>()\n const tagMenuRef = ref<HTMLElement>()\n const collapseItemRef = ref<HTMLElement>()\n\n const {\n isComposing,\n handleCompositionStart,\n handleCompositionEnd,\n handleCompositionUpdate,\n } = useComposition({\n afterComposition: (e) => onInput(e),\n })\n\n const selectDisabled = useFormDisabled()\n\n const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {\n disabled: selectDisabled,\n afterFocus() {\n if (props.automaticDropdown && !expanded.value) {\n expanded.value = true\n states.menuVisibleOnFocus = true\n }\n },\n beforeBlur(event) {\n return (\n tooltipRef.value?.isFocusInsideContent(event) ||\n tagTooltipRef.value?.isFocusInsideContent(event)\n )\n },\n afterBlur() {\n expanded.value = false\n states.menuVisibleOnFocus = false\n if (props.validateEvent) {\n elFormItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n },\n })\n\n const allOptions = computed(() => filterOptions(''))\n\n const hasOptions = computed(() => {\n if (props.loading) return false\n return props.options.length > 0 || states.createdOptions.length > 0\n })\n\n const filteredOptions = ref<OptionType[]>([])\n // the controller of the expanded popup\n const expanded = ref(false)\n\n const needStatusIcon = computed(() => elForm?.statusIcon ?? false)\n\n const popupHeight = computed(() => {\n const totalHeight = filteredOptions.value.length * props.itemHeight\n return totalHeight > props.height ? props.height : totalHeight\n })\n\n const hasModelValue = computed(() => {\n return props.multiple\n ? isArray(props.modelValue) && props.modelValue.length > 0\n : !isEmptyValue(props.modelValue)\n })\n\n const showClearBtn = computed(() => {\n return (\n props.clearable &&\n !selectDisabled.value &&\n hasModelValue.value &&\n (isFocused.value || states.inputHovering)\n )\n })\n\n const iconComponent = computed(() =>\n props.remote && props.filterable && !props.remoteShowSuffix\n ? ''\n : props.suffixIcon\n )\n\n const iconReverse = computed(\n () => iconComponent.value && nsSelect.is('reverse', expanded.value)\n )\n\n const validateState = computed(() => elFormItem?.validateState || '')\n const validateIcon = computed(() => {\n // When we use indexed access to get the type of an undeclared property,\n // the unsafe type `any` will be inferred, which TypeScript throws an error to emphasize it.\n // To avoid TypeScript complaining about it, we use truthiness narrowing to narrow the type of validateState.\n if (!validateState.value) return\n return ValidateComponentsMap[validateState.value]\n })\n\n const debounce = computed(() => (props.remote ? props.debounce : 0))\n\n const isRemoteSearchEmpty = computed(\n () => props.remote && !states.inputValue && !hasOptions.value\n )\n\n // filteredOptions includes flatten the data into one dimensional array.\n const emptyText = computed(() => {\n if (props.loading) {\n return props.loadingText || t('el.select.loading')\n } else {\n if (\n props.filterable &&\n states.inputValue &&\n hasOptions.value &&\n filteredOptions.value.length === 0\n ) {\n return props.noMatchText || t('el.select.noMatch')\n }\n if (!hasOptions.value) {\n return props.noDataText || t('el.select.noData')\n }\n }\n return null\n })\n\n const isFilterMethodValid = computed(\n () => props.filterable && isFunction(props.filterMethod)\n )\n const isRemoteMethodValid = computed(\n () => props.filterable && props.remote && isFunction(props.remoteMethod)\n )\n\n const filterOptions = (query: string) => {\n const regexp = new RegExp(escapeStringRegexp(query), 'i')\n\n const isValidOption = (o: Option): boolean => {\n if (isFilterMethodValid.value || isRemoteMethodValid.value) return true\n // when query was given, we should test on the label see whether the label contains the given query\n return query ? regexp.test(getLabel(o) || '') : true\n }\n if (props.loading) {\n return []\n }\n\n return [...states.createdOptions, ...props.options].reduce((all, item) => {\n const options = getOptions(item)\n\n if (isArray(options)) {\n const filtered = options.filter(isValidOption)\n\n if (filtered.length > 0) {\n all.push(\n {\n label: getLabel(item),\n type: 'Group',\n },\n ...filtered\n )\n }\n } else if (props.remote || isValidOption(item)) {\n all.push(item)\n }\n\n return all\n }, []) as OptionType[]\n }\n\n const updateOptions = () => {\n filteredOptions.value = filterOptions(states.inputValue)\n }\n\n const allOptionsValueMap = computed(() => {\n const valueMap = new Map()\n\n allOptions.value.forEach((option, index) => {\n valueMap.set(getValueKey(getValue(option)), { option, index })\n })\n return valueMap\n })\n\n const filteredOptionsValueMap = computed(() => {\n const valueMap = new Map()\n\n filteredOptions.value.forEach((option, index) => {\n valueMap.set(getValueKey(getValue(option)), { option, index })\n })\n return valueMap\n })\n\n const optionsAllDisabled = computed(() =>\n filteredOptions.value.every((option) => getDisabled(option))\n )\n\n const selectSize = useFormSize()\n\n const collapseTagSize = computed(() =>\n 'small' === selectSize.value ? 'small' : 'default'\n )\n\n const calculatePopperSize = () => {\n if (isNumber(props.fitInputWidth)) {\n popperSize.value = props.fitInputWidth\n return\n }\n const width = selectRef.value?.offsetWidth || 200\n if (!props.fitInputWidth && hasOptions.value) {\n nextTick(() => {\n popperSize.value = Math.max(width, calculateLabelMaxWidth())\n })\n } else {\n popperSize.value = width\n }\n }\n\n // TODO Caching implementation\n // 1. There is no need to calculate options that have already been calculated\n // 2. Repeatedly expand and close when persistent is set to false, no need for repeated calculations\n const calculateLabelMaxWidth = () => {\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')\n const selector = nsSelect.be('dropdown', 'item')\n const dom = menuRef.value?.listRef?.innerRef || document\n const dropdownItemEl = dom.querySelector(`.${selector}`)\n if (dropdownItemEl === null || ctx === null) return 0\n const style = getComputedStyle(dropdownItemEl)\n const padding =\n Number.parseFloat(style.paddingLeft) +\n Number.parseFloat(style.paddingRight)\n ctx.font = `bold ${style.font.replace(\n new RegExp(`\\\\b${style.fontWeight}\\\\b`),\n ''\n )}`\n const maxWidth = filteredOptions.value.reduce((max, option) => {\n const metrics = ctx.measureText(getLabel(option))\n return Math.max(metrics.width, max)\n }, 0)\n return maxWidth + padding\n }\n\n const getGapWidth = () => {\n if (!selectionRef.value) return 0\n const style = window.getComputedStyle(selectionRef.value)\n return Number.parseFloat(style.gap || '6px')\n }\n\n // computed style\n const tagStyle = computed(() => {\n const gapWidth = getGapWidth()\n const inputSlotWidth = props.filterable ? gapWidth + MINIMUM_INPUT_WIDTH : 0\n const maxWidth =\n collapseItemRef.value && props.maxCollapseTags === 1\n ? states.selectionWidth -\n states.collapseItemWidth -\n gapWidth -\n inputSlotWidth\n : states.selectionWidth - inputSlotWidth\n return { maxWidth: `${maxWidth}px` }\n })\n\n const collapseTagStyle = computed(() => {\n return { maxWidth: `${states.selectionWidth}px` }\n })\n\n const shouldShowPlaceholder = computed(() => {\n if (isArray(props.modelValue)) {\n return props.modelValue.length === 0 && !states.inputValue\n }\n\n // when it's not multiple mode, we only determine this flag based on filterable and expanded\n // when filterable flag is true, which means we have input box on the screen\n return props.filterable ? !states.inputValue : true\n })\n\n const currentPlaceholder = computed(() => {\n const _placeholder = props.placeholder ?? t('el.select.placeholder')\n return props.multiple || !hasModelValue.value\n ? _placeholder\n : states.selectedLabel\n })\n\n // this obtains the actual popper DOM element.\n const popperRef = computed(() => tooltipRef.value?.popperRef?.contentRef)\n\n // the index with current value in options\n const indexRef = computed<number>(() => {\n if (props.multiple) {\n const len = (props.modelValue as []).length\n if (\n len > 0 &&\n filteredOptionsValueMap.value.has(props.modelValue[len - 1])\n ) {\n const { index } = filteredOptionsValueMap.value.get(\n props.modelValue[len - 1]\n )\n return index\n }\n } else {\n if (\n !isEmptyValue(props.modelValue) &&\n filteredOptionsValueMap.value.has(props.modelValue)\n ) {\n const { index } = filteredOptionsValueMap.value.get(props.modelValue)\n return index\n }\n }\n return -1\n })\n\n const dropdownMenuVisible = computed({\n get() {\n return (\n expanded.value &&\n (props.loading ||\n !isRemoteSearchEmpty.value ||\n (props.remote && !!slots.empty)) &&\n (!debouncing.value || !isEmpty(states.previousQuery))\n )\n },\n set(val: boolean) {\n expanded.value = val\n },\n })\n\n const showTagList = computed(() => {\n if (!props.multiple) {\n return []\n }\n return props.collapseTags\n ? states.cachedOptions.slice(0, props.maxCollapseTags)\n : states.cachedOptions\n })\n\n const collapseTagList = computed(() => {\n if (!props.multiple) {\n return []\n }\n return props.collapseTags\n ? states.cachedOptions.slice(props.maxCollapseTags)\n : []\n })\n\n // hooks\n const {\n createNewOption,\n removeNewOption,\n selectNewOption,\n clearAllNewOption,\n } = useAllowCreate(props, states)\n\n // methods\n const toggleMenu = (event?: Event) => {\n if (\n selectDisabled.value ||\n (props.filterable &&\n expanded.value &&\n event &&\n !suffixRef.value?.contains(event.target as Node))\n )\n return\n\n if (states.menuVisibleOnFocus) {\n // controlled by automaticDropdown\n states.menuVisibleOnFocus = false\n } else {\n expanded.value = !expanded.value\n }\n }\n\n const onInputChange = () => {\n if (states.inputValue.length > 0 && !expanded.value) {\n expanded.value = true\n }\n createNewOption(states.inputValue)\n nextTick(() => {\n handleQueryChange(states.inputValue)\n })\n }\n\n const debouncedOnInputChange = useDebounceFn(() => {\n onInputChange()\n debouncing.value = false\n }, debounce)\n\n const handleQueryChange = (val: string) => {\n if (states.previousQuery === val || isComposing.value) {\n return\n }\n states.previousQuery = val\n if (props.filterable && isFunction(props.filterMethod)) {\n props.filterMethod(val)\n } else if (\n props.filterable &&\n props.remote &&\n isFunction(props.remoteMethod)\n ) {\n props.remoteMethod(val)\n }\n if (\n props.defaultFirstOption &&\n (props.filterable || props.remote) &&\n filteredOptions.value.length\n ) {\n nextTick(checkDefaultFirstOption)\n } else {\n nextTick(updateHoveringIndex)\n }\n }\n\n /**\n * find and highlight first option as default selected\n * @remark\n * - if the first option in dropdown list is user-created,\n * it would be at the end of the optionsArray\n * so find it and set hover.\n * (NOTE: there must be only one user-created option in dropdown list with query)\n * - if there's no user-created option in list, just find the first one as usual\n * (NOTE: exclude options that are disabled or in disabled-group)\n */\n const checkDefaultFirstOption = () => {\n const optionsInDropdown = filteredOptions.value.filter(\n (n) => !n.disabled && n.type !== 'Group'\n )\n const userCreatedOption = optionsInDropdown.find((n) => n.created)\n const firstOriginOption = optionsInDropdown[0]\n states.hoveringIndex = getValueIndex(\n filteredOptions.value,\n userCreatedOption || firstOriginOption\n )\n }\n\n const emitChange = (val: any | any[]) => {\n if (!isEqual(props.modelValue, val)) {\n emit(CHANGE_EVENT, val)\n }\n }\n\n const update = (val: any) => {\n emit(UPDATE_MODEL_EVENT, val)\n emitChange(val)\n states.previousValue = props.multiple ? String(val) : val\n\n nextTick(() => {\n if (props.multiple && isArray(props.modelValue)) {\n const cachedOptions = states.cachedOptions.slice()\n const selectedOptions = props.modelValue.map((value) =>\n getOption(value, cachedOptions)\n )\n\n if (!isEqual(states.cachedOptions, selectedOptions)) {\n states.cachedOptions = selectedOptions\n }\n } else {\n initStates(true)\n }\n })\n }\n\n const getValueIndex = (arr: unknown[] = [], value: unknown) => {\n if (!isObject(value)) {\n return arr.indexOf(value)\n }\n const valueKey = props.valueKey\n let index = -1\n arr.some((item, i) => {\n if (get(item, valueKey) === get(value, valueKey)) {\n index = i\n return true\n }\n return false\n })\n return index\n }\n\n const getValueKey = (item: unknown) => {\n return isObject(item) ? get(item, props.valueKey) : item\n }\n\n const handleResize = () => {\n calculatePopperSize()\n }\n\n const resetSelectionWidth = () => {\n states.selectionWidth = Number.parseFloat(\n window.getComputedStyle(selectionRef.value!).width\n )\n }\n\n const resetCollapseItemWidth = () => {\n states.collapseItemWidth =\n collapseItemRef.value!.getBoundingClientRect().width\n }\n\n const updateTooltip = () => {\n tooltipRef.value?.updatePopper?.()\n }\n\n const updateTagTooltip = () => {\n tagTooltipRef.value?.updatePopper?.()\n }\n\n const onSelect = (option: Option) => {\n const optionValue = getValue(option)\n\n if (props.multiple) {\n let selectedOptions = (props.modelValue as any[]).slice()\n\n const index = getValueIndex(selectedOptions, optionValue)\n if (index > -1) {\n selectedOptions = [\n ...selectedOptions.slice(0, index),\n ...selectedOptions.slice(index + 1),\n ]\n states.cachedOptions.splice(index, 1)\n removeNewOption(option)\n } else if (\n props.multipleLimit <= 0 ||\n selectedOptions.length < props.multipleLimit\n ) {\n selectedOptions = [...selectedOptions, optionValue]\n states.cachedOptions.push(option)\n selectNewOption(option)\n }\n update(selectedOptions)\n if (option.created) {\n handleQueryChange('')\n }\n if (props.filterable && (option.created || !props.reserveKeyword)) {\n states.inputValue = ''\n }\n } else {\n states.selectedLabel = getLabel(option)\n !isEqual(props.modelValue, optionValue) && update(optionValue)\n expanded.value = false\n selectNewOption(option)\n if (!option.created) {\n clearAllNewOption()\n }\n }\n focus()\n }\n\n const deleteTag = (event: MouseEvent, option: Option) => {\n let selectedOptions = (props.modelValue as any[]).slice()\n\n const index = getValueIndex(selectedOptions, getValue(option))\n\n if (index > -1 && !selectDisabled.value) {\n selectedOptions = [\n ...(props.modelValue as Array<unknown>).slice(0, index),\n ...(props.modelValue as Array<unknown>).slice(index + 1),\n ]\n states.cachedOptions.splice(index, 1)\n update(selectedOptions)\n emit('remove-tag', getValue(option))\n removeNewOption(option)\n }\n event.stopPropagation()\n focus()\n }\n\n const focus = () => {\n inputRef.value?.focus()\n }\n\n const blur = () => {\n if (expanded.value) {\n expanded.value = false\n nextTick(() => inputRef.value?.blur())\n return\n }\n inputRef.value?.blur()\n }\n\n // keyboard handlers\n const handleEsc = () => {\n if (states.inputValue.length > 0) {\n states.inputValue = ''\n } else {\n expanded.value = false\n }\n }\n\n const getLastNotDisabledIndex = (value: unknown[]) =>\n findLastIndex(\n value,\n (it) =>\n !states.cachedOptions.some(\n (option) => getValue(option) === it && getDisabled(option)\n )\n )\n\n const handleDel = (e: KeyboardEvent) => {\n const code = getEventCode(e)\n if (!props.multiple) return\n if (code === EVENT_CODE.delete) return\n if (states.inputValue.length === 0) {\n e.preventDefault()\n const selected = (props.modelValue as Array<any>).slice()\n const lastNotDisabledIndex = getLastNotDisabledIndex(selected)\n if (lastNotDisabledIndex < 0) return\n const removeTagValue = selected[lastNotDisabledIndex]\n selected.splice(lastNotDisabledIndex, 1)\n const option = states.cachedOptions[lastNotDisabledIndex]\n states.cachedOptions.splice(lastNotDisabledIndex, 1)\n removeNewOption(option)\n update(selected)\n emit('remove-tag', removeTagValue)\n }\n }\n\n const handleClear = () => {\n let emptyValue: string | any[]\n if (isArray(props.modelValue)) {\n emptyValue = []\n } else {\n emptyValue = valueOnClear.value\n }\n\n states.selectedLabel = ''\n\n expanded.value = false\n update(emptyValue)\n emit('clear')\n clearAllNewOption()\n focus()\n }\n\n const onKeyboardNavigate = (\n direction: 'forward' | 'backward',\n hoveringIndex: number | undefined = undefined\n ): void => {\n const options = filteredOptions.value\n if (\n !['forward', 'backward'].includes(direction) ||\n selectDisabled.value ||\n options.length <= 0 ||\n optionsAllDisabled.value ||\n isComposing.value\n ) {\n return\n }\n if (!expanded.value) {\n return toggleMenu()\n }\n if (isUndefined(hoveringIndex)) {\n hoveringIndex = states.hoveringIndex\n }\n let newIndex = -1\n if (direction === 'forward') {\n newIndex = hoveringIndex + 1\n if (newIndex >= options.length) {\n // return to the first option\n newIndex = 0\n }\n } else if (direction === 'backward') {\n newIndex = hoveringIndex - 1\n if (newIndex < 0 || newIndex >= options.length) {\n // navigate to the last one\n newIndex = options.length - 1\n }\n }\n const option = options[newIndex]\n if (getDisabled(option) || option.type === 'Group') {\n // prevent dispatching multiple nextTick callbacks.\n return onKeyboardNavigate(direction, newIndex)\n } else {\n states.hoveringIndex = newIndex\n scrollToItem(newIndex)\n }\n }\n\n const onKeyboardSelect = () => {\n if (!expanded.value) {\n return toggleMenu()\n } else if (\n ~states.hoveringIndex &&\n filteredOptions.value[states.hoveringIndex]\n ) {\n onSelect(filteredOptions.value[states.hoveringIndex])\n }\n }\n\n const onHoverOption = (idx?: number) => {\n states.hoveringIndex = idx ?? -1\n }\n\n const updateHoveringIndex = () => {\n if (!props.multiple) {\n states.hoveringIndex = filteredOptions.value.findIndex((item) => {\n return getValueKey(getValue(item)) === getValueKey(props.modelValue)\n })\n } else {\n const length = props.modelValue.length\n if (length > 0) {\n const lastValue = props.modelValue[length - 1]\n states.hoveringIndex = filteredOptions.value.findIndex(\n (item) => getValueKey(lastValue) === getValueKey(getValue(item))\n )\n } else {\n states.hoveringIndex = -1\n }\n }\n }\n\n const onInput = (event: Event) => {\n states.inputValue = (event.target as HTMLInputElement).value\n if (props.remote) {\n debouncing.value = true\n debouncedOnInputChange()\n } else {\n return onInputChange()\n }\n }\n\n const handleClickOutside = (event: Event) => {\n expanded.value = false\n\n if (isFocused.value) {\n const _event = new FocusEvent('blur', event)\n handleBlur(_event)\n }\n }\n\n const handleMenuEnter = () => {\n states.isBeforeHide = false\n return nextTick(() => {\n if (~indexRef.value) {\n scrollToItem(indexRef.value)\n }\n })\n }\n\n const scrollToItem = (index: number) => {\n menuRef.value!.scrollToItem(index)\n }\n\n const getOption = (value: unknown, cachedOptions?: Option[]) => {\n // match the option with the given value, if not found, create a new option\n const selectValue = getValueKey(value)\n\n if (allOptionsValueMap.value.has(selectValue)) {\n const { option } = allOptionsValueMap.value.get(selectValue)\n\n return option\n }\n if (cachedOptions && cachedOptions.length) {\n const option = cachedOptions.find(\n (option) => getValueKey(getValue(option)) === selectValue\n )\n if (option) {\n return option\n }\n }\n\n return {\n [aliasProps.value.value]: value,\n [aliasProps.value.label]: value,\n }\n }\n\n const getIndex = (option: Option) =>\n allOptionsValueMap.value.get(getValue(option))?.index ?? -1\n\n const initStates = (needUpdateSelectedLabel = false) => {\n if (props.multiple) {\n if ((props.modelValue as Array<any>).length > 0) {\n const cachedOptions = states.cachedOptions.slice()\n states.cachedOptions.length = 0\n states.previousValue = props.modelValue.toString()\n\n for (const value of props.modelValue) {\n const option = getOption(value, cachedOptions)\n states.cachedOptions.push(option)\n }\n } else {\n states.cachedOptions = []\n states.previousValue = undefined\n }\n } else {\n if (hasModelValue.value) {\n states.previousValue = props.modelValue\n const options = filteredOptions.value\n const selectedItemIndex = options.findIndex(\n (option) =>\n getValueKey(getValue(option)) === getValueKey(props.modelValue)\n )\n if (~selectedItemIndex) {\n states.selectedLabel = getLabel(options[selectedItemIndex])\n } else {\n if (!states.selectedLabel || needUpdateSelectedLabel) {\n states.selectedLabel = getValueKey(props.modelValue)\n }\n }\n } else {\n states.selectedLabel = ''\n states.previousValue = undefined\n }\n }\n clearAllNewOption()\n calculatePopperSize()\n }\n\n watch(\n () => props.fitInputWidth,\n () => {\n calculatePopperSize()\n }\n )\n\n // in order to track these individually, we need to turn them into refs instead of watching the entire\n // reactive object which could cause perf penalty when unnecessary field gets changed the watch method will\n // be invoked.\n\n watch(expanded, (val) => {\n if (val) {\n if (!props.persistent) {\n calculatePopperSize()\n }\n handleQueryChange('')\n } else {\n states.inputValue = ''\n states.previousQuery = null\n states.isBeforeHide = true\n states.menuVisibleOnFocus = false\n createNewOption('')\n }\n })\n\n watch(\n () => props.modelValue,\n (val, oldVal) => {\n const isValEmpty = !val || (isArray(val) && val.length === 0)\n\n if (\n isValEmpty ||\n (props.multiple && !isEqual(val.toString(), states.previousValue)) ||\n (!props.multiple &&\n getValueKey(val) !== getValueKey(states.previousValue))\n ) {\n initStates(true)\n }\n if (!isEqual(val, oldVal) && props.validateEvent) {\n elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n },\n {\n deep: true,\n }\n )\n\n watch(\n () => props.options,\n () => {\n const input = inputRef.value\n // filter or remote-search scenarios are not initialized\n if (!input || (input && document.activeElement !== input)) {\n initStates()\n }\n },\n {\n deep: true,\n flush: 'post',\n }\n )\n\n // fix the problem that scrollTop is not reset in filterable mode\n watch(\n () => filteredOptions.value,\n () => {\n calculatePopperSize()\n return menuRef.value && nextTick(menuRef.value.resetScrollTop)\n }\n )\n\n watchEffect(() => {\n // Anything could cause options changed, then update options\n // If you want to control it by condition, write here\n if (states.isBeforeHide) return\n updateOptions()\n })\n\n watchEffect(() => {\n const { valueKey, options } = props\n const duplicateValue = new Map()\n for (const item of options) {\n const optionValue = getValue(item)\n let v = optionValue\n if (isObject(v)) {\n v = get(optionValue, valueKey)\n }\n if (duplicateValue.get(v)) {\n debugWarn(\n 'ElSelectV2',\n `The option values you provided seem to be duplicated, which may cause some problems, please check.`\n )\n break\n } else {\n duplicateValue.set(v, true)\n }\n }\n })\n\n onMounted(() => {\n initStates()\n })\n useResizeObserver(selectRef, handleResize)\n useResizeObserver(selectionRef, resetSelectionWidth)\n useResizeObserver(wrapperRef, updateTooltip)\n useResizeObserver(tagMenuRef, updateTagTooltip)\n useResizeObserver(collapseItemRef, resetCollapseItemWidth)\n\n // #21498\n let stop: (() => void) | undefined\n watch(\n () => dropdownMenuVisible.value,\n (newVal) => {\n if (newVal) {\n stop = useResizeObserver(menuRef, updateTooltip).stop\n } else {\n stop?.()\n stop = undefined\n }\n emit('visible-change', newVal)\n }\n )\n\n return {\n // data exports\n inputId,\n collapseTagSize,\n currentPlaceholder,\n expanded,\n emptyText,\n popupHeight,\n debounce,\n allOptions,\n allOptionsValueMap,\n filteredOptions,\n iconComponent,\n iconReverse,\n tagStyle,\n collapseTagStyle,\n popperSize,\n dropdownMenuVisible,\n hasModelValue,\n shouldShowPlaceholder,\n selectDisabled,\n selectSize,\n needStatusIcon,\n showClearBtn,\n states,\n isFocused,\n nsSelect,\n nsInput,\n\n // refs items exports\n inputRef,\n menuRef,\n tagMenuRef,\n tooltipRef,\n tagTooltipRef,\n selectRef,\n wrapperRef,\n selectionRef,\n prefixRef,\n suffixRef,\n collapseItemRef,\n\n popperRef,\n\n validateState,\n validateIcon,\n showTagList,\n collapseTagList,\n\n // methods exports\n debouncedOnInputChange,\n deleteTag,\n getLabel,\n getValue,\n getDisabled,\n getValueKey,\n getIndex,\n handleClear,\n handleClickOutside,\n handleDel,\n handleEsc,\n focus,\n blur,\n handleMenuEnter,\n handleResize,\n resetSelectionWidth,\n updateTooltip,\n updateTagTooltip,\n updateOptions,\n toggleMenu,\n scrollTo: scrollToItem,\n onInput,\n onKeyboardNavigate,\n onKeyboardSelect,\n onSelect,\n onHover: onHoverOption,\n handleCompositionStart,\n handleCompositionEnd,\n handleCompositionUpdate,\n }\n}\n\nexport default useSelect\n"],"names":["_a","option"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tree-node.vue.mjs","sources":["../../../../../../packages/components/tree/src/tree-node.vue"],"sourcesContent":["<template>\n <div\n v-show=\"node.visible\"\n ref=\"node$\"\n :class=\"[\n ns.b('node'),\n ns.is('expanded', expanded),\n ns.is('current', node.isCurrent),\n ns.is('hidden', !node.visible),\n ns.is('focusable', !node.disabled),\n ns.is('checked', !node.disabled && node.checked),\n getNodeClass(node),\n ]\"\n role=\"treeitem\"\n tabindex=\"-1\"\n :aria-expanded=\"expanded\"\n :aria-disabled=\"node.disabled\"\n :aria-checked=\"node.checked\"\n :draggable=\"tree.props.draggable\"\n :data-key=\"getNodeKey(node)\"\n @click.stop=\"handleClick\"\n @contextmenu=\"handleContextMenu\"\n @dragstart.stop=\"handleDragStart\"\n @dragover.stop=\"handleDragOver\"\n @dragend.stop=\"handleDragEnd\"\n @drop.stop=\"handleDrop\"\n >\n <div\n :class=\"ns.be('node', 'content')\"\n :style=\"{ paddingLeft: (node.level - 1) * tree.props.indent + 'px' }\"\n >\n <el-icon\n v-if=\"tree.props.icon || CaretRight\"\n :class=\"[\n ns.be('node', 'expand-icon'),\n ns.is('leaf', node.isLeaf),\n {\n expanded: !node.isLeaf && expanded,\n },\n ]\"\n @click.stop=\"handleExpandIconClick\"\n >\n <component :is=\"tree.props.icon || CaretRight\" />\n </el-icon>\n <el-checkbox\n v-if=\"showCheckbox\"\n :model-value=\"node.checked\"\n :indeterminate=\"node.indeterminate\"\n :disabled=\"!!node.disabled\"\n @click.stop\n @change=\"handleCheckChange\"\n />\n <el-icon\n v-if=\"node.loading\"\n :class=\"[ns.be('node', 'loading-icon'), ns.is('loading')]\"\n >\n <loading />\n </el-icon>\n <node-content :node=\"node\" :render-content=\"renderContent\" />\n </div>\n <el-collapse-transition>\n <div\n v-if=\"!renderAfterExpand || childNodeRendered\"\n v-show=\"expanded\"\n :class=\"ns.be('node', 'children')\"\n role=\"group\"\n :aria-expanded=\"expanded\"\n @click.stop\n >\n <el-tree-node\n v-for=\"child in node.childNodes\"\n :key=\"getNodeKey(child)\"\n :render-content=\"renderContent\"\n :render-after-expand=\"renderAfterExpand\"\n :show-checkbox=\"showCheckbox\"\n :node=\"child\"\n :accordion=\"accordion\"\n :props=\"props\"\n @node-expand=\"handleChildNodeExpand\"\n />\n </div>\n </el-collapse-transition>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n getCurrentInstance,\n inject,\n nextTick,\n provide,\n ref,\n watch,\n} from 'vue'\nimport { debugWarn, isFunction, isString } from '@element-plus/utils'\nimport ElCollapseTransition from '@element-plus/components/collapse-transition'\nimport ElCheckbox from '@element-plus/components/checkbox'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { CaretRight, Loading } from '@element-plus/icons-vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport NodeContent from './tree-node-content.vue'\nimport { getNodeKey as getNodeKeyUtil, handleCurrentChange } from './model/util'\nimport { useNodeExpandEventBroadcast } from './model/useNodeExpandEventBroadcast'\nimport { dragEventsKey } from './model/useDragNode'\nimport Node from './model/node'\nimport { NODE_INSTANCE_INJECTION_KEY, ROOT_TREE_INJECTION_KEY } from './tokens'\n\nimport type { ComponentInternalInstance, PropType } from 'vue'\nimport type { RootTreeType, TreeNodeData, TreeOptionProps } from './tree.type'\nimport type { CheckboxValueType } from '@element-plus/components/checkbox'\n\nexport default defineComponent({\n name: 'ElTreeNode',\n components: {\n ElCollapseTransition,\n ElCheckbox,\n NodeContent,\n ElIcon,\n Loading,\n },\n props: {\n node: {\n type: Node,\n default: () => ({}),\n },\n props: {\n type: Object as PropType<TreeOptionProps>,\n default: () => ({}),\n },\n accordion: Boolean,\n renderContent: Function,\n renderAfterExpand: Boolean,\n showCheckbox: Boolean,\n },\n emits: ['node-expand'],\n setup(props, ctx) {\n const ns = useNamespace('tree')\n const { broadcastExpanded } = useNodeExpandEventBroadcast(props)\n const tree = inject<RootTreeType>(ROOT_TREE_INJECTION_KEY)!\n const expanded = ref(false)\n const childNodeRendered = ref(false)\n const oldChecked = ref<boolean>()\n const oldIndeterminate = ref<boolean>()\n const node$ = ref<HTMLElement>()\n const dragEvents = inject(dragEventsKey)!\n const instance = getCurrentInstance()\n\n provide(NODE_INSTANCE_INJECTION_KEY, instance)\n if (!tree) {\n debugWarn('Tree', \"Can not find node's tree.\")\n }\n\n if (props.node.expanded) {\n expanded.value = true\n childNodeRendered.value = true\n }\n\n const childrenKey = tree.props.props['children'] || 'children'\n watch(\n () => {\n const children = props.node.data?.[childrenKey]\n return children && [...children]\n },\n () => {\n props.node.updateChildren()\n }\n )\n\n watch(\n () => props.node.indeterminate,\n (val) => {\n handleSelectChange(props.node.checked, val)\n }\n )\n\n watch(\n () => props.node.checked,\n (val) => {\n handleSelectChange(val, props.node.indeterminate)\n }\n )\n\n watch(\n () => props.node.childNodes.length,\n () => props.node.reInitChecked()\n )\n\n watch(\n () => props.node.expanded,\n (val) => {\n nextTick(() => (expanded.value = val))\n if (val) {\n childNodeRendered.value = true\n }\n }\n )\n\n const getNodeKey = (node: Node): any => {\n return getNodeKeyUtil(tree.props.nodeKey, node.data)\n }\n\n const getNodeClass = (node: Node) => {\n const nodeClassFunc = props.props.class\n if (!nodeClassFunc) {\n return {}\n }\n let className\n if (isFunction(nodeClassFunc)) {\n const { data } = node\n className = nodeClassFunc(data, node)\n } else {\n className = nodeClassFunc\n }\n\n if (isString(className)) {\n return { [className]: true }\n } else {\n return className\n }\n }\n\n const handleSelectChange = (checked: boolean, indeterminate: boolean) => {\n if (\n oldChecked.value !== checked ||\n oldIndeterminate.value !== indeterminate\n ) {\n tree.ctx.emit('check-change', props.node.data, checked, indeterminate)\n }\n oldChecked.value = checked\n oldIndeterminate.value = indeterminate\n }\n\n const handleClick = (e: MouseEvent) => {\n handleCurrentChange(tree.store, tree.ctx.emit, () => {\n const nodeKeyProp = tree?.props?.nodeKey\n if (nodeKeyProp) {\n const curNodeKey = getNodeKey(props.node)\n tree.store.value.setCurrentNodeKey(curNodeKey)\n } else {\n tree.store.value.setCurrentNode(props.node)\n }\n })\n tree.currentNode.value = props.node\n\n if (tree.props.expandOnClickNode) {\n handleExpandIconClick()\n }\n\n if (\n (tree.props.checkOnClickNode ||\n (props.node.isLeaf &&\n tree.props.checkOnClickLeaf &&\n props.showCheckbox)) &&\n !props.node.disabled\n ) {\n handleCheckChange(!props.node.checked)\n }\n tree.ctx.emit('node-click', props.node.data, props.node, instance, e)\n }\n\n const handleContextMenu = (event: Event) => {\n if (tree.instance.vnode.props?.['onNodeContextmenu']) {\n event.stopPropagation()\n event.preventDefault()\n }\n tree.ctx.emit(\n 'node-contextmenu',\n event,\n props.node.data,\n props.node,\n instance\n )\n }\n\n const handleExpandIconClick = () => {\n if (props.node.isLeaf) return\n if (expanded.value) {\n tree.ctx.emit('node-collapse', props.node.data, props.node, instance)\n props.node.collapse()\n } else {\n props.node.expand(() => {\n ctx.emit('node-expand', props.node.data, props.node, instance)\n })\n }\n }\n\n const handleCheckChange = (value: CheckboxValueType) => {\n const checkStrictly = tree?.props.checkStrictly\n const childNodes = props.node.childNodes\n if (!checkStrictly && childNodes.length) {\n value = childNodes.some((node) => !node.isEffectivelyChecked)\n }\n props.node.setChecked(value as boolean, !checkStrictly)\n nextTick(() => {\n const store = tree.store.value\n tree.ctx.emit('check', props.node.data, {\n checkedNodes: store.getCheckedNodes(),\n checkedKeys: store.getCheckedKeys(),\n halfCheckedNodes: store.getHalfCheckedNodes(),\n halfCheckedKeys: store.getHalfCheckedKeys(),\n })\n })\n }\n\n const handleChildNodeExpand = (\n nodeData: TreeNodeData,\n node: Node,\n instance: ComponentInternalInstance\n ) => {\n broadcastExpanded(node)\n tree.ctx.emit('node-expand', nodeData, node, instance)\n }\n\n const handleDragStart = (event: DragEvent) => {\n if (!tree.props.draggable) return\n dragEvents.treeNodeDragStart({ event, treeNode: props })\n }\n\n const handleDragOver = (event: DragEvent) => {\n event.preventDefault()\n if (!tree.props.draggable) return\n dragEvents.treeNodeDragOver({\n event,\n treeNode: { $el: node$.value, node: props.node },\n })\n }\n\n const handleDrop = (event: DragEvent) => {\n event.preventDefault()\n }\n\n const handleDragEnd = (event: DragEvent) => {\n if (!tree.props.draggable) return\n dragEvents.treeNodeDragEnd(event)\n }\n\n return {\n ns,\n node$,\n tree,\n expanded,\n childNodeRendered,\n oldChecked,\n oldIndeterminate,\n getNodeKey,\n getNodeClass,\n handleSelectChange,\n handleClick,\n handleContextMenu,\n handleExpandIconClick,\n handleCheckChange,\n handleChildNodeExpand,\n handleDragStart,\n handleDragOver,\n handleDrop,\n handleDragEnd,\n CaretRight,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","_normalizeStyle","_openBlock","_createBlock","_withModifiers","_resolveDynamicComponent","_createCommentVNode","_createVNode","_withCtx","_Fragment","_renderList","_vShow"],"mappings":"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"}
1
+ {"version":3,"file":"tree-node.vue.mjs","sources":["../../../../../../packages/components/tree/src/tree-node.vue"],"sourcesContent":["<template>\n <div\n v-show=\"node.visible\"\n ref=\"node$\"\n :class=\"[\n ns.b('node'),\n ns.is('expanded', expanded),\n ns.is('current', node.isCurrent),\n ns.is('hidden', !node.visible),\n ns.is('focusable', !node.disabled),\n ns.is('checked', !node.disabled && node.checked),\n getNodeClass(node),\n ]\"\n role=\"treeitem\"\n tabindex=\"-1\"\n :aria-expanded=\"expanded\"\n :aria-disabled=\"node.disabled\"\n :aria-checked=\"node.checked\"\n :draggable=\"tree.props.draggable\"\n :data-key=\"getNodeKey(node)\"\n @click.stop=\"handleClick\"\n @contextmenu=\"handleContextMenu\"\n @dragstart.stop=\"handleDragStart\"\n @dragover.stop=\"handleDragOver\"\n @dragend.stop=\"handleDragEnd\"\n @drop.stop=\"handleDrop\"\n >\n <div\n :class=\"ns.be('node', 'content')\"\n :style=\"{ paddingLeft: (node.level - 1) * tree.props.indent + 'px' }\"\n >\n <el-icon\n v-if=\"tree.props.icon || CaretRight\"\n :class=\"[\n ns.be('node', 'expand-icon'),\n ns.is('leaf', node.isLeaf),\n {\n expanded: !node.isLeaf && expanded,\n },\n ]\"\n @click.stop=\"handleExpandIconClick\"\n >\n <component :is=\"tree.props.icon || CaretRight\" />\n </el-icon>\n <el-checkbox\n v-if=\"showCheckbox\"\n :model-value=\"node.checked\"\n :indeterminate=\"node.indeterminate\"\n :disabled=\"!!node.disabled\"\n @click.stop\n @change=\"handleCheckChange\"\n />\n <el-icon\n v-if=\"node.loading\"\n :class=\"[ns.be('node', 'loading-icon'), ns.is('loading')]\"\n >\n <loading />\n </el-icon>\n <node-content :node=\"node\" :render-content=\"renderContent\" />\n </div>\n <el-collapse-transition>\n <div\n v-if=\"!renderAfterExpand || childNodeRendered\"\n v-show=\"expanded\"\n :class=\"ns.be('node', 'children')\"\n role=\"group\"\n :aria-expanded=\"expanded\"\n @click.stop\n >\n <el-tree-node\n v-for=\"child in node.childNodes\"\n :key=\"getNodeKey(child)\"\n :render-content=\"renderContent\"\n :render-after-expand=\"renderAfterExpand\"\n :show-checkbox=\"showCheckbox\"\n :node=\"child\"\n :accordion=\"accordion\"\n :props=\"props\"\n @node-expand=\"handleChildNodeExpand\"\n />\n </div>\n </el-collapse-transition>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n getCurrentInstance,\n inject,\n nextTick,\n provide,\n ref,\n watch,\n} from 'vue'\nimport { debugWarn, isFunction, isString } from '@element-plus/utils'\nimport ElCollapseTransition from '@element-plus/components/collapse-transition'\nimport ElCheckbox from '@element-plus/components/checkbox'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { CaretRight, Loading } from '@element-plus/icons-vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport NodeContent from './tree-node-content.vue'\nimport { getNodeKey as getNodeKeyUtil, handleCurrentChange } from './model/util'\nimport { useNodeExpandEventBroadcast } from './model/useNodeExpandEventBroadcast'\nimport { dragEventsKey } from './model/useDragNode'\nimport Node from './model/node'\nimport { NODE_INSTANCE_INJECTION_KEY, ROOT_TREE_INJECTION_KEY } from './tokens'\n\nimport type { ComponentInternalInstance, PropType } from 'vue'\nimport type { RootTreeType, TreeNodeData, TreeOptionProps } from './tree.type'\nimport type { CheckboxValueType } from '@element-plus/components/checkbox'\n\nexport default defineComponent({\n name: 'ElTreeNode',\n components: {\n ElCollapseTransition,\n ElCheckbox,\n NodeContent,\n ElIcon,\n Loading,\n },\n props: {\n node: {\n type: Node,\n default: () => ({}),\n },\n props: {\n type: Object as PropType<TreeOptionProps>,\n default: () => ({}),\n },\n accordion: Boolean,\n renderContent: Function,\n renderAfterExpand: Boolean,\n showCheckbox: Boolean,\n },\n emits: ['node-expand'],\n setup(props, ctx) {\n const ns = useNamespace('tree')\n const { broadcastExpanded } = useNodeExpandEventBroadcast(props)\n const tree = inject<RootTreeType>(ROOT_TREE_INJECTION_KEY)!\n const expanded = ref(false)\n const childNodeRendered = ref(false)\n const oldChecked = ref<boolean>()\n const oldIndeterminate = ref<boolean>()\n const node$ = ref<HTMLElement>()\n const dragEvents = inject(dragEventsKey)!\n const instance = getCurrentInstance()\n\n provide(NODE_INSTANCE_INJECTION_KEY, instance)\n if (!tree) {\n debugWarn('Tree', \"Can not find node's tree.\")\n }\n\n if (props.node.expanded) {\n expanded.value = true\n childNodeRendered.value = true\n }\n\n const childrenKey = tree.props.props['children'] || 'children'\n watch(\n () => {\n const children = props.node.data?.[childrenKey]\n return children && [...children]\n },\n () => {\n props.node.updateChildren()\n }\n )\n\n watch(\n () => props.node.indeterminate,\n (val) => {\n handleSelectChange(props.node.checked, val)\n }\n )\n\n watch(\n () => props.node.checked,\n (val) => {\n handleSelectChange(val, props.node.indeterminate)\n }\n )\n\n watch(\n () => props.node.childNodes.length,\n () => props.node.reInitChecked()\n )\n\n watch(\n () => props.node.expanded,\n (val) => {\n nextTick(() => (expanded.value = val))\n if (val) {\n childNodeRendered.value = true\n }\n }\n )\n\n const getNodeKey = (node: Node): any => {\n return tree.props.nodeKey\n ? getNodeKeyUtil(tree.props.nodeKey, node.data)\n : node.id\n }\n\n const getNodeClass = (node: Node) => {\n const nodeClassFunc = props.props.class\n if (!nodeClassFunc) {\n return {}\n }\n let className\n if (isFunction(nodeClassFunc)) {\n const { data } = node\n className = nodeClassFunc(data, node)\n } else {\n className = nodeClassFunc\n }\n\n if (isString(className)) {\n return { [className]: true }\n } else {\n return className\n }\n }\n\n const handleSelectChange = (checked: boolean, indeterminate: boolean) => {\n if (\n oldChecked.value !== checked ||\n oldIndeterminate.value !== indeterminate\n ) {\n tree.ctx.emit('check-change', props.node.data, checked, indeterminate)\n }\n oldChecked.value = checked\n oldIndeterminate.value = indeterminate\n }\n\n const handleClick = (e: MouseEvent) => {\n handleCurrentChange(tree.store, tree.ctx.emit, () => {\n const nodeKeyProp = tree?.props?.nodeKey\n if (nodeKeyProp) {\n const curNodeKey = getNodeKey(props.node)\n tree.store.value.setCurrentNodeKey(curNodeKey)\n } else {\n tree.store.value.setCurrentNode(props.node)\n }\n })\n tree.currentNode.value = props.node\n\n if (tree.props.expandOnClickNode) {\n handleExpandIconClick()\n }\n\n if (\n (tree.props.checkOnClickNode ||\n (props.node.isLeaf &&\n tree.props.checkOnClickLeaf &&\n props.showCheckbox)) &&\n !props.node.disabled\n ) {\n handleCheckChange(!props.node.checked)\n }\n tree.ctx.emit('node-click', props.node.data, props.node, instance, e)\n }\n\n const handleContextMenu = (event: Event) => {\n if (tree.instance.vnode.props?.['onNodeContextmenu']) {\n event.stopPropagation()\n event.preventDefault()\n }\n tree.ctx.emit(\n 'node-contextmenu',\n event,\n props.node.data,\n props.node,\n instance\n )\n }\n\n const handleExpandIconClick = () => {\n if (props.node.isLeaf) return\n if (expanded.value) {\n tree.ctx.emit('node-collapse', props.node.data, props.node, instance)\n props.node.collapse()\n } else {\n props.node.expand(() => {\n ctx.emit('node-expand', props.node.data, props.node, instance)\n })\n }\n }\n\n const handleCheckChange = (value: CheckboxValueType) => {\n const checkStrictly = tree?.props.checkStrictly\n const childNodes = props.node.childNodes\n if (!checkStrictly && childNodes.length) {\n value = childNodes.some((node) => !node.isEffectivelyChecked)\n }\n props.node.setChecked(value as boolean, !checkStrictly)\n nextTick(() => {\n const store = tree.store.value\n tree.ctx.emit('check', props.node.data, {\n checkedNodes: store.getCheckedNodes(),\n checkedKeys: store.getCheckedKeys(),\n halfCheckedNodes: store.getHalfCheckedNodes(),\n halfCheckedKeys: store.getHalfCheckedKeys(),\n })\n })\n }\n\n const handleChildNodeExpand = (\n nodeData: TreeNodeData,\n node: Node,\n instance: ComponentInternalInstance\n ) => {\n broadcastExpanded(node)\n tree.ctx.emit('node-expand', nodeData, node, instance)\n }\n\n const handleDragStart = (event: DragEvent) => {\n if (!tree.props.draggable) return\n dragEvents.treeNodeDragStart({ event, treeNode: props })\n }\n\n const handleDragOver = (event: DragEvent) => {\n event.preventDefault()\n if (!tree.props.draggable) return\n dragEvents.treeNodeDragOver({\n event,\n treeNode: { $el: node$.value, node: props.node },\n })\n }\n\n const handleDrop = (event: DragEvent) => {\n event.preventDefault()\n }\n\n const handleDragEnd = (event: DragEvent) => {\n if (!tree.props.draggable) return\n dragEvents.treeNodeDragEnd(event)\n }\n\n return {\n ns,\n node$,\n tree,\n expanded,\n childNodeRendered,\n oldChecked,\n oldIndeterminate,\n getNodeKey,\n getNodeClass,\n handleSelectChange,\n handleClick,\n handleContextMenu,\n handleExpandIconClick,\n handleCheckChange,\n handleChildNodeExpand,\n handleDragStart,\n handleDragOver,\n handleDrop,\n handleDragEnd,\n CaretRight,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","_normalizeStyle","_openBlock","_createBlock","_withModifiers","_resolveDynamicComponent","_createCommentVNode","_createVNode","_withCtx","_Fragment","_renderList","_vShow"],"mappings":"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"}
@@ -93,7 +93,7 @@ var _sfc_main = defineComponent({
93
93
  }
94
94
  );
95
95
  const getNodeKey$1 = (node) => {
96
- return getNodeKey(tree.props.nodeKey, node.data);
96
+ return tree.props.nodeKey ? getNodeKey(tree.props.nodeKey, node.data) : node.id;
97
97
  };
98
98
  const getNodeClass = (node) => {
99
99
  const nodeClassFunc = props.props.class;
@@ -1 +1 @@
1
- {"version":3,"file":"tree-node.vue2.mjs","sources":["../../../../../../packages/components/tree/src/tree-node.vue"],"sourcesContent":["<template>\n <div\n v-show=\"node.visible\"\n ref=\"node$\"\n :class=\"[\n ns.b('node'),\n ns.is('expanded', expanded),\n ns.is('current', node.isCurrent),\n ns.is('hidden', !node.visible),\n ns.is('focusable', !node.disabled),\n ns.is('checked', !node.disabled && node.checked),\n getNodeClass(node),\n ]\"\n role=\"treeitem\"\n tabindex=\"-1\"\n :aria-expanded=\"expanded\"\n :aria-disabled=\"node.disabled\"\n :aria-checked=\"node.checked\"\n :draggable=\"tree.props.draggable\"\n :data-key=\"getNodeKey(node)\"\n @click.stop=\"handleClick\"\n @contextmenu=\"handleContextMenu\"\n @dragstart.stop=\"handleDragStart\"\n @dragover.stop=\"handleDragOver\"\n @dragend.stop=\"handleDragEnd\"\n @drop.stop=\"handleDrop\"\n >\n <div\n :class=\"ns.be('node', 'content')\"\n :style=\"{ paddingLeft: (node.level - 1) * tree.props.indent + 'px' }\"\n >\n <el-icon\n v-if=\"tree.props.icon || CaretRight\"\n :class=\"[\n ns.be('node', 'expand-icon'),\n ns.is('leaf', node.isLeaf),\n {\n expanded: !node.isLeaf && expanded,\n },\n ]\"\n @click.stop=\"handleExpandIconClick\"\n >\n <component :is=\"tree.props.icon || CaretRight\" />\n </el-icon>\n <el-checkbox\n v-if=\"showCheckbox\"\n :model-value=\"node.checked\"\n :indeterminate=\"node.indeterminate\"\n :disabled=\"!!node.disabled\"\n @click.stop\n @change=\"handleCheckChange\"\n />\n <el-icon\n v-if=\"node.loading\"\n :class=\"[ns.be('node', 'loading-icon'), ns.is('loading')]\"\n >\n <loading />\n </el-icon>\n <node-content :node=\"node\" :render-content=\"renderContent\" />\n </div>\n <el-collapse-transition>\n <div\n v-if=\"!renderAfterExpand || childNodeRendered\"\n v-show=\"expanded\"\n :class=\"ns.be('node', 'children')\"\n role=\"group\"\n :aria-expanded=\"expanded\"\n @click.stop\n >\n <el-tree-node\n v-for=\"child in node.childNodes\"\n :key=\"getNodeKey(child)\"\n :render-content=\"renderContent\"\n :render-after-expand=\"renderAfterExpand\"\n :show-checkbox=\"showCheckbox\"\n :node=\"child\"\n :accordion=\"accordion\"\n :props=\"props\"\n @node-expand=\"handleChildNodeExpand\"\n />\n </div>\n </el-collapse-transition>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n getCurrentInstance,\n inject,\n nextTick,\n provide,\n ref,\n watch,\n} from 'vue'\nimport { debugWarn, isFunction, isString } from '@element-plus/utils'\nimport ElCollapseTransition from '@element-plus/components/collapse-transition'\nimport ElCheckbox from '@element-plus/components/checkbox'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { CaretRight, Loading } from '@element-plus/icons-vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport NodeContent from './tree-node-content.vue'\nimport { getNodeKey as getNodeKeyUtil, handleCurrentChange } from './model/util'\nimport { useNodeExpandEventBroadcast } from './model/useNodeExpandEventBroadcast'\nimport { dragEventsKey } from './model/useDragNode'\nimport Node from './model/node'\nimport { NODE_INSTANCE_INJECTION_KEY, ROOT_TREE_INJECTION_KEY } from './tokens'\n\nimport type { ComponentInternalInstance, PropType } from 'vue'\nimport type { RootTreeType, TreeNodeData, TreeOptionProps } from './tree.type'\nimport type { CheckboxValueType } from '@element-plus/components/checkbox'\n\nexport default defineComponent({\n name: 'ElTreeNode',\n components: {\n ElCollapseTransition,\n ElCheckbox,\n NodeContent,\n ElIcon,\n Loading,\n },\n props: {\n node: {\n type: Node,\n default: () => ({}),\n },\n props: {\n type: Object as PropType<TreeOptionProps>,\n default: () => ({}),\n },\n accordion: Boolean,\n renderContent: Function,\n renderAfterExpand: Boolean,\n showCheckbox: Boolean,\n },\n emits: ['node-expand'],\n setup(props, ctx) {\n const ns = useNamespace('tree')\n const { broadcastExpanded } = useNodeExpandEventBroadcast(props)\n const tree = inject<RootTreeType>(ROOT_TREE_INJECTION_KEY)!\n const expanded = ref(false)\n const childNodeRendered = ref(false)\n const oldChecked = ref<boolean>()\n const oldIndeterminate = ref<boolean>()\n const node$ = ref<HTMLElement>()\n const dragEvents = inject(dragEventsKey)!\n const instance = getCurrentInstance()\n\n provide(NODE_INSTANCE_INJECTION_KEY, instance)\n if (!tree) {\n debugWarn('Tree', \"Can not find node's tree.\")\n }\n\n if (props.node.expanded) {\n expanded.value = true\n childNodeRendered.value = true\n }\n\n const childrenKey = tree.props.props['children'] || 'children'\n watch(\n () => {\n const children = props.node.data?.[childrenKey]\n return children && [...children]\n },\n () => {\n props.node.updateChildren()\n }\n )\n\n watch(\n () => props.node.indeterminate,\n (val) => {\n handleSelectChange(props.node.checked, val)\n }\n )\n\n watch(\n () => props.node.checked,\n (val) => {\n handleSelectChange(val, props.node.indeterminate)\n }\n )\n\n watch(\n () => props.node.childNodes.length,\n () => props.node.reInitChecked()\n )\n\n watch(\n () => props.node.expanded,\n (val) => {\n nextTick(() => (expanded.value = val))\n if (val) {\n childNodeRendered.value = true\n }\n }\n )\n\n const getNodeKey = (node: Node): any => {\n return getNodeKeyUtil(tree.props.nodeKey, node.data)\n }\n\n const getNodeClass = (node: Node) => {\n const nodeClassFunc = props.props.class\n if (!nodeClassFunc) {\n return {}\n }\n let className\n if (isFunction(nodeClassFunc)) {\n const { data } = node\n className = nodeClassFunc(data, node)\n } else {\n className = nodeClassFunc\n }\n\n if (isString(className)) {\n return { [className]: true }\n } else {\n return className\n }\n }\n\n const handleSelectChange = (checked: boolean, indeterminate: boolean) => {\n if (\n oldChecked.value !== checked ||\n oldIndeterminate.value !== indeterminate\n ) {\n tree.ctx.emit('check-change', props.node.data, checked, indeterminate)\n }\n oldChecked.value = checked\n oldIndeterminate.value = indeterminate\n }\n\n const handleClick = (e: MouseEvent) => {\n handleCurrentChange(tree.store, tree.ctx.emit, () => {\n const nodeKeyProp = tree?.props?.nodeKey\n if (nodeKeyProp) {\n const curNodeKey = getNodeKey(props.node)\n tree.store.value.setCurrentNodeKey(curNodeKey)\n } else {\n tree.store.value.setCurrentNode(props.node)\n }\n })\n tree.currentNode.value = props.node\n\n if (tree.props.expandOnClickNode) {\n handleExpandIconClick()\n }\n\n if (\n (tree.props.checkOnClickNode ||\n (props.node.isLeaf &&\n tree.props.checkOnClickLeaf &&\n props.showCheckbox)) &&\n !props.node.disabled\n ) {\n handleCheckChange(!props.node.checked)\n }\n tree.ctx.emit('node-click', props.node.data, props.node, instance, e)\n }\n\n const handleContextMenu = (event: Event) => {\n if (tree.instance.vnode.props?.['onNodeContextmenu']) {\n event.stopPropagation()\n event.preventDefault()\n }\n tree.ctx.emit(\n 'node-contextmenu',\n event,\n props.node.data,\n props.node,\n instance\n )\n }\n\n const handleExpandIconClick = () => {\n if (props.node.isLeaf) return\n if (expanded.value) {\n tree.ctx.emit('node-collapse', props.node.data, props.node, instance)\n props.node.collapse()\n } else {\n props.node.expand(() => {\n ctx.emit('node-expand', props.node.data, props.node, instance)\n })\n }\n }\n\n const handleCheckChange = (value: CheckboxValueType) => {\n const checkStrictly = tree?.props.checkStrictly\n const childNodes = props.node.childNodes\n if (!checkStrictly && childNodes.length) {\n value = childNodes.some((node) => !node.isEffectivelyChecked)\n }\n props.node.setChecked(value as boolean, !checkStrictly)\n nextTick(() => {\n const store = tree.store.value\n tree.ctx.emit('check', props.node.data, {\n checkedNodes: store.getCheckedNodes(),\n checkedKeys: store.getCheckedKeys(),\n halfCheckedNodes: store.getHalfCheckedNodes(),\n halfCheckedKeys: store.getHalfCheckedKeys(),\n })\n })\n }\n\n const handleChildNodeExpand = (\n nodeData: TreeNodeData,\n node: Node,\n instance: ComponentInternalInstance\n ) => {\n broadcastExpanded(node)\n tree.ctx.emit('node-expand', nodeData, node, instance)\n }\n\n const handleDragStart = (event: DragEvent) => {\n if (!tree.props.draggable) return\n dragEvents.treeNodeDragStart({ event, treeNode: props })\n }\n\n const handleDragOver = (event: DragEvent) => {\n event.preventDefault()\n if (!tree.props.draggable) return\n dragEvents.treeNodeDragOver({\n event,\n treeNode: { $el: node$.value, node: props.node },\n })\n }\n\n const handleDrop = (event: DragEvent) => {\n event.preventDefault()\n }\n\n const handleDragEnd = (event: DragEvent) => {\n if (!tree.props.draggable) return\n dragEvents.treeNodeDragEnd(event)\n }\n\n return {\n ns,\n node$,\n tree,\n expanded,\n childNodeRendered,\n oldChecked,\n oldIndeterminate,\n getNodeKey,\n getNodeClass,\n handleSelectChange,\n handleClick,\n handleContextMenu,\n handleExpandIconClick,\n handleCheckChange,\n handleChildNodeExpand,\n handleDragStart,\n handleDragOver,\n handleDrop,\n handleDragEnd,\n CaretRight,\n }\n },\n})\n</script>\n"],"names":["NodeContent","getNodeKey","getNodeKeyUtil","instance"],"mappings":"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"}
1
+ {"version":3,"file":"tree-node.vue2.mjs","sources":["../../../../../../packages/components/tree/src/tree-node.vue"],"sourcesContent":["<template>\n <div\n v-show=\"node.visible\"\n ref=\"node$\"\n :class=\"[\n ns.b('node'),\n ns.is('expanded', expanded),\n ns.is('current', node.isCurrent),\n ns.is('hidden', !node.visible),\n ns.is('focusable', !node.disabled),\n ns.is('checked', !node.disabled && node.checked),\n getNodeClass(node),\n ]\"\n role=\"treeitem\"\n tabindex=\"-1\"\n :aria-expanded=\"expanded\"\n :aria-disabled=\"node.disabled\"\n :aria-checked=\"node.checked\"\n :draggable=\"tree.props.draggable\"\n :data-key=\"getNodeKey(node)\"\n @click.stop=\"handleClick\"\n @contextmenu=\"handleContextMenu\"\n @dragstart.stop=\"handleDragStart\"\n @dragover.stop=\"handleDragOver\"\n @dragend.stop=\"handleDragEnd\"\n @drop.stop=\"handleDrop\"\n >\n <div\n :class=\"ns.be('node', 'content')\"\n :style=\"{ paddingLeft: (node.level - 1) * tree.props.indent + 'px' }\"\n >\n <el-icon\n v-if=\"tree.props.icon || CaretRight\"\n :class=\"[\n ns.be('node', 'expand-icon'),\n ns.is('leaf', node.isLeaf),\n {\n expanded: !node.isLeaf && expanded,\n },\n ]\"\n @click.stop=\"handleExpandIconClick\"\n >\n <component :is=\"tree.props.icon || CaretRight\" />\n </el-icon>\n <el-checkbox\n v-if=\"showCheckbox\"\n :model-value=\"node.checked\"\n :indeterminate=\"node.indeterminate\"\n :disabled=\"!!node.disabled\"\n @click.stop\n @change=\"handleCheckChange\"\n />\n <el-icon\n v-if=\"node.loading\"\n :class=\"[ns.be('node', 'loading-icon'), ns.is('loading')]\"\n >\n <loading />\n </el-icon>\n <node-content :node=\"node\" :render-content=\"renderContent\" />\n </div>\n <el-collapse-transition>\n <div\n v-if=\"!renderAfterExpand || childNodeRendered\"\n v-show=\"expanded\"\n :class=\"ns.be('node', 'children')\"\n role=\"group\"\n :aria-expanded=\"expanded\"\n @click.stop\n >\n <el-tree-node\n v-for=\"child in node.childNodes\"\n :key=\"getNodeKey(child)\"\n :render-content=\"renderContent\"\n :render-after-expand=\"renderAfterExpand\"\n :show-checkbox=\"showCheckbox\"\n :node=\"child\"\n :accordion=\"accordion\"\n :props=\"props\"\n @node-expand=\"handleChildNodeExpand\"\n />\n </div>\n </el-collapse-transition>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n getCurrentInstance,\n inject,\n nextTick,\n provide,\n ref,\n watch,\n} from 'vue'\nimport { debugWarn, isFunction, isString } from '@element-plus/utils'\nimport ElCollapseTransition from '@element-plus/components/collapse-transition'\nimport ElCheckbox from '@element-plus/components/checkbox'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { CaretRight, Loading } from '@element-plus/icons-vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport NodeContent from './tree-node-content.vue'\nimport { getNodeKey as getNodeKeyUtil, handleCurrentChange } from './model/util'\nimport { useNodeExpandEventBroadcast } from './model/useNodeExpandEventBroadcast'\nimport { dragEventsKey } from './model/useDragNode'\nimport Node from './model/node'\nimport { NODE_INSTANCE_INJECTION_KEY, ROOT_TREE_INJECTION_KEY } from './tokens'\n\nimport type { ComponentInternalInstance, PropType } from 'vue'\nimport type { RootTreeType, TreeNodeData, TreeOptionProps } from './tree.type'\nimport type { CheckboxValueType } from '@element-plus/components/checkbox'\n\nexport default defineComponent({\n name: 'ElTreeNode',\n components: {\n ElCollapseTransition,\n ElCheckbox,\n NodeContent,\n ElIcon,\n Loading,\n },\n props: {\n node: {\n type: Node,\n default: () => ({}),\n },\n props: {\n type: Object as PropType<TreeOptionProps>,\n default: () => ({}),\n },\n accordion: Boolean,\n renderContent: Function,\n renderAfterExpand: Boolean,\n showCheckbox: Boolean,\n },\n emits: ['node-expand'],\n setup(props, ctx) {\n const ns = useNamespace('tree')\n const { broadcastExpanded } = useNodeExpandEventBroadcast(props)\n const tree = inject<RootTreeType>(ROOT_TREE_INJECTION_KEY)!\n const expanded = ref(false)\n const childNodeRendered = ref(false)\n const oldChecked = ref<boolean>()\n const oldIndeterminate = ref<boolean>()\n const node$ = ref<HTMLElement>()\n const dragEvents = inject(dragEventsKey)!\n const instance = getCurrentInstance()\n\n provide(NODE_INSTANCE_INJECTION_KEY, instance)\n if (!tree) {\n debugWarn('Tree', \"Can not find node's tree.\")\n }\n\n if (props.node.expanded) {\n expanded.value = true\n childNodeRendered.value = true\n }\n\n const childrenKey = tree.props.props['children'] || 'children'\n watch(\n () => {\n const children = props.node.data?.[childrenKey]\n return children && [...children]\n },\n () => {\n props.node.updateChildren()\n }\n )\n\n watch(\n () => props.node.indeterminate,\n (val) => {\n handleSelectChange(props.node.checked, val)\n }\n )\n\n watch(\n () => props.node.checked,\n (val) => {\n handleSelectChange(val, props.node.indeterminate)\n }\n )\n\n watch(\n () => props.node.childNodes.length,\n () => props.node.reInitChecked()\n )\n\n watch(\n () => props.node.expanded,\n (val) => {\n nextTick(() => (expanded.value = val))\n if (val) {\n childNodeRendered.value = true\n }\n }\n )\n\n const getNodeKey = (node: Node): any => {\n return tree.props.nodeKey\n ? getNodeKeyUtil(tree.props.nodeKey, node.data)\n : node.id\n }\n\n const getNodeClass = (node: Node) => {\n const nodeClassFunc = props.props.class\n if (!nodeClassFunc) {\n return {}\n }\n let className\n if (isFunction(nodeClassFunc)) {\n const { data } = node\n className = nodeClassFunc(data, node)\n } else {\n className = nodeClassFunc\n }\n\n if (isString(className)) {\n return { [className]: true }\n } else {\n return className\n }\n }\n\n const handleSelectChange = (checked: boolean, indeterminate: boolean) => {\n if (\n oldChecked.value !== checked ||\n oldIndeterminate.value !== indeterminate\n ) {\n tree.ctx.emit('check-change', props.node.data, checked, indeterminate)\n }\n oldChecked.value = checked\n oldIndeterminate.value = indeterminate\n }\n\n const handleClick = (e: MouseEvent) => {\n handleCurrentChange(tree.store, tree.ctx.emit, () => {\n const nodeKeyProp = tree?.props?.nodeKey\n if (nodeKeyProp) {\n const curNodeKey = getNodeKey(props.node)\n tree.store.value.setCurrentNodeKey(curNodeKey)\n } else {\n tree.store.value.setCurrentNode(props.node)\n }\n })\n tree.currentNode.value = props.node\n\n if (tree.props.expandOnClickNode) {\n handleExpandIconClick()\n }\n\n if (\n (tree.props.checkOnClickNode ||\n (props.node.isLeaf &&\n tree.props.checkOnClickLeaf &&\n props.showCheckbox)) &&\n !props.node.disabled\n ) {\n handleCheckChange(!props.node.checked)\n }\n tree.ctx.emit('node-click', props.node.data, props.node, instance, e)\n }\n\n const handleContextMenu = (event: Event) => {\n if (tree.instance.vnode.props?.['onNodeContextmenu']) {\n event.stopPropagation()\n event.preventDefault()\n }\n tree.ctx.emit(\n 'node-contextmenu',\n event,\n props.node.data,\n props.node,\n instance\n )\n }\n\n const handleExpandIconClick = () => {\n if (props.node.isLeaf) return\n if (expanded.value) {\n tree.ctx.emit('node-collapse', props.node.data, props.node, instance)\n props.node.collapse()\n } else {\n props.node.expand(() => {\n ctx.emit('node-expand', props.node.data, props.node, instance)\n })\n }\n }\n\n const handleCheckChange = (value: CheckboxValueType) => {\n const checkStrictly = tree?.props.checkStrictly\n const childNodes = props.node.childNodes\n if (!checkStrictly && childNodes.length) {\n value = childNodes.some((node) => !node.isEffectivelyChecked)\n }\n props.node.setChecked(value as boolean, !checkStrictly)\n nextTick(() => {\n const store = tree.store.value\n tree.ctx.emit('check', props.node.data, {\n checkedNodes: store.getCheckedNodes(),\n checkedKeys: store.getCheckedKeys(),\n halfCheckedNodes: store.getHalfCheckedNodes(),\n halfCheckedKeys: store.getHalfCheckedKeys(),\n })\n })\n }\n\n const handleChildNodeExpand = (\n nodeData: TreeNodeData,\n node: Node,\n instance: ComponentInternalInstance\n ) => {\n broadcastExpanded(node)\n tree.ctx.emit('node-expand', nodeData, node, instance)\n }\n\n const handleDragStart = (event: DragEvent) => {\n if (!tree.props.draggable) return\n dragEvents.treeNodeDragStart({ event, treeNode: props })\n }\n\n const handleDragOver = (event: DragEvent) => {\n event.preventDefault()\n if (!tree.props.draggable) return\n dragEvents.treeNodeDragOver({\n event,\n treeNode: { $el: node$.value, node: props.node },\n })\n }\n\n const handleDrop = (event: DragEvent) => {\n event.preventDefault()\n }\n\n const handleDragEnd = (event: DragEvent) => {\n if (!tree.props.draggable) return\n dragEvents.treeNodeDragEnd(event)\n }\n\n return {\n ns,\n node$,\n tree,\n expanded,\n childNodeRendered,\n oldChecked,\n oldIndeterminate,\n getNodeKey,\n getNodeClass,\n handleSelectChange,\n handleClick,\n handleContextMenu,\n handleExpandIconClick,\n handleCheckChange,\n handleChildNodeExpand,\n handleDragStart,\n handleDragOver,\n handleDrop,\n handleDragEnd,\n CaretRight,\n }\n },\n})\n</script>\n"],"names":["NodeContent","getNodeKey","getNodeKeyUtil","instance"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tree.vue.mjs","sources":["../../../../../../packages/components/tree/src/tree.vue"],"sourcesContent":["<template>\n <div\n ref=\"el$\"\n :class=\"[\n ns.b(),\n ns.is('dragging', !!dragState.draggingNode),\n ns.is('drop-not-allow', !dragState.allowDrop),\n ns.is('drop-inner', dragState.dropType === 'inner'),\n { [ns.m('highlight-current')]: highlightCurrent },\n ]\"\n role=\"tree\"\n >\n <el-tree-node\n v-for=\"child in root.childNodes\"\n :key=\"getNodeKey(child)\"\n :node=\"child\"\n :props=\"props\"\n :accordion=\"accordion\"\n :render-after-expand=\"renderAfterExpand\"\n :show-checkbox=\"showCheckbox\"\n :render-content=\"renderContent\"\n @node-expand=\"handleNodeExpand\"\n />\n <div v-if=\"isEmpty\" :class=\"ns.e('empty-block')\">\n <slot name=\"empty\">\n <span :class=\"ns.e('empty-text')\">\n {{ emptyText ?? t('el.tree.emptyText') }}\n </span>\n </slot>\n </div>\n <div\n v-show=\"dragState.showDropIndicator\"\n ref=\"dropIndicator$\"\n :class=\"ns.e('drop-indicator')\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n provide,\n ref,\n watch,\n} from 'vue'\nimport { isEqual } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { formItemContextKey } from '@element-plus/components/form'\nimport TreeStore from './model/tree-store'\nimport { getNodeKey as getNodeKeyUtil, handleCurrentChange } from './model/util'\nimport ElTreeNode from './tree-node.vue'\nimport { useNodeExpandEventBroadcast } from './model/useNodeExpandEventBroadcast'\nimport { useDragNodeHandler } from './model/useDragNode'\nimport { useKeydown } from './model/useKeydown'\nimport { ROOT_TREE_INJECTION_KEY } from './tokens'\nimport { treeEmits, treeProps } from './tree'\n\nimport type Node from './model/node'\nimport type { ComponentInternalInstance } from 'vue'\nimport type { Nullable } from '@element-plus/utils'\nimport type { FilterValue, TreeData, TreeKey, TreeNodeData } from './tree.type'\n\nexport default defineComponent({\n name: 'ElTree',\n components: { ElTreeNode },\n props: treeProps,\n emits: treeEmits,\n setup(props, ctx) {\n const { t } = useLocale()\n const ns = useNamespace('tree')\n\n const store = ref<TreeStore>(\n new TreeStore({\n key: props.nodeKey,\n data: props.data,\n lazy: props.lazy,\n props: props.props,\n load: props.load,\n currentNodeKey: props.currentNodeKey,\n checkStrictly: props.checkStrictly,\n checkDescendants: props.checkDescendants,\n defaultCheckedKeys: props.defaultCheckedKeys,\n defaultExpandedKeys: props.defaultExpandedKeys,\n autoExpandParent: props.autoExpandParent,\n defaultExpandAll: props.defaultExpandAll,\n filterNodeMethod: props.filterNodeMethod,\n })\n )\n\n store.value.initialize()\n\n const root = ref<Node>(store.value.root)\n const currentNode = ref<Node | null>(null)\n const el$ = ref<Nullable<HTMLElement>>(null)\n const dropIndicator$ = ref<Nullable<HTMLElement>>(null)\n\n const { broadcastExpanded } = useNodeExpandEventBroadcast(props)\n\n const { dragState } = useDragNodeHandler({\n props,\n ctx,\n el$,\n dropIndicator$,\n store,\n })\n\n useKeydown({ el$ }, store)\n\n const instance = getCurrentInstance()\n\n const isSelectTree = computed(() => {\n let parent = instance?.parent\n while (parent) {\n if (parent.type.name === 'ElTreeSelect') {\n return true\n }\n parent = parent.parent\n }\n return false\n })\n\n const isEmpty = computed(() => {\n const { childNodes } = root.value\n return (\n (!childNodes ||\n childNodes.length === 0 ||\n childNodes.every(({ visible }) => !visible)) &&\n !isSelectTree.value\n )\n })\n\n watch(\n () => props.currentNodeKey,\n (newVal) => {\n store.value.setCurrentNodeKey(newVal ?? null)\n }\n )\n\n watch(\n () => props.defaultCheckedKeys,\n (newVal, oldVal) => {\n if (isEqual(newVal, oldVal)) return\n\n store.value.setDefaultCheckedKey(newVal ?? [])\n }\n )\n\n watch(\n () => props.defaultExpandedKeys,\n (newVal) => {\n store.value.setDefaultExpandedKeys(newVal ?? [])\n }\n )\n\n watch(\n () => props.data,\n (newVal) => {\n store.value.setData(newVal)\n },\n { deep: true }\n )\n\n watch(\n () => props.checkStrictly,\n (newVal) => {\n store.value.checkStrictly = newVal\n }\n )\n\n const filter = (value: FilterValue) => {\n if (!props.filterNodeMethod)\n throw new Error('[Tree] filterNodeMethod is required when filter')\n store.value.filter(value)\n }\n\n const getNodeKey = (node: Node) => {\n return getNodeKeyUtil(props.nodeKey, node.data)\n }\n\n const requireNodeKey = (methodName: string) => {\n if (!props.nodeKey) {\n throw new Error(`[Tree] nodeKey is required in ${methodName}`)\n }\n }\n\n const getNodePath = (data: TreeKey | TreeNodeData) => {\n requireNodeKey('getNodePath')\n\n const node = store.value.getNode(data)\n if (!node) return []\n const path = [node.data]\n let parent = node.parent\n while (parent && parent !== root.value) {\n path.push(parent.data)\n parent = parent.parent\n }\n return path.reverse()\n }\n\n const getCheckedNodes = (\n leafOnly?: boolean,\n includeHalfChecked?: boolean\n ): TreeNodeData[] => {\n return store.value.getCheckedNodes(leafOnly, includeHalfChecked)\n }\n\n const getCheckedKeys = (leafOnly?: boolean): TreeKey[] => {\n return store.value.getCheckedKeys(leafOnly)\n }\n\n const getCurrentNode = () => {\n const currentNode = store.value.getCurrentNode()\n return currentNode ? currentNode.data : null\n }\n\n const getCurrentKey = (): TreeKey | null => {\n requireNodeKey('getCurrentKey')\n\n const currentNode = getCurrentNode()\n return currentNode ? currentNode[props.nodeKey!] : null\n }\n\n const setCheckedNodes = (nodes: Node[], leafOnly?: boolean) => {\n requireNodeKey('setCheckedNodes')\n\n store.value.setCheckedNodes(nodes, leafOnly)\n }\n\n const setCheckedKeys = (keys: TreeKey[], leafOnly?: boolean) => {\n requireNodeKey('setCheckedKeys')\n\n store.value.setCheckedKeys(keys, leafOnly)\n }\n\n const setChecked = (\n data: TreeKey | TreeNodeData,\n checked: boolean,\n deep: boolean\n ) => {\n store.value.setChecked(data, checked, deep)\n }\n\n const getHalfCheckedNodes = (): TreeNodeData[] => {\n return store.value.getHalfCheckedNodes()\n }\n\n const getHalfCheckedKeys = (): TreeKey[] => {\n return store.value.getHalfCheckedKeys()\n }\n\n const setCurrentNode = (node: Node, shouldAutoExpandParent = true) => {\n requireNodeKey('setCurrentNode')\n\n handleCurrentChange(store, ctx.emit, () => {\n broadcastExpanded(node)\n store.value.setUserCurrentNode(node, shouldAutoExpandParent)\n })\n }\n\n const setCurrentKey = (\n key: TreeKey | null = null,\n shouldAutoExpandParent = true\n ) => {\n requireNodeKey('setCurrentKey')\n\n handleCurrentChange(store, ctx.emit, () => {\n broadcastExpanded()\n store.value.setCurrentNodeKey(key, shouldAutoExpandParent)\n })\n }\n\n const getNode = (data: TreeKey | TreeNodeData): Node => {\n return store.value.getNode(data)\n }\n\n const remove = (data: TreeNodeData | Node) => {\n store.value.remove(data)\n }\n\n const append = (\n data: TreeNodeData,\n parentNode: TreeNodeData | TreeKey | Node\n ) => {\n store.value.append(data, parentNode)\n }\n\n const insertBefore = (\n data: TreeNodeData,\n refNode: TreeKey | TreeNodeData | Node\n ) => {\n store.value.insertBefore(data, refNode)\n }\n\n const insertAfter = (\n data: TreeNodeData,\n refNode: TreeKey | TreeNodeData | Node\n ) => {\n store.value.insertAfter(data, refNode)\n }\n\n const handleNodeExpand = (\n nodeData: TreeNodeData,\n node: Node,\n instance: ComponentInternalInstance\n ) => {\n broadcastExpanded(node)\n ctx.emit('node-expand', nodeData, node, instance)\n }\n\n const updateKeyChildren = (key: TreeKey, data: TreeData) => {\n requireNodeKey('updateKeyChildren')\n\n store.value.updateChildren(key, data)\n }\n\n provide(ROOT_TREE_INJECTION_KEY, {\n ctx,\n props,\n store,\n root,\n currentNode,\n instance,\n })\n\n provide(formItemContextKey, undefined)\n\n return {\n ns,\n // ref\n store,\n root,\n currentNode,\n dragState,\n el$,\n dropIndicator$,\n\n // computed\n isEmpty,\n\n // methods\n filter,\n getNodeKey,\n getNodePath,\n getCheckedNodes,\n getCheckedKeys,\n getCurrentNode,\n getCurrentKey,\n setCheckedNodes,\n setCheckedKeys,\n setChecked,\n getHalfCheckedNodes,\n getHalfCheckedKeys,\n setCurrentNode,\n setCurrentKey,\n t,\n getNode,\n remove,\n append,\n insertBefore,\n insertAfter,\n handleNodeExpand,\n updateKeyChildren,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_createElementBlock","_normalizeClass","_Fragment","_renderList","_createBlock","_renderSlot","_createElementVNode","_toDisplayString","_withDirectives","_vShow"],"mappings":";;;;;;AACE,EAAA,OAAAA,WAAA,EAAAC,kBAAA;AAAA,IAkCM,KAAA;AAAA,IAAA;AAAA,MAjCJ,GAAA,EAAI,KAAA;AAAA,MACH,OAAKC,cAAA,CAAA;AAAA,QAAU,IAAA,IAAG,CAAA,EAAC;AAAA,QAAU,IAAA,CAAA,GAAG,EAAA,CAAE,UAAA,EAAA,CAAA,CAAe,IAAA,CAAA,UAAU,YAAY,CAAA;AAAA,QAAS,KAAA,EAAA,CAAG,EAAA,CAAE,kBAAA,CAAoB,IAAA,CAAA,UAAU,SAAS,CAAA;AAAA,QAAS,KAAA,EAAA,CAAG,EAAA,CAAE,cAAe,IAAA,CAAA,SAAA,CAAU,aAAQ,OAAA,CAAA;AAAA,QAAA,EAAA,CAAwB,IAAA,CAAA,EAAA,CAAG,EAAC,mBAAA,CAAA,GAAwB,IAAA,CAAA,gBAAA;AAAgB,OAAA,CAAA;AAAA,MAOhP,IAAA,EAAK;AAAA,KAAA;AAAA;OAELF,SAAA,CAAA,IAAA,CAAA,EAAAC,kBAAA;AAAA,QAUEE,QAAA;AAAA,QAAA,IAAA;AAAA,QAAAC,UAAA,CATgB,IAAA,CAAA,IAAA,CAAK,UAAA,EAAU,CAAxB,KAAA,KAAK;8BADdC,WAAA,CAUE,uBAAA,EAAA;AAAA,YARC,GAAA,EAAK,IAAA,YAAW,KAAK,CAAA;AAAA,YACrB,IAAA,EAAM,KAAA;AAAA,YACN,OAAO,IAAA,CAAA,KAAA;AAAA,YACP,WAAW,IAAA,CAAA,SAAA;AAAA,YACX,uBAAqB,IAAA,CAAA,iBAAA;AAAA,YACrB,iBAAe,IAAA,CAAA,YAAA;AAAA,YACf,kBAAgB,IAAA,CAAA,aAAA;AAAA,YAChB,cAAa,IAAA,CAAA;AAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,CAAA;AAAA;;;;MAEL,IAAA,CAAA,OAAA,IAAAL,SAAA,EAAA,EAAXC,kBAAA;AAAA,QAMM,KAAA;AAAA,QAAA;AAAA,UAAA,GAAA,EAAA,CAAA;AAAA,UANe,OAAKC,cAAA,CAAE,IAAA,IAAG,CAAA,CAAC,aAAA,CAAA;AAAA,SAAA;AAAA;UAC9BI,WAIO,IAAA,sBAJP,MAAA;;AAIO,YAAA,OAAA;AAAA,cAHLC,kBAAA;AAAA,gBAEO,MAAA;AAAA,gBAAA;AAAA,kBAFA,OAAKL,cAAA,CAAE,IAAA,CAAA,EAAA,CAAG,CAAA,CAAC,YAAA,CAAA;AAAA,iBAAA;AAAA,gBACbM,iBAAA,EAAA,GAAA,IAAA,CAAA,SAAA,KAAA,YAAa,IAAA,CAAA,CAAA,CAAC,mBAAA,CAAA,CAAA;AAAA,gBAAA;AAAA;AAAA;AAAA,aAAA;AAAA,UAAA,CAAA;AAAA;;;;MAIvBC,cAAA,CAAAF,kBAAA;AAAA,QAIE,KAAA;AAAA,QAAA;AAAA,UAFA,GAAA,EAAI,gBAAA;AAAA,UACH,OAAKL,cAAA,CAAE,IAAA,CAAA,EAAA,CAAG,CAAA,CAAC,gBAAA,CAAA;AAAA,SAAA;AAAA;;;;QAFJ,CAAAQ,KAAA,EAAA,IAAA,CAAA,SAAA,CAAU,iBAAiB;AAAA,OAAA;AAAA;;;;;;;;;"}
1
+ {"version":3,"file":"tree.vue.mjs","sources":["../../../../../../packages/components/tree/src/tree.vue"],"sourcesContent":["<template>\n <div\n ref=\"el$\"\n :class=\"[\n ns.b(),\n ns.is('dragging', !!dragState.draggingNode),\n ns.is('drop-not-allow', !dragState.allowDrop),\n ns.is('drop-inner', dragState.dropType === 'inner'),\n { [ns.m('highlight-current')]: highlightCurrent },\n ]\"\n role=\"tree\"\n >\n <el-tree-node\n v-for=\"child in root.childNodes\"\n :key=\"getNodeKey(child)\"\n :node=\"child\"\n :props=\"props\"\n :accordion=\"accordion\"\n :render-after-expand=\"renderAfterExpand\"\n :show-checkbox=\"showCheckbox\"\n :render-content=\"renderContent\"\n @node-expand=\"handleNodeExpand\"\n />\n <div v-if=\"isEmpty\" :class=\"ns.e('empty-block')\">\n <slot name=\"empty\">\n <span :class=\"ns.e('empty-text')\">\n {{ emptyText ?? t('el.tree.emptyText') }}\n </span>\n </slot>\n </div>\n <div\n v-show=\"dragState.showDropIndicator\"\n ref=\"dropIndicator$\"\n :class=\"ns.e('drop-indicator')\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n provide,\n ref,\n watch,\n} from 'vue'\nimport { isEqual } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { formItemContextKey } from '@element-plus/components/form'\nimport TreeStore from './model/tree-store'\nimport { getNodeKey as getNodeKeyUtil, handleCurrentChange } from './model/util'\nimport ElTreeNode from './tree-node.vue'\nimport { useNodeExpandEventBroadcast } from './model/useNodeExpandEventBroadcast'\nimport { useDragNodeHandler } from './model/useDragNode'\nimport { useKeydown } from './model/useKeydown'\nimport { ROOT_TREE_INJECTION_KEY } from './tokens'\nimport { treeEmits, treeProps } from './tree'\n\nimport type Node from './model/node'\nimport type { ComponentInternalInstance } from 'vue'\nimport type { Nullable } from '@element-plus/utils'\nimport type { FilterValue, TreeData, TreeKey, TreeNodeData } from './tree.type'\n\nexport default defineComponent({\n name: 'ElTree',\n components: { ElTreeNode },\n props: treeProps,\n emits: treeEmits,\n setup(props, ctx) {\n const { t } = useLocale()\n const ns = useNamespace('tree')\n\n const store = ref<TreeStore>(\n new TreeStore({\n key: props.nodeKey,\n data: props.data,\n lazy: props.lazy,\n props: props.props,\n load: props.load,\n currentNodeKey: props.currentNodeKey,\n checkStrictly: props.checkStrictly,\n checkDescendants: props.checkDescendants,\n defaultCheckedKeys: props.defaultCheckedKeys,\n defaultExpandedKeys: props.defaultExpandedKeys,\n autoExpandParent: props.autoExpandParent,\n defaultExpandAll: props.defaultExpandAll,\n filterNodeMethod: props.filterNodeMethod,\n })\n )\n\n store.value.initialize()\n\n const root = ref<Node>(store.value.root)\n const currentNode = ref<Node | null>(null)\n const el$ = ref<Nullable<HTMLElement>>(null)\n const dropIndicator$ = ref<Nullable<HTMLElement>>(null)\n\n const { broadcastExpanded } = useNodeExpandEventBroadcast(props)\n\n const { dragState } = useDragNodeHandler({\n props,\n ctx,\n el$,\n dropIndicator$,\n store,\n })\n\n useKeydown({ el$ }, store)\n\n const instance = getCurrentInstance()\n\n const isSelectTree = computed(() => {\n let parent = instance?.parent\n while (parent) {\n if (parent.type.name === 'ElTreeSelect') {\n return true\n }\n parent = parent.parent\n }\n return false\n })\n\n const isEmpty = computed(() => {\n const { childNodes } = root.value\n return (\n (!childNodes ||\n childNodes.length === 0 ||\n childNodes.every(({ visible }) => !visible)) &&\n !isSelectTree.value\n )\n })\n\n watch(\n () => props.currentNodeKey,\n (newVal) => {\n store.value.setCurrentNodeKey(newVal ?? null)\n }\n )\n\n watch(\n () => props.defaultCheckedKeys,\n (newVal, oldVal) => {\n if (isEqual(newVal, oldVal)) return\n\n store.value.setDefaultCheckedKey(newVal ?? [])\n }\n )\n\n watch(\n () => props.defaultExpandedKeys,\n (newVal) => {\n store.value.setDefaultExpandedKeys(newVal ?? [])\n }\n )\n\n watch(\n () => props.data,\n (newVal) => {\n store.value.setData(newVal)\n },\n { deep: true }\n )\n\n watch(\n () => props.checkStrictly,\n (newVal) => {\n store.value.checkStrictly = newVal\n }\n )\n\n const filter = (value: FilterValue) => {\n if (!props.filterNodeMethod)\n throw new Error('[Tree] filterNodeMethod is required when filter')\n store.value.filter(value)\n }\n\n const getNodeKey = (node: Node) => {\n return props.nodeKey ? getNodeKeyUtil(props.nodeKey, node.data) : node.id\n }\n\n const requireNodeKey = (methodName: string) => {\n if (!props.nodeKey) {\n throw new Error(`[Tree] nodeKey is required in ${methodName}`)\n }\n }\n\n const getNodePath = (data: TreeKey | TreeNodeData) => {\n requireNodeKey('getNodePath')\n\n const node = store.value.getNode(data)\n if (!node) return []\n const path = [node.data]\n let parent = node.parent\n while (parent && parent !== root.value) {\n path.push(parent.data)\n parent = parent.parent\n }\n return path.reverse()\n }\n\n const getCheckedNodes = (\n leafOnly?: boolean,\n includeHalfChecked?: boolean\n ): TreeNodeData[] => {\n return store.value.getCheckedNodes(leafOnly, includeHalfChecked)\n }\n\n const getCheckedKeys = (leafOnly?: boolean): TreeKey[] => {\n return store.value.getCheckedKeys(leafOnly)\n }\n\n const getCurrentNode = () => {\n const currentNode = store.value.getCurrentNode()\n return currentNode ? currentNode.data : null\n }\n\n const getCurrentKey = (): TreeKey | null => {\n requireNodeKey('getCurrentKey')\n\n const currentNode = getCurrentNode()\n return currentNode ? currentNode[props.nodeKey!] : null\n }\n\n const setCheckedNodes = (nodes: Node[], leafOnly?: boolean) => {\n requireNodeKey('setCheckedNodes')\n\n store.value.setCheckedNodes(nodes, leafOnly)\n }\n\n const setCheckedKeys = (keys: TreeKey[], leafOnly?: boolean) => {\n requireNodeKey('setCheckedKeys')\n\n store.value.setCheckedKeys(keys, leafOnly)\n }\n\n const setChecked = (\n data: TreeKey | TreeNodeData,\n checked: boolean,\n deep: boolean\n ) => {\n store.value.setChecked(data, checked, deep)\n }\n\n const getHalfCheckedNodes = (): TreeNodeData[] => {\n return store.value.getHalfCheckedNodes()\n }\n\n const getHalfCheckedKeys = (): TreeKey[] => {\n return store.value.getHalfCheckedKeys()\n }\n\n const setCurrentNode = (node: Node, shouldAutoExpandParent = true) => {\n requireNodeKey('setCurrentNode')\n\n handleCurrentChange(store, ctx.emit, () => {\n broadcastExpanded(node)\n store.value.setUserCurrentNode(node, shouldAutoExpandParent)\n })\n }\n\n const setCurrentKey = (\n key: TreeKey | null = null,\n shouldAutoExpandParent = true\n ) => {\n requireNodeKey('setCurrentKey')\n\n handleCurrentChange(store, ctx.emit, () => {\n broadcastExpanded()\n store.value.setCurrentNodeKey(key, shouldAutoExpandParent)\n })\n }\n\n const getNode = (data: TreeKey | TreeNodeData): Node => {\n return store.value.getNode(data)\n }\n\n const remove = (data: TreeNodeData | Node) => {\n store.value.remove(data)\n }\n\n const append = (\n data: TreeNodeData,\n parentNode: TreeNodeData | TreeKey | Node\n ) => {\n store.value.append(data, parentNode)\n }\n\n const insertBefore = (\n data: TreeNodeData,\n refNode: TreeKey | TreeNodeData | Node\n ) => {\n store.value.insertBefore(data, refNode)\n }\n\n const insertAfter = (\n data: TreeNodeData,\n refNode: TreeKey | TreeNodeData | Node\n ) => {\n store.value.insertAfter(data, refNode)\n }\n\n const handleNodeExpand = (\n nodeData: TreeNodeData,\n node: Node,\n instance: ComponentInternalInstance\n ) => {\n broadcastExpanded(node)\n ctx.emit('node-expand', nodeData, node, instance)\n }\n\n const updateKeyChildren = (key: TreeKey, data: TreeData) => {\n requireNodeKey('updateKeyChildren')\n\n store.value.updateChildren(key, data)\n }\n\n provide(ROOT_TREE_INJECTION_KEY, {\n ctx,\n props,\n store,\n root,\n currentNode,\n instance,\n })\n\n provide(formItemContextKey, undefined)\n\n return {\n ns,\n // ref\n store,\n root,\n currentNode,\n dragState,\n el$,\n dropIndicator$,\n\n // computed\n isEmpty,\n\n // methods\n filter,\n getNodeKey,\n getNodePath,\n getCheckedNodes,\n getCheckedKeys,\n getCurrentNode,\n getCurrentKey,\n setCheckedNodes,\n setCheckedKeys,\n setChecked,\n getHalfCheckedNodes,\n getHalfCheckedKeys,\n setCurrentNode,\n setCurrentKey,\n t,\n getNode,\n remove,\n append,\n insertBefore,\n insertAfter,\n handleNodeExpand,\n updateKeyChildren,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_createElementBlock","_normalizeClass","_Fragment","_renderList","_createBlock","_renderSlot","_createElementVNode","_toDisplayString","_withDirectives","_vShow"],"mappings":";;;;;;AACE,EAAA,OAAAA,WAAA,EAAAC,kBAAA;AAAA,IAkCM,KAAA;AAAA,IAAA;AAAA,MAjCJ,GAAA,EAAI,KAAA;AAAA,MACH,OAAKC,cAAA,CAAA;AAAA,QAAU,IAAA,IAAG,CAAA,EAAC;AAAA,QAAU,IAAA,CAAA,GAAG,EAAA,CAAE,UAAA,EAAA,CAAA,CAAe,IAAA,CAAA,UAAU,YAAY,CAAA;AAAA,QAAS,KAAA,EAAA,CAAG,EAAA,CAAE,kBAAA,CAAoB,IAAA,CAAA,UAAU,SAAS,CAAA;AAAA,QAAS,KAAA,EAAA,CAAG,EAAA,CAAE,cAAe,IAAA,CAAA,SAAA,CAAU,aAAQ,OAAA,CAAA;AAAA,QAAA,EAAA,CAAwB,IAAA,CAAA,EAAA,CAAG,EAAC,mBAAA,CAAA,GAAwB,IAAA,CAAA,gBAAA;AAAgB,OAAA,CAAA;AAAA,MAOhP,IAAA,EAAK;AAAA,KAAA;AAAA;OAELF,SAAA,CAAA,IAAA,CAAA,EAAAC,kBAAA;AAAA,QAUEE,QAAA;AAAA,QAAA,IAAA;AAAA,QAAAC,UAAA,CATgB,IAAA,CAAA,IAAA,CAAK,UAAA,EAAU,CAAxB,KAAA,KAAK;8BADdC,WAAA,CAUE,uBAAA,EAAA;AAAA,YARC,GAAA,EAAK,IAAA,YAAW,KAAK,CAAA;AAAA,YACrB,IAAA,EAAM,KAAA;AAAA,YACN,OAAO,IAAA,CAAA,KAAA;AAAA,YACP,WAAW,IAAA,CAAA,SAAA;AAAA,YACX,uBAAqB,IAAA,CAAA,iBAAA;AAAA,YACrB,iBAAe,IAAA,CAAA,YAAA;AAAA,YACf,kBAAgB,IAAA,CAAA,aAAA;AAAA,YAChB,cAAa,IAAA,CAAA;AAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,CAAA;AAAA;;;;MAEL,IAAA,CAAA,OAAA,IAAAL,SAAA,EAAA,EAAXC,kBAAA;AAAA,QAMM,KAAA;AAAA,QAAA;AAAA,UAAA,GAAA,EAAA,CAAA;AAAA,UANe,OAAKC,cAAA,CAAE,IAAA,IAAG,CAAA,CAAC,aAAA,CAAA;AAAA,SAAA;AAAA;UAC9BI,WAIO,IAAA,sBAJP,MAAA;;AAIO,YAAA,OAAA;AAAA,cAHLC,kBAAA;AAAA,gBAEO,MAAA;AAAA,gBAAA;AAAA,kBAFA,OAAKL,cAAA,CAAE,IAAA,CAAA,EAAA,CAAG,CAAA,CAAC,YAAA,CAAA;AAAA,iBAAA;AAAA,gBACbM,iBAAA,EAAA,GAAA,IAAA,CAAA,SAAA,KAAA,YAAa,IAAA,CAAA,CAAA,CAAC,mBAAA,CAAA,CAAA;AAAA,gBAAA;AAAA;AAAA;AAAA,aAAA;AAAA,UAAA,CAAA;AAAA;;;;MAIvBC,cAAA,CAAAF,kBAAA;AAAA,QAIE,KAAA;AAAA,QAAA;AAAA,UAFA,GAAA,EAAI,gBAAA;AAAA,UACH,OAAKL,cAAA,CAAE,IAAA,CAAA,EAAA,CAAG,CAAA,CAAC,gBAAA,CAAA;AAAA,SAAA;AAAA;;;;QAFJ,CAAAQ,KAAA,EAAA,IAAA,CAAA,SAAA,CAAU,iBAAiB;AAAA,OAAA;AAAA;;;;;;;;;"}
@@ -104,7 +104,7 @@ var _sfc_main = defineComponent({
104
104
  store.value.filter(value);
105
105
  };
106
106
  const getNodeKey$1 = (node) => {
107
- return getNodeKey(props.nodeKey, node.data);
107
+ return props.nodeKey ? getNodeKey(props.nodeKey, node.data) : node.id;
108
108
  };
109
109
  const requireNodeKey = (methodName) => {
110
110
  if (!props.nodeKey) {