@xihan-ui/vue 3.0.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/CHANGELOG.md +148 -0
  2. package/README.md +1 -1
  3. package/dist/components/carousel/carousel.d.ts +7 -1
  4. package/dist/components/carousel/carousel.d.ts.map +1 -1
  5. package/dist/components/carousel/carousel.js +1 -0
  6. package/dist/components/carousel/carousel.js.map +1 -1
  7. package/dist/components/cartesian-chart/cartesian-chart.d.ts.map +1 -1
  8. package/dist/components/cartesian-chart/cartesian-chart.js +2 -2
  9. package/dist/components/cartesian-chart/cartesian-chart.js.map +1 -1
  10. package/dist/components/cascader/cascader.d.ts +2 -0
  11. package/dist/components/cascader/cascader.d.ts.map +1 -1
  12. package/dist/components/cascader/cascader.js +5 -2
  13. package/dist/components/cascader/cascader.js.map +1 -1
  14. package/dist/components/checkbox-group/checkbox-group.d.ts.map +1 -1
  15. package/dist/components/checkbox-group/checkbox-group.js +30 -11
  16. package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
  17. package/dist/components/checkbox-group/use-checkbox-group.d.ts +6 -1
  18. package/dist/components/checkbox-group/use-checkbox-group.d.ts.map +1 -1
  19. package/dist/components/checkbox-group/use-checkbox-group.js +7 -3
  20. package/dist/components/checkbox-group/use-checkbox-group.js.map +1 -1
  21. package/dist/components/citation/citation.d.ts.map +1 -1
  22. package/dist/components/citation/citation.js +8 -6
  23. package/dist/components/citation/citation.js.map +1 -1
  24. package/dist/components/color-field/color-field.d.ts +2 -0
  25. package/dist/components/color-field/color-field.d.ts.map +1 -1
  26. package/dist/components/color-field/color-field.js +3 -1
  27. package/dist/components/color-field/color-field.js.map +1 -1
  28. package/dist/components/color-picker/color-picker.d.ts +76 -9
  29. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  30. package/dist/components/color-picker/color-picker.js +89 -7
  31. package/dist/components/color-picker/color-picker.js.map +1 -1
  32. package/dist/components/color-picker/context.js +10 -1
  33. package/dist/components/color-picker/context.js.map +1 -1
  34. package/dist/components/color-picker/use-color-picker.js +14 -4
  35. package/dist/components/color-picker/use-color-picker.js.map +1 -1
  36. package/dist/components/color-swatch-picker/color-swatch-picker.d.ts.map +1 -1
  37. package/dist/components/color-swatch-picker/color-swatch-picker.js +21 -4
  38. package/dist/components/color-swatch-picker/color-swatch-picker.js.map +1 -1
  39. package/dist/components/color-swatch-picker/use-color-swatch-picker.d.ts +6 -1
  40. package/dist/components/color-swatch-picker/use-color-swatch-picker.d.ts.map +1 -1
  41. package/dist/components/color-swatch-picker/use-color-swatch-picker.js +7 -3
  42. package/dist/components/color-swatch-picker/use-color-swatch-picker.js.map +1 -1
  43. package/dist/components/combobox/combobox.d.ts +2 -0
  44. package/dist/components/combobox/combobox.d.ts.map +1 -1
  45. package/dist/components/combobox/combobox.js +6 -4
  46. package/dist/components/combobox/combobox.js.map +1 -1
  47. package/dist/components/command/command.d.ts +3 -3
  48. package/dist/components/context-menu/context-menu.d.ts +9 -1
  49. package/dist/components/context-menu/context-menu.d.ts.map +1 -1
  50. package/dist/components/context-menu/context-menu.js +11 -1
  51. package/dist/components/context-menu/context-menu.js.map +1 -1
  52. package/dist/components/date-field/date-field.d.ts +6 -2
  53. package/dist/components/date-field/date-field.d.ts.map +1 -1
  54. package/dist/components/date-field/date-field.js +5 -2
  55. package/dist/components/date-field/date-field.js.map +1 -1
  56. package/dist/components/date-picker/context.js +10 -1
  57. package/dist/components/date-picker/context.js.map +1 -1
  58. package/dist/components/date-picker/date-picker.d.ts +58 -3
  59. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  60. package/dist/components/date-picker/date-picker.js +77 -5
  61. package/dist/components/date-picker/date-picker.js.map +1 -1
  62. package/dist/components/date-range-picker/date-range-picker.d.ts +27 -1
  63. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
  64. package/dist/components/date-range-picker/date-range-picker.js +10 -1
  65. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  66. package/dist/components/dialog/dialog.d.ts +12 -1
  67. package/dist/components/dialog/dialog.d.ts.map +1 -1
  68. package/dist/components/dialog/dialog.js +14 -4
  69. package/dist/components/dialog/dialog.js.map +1 -1
  70. package/dist/components/drawer/drawer.d.ts +12 -1
  71. package/dist/components/drawer/drawer.d.ts.map +1 -1
  72. package/dist/components/drawer/drawer.js +14 -4
  73. package/dist/components/drawer/drawer.js.map +1 -1
  74. package/dist/components/field/context.d.ts +6 -1
  75. package/dist/components/field/context.d.ts.map +1 -1
  76. package/dist/components/field/context.js +10 -1
  77. package/dist/components/field/context.js.map +1 -1
  78. package/dist/components/field/field.d.ts +9 -1
  79. package/dist/components/field/field.d.ts.map +1 -1
  80. package/dist/components/field/field.js +14 -2
  81. package/dist/components/field/field.js.map +1 -1
  82. package/dist/components/field/use-field-control.d.ts +8 -1
  83. package/dist/components/field/use-field-control.d.ts.map +1 -1
  84. package/dist/components/field/use-field-control.js +14 -1
  85. package/dist/components/field/use-field-control.js.map +1 -1
  86. package/dist/components/file-upload/file-upload.d.ts +2 -0
  87. package/dist/components/file-upload/file-upload.d.ts.map +1 -1
  88. package/dist/components/file-upload/file-upload.js +3 -1
  89. package/dist/components/file-upload/file-upload.js.map +1 -1
  90. package/dist/components/float-button/float-button.d.ts +26 -1
  91. package/dist/components/float-button/float-button.d.ts.map +1 -1
  92. package/dist/components/float-button/float-button.js +17 -5
  93. package/dist/components/float-button/float-button.js.map +1 -1
  94. package/dist/components/float-button/use-float-button.js +7 -1
  95. package/dist/components/float-button/use-float-button.js.map +1 -1
  96. package/dist/components/floating-panel/floating-panel.d.ts +2 -2
  97. package/dist/components/floating-panel/floating-panel.js +4 -1
  98. package/dist/components/floating-panel/floating-panel.js.map +1 -1
  99. package/dist/components/form/context.js +5 -1
  100. package/dist/components/form/context.js.map +1 -1
  101. package/dist/components/form/form.d.ts +8 -0
  102. package/dist/components/form/form.d.ts.map +1 -1
  103. package/dist/components/form/form.js +4 -1
  104. package/dist/components/form/form.js.map +1 -1
  105. package/dist/components/form/use-form-control.js +1 -1
  106. package/dist/components/funnel-chart/funnel-chart.d.ts.map +1 -1
  107. package/dist/components/funnel-chart/funnel-chart.js +2 -2
  108. package/dist/components/funnel-chart/funnel-chart.js.map +1 -1
  109. package/dist/components/graph-chart/graph-chart.d.ts.map +1 -1
  110. package/dist/components/graph-chart/graph-chart.js +2 -2
  111. package/dist/components/graph-chart/graph-chart.js.map +1 -1
  112. package/dist/components/hierarchy-chart/hierarchy-chart.d.ts.map +1 -1
  113. package/dist/components/hierarchy-chart/hierarchy-chart.js +2 -2
  114. package/dist/components/hierarchy-chart/hierarchy-chart.js.map +1 -1
  115. package/dist/components/hover-card/hover-card.js +2 -1
  116. package/dist/components/hover-card/hover-card.js.map +1 -1
  117. package/dist/components/image-viewer/image-viewer.d.ts +7 -1
  118. package/dist/components/image-viewer/image-viewer.d.ts.map +1 -1
  119. package/dist/components/image-viewer/image-viewer.js +1 -0
  120. package/dist/components/image-viewer/image-viewer.js.map +1 -1
  121. package/dist/components/mention/mention.d.ts +1 -1
  122. package/dist/components/mention/mention.js +5 -4
  123. package/dist/components/mention/mention.js.map +1 -1
  124. package/dist/components/menu/menu.js +31 -2
  125. package/dist/components/menu/menu.js.map +1 -1
  126. package/dist/components/menubar/context.d.ts.map +1 -1
  127. package/dist/components/menubar/context.js.map +1 -1
  128. package/dist/components/menubar/menubar.d.ts +9 -1
  129. package/dist/components/menubar/menubar.d.ts.map +1 -1
  130. package/dist/components/menubar/menubar.js +29 -2
  131. package/dist/components/menubar/menubar.js.map +1 -1
  132. package/dist/components/pagination/pagination.js +4 -2
  133. package/dist/components/pagination/pagination.js.map +1 -1
  134. package/dist/components/pie-chart/pie-chart.d.ts.map +1 -1
  135. package/dist/components/pie-chart/pie-chart.js +2 -2
  136. package/dist/components/pie-chart/pie-chart.js.map +1 -1
  137. package/dist/components/pin-input/pin-input.d.ts.map +1 -1
  138. package/dist/components/pin-input/pin-input.js +7 -1
  139. package/dist/components/pin-input/pin-input.js.map +1 -1
  140. package/dist/components/popconfirm/popconfirm.d.ts +20 -1
  141. package/dist/components/popconfirm/popconfirm.d.ts.map +1 -1
  142. package/dist/components/popconfirm/popconfirm.js +9 -1
  143. package/dist/components/popconfirm/popconfirm.js.map +1 -1
  144. package/dist/components/popconfirm/use-popconfirm.js +2 -0
  145. package/dist/components/popconfirm/use-popconfirm.js.map +1 -1
  146. package/dist/components/popover/popover.d.ts +1 -1
  147. package/dist/components/popover/popover.js +2 -1
  148. package/dist/components/popover/popover.js.map +1 -1
  149. package/dist/components/radar-chart/radar-chart.d.ts.map +1 -1
  150. package/dist/components/radar-chart/radar-chart.js +2 -2
  151. package/dist/components/radar-chart/radar-chart.js.map +1 -1
  152. package/dist/components/radio-group/radio-group.d.ts.map +1 -1
  153. package/dist/components/radio-group/radio-group.js +25 -6
  154. package/dist/components/radio-group/radio-group.js.map +1 -1
  155. package/dist/components/radio-group/use-radio-group.d.ts +5 -0
  156. package/dist/components/radio-group/use-radio-group.d.ts.map +1 -1
  157. package/dist/components/radio-group/use-radio-group.js +4 -1
  158. package/dist/components/radio-group/use-radio-group.js.map +1 -1
  159. package/dist/components/rating/rating.d.ts.map +1 -1
  160. package/dist/components/rating/rating.js +7 -1
  161. package/dist/components/rating/rating.js.map +1 -1
  162. package/dist/components/sankey-chart/sankey-chart.d.ts.map +1 -1
  163. package/dist/components/sankey-chart/sankey-chart.js +2 -2
  164. package/dist/components/sankey-chart/sankey-chart.js.map +1 -1
  165. package/dist/components/select/select.d.ts +13 -0
  166. package/dist/components/select/select.d.ts.map +1 -1
  167. package/dist/components/select/select.js +15 -4
  168. package/dist/components/select/select.js.map +1 -1
  169. package/dist/components/side-nav/side-nav.d.ts.map +1 -1
  170. package/dist/components/side-nav/side-nav.js +8 -2
  171. package/dist/components/side-nav/side-nav.js.map +1 -1
  172. package/dist/components/signature-pad/signature-pad.d.ts +2 -0
  173. package/dist/components/signature-pad/signature-pad.d.ts.map +1 -1
  174. package/dist/components/signature-pad/signature-pad.js +3 -1
  175. package/dist/components/signature-pad/signature-pad.js.map +1 -1
  176. package/dist/components/slider/slider.d.ts.map +1 -1
  177. package/dist/components/slider/slider.js +7 -1
  178. package/dist/components/slider/slider.js.map +1 -1
  179. package/dist/components/tags-input/tags-input.d.ts +2 -0
  180. package/dist/components/tags-input/tags-input.d.ts.map +1 -1
  181. package/dist/components/tags-input/tags-input.js +3 -1
  182. package/dist/components/tags-input/tags-input.js.map +1 -1
  183. package/dist/components/text-field/text-field.d.ts +2 -0
  184. package/dist/components/text-field/text-field.d.ts.map +1 -1
  185. package/dist/components/text-field/text-field.js +3 -1
  186. package/dist/components/text-field/text-field.js.map +1 -1
  187. package/dist/components/time-field/time-field.d.ts +2 -0
  188. package/dist/components/time-field/time-field.d.ts.map +1 -1
  189. package/dist/components/time-field/time-field.js +3 -1
  190. package/dist/components/time-field/time-field.js.map +1 -1
  191. package/dist/components/time-picker/context.js +10 -1
  192. package/dist/components/time-picker/context.js.map +1 -1
  193. package/dist/components/time-picker/time-picker.d.ts +78 -9
  194. package/dist/components/time-picker/time-picker.d.ts.map +1 -1
  195. package/dist/components/time-picker/time-picker.js +91 -9
  196. package/dist/components/time-picker/time-picker.js.map +1 -1
  197. package/dist/components/time-range-picker/time-range-picker.d.ts +2 -0
  198. package/dist/components/time-range-picker/time-range-picker.d.ts.map +1 -1
  199. package/dist/components/time-range-picker/time-range-picker.js +5 -2
  200. package/dist/components/time-range-picker/time-range-picker.js.map +1 -1
  201. package/dist/components/toggle-group/toggle-group.d.ts.map +1 -1
  202. package/dist/components/toggle-group/toggle-group.js +7 -1
  203. package/dist/components/toggle-group/toggle-group.js.map +1 -1
  204. package/dist/components/tooltip/tooltip.js +2 -1
  205. package/dist/components/tooltip/tooltip.js.map +1 -1
  206. package/dist/components/tour/tour.js +12 -3
  207. package/dist/components/tour/tour.js.map +1 -1
  208. package/dist/components/tree/tree.d.ts +2 -2
  209. package/dist/components/tree/tree.js +1 -1
  210. package/dist/components/tree/tree.js.map +1 -1
  211. package/dist/components/tree-select/tree-select.d.ts +2 -0
  212. package/dist/components/tree-select/tree-select.d.ts.map +1 -1
  213. package/dist/components/tree-select/tree-select.js +6 -4
  214. package/dist/components/tree-select/tree-select.js.map +1 -1
  215. package/dist/components/truncate/truncate.d.ts.map +1 -1
  216. package/dist/components/truncate/truncate.js +4 -8
  217. package/dist/components/truncate/truncate.js.map +1 -1
  218. package/dist/index.d.ts +7 -7
  219. package/dist/index.js +8 -8
  220. package/dist/locale.d.ts +2 -0
  221. package/dist/locale.js +2 -0
  222. package/dist/package.js +1 -1
  223. package/dist/runtime/as-child.js +7 -2
  224. package/dist/runtime/as-child.js.map +1 -1
  225. package/dist/runtime/portal.js +13 -1
  226. package/dist/runtime/portal.js.map +1 -1
  227. package/dist/runtime/use-overlay-exit.js +6 -1
  228. package/dist/runtime/use-overlay-exit.js.map +1 -1
  229. package/dist/runtime/with-handlers.js +25 -0
  230. package/dist/runtime/with-handlers.js.map +1 -0
  231. package/dist/services/dialog-service.d.ts +3 -3
  232. package/dist/services/dialog-service.d.ts.map +1 -1
  233. package/dist/services/dialog-service.js +8 -6
  234. package/dist/services/dialog-service.js.map +1 -1
  235. package/dist/services/service-config.js +2 -1
  236. package/dist/services/service-config.js.map +1 -1
  237. package/package.json +19 -15
package/dist/index.js CHANGED
@@ -36,10 +36,10 @@ import { useCarousel } from "./components/carousel/use-carousel.js";
36
36
  import { XhCarouselAutoplayTrigger, XhCarouselIndicator, XhCarouselIndicatorGroup, XhCarouselItem, XhCarouselList, XhCarouselNextTrigger, XhCarouselPrevTrigger, XhCarouselRoot, XhCarouselViewport } from "./components/carousel/carousel.js";
37
37
  import { useCartesianChart } from "./components/cartesian-chart/use-cartesian-chart.js";
38
38
  import { XhCartesianChartCaption, XhCartesianChartEmpty, XhCartesianChartLegend, XhCartesianChartPlot, XhCartesianChartRoot, XhCartesianChartTooltip, XhCartesianChartViewport, XhCartesianChartZoomSlider } from "./components/cartesian-chart/cartesian-chart.js";
39
- import { provideField, useFieldContext, useOptionalFieldContext } from "./components/field/context.js";
39
+ import { clearFieldContext, provideField, useFieldContext, useOptionalFieldContext } from "./components/field/context.js";
40
40
  import { useField } from "./components/field/use-field.js";
41
- import { XhFieldControl, XhFieldDescription, XhFieldErrorText, XhFieldLabel, XhFieldRoot } from "./components/field/field.js";
42
- import { useFieldControl, useFieldLabelWiring, useFieldStateWiring } from "./components/field/use-field-control.js";
41
+ import { XhFieldBoundary, XhFieldControl, XhFieldDescription, XhFieldErrorText, XhFieldLabel, XhFieldRoot } from "./components/field/field.js";
42
+ import { useFieldControl, useFieldGroupWiring, useFieldLabelWiring, useFieldStateWiring } from "./components/field/use-field-control.js";
43
43
  import { useCascader } from "./components/cascader/use-cascader.js";
44
44
  import { XhCascaderClearTrigger, XhCascaderColumn, XhCascaderContent, XhCascaderControl, XhCascaderFooter, XhCascaderGroup, XhCascaderGroupLabel, XhCascaderIndicator, XhCascaderInput, XhCascaderItem, XhCascaderItemDeleteTrigger, XhCascaderItemDescription, XhCascaderItemIndicator, XhCascaderItemSuffix, XhCascaderItemText, XhCascaderLabel, XhCascaderLoading, XhCascaderOverflowTag, XhCascaderPositioner, XhCascaderRoot, XhCascaderSearchList, XhCascaderTag, XhCascaderTagLabel, XhCascaderTagList, XhCascaderTrigger, XhCascaderValueText } from "./components/cascader/cascader.js";
45
45
  import { useCheckboxGroup } from "./components/checkbox-group/use-checkbox-group.js";
@@ -65,7 +65,7 @@ import { provideColorSwatchPicker, useColorSwatchPickerContext } from "./compone
65
65
  import { useColorSwatchPicker } from "./components/color-swatch-picker/use-color-swatch-picker.js";
66
66
  import { XhColorSwatchPickerItem, XhColorSwatchPickerLabel, XhColorSwatchPickerRoot } from "./components/color-swatch-picker/color-swatch-picker.js";
67
67
  import { useColorPicker } from "./components/color-picker/use-color-picker.js";
68
- import { XhColorPickerAlphaSlider, XhColorPickerAreaThumb, XhColorPickerChannelInput, XhColorPickerContent, XhColorPickerControl, XhColorPickerEyeDropperTrigger, XhColorPickerHiddenInput, XhColorPickerHueSlider, XhColorPickerLabel, XhColorPickerPositioner, XhColorPickerRecentSwatchPicker, XhColorPickerRoot, XhColorPickerSaturationArea, XhColorPickerSwatch, XhColorPickerSwatchPicker, XhColorPickerTrigger, XhColorPickerValueText } from "./components/color-picker/color-picker.js";
68
+ import { XhColorPickerAlphaSlider, XhColorPickerAreaThumb, XhColorPickerChannelInput, XhColorPickerConfirmTrigger, XhColorPickerContent, XhColorPickerControl, XhColorPickerEyeDropperTrigger, XhColorPickerHiddenInput, XhColorPickerHueSlider, XhColorPickerItemDeleteTrigger, XhColorPickerLabel, XhColorPickerOverflowTag, XhColorPickerPositioner, XhColorPickerRecentSwatchPicker, XhColorPickerRoot, XhColorPickerSaturationArea, XhColorPickerSwatch, XhColorPickerSwatchPicker, XhColorPickerTag, XhColorPickerTagLabel, XhColorPickerTagList, XhColorPickerTrigger, XhColorPickerValueText } from "./components/color-picker/color-picker.js";
69
69
  import { XhColorSwatch } from "./components/color-swatch/color-swatch.js";
70
70
  import { useCombobox } from "./components/combobox/use-combobox.js";
71
71
  import { XhComboboxClearTrigger, XhComboboxContent, XhComboboxControl, XhComboboxEmpty, XhComboboxGroup, XhComboboxGroupLabel, XhComboboxHiddenInput, XhComboboxInput, XhComboboxItem, XhComboboxItemDeleteTrigger, XhComboboxItemDescription, XhComboboxItemIndicator, XhComboboxItemPrefix, XhComboboxItemSuffix, XhComboboxItemText, XhComboboxLabel, XhComboboxLoading, XhComboboxOverflowTag, XhComboboxPositioner, XhComboboxRoot, XhComboboxTag, XhComboboxTagLabel, XhComboboxTagList, XhComboboxTrigger } from "./components/combobox/combobox.js";
@@ -74,12 +74,13 @@ import { XhCommandContent, XhCommandEmpty, XhCommandFooter, XhCommandGroup, XhCo
74
74
  import { provideContextMenuSub, useContextMenuSubContext } from "./components/context-menu/context.js";
75
75
  import { provideMenu, provideMenuGroup, provideMenuSub, useMenuContext, useMenuGroupContext, useMenuSubContext } from "./components/menu/context.js";
76
76
  import { useMenu } from "./components/menu/use-menu.js";
77
+ import { XhMenuArrow, XhMenuCheckboxItem, XhMenuContent, XhMenuGroup, XhMenuGroupLabel, XhMenuItem, XhMenuItemDescription, XhMenuItemIndicator, XhMenuItemShortcut, XhMenuItemSuffix, XhMenuItemText, XhMenuPositioner, XhMenuRadioGroup, XhMenuRadioItem, XhMenuRoot, XhMenuSeparator, XhMenuSub, XhMenuSubTrigger, XhMenuTrigger } from "./components/menu/menu.js";
77
78
  import { useContextMenu } from "./components/context-menu/use-context-menu.js";
78
79
  import { XhContextMenuArrow, XhContextMenuCheckboxItem, XhContextMenuContent, XhContextMenuGroup, XhContextMenuGroupLabel, XhContextMenuItem, XhContextMenuItemDescription, XhContextMenuItemIndicator, XhContextMenuItemShortcut, XhContextMenuItemSuffix, XhContextMenuItemText, XhContextMenuPositioner, XhContextMenuRadioGroup, XhContextMenuRadioItem, XhContextMenuRoot, XhContextMenuSeparator, XhContextMenuSub, XhContextMenuSubTrigger, XhContextMenuTrigger } from "./components/context-menu/context-menu.js";
79
80
  import { useDateField } from "./components/date-field/use-date-field.js";
80
81
  import { XhDateFieldClearTrigger, XhDateFieldControl, XhDateFieldHiddenInput, XhDateFieldLabel, XhDateFieldRoot, XhDateFieldSegment, XhDateFieldSegmentGroup } from "./components/date-field/date-field.js";
81
82
  import { useDatePicker } from "./components/date-picker/use-date-picker.js";
82
- import { XhDatePickerCalendar, XhDatePickerCell, XhDatePickerCellTrigger, XhDatePickerClearTrigger, XhDatePickerConfirmTrigger, XhDatePickerContent, XhDatePickerControl, XhDatePickerGrid, XhDatePickerGridBody, XhDatePickerGridHead, XhDatePickerHeader, XhDatePickerHeading, XhDatePickerHeadingMonthTrigger, XhDatePickerHeadingYearTrigger, XhDatePickerHiddenInput, XhDatePickerLabel, XhDatePickerNextTrigger, XhDatePickerNextYearTrigger, XhDatePickerPositioner, XhDatePickerPreset, XhDatePickerPresetGroup, XhDatePickerPrevTrigger, XhDatePickerPrevYearTrigger, XhDatePickerRoot, XhDatePickerSegment, XhDatePickerSegmentGroup, XhDatePickerTimePanel, XhDatePickerTrigger, XhDatePickerWeekDay, XhDatePickerWeekNumber, XhDatePickerWeekRow } from "./components/date-picker/date-picker.js";
83
+ import { XhDatePickerCalendar, XhDatePickerCell, XhDatePickerCellTrigger, XhDatePickerClearTrigger, XhDatePickerConfirmTrigger, XhDatePickerContent, XhDatePickerControl, XhDatePickerGrid, XhDatePickerGridBody, XhDatePickerGridHead, XhDatePickerHeader, XhDatePickerHeading, XhDatePickerHeadingMonthTrigger, XhDatePickerHeadingYearTrigger, XhDatePickerHiddenInput, XhDatePickerItemDeleteTrigger, XhDatePickerLabel, XhDatePickerNextTrigger, XhDatePickerNextYearTrigger, XhDatePickerOverflowTag, XhDatePickerPositioner, XhDatePickerPreset, XhDatePickerPresetGroup, XhDatePickerPrevTrigger, XhDatePickerPrevYearTrigger, XhDatePickerRoot, XhDatePickerSegment, XhDatePickerSegmentGroup, XhDatePickerTag, XhDatePickerTagLabel, XhDatePickerTagList, XhDatePickerTimePanel, XhDatePickerTrigger, XhDatePickerWeekDay, XhDatePickerWeekNumber, XhDatePickerWeekRow } from "./components/date-picker/date-picker.js";
83
84
  import { useDateRangePicker } from "./components/date-range-picker/use-date-range-picker.js";
84
85
  import { XhDateRangePickerCalendar, XhDateRangePickerCell, XhDateRangePickerCellTrigger, XhDateRangePickerClearTrigger, XhDateRangePickerConfirmTrigger, XhDateRangePickerContent, XhDateRangePickerControl, XhDateRangePickerGrid, XhDateRangePickerGridBody, XhDateRangePickerGridHead, XhDateRangePickerHeader, XhDateRangePickerHeading, XhDateRangePickerHeadingMonthTrigger, XhDateRangePickerHeadingYearTrigger, XhDateRangePickerHiddenInput, XhDateRangePickerLabel, XhDateRangePickerNextTrigger, XhDateRangePickerNextYearTrigger, XhDateRangePickerPositioner, XhDateRangePickerPreset, XhDateRangePickerPresetGroup, XhDateRangePickerPrevTrigger, XhDateRangePickerPrevYearTrigger, XhDateRangePickerRangeSeparator, XhDateRangePickerRoot, XhDateRangePickerSegment, XhDateRangePickerSegmentGroup, XhDateRangePickerTimePanel, XhDateRangePickerTrigger, XhDateRangePickerWeekDay, XhDateRangePickerWeekNumber, XhDateRangePickerWeekRow } from "./components/date-range-picker/date-range-picker.js";
85
86
  import { provideDescriptions, useDescriptionsContext } from "./components/descriptions/context.js";
@@ -172,7 +173,6 @@ import { XhMatrixCode, XhMatrixCodeLogo } from "./components/matrix-code/matrix-
172
173
  import { provideMention, provideMentionItem, useMentionContext, useMentionItemContext } from "./components/mention/context.js";
173
174
  import { useMention } from "./components/mention/use-mention.js";
174
175
  import { XhMentionContent, XhMentionEmpty, XhMentionInput, XhMentionItem, XhMentionItemDescription, XhMentionItemPrefix, XhMentionItemSuffix, XhMentionItemText, XhMentionLabel, XhMentionLoading, XhMentionPositioner, XhMentionRoot } from "./components/mention/mention.js";
175
- import { XhMenuArrow, XhMenuCheckboxItem, XhMenuContent, XhMenuGroup, XhMenuGroupLabel, XhMenuItem, XhMenuItemDescription, XhMenuItemIndicator, XhMenuItemShortcut, XhMenuItemSuffix, XhMenuItemText, XhMenuPositioner, XhMenuRadioGroup, XhMenuRadioItem, XhMenuRoot, XhMenuSeparator, XhMenuSub, XhMenuSubTrigger, XhMenuTrigger } from "./components/menu/menu.js";
176
176
  import { provideMenubarSub, useMenubarSubContext } from "./components/menubar/context.js";
177
177
  import { useMenubar } from "./components/menubar/use-menubar.js";
178
178
  import { XhMenubarArrow, XhMenubarCheckboxItem, XhMenubarContent, XhMenubarGroup, XhMenubarGroupLabel, XhMenubarItem, XhMenubarItemDescription, XhMenubarItemIndicator, XhMenubarItemShortcut, XhMenubarItemSuffix, XhMenubarItemText, XhMenubarPositioner, XhMenubarRadioGroup, XhMenubarRadioItem, XhMenubarRoot, XhMenubarSeparator, XhMenubarSub, XhMenubarSubTrigger, XhMenubarTrigger } from "./components/menubar/menubar.js";
@@ -272,7 +272,7 @@ import { XhTextFieldClearTrigger, XhTextFieldControl, XhTextFieldCount, XhTextFi
272
272
  import { useTimeField } from "./components/time-field/use-time-field.js";
273
273
  import { XhTimeFieldClearTrigger, XhTimeFieldControl, XhTimeFieldHiddenInput, XhTimeFieldLabel, XhTimeFieldRoot, XhTimeFieldSegment, XhTimeFieldSegmentGroup } from "./components/time-field/time-field.js";
274
274
  import { useTimePicker } from "./components/time-picker/use-time-picker.js";
275
- import { XhTimePickerClearTrigger, XhTimePickerColumn, XhTimePickerContent, XhTimePickerControl, XhTimePickerHiddenInput, XhTimePickerItem, XhTimePickerLabel, XhTimePickerPositioner, XhTimePickerPreset, XhTimePickerPresetGroup, XhTimePickerRoot, XhTimePickerSegment, XhTimePickerSegmentGroup, XhTimePickerTrigger } from "./components/time-picker/time-picker.js";
275
+ import { XhTimePickerClearTrigger, XhTimePickerColumn, XhTimePickerConfirmTrigger, XhTimePickerContent, XhTimePickerControl, XhTimePickerHiddenInput, XhTimePickerItem, XhTimePickerItemDeleteTrigger, XhTimePickerLabel, XhTimePickerOverflowTag, XhTimePickerPositioner, XhTimePickerPreset, XhTimePickerPresetGroup, XhTimePickerRoot, XhTimePickerSegment, XhTimePickerSegmentGroup, XhTimePickerTag, XhTimePickerTagLabel, XhTimePickerTagList, XhTimePickerTrigger } from "./components/time-picker/time-picker.js";
276
276
  import { useTimeRangePicker } from "./components/time-range-picker/use-time-range-picker.js";
277
277
  import { XhTimeRangePickerClearTrigger, XhTimeRangePickerColumn, XhTimeRangePickerColumnGroup, XhTimeRangePickerColumnGroupLabel, XhTimeRangePickerContent, XhTimeRangePickerControl, XhTimeRangePickerHiddenInput, XhTimeRangePickerItem, XhTimeRangePickerLabel, XhTimeRangePickerPositioner, XhTimeRangePickerPreset, XhTimeRangePickerPresetGroup, XhTimeRangePickerRangeSeparator, XhTimeRangePickerRoot, XhTimeRangePickerSegment, XhTimeRangePickerSegmentGroup, XhTimeRangePickerTrigger } from "./components/time-range-picker/time-range-picker.js";
278
278
  import { provideTimeline, provideTimelineItem, useTimelineContext, useTimelineItem } from "./components/timeline/context.js";
@@ -312,4 +312,4 @@ import { createDialogService } from "./services/dialog-service.js";
312
312
  import { createLoadingBarService } from "./services/loading-bar-service.js";
313
313
  import { createNotificationService } from "./services/notification-service.js";
314
314
  import { createColumnStore } from "@xihan-ui/headless";
315
- export { XhAccordionContent, XhAccordionHeader, XhAccordionIndicator, XhAccordionItem, XhAccordionItemSeparator, XhAccordionRoot, XhAccordionTrigger, XhAffixContent, XhAffixRoot, XhAlertAction, XhAlertCloseTrigger, XhAlertContent, XhAlertDescription, XhAlertIndicator, XhAlertRoot, XhAlertTitle, XhAnchorIndicator, XhAnchorItem, XhAnchorLink, XhAnchorLinkText, XhAnchorList, XhAnchorRoot, XhApprovalApproveTrigger, XhApprovalDenyTrigger, XhApprovalDescription, XhApprovalFooter, XhApprovalGroup, XhApprovalItem, XhApprovalItemIndicator, XhApprovalItemText, XhApprovalLiveRegion, XhApprovalNote, XhApprovalPendingIndicator, XhApprovalResult, XhApprovalRoot, XhApprovalTimer, XhApprovalTitle, XhAvatarFallback, XhAvatarGroupOverflowItem, XhAvatarGroupRoot, XhAvatarImage, XhAvatarRoot, XhBackTopRoot, XhBackTopTrigger, XhBadge, XhBadgeIndicator, XhBadgeRoot, XhBarCode, XhBreadcrumbEllipsis, XhBreadcrumbEllipsisTrigger, XhBreadcrumbItem, XhBreadcrumbLink, XhBreadcrumbLinkIcon, XhBreadcrumbList, XhBreadcrumbRoot, XhBreadcrumbSeparator, XhButton, XhButtonGroup, XhButtonIndicator, XhButtonLabel, XhButtonPrefix, XhButtonSuffix, XhCalendarPickerCell, XhCalendarPickerCellTrigger, XhCalendarPickerGrid, XhCalendarPickerGridBody, XhCalendarPickerGridHead, XhCalendarPickerHeader, XhCalendarPickerHeading, XhCalendarPickerHeadingMonthTrigger, XhCalendarPickerHeadingYearTrigger, XhCalendarPickerNextTrigger, XhCalendarPickerNextYearTrigger, XhCalendarPickerPrevTrigger, XhCalendarPickerPrevYearTrigger, XhCalendarPickerRoot, XhCalendarPickerWeekDay, XhCalendarPickerWeekNumber, XhCalendarPickerWeekRow, XhCalendarRangePickerCell, XhCalendarRangePickerCellTrigger, XhCalendarRangePickerGrid, XhCalendarRangePickerGridBody, XhCalendarRangePickerGridHead, XhCalendarRangePickerHeader, XhCalendarRangePickerHeading, XhCalendarRangePickerHeadingMonthTrigger, XhCalendarRangePickerHeadingYearTrigger, XhCalendarRangePickerNextTrigger, XhCalendarRangePickerNextYearTrigger, XhCalendarRangePickerPrevTrigger, XhCalendarRangePickerPrevYearTrigger, XhCalendarRangePickerRoot, XhCalendarRangePickerWeekDay, XhCalendarRangePickerWeekNumber, XhCalendarRangePickerWeekRow, XhCardContent, XhCardDescription, XhCardFooter, XhCardHeader, XhCardRoot, XhCardTitle, XhCardTrigger, XhCarouselAutoplayTrigger, XhCarouselIndicator, XhCarouselIndicatorGroup, XhCarouselItem, XhCarouselList, XhCarouselNextTrigger, XhCarouselPrevTrigger, XhCarouselRoot, XhCarouselViewport, XhCartesianChartCaption, XhCartesianChartEmpty, XhCartesianChartLegend, XhCartesianChartPlot, XhCartesianChartRoot, XhCartesianChartTooltip, XhCartesianChartViewport, XhCartesianChartZoomSlider, XhCascaderClearTrigger, XhCascaderColumn, XhCascaderContent, XhCascaderControl, XhCascaderFooter, XhCascaderGroup, XhCascaderGroupLabel, XhCascaderIndicator, XhCascaderInput, XhCascaderItem, XhCascaderItemDeleteTrigger, XhCascaderItemDescription, XhCascaderItemIndicator, XhCascaderItemSuffix, XhCascaderItemText, XhCascaderLabel, XhCascaderLoading, XhCascaderOverflowTag, XhCascaderPositioner, XhCascaderRoot, XhCascaderSearchList, XhCascaderTag, XhCascaderTagLabel, XhCascaderTagList, XhCascaderTrigger, XhCascaderValueText, XhCheckbox, XhCheckboxGroupIndicator, XhCheckboxGroupItem, XhCheckboxGroupItemDescription, XhCheckboxGroupItemText, XhCheckboxGroupLabel, XhCheckboxGroupRoot, XhCheckboxGroupSelectAllTrigger, XhCitationList, XhCitationPositioner, XhCitationPreview, XhCitationRoot, XhCitationSource, XhCitationSourceIndex, XhCitationSourceLink, XhCitationSourceMeta, XhCitationSourceTitle, XhCitationText, XhCitationTrigger, XhClipboardControl, XhClipboardCopyTrigger, XhClipboardIndicator, XhClipboardInput, XhClipboardLabel, XhClipboardRoot, XhClipboardStatus, XhCodeViewCode, XhCodeViewFilename, XhCodeViewFoldTrigger, XhCodeViewHeader, XhCodeViewLangLabel, XhCodeViewPre, XhCodeViewRoot, XhCollapsibleContent, XhCollapsibleHeader, XhCollapsibleIndicator, XhCollapsibleRoot, XhCollapsibleTrigger, XhColorFieldClearTrigger, XhColorFieldControl, XhColorFieldHiddenInput, XhColorFieldInput, XhColorFieldLabel, XhColorFieldRoot, XhColorFieldSwatch, XhColorPickerAlphaSlider, XhColorPickerAreaThumb, XhColorPickerChannelInput, XhColorPickerContent, XhColorPickerControl, XhColorPickerEyeDropperTrigger, XhColorPickerHiddenInput, XhColorPickerHueSlider, XhColorPickerLabel, XhColorPickerPositioner, XhColorPickerRecentSwatchPicker, XhColorPickerRoot, XhColorPickerSaturationArea, XhColorPickerSwatch, XhColorPickerSwatchPicker, XhColorPickerTrigger, XhColorPickerValueText, XhColorSliderControl, XhColorSliderHiddenInput, XhColorSliderLabel, XhColorSliderRoot, XhColorSliderThumb, XhColorSliderTrack, XhColorSliderValueText, XhColorSwatch, XhColorSwatchPickerItem, XhColorSwatchPickerLabel, XhColorSwatchPickerRoot, XhComboboxClearTrigger, XhComboboxContent, XhComboboxControl, XhComboboxEmpty, XhComboboxGroup, XhComboboxGroupLabel, XhComboboxHiddenInput, XhComboboxInput, XhComboboxItem, XhComboboxItemDeleteTrigger, XhComboboxItemDescription, XhComboboxItemIndicator, XhComboboxItemPrefix, XhComboboxItemSuffix, XhComboboxItemText, XhComboboxLabel, XhComboboxLoading, XhComboboxOverflowTag, XhComboboxPositioner, XhComboboxRoot, XhComboboxTag, XhComboboxTagLabel, XhComboboxTagList, XhComboboxTrigger, XhCommandContent, XhCommandEmpty, XhCommandFooter, XhCommandGroup, XhCommandGroupLabel, XhCommandInput, XhCommandItem, XhCommandItemDescription, XhCommandItemPrefix, XhCommandItemShortcut, XhCommandItemSuffix, XhCommandItemText, XhCommandList, XhCommandLoading, XhCommandRoot, XhCommandTrigger, XhContextMenuArrow, XhContextMenuCheckboxItem, XhContextMenuContent, XhContextMenuGroup, XhContextMenuGroupLabel, XhContextMenuItem, XhContextMenuItemDescription, XhContextMenuItemIndicator, XhContextMenuItemShortcut, XhContextMenuItemSuffix, XhContextMenuItemText, XhContextMenuPositioner, XhContextMenuRadioGroup, XhContextMenuRadioItem, XhContextMenuRoot, XhContextMenuSeparator, XhContextMenuSub, XhContextMenuSubTrigger, XhContextMenuTrigger, XhDateFieldClearTrigger, XhDateFieldControl, XhDateFieldHiddenInput, XhDateFieldLabel, XhDateFieldRoot, XhDateFieldSegment, XhDateFieldSegmentGroup, XhDatePickerCalendar, XhDatePickerCell, XhDatePickerCellTrigger, XhDatePickerClearTrigger, XhDatePickerConfirmTrigger, XhDatePickerContent, XhDatePickerControl, XhDatePickerGrid, XhDatePickerGridBody, XhDatePickerGridHead, XhDatePickerHeader, XhDatePickerHeading, XhDatePickerHeadingMonthTrigger, XhDatePickerHeadingYearTrigger, XhDatePickerHiddenInput, XhDatePickerLabel, XhDatePickerNextTrigger, XhDatePickerNextYearTrigger, XhDatePickerPositioner, XhDatePickerPreset, XhDatePickerPresetGroup, XhDatePickerPrevTrigger, XhDatePickerPrevYearTrigger, XhDatePickerRoot, XhDatePickerSegment, XhDatePickerSegmentGroup, XhDatePickerTimePanel, XhDatePickerTrigger, XhDatePickerWeekDay, XhDatePickerWeekNumber, XhDatePickerWeekRow, XhDateRangePickerCalendar, XhDateRangePickerCell, XhDateRangePickerCellTrigger, XhDateRangePickerClearTrigger, XhDateRangePickerConfirmTrigger, XhDateRangePickerContent, XhDateRangePickerControl, XhDateRangePickerGrid, XhDateRangePickerGridBody, XhDateRangePickerGridHead, XhDateRangePickerHeader, XhDateRangePickerHeading, XhDateRangePickerHeadingMonthTrigger, XhDateRangePickerHeadingYearTrigger, XhDateRangePickerHiddenInput, XhDateRangePickerLabel, XhDateRangePickerNextTrigger, XhDateRangePickerNextYearTrigger, XhDateRangePickerPositioner, XhDateRangePickerPreset, XhDateRangePickerPresetGroup, XhDateRangePickerPrevTrigger, XhDateRangePickerPrevYearTrigger, XhDateRangePickerRangeSeparator, XhDateRangePickerRoot, XhDateRangePickerSegment, XhDateRangePickerSegmentGroup, XhDateRangePickerTimePanel, XhDateRangePickerTrigger, XhDateRangePickerWeekDay, XhDateRangePickerWeekNumber, XhDateRangePickerWeekRow, XhDescriptionsExtra, XhDescriptionsHeader, XhDescriptionsItem, XhDescriptionsLabel, XhDescriptionsRoot, XhDescriptionsTitle, XhDescriptionsValue, XhDialogBody, XhDialogCloseTrigger, XhDialogContent, XhDialogDescription, XhDialogDragTrigger, XhDialogFooter, XhDialogHeader, XhDialogIndicator, XhDialogRoot, XhDialogTitle, XhDialogTrigger, XhDiffViewBody, XhDiffViewEmpty, XhDiffViewHeader, XhDiffViewRoot, XhDiffViewSummary, XhDiffViewTruncation, XhDiffViewViewport, XhDownloadTrigger, XhDrawerBody, XhDrawerCloseTrigger, XhDrawerContent, XhDrawerDescription, XhDrawerFooter, XhDrawerHeader, XhDrawerResizeTrigger, XhDrawerRoot, XhDrawerTitle, XhDrawerTrigger, XhEditableCancelTrigger, XhEditableControl, XhEditableEditTrigger, XhEditableInput, XhEditableLabel, XhEditablePreview, XhEditableRoot, XhEditableSubmitTrigger, XhEmptyStateAction, XhEmptyStateDescription, XhEmptyStateIndicator, XhEmptyStateMedia, XhEmptyStateRoot, XhEmptyStateTitle, XhFieldArrayAddTrigger, XhFieldArrayItem, XhFieldArrayItemAction, XhFieldArrayItemContent, XhFieldArrayItemDeleteTrigger, XhFieldArrayItemLabel, XhFieldArrayMoveDownTrigger, XhFieldArrayMoveUpTrigger, XhFieldArrayRoot, XhFieldControl, XhFieldDescription, XhFieldErrorText, XhFieldLabel, XhFieldRoot, XhFieldsetActions, XhFieldsetDescription, XhFieldsetErrorText, XhFieldsetFieldGroup, XhFieldsetLegend, XhFieldsetRoot, XhFileUploadClearTrigger, XhFileUploadDropzone, XhFileUploadHiddenInput, XhFileUploadItem, XhFileUploadItemDeleteTrigger, XhFileUploadItemName, XhFileUploadItemPreview, XhFileUploadItemProgress, XhFileUploadItemSizeText, XhFileUploadLabel, XhFileUploadList, XhFileUploadRoot, XhFileUploadTrigger, XhFlex, XhFlexSplit, XhFloatButtonList, XhFloatButtonRoot, XhFloatButtonTrigger, XhFloatingPanelBody, XhFloatingPanelCloseTrigger, XhFloatingPanelContent, XhFloatingPanelDragTrigger, XhFloatingPanelHeader, XhFloatingPanelPositioner, XhFloatingPanelResizeTrigger, XhFloatingPanelRoot, XhFloatingPanelTitle, XhFloatingPanelTrigger, XhFloatingPanelWindowStateTrigger, XhFormErrorSummary, XhFormErrorSummaryItem, XhFormFieldGroup, XhFormResetTrigger, XhFormRoot, XhFormSubmitTrigger, XhFunnelChartCaption, XhFunnelChartEmpty, XhFunnelChartPlot, XhFunnelChartRoot, XhFunnelChartTooltip, XhFunnelChartViewport, XhGraphChartCaption, XhGraphChartEmpty, XhGraphChartLegend, XhGraphChartPlot, XhGraphChartRoot, XhGraphChartTooltip, XhGraphChartViewport, XhGridItem, XhGridListEmpty, XhGridListLabel, XhGridListLoading, XhGridListRoot, XhGridListRow, XhGridListRowAction, XhGridListRowActions, XhGridListRowContent, XhGridListRowDescription, XhGridListRowSelectionIndicator, XhGridListRowText, XhGridRoot, XhHeatmapCell, XhHeatmapColumnLabel, XhHeatmapGrid, XhHeatmapLegend, XhHeatmapLegendItem, XhHeatmapLegendLabel, XhHeatmapMonthBlock, XhHeatmapMonthLabel, XhHeatmapRoot, XhHeatmapRow, XhHeatmapRowLabel, XhHeatmapTooltip, XhHeatmapWeekDay, XhHierarchyChartCaption, XhHierarchyChartEmpty, XhHierarchyChartLegend, XhHierarchyChartPath, XhHierarchyChartPlot, XhHierarchyChartRoot, XhHierarchyChartTooltip, XhHierarchyChartViewport, XhHighlight, XhHoverCardArrow, XhHoverCardContent, XhHoverCardDescription, XhHoverCardPositioner, XhHoverCardRoot, XhHoverCardTitle, XhHoverCardTrigger, XhIcon, XhImageCropperCropArea, XhImageCropperCropHandle, XhImageCropperFlipTrigger, XhImageCropperGrid, XhImageCropperHiddenInput, XhImageCropperImage, XhImageCropperRoot, XhImageCropperRotateSlider, XhImageCropperViewport, XhImageCropperZoomSlider, XhImageFallback, XhImageImage, XhImagePlaceholder, XhImageRoot, XhImageViewerCloseTrigger, XhImageViewerContent, XhImageViewerCounter, XhImageViewerFlipHorizontalTrigger, XhImageViewerFlipVerticalTrigger, XhImageViewerImage, XhImageViewerNextTrigger, XhImageViewerPrevTrigger, XhImageViewerResetTrigger, XhImageViewerRoot, XhImageViewerRotateLeftTrigger, XhImageViewerRotateRightTrigger, XhImageViewerToolbar, XhImageViewerTrigger, XhImageViewerViewport, XhImageViewerZoomInTrigger, XhImageViewerZoomOutTrigger, XhInfiniteScrollLoadMoreTrigger, XhInfiniteScrollRoot, XhInfiniteScrollSentinel, XhInputGroupItem, XhInputGroupRoot, XhJsonViewerRoot, XhKbd, XhLayoutContent, XhLayoutFooter, XhLayoutHeader, XhLayoutRoot, XhLayoutSider, XhLayoutSiderBackdrop, XhLayoutSiderTrigger, XhListItem, XhListItemAction, XhListItemContent, XhListItemDescription, XhListItemMedia, XhListItemTitle, XhListRoot, XhListboxContent, XhListboxEmpty, XhListboxGroup, XhListboxGroupLabel, XhListboxItem, XhListboxItemDescription, XhListboxItemIndicator, XhListboxItemPrefix, XhListboxItemSuffix, XhListboxItemText, XhListboxLabel, XhListboxLoadMoreTrigger, XhListboxLoading, XhListboxRoot, XhLoadingBarPeg, XhLoadingBarRange, XhLoadingBarRoot, XhLoadingBarTrack, XhLogContent, XhLogLine, XhLogLiveRegion, XhLogRoot, XhLogScrollToEndTrigger, XhLogSegment, XhLogViewport, XhMarkdownStreamContent, XhMarkdownStreamLiveRegion, XhMarkdownStreamRoot, XhMarqueeAutoplayTrigger, XhMarqueeContent, XhMarqueeRoot, XhMasonry, XhMatrixCode, XhMatrixCodeLogo, XhMentionContent, XhMentionEmpty, XhMentionInput, XhMentionItem, XhMentionItemDescription, XhMentionItemPrefix, XhMentionItemSuffix, XhMentionItemText, XhMentionLabel, XhMentionLoading, XhMentionPositioner, XhMentionRoot, XhMenuArrow, XhMenuCheckboxItem, XhMenuContent, XhMenuGroup, XhMenuGroupLabel, XhMenuItem, XhMenuItemDescription, XhMenuItemIndicator, XhMenuItemShortcut, XhMenuItemSuffix, XhMenuItemText, XhMenuPositioner, XhMenuRadioGroup, XhMenuRadioItem, XhMenuRoot, XhMenuSeparator, XhMenuSub, XhMenuSubTrigger, XhMenuTrigger, XhMenubarArrow, XhMenubarCheckboxItem, XhMenubarContent, XhMenubarGroup, XhMenubarGroupLabel, XhMenubarItem, XhMenubarItemDescription, XhMenubarItemIndicator, XhMenubarItemShortcut, XhMenubarItemSuffix, XhMenubarItemText, XhMenubarPositioner, XhMenubarRadioGroup, XhMenubarRadioItem, XhMenubarRoot, XhMenubarSeparator, XhMenubarSub, XhMenubarSubTrigger, XhMenubarTrigger, XhMessageFeedItem, XhMessageFeedItemLabel, XhMessageFeedList, XhMessageFeedLiveRegion, XhMessageFeedPendingIndicator, XhMessageFeedRoot, XhMessageFeedScrollToEndTrigger, XhMessageFeedSeparator, XhMessageFeedUnreadCount, XhMessageFeedViewport, XhNavigationMenuBranchContent, XhNavigationMenuBranchIndicator, XhNavigationMenuBranchTrigger, XhNavigationMenuContent, XhNavigationMenuIndicator, XhNavigationMenuItem, XhNavigationMenuLink, XhNavigationMenuList, XhNavigationMenuRoot, XhNavigationMenuTrigger, XhNavigationMenuTriggerIndicator, XhNavigationMenuViewport, XhNotificationGroup, XhNotificationItem, XhNotificationItemActionTrigger, XhNotificationItemCloseTrigger, XhNotificationItemContent, XhNotificationItemDescription, XhNotificationItemIndicator, XhNotificationItemProgress, XhNotificationItemTitle, XhNotificationRoot, XhNumberAnimation, XhNumberFieldControl, XhNumberFieldDecrementTrigger, XhNumberFieldIncrementTrigger, XhNumberFieldInput, XhNumberFieldLabel, XhNumberFieldPrefix, XhNumberFieldRoot, XhNumberFieldSuffix, XhPageHeaderBackTrigger, XhPageHeaderBreadcrumb, XhPageHeaderDescription, XhPageHeaderExtra, XhPageHeaderFooter, XhPageHeaderMedia, XhPageHeaderRoot, XhPageHeaderTitle, XhPaginationContent, XhPaginationEllipsisTrigger, XhPaginationFirstTrigger, XhPaginationItem, XhPaginationJumper, XhPaginationLastTrigger, XhPaginationNextTrigger, XhPaginationPageSizeSelect, XhPaginationPositioner, XhPaginationPrevTrigger, XhPaginationRoot, XhPaginationSummary, XhPasswordInputCapsLockIndicator, XhPasswordInputControl, XhPasswordInputInput, XhPasswordInputLabel, XhPasswordInputRoot, XhPasswordInputStrengthMeter, XhPasswordInputVisibilityTrigger, XhPieChartCaption, XhPieChartCenter, XhPieChartEmpty, XhPieChartLegend, XhPieChartPlot, XhPieChartRoot, XhPieChartTooltip, XhPieChartViewport, XhPinInputGroup, XhPinInputHiddenInput, XhPinInputInput, XhPinInputLabel, XhPinInputRoot, XhPinInputSeparator, XhPopconfirmArrow, XhPopconfirmCancelTrigger, XhPopconfirmConfirmTrigger, XhPopconfirmContent, XhPopconfirmDescription, XhPopconfirmPositioner, XhPopconfirmRoot, XhPopconfirmTitle, XhPopconfirmTrigger, XhPopoverArrow, XhPopoverCloseTrigger, XhPopoverContent, XhPopoverDescription, XhPopoverPositioner, XhPopoverRoot, XhPopoverTitle, XhPopoverTrigger, XhProgress, XhPromptInputControl, XhPromptInputInput, XhPromptInputRoot, XhPromptInputSubmitTrigger, XhQuestionFlowCounter, XhQuestionFlowDescription, XhQuestionFlowFooter, XhQuestionFlowGroup, XhQuestionFlowItem, XhQuestionFlowItemDescription, XhQuestionFlowItemIndicator, XhQuestionFlowItemText, XhQuestionFlowLiveRegion, XhQuestionFlowNextTrigger, XhQuestionFlowNote, XhQuestionFlowPrevTrigger, XhQuestionFlowPrompt, XhQuestionFlowQuestion, XhQuestionFlowResult, XhQuestionFlowRoot, XhQuestionFlowSkipTrigger, XhQuestionFlowSubmitTrigger, XhQuestionFlowTrack, XhQuestionFlowViewport, XhRadarChartCaption, XhRadarChartEmpty, XhRadarChartLegend, XhRadarChartPlot, XhRadarChartRoot, XhRadarChartTooltip, XhRadarChartViewport, XhRadioGroupItem, XhRadioGroupItemDescription, XhRadioGroupItemIcon, XhRadioGroupItemText, XhRadioGroupLabel, XhRadioGroupRoot, XhRadioGroupThumb, XhRatingControl, XhRatingHiddenInput, XhRatingItem, XhRatingLabel, XhRatingRoot, XhRatingValueText, XhReasoningContent, XhReasoningDuration, XhReasoningIcon, XhReasoningIndicator, XhReasoningLabel, XhReasoningRoot, XhReasoningTrigger, XhResizableHandle, XhResizableRoot, XhSankeyChartCaption, XhSankeyChartEmpty, XhSankeyChartLegend, XhSankeyChartPlot, XhSankeyChartRoot, XhSankeyChartTooltip, XhSankeyChartViewport, XhScrollAreaContent, XhScrollAreaCorner, XhScrollAreaRoot, XhScrollAreaScrollbar, XhScrollAreaThumb, XhScrollAreaTrack, XhScrollAreaViewport, XhScrollbarCorner, XhScrollbarRoot, XhScrollbarThumb, XhScrollbarTrack, XhSelectClearTrigger, XhSelectContent, XhSelectControl, XhSelectEmpty, XhSelectFooter, XhSelectGroup, XhSelectGroupLabel, XhSelectIndicator, XhSelectItem, XhSelectItemDeleteTrigger, XhSelectItemDescription, XhSelectItemIndicator, XhSelectItemPrefix, XhSelectItemSuffix, XhSelectItemText, XhSelectLabel, XhSelectList, XhSelectLoading, XhSelectOverflowTag, XhSelectPositioner, XhSelectRoot, XhSelectTag, XhSelectTagLabel, XhSelectTagList, XhSelectTrigger, XhSelectValueText, XhSeparator, XhSeparatorContent, XhSeparatorLine, XhSeparatorRoot, XhSideNavBranch, XhSideNavBranchContent, XhSideNavBranchIndicator, XhSideNavBranchText, XhSideNavBranchTrigger, XhSideNavEmpty, XhSideNavGroup, XhSideNavGroupLabel, XhSideNavGroupList, XhSideNavInput, XhSideNavItem, XhSideNavLink, XhSideNavLinkText, XhSideNavList, XhSideNavRoot, XhSideNavTooltip, XhSignaturePadClearTrigger, XhSignaturePadControl, XhSignaturePadGuide, XhSignaturePadHiddenInput, XhSignaturePadLabel, XhSignaturePadPath, XhSignaturePadRedoTrigger, XhSignaturePadRoot, XhSignaturePadStatus, XhSignaturePadUndoTrigger, XhSkeletonItem, XhSkeletonRoot, XhSliderControl, XhSliderHiddenInput, XhSliderLabel, XhSliderRange, XhSliderRoot, XhSliderThumb, XhSliderTickGroup, XhSliderTrack, XhSliderValueText, XhSortableDropIndicator, XhSortableItem, XhSortableItemDragTrigger, XhSortableLiveRegion, XhSortableRoot, XhSparkline, XhSpinner, XhSpinnerLabel, XhSplitterPanel, XhSplitterResizeTrigger, XhSplitterRoot, XhStatisticLabel, XhStatisticPrefix, XhStatisticRoot, XhStatisticSuffix, XhStatisticTrend, XhStatisticValue, XhStepsContent, XhStepsDescription, XhStepsIndicator, XhStepsItem, XhStepsList, XhStepsRoot, XhStepsSeparator, XhStepsTitle, XhStepsTrigger, XhSwitch, XhTableBody, XhTableCaption, XhTableCell, XhTableColumnDragTrigger, XhTableColumnHeader, XhTableColumnLabel, XhTableColumnList, XhTableColumnResizeTrigger, XhTableColumnVisibilityTrigger, XhTableEmpty, XhTableExpandTrigger, XhTableExpandedRow, XhTableFooter, XhTableHeader, XhTableLoadMoreTrigger, XhTableLoading, XhTableRoot, XhTableRow, XhTableRowDragTrigger, XhTableRowSelectTrigger, XhTableSelectAllTrigger, XhTableSortTrigger, XhTableToolbar, XhTabsCloseTrigger, XhTabsContent, XhTabsIndicator, XhTabsList, XhTabsLiveRegion, XhTabsNextTrigger, XhTabsOverflowTrigger, XhTabsPrevTrigger, XhTabsRoot, XhTabsSeparator, XhTabsTabDragTrigger, XhTabsTrigger, XhTagCloseTrigger, XhTagGroupCell, XhTagGroupItem, XhTagGroupItemDeleteTrigger, XhTagGroupItemIndicator, XhTagGroupItemText, XhTagGroupLabel, XhTagGroupList, XhTagGroupRoot, XhTagLabel, XhTagRoot, XhTagsInputClearTrigger, XhTagsInputControl, XhTagsInputCount, XhTagsInputHiddenInput, XhTagsInputInput, XhTagsInputItem, XhTagsInputItemDeleteTrigger, XhTagsInputItemInput, XhTagsInputItemPreview, XhTagsInputItemText, XhTagsInputLabel, XhTagsInputRoot, XhTextFieldClearTrigger, XhTextFieldControl, XhTextFieldCount, XhTextFieldInput, XhTextFieldLabel, XhTextFieldPrefix, XhTextFieldRoot, XhTextFieldSuffix, XhTimeFieldClearTrigger, XhTimeFieldControl, XhTimeFieldHiddenInput, XhTimeFieldLabel, XhTimeFieldRoot, XhTimeFieldSegment, XhTimeFieldSegmentGroup, XhTimePickerClearTrigger, XhTimePickerColumn, XhTimePickerContent, XhTimePickerControl, XhTimePickerHiddenInput, XhTimePickerItem, XhTimePickerLabel, XhTimePickerPositioner, XhTimePickerPreset, XhTimePickerPresetGroup, XhTimePickerRoot, XhTimePickerSegment, XhTimePickerSegmentGroup, XhTimePickerTrigger, XhTimeRangePickerClearTrigger, XhTimeRangePickerColumn, XhTimeRangePickerColumnGroup, XhTimeRangePickerColumnGroupLabel, XhTimeRangePickerContent, XhTimeRangePickerControl, XhTimeRangePickerHiddenInput, XhTimeRangePickerItem, XhTimeRangePickerLabel, XhTimeRangePickerPositioner, XhTimeRangePickerPreset, XhTimeRangePickerPresetGroup, XhTimeRangePickerRangeSeparator, XhTimeRangePickerRoot, XhTimeRangePickerSegment, XhTimeRangePickerSegmentGroup, XhTimeRangePickerTrigger, XhTimelineConnector, XhTimelineContent, XhTimelineDescription, XhTimelineIndicator, XhTimelineItem, XhTimelineLabel, XhTimelineRoot, XhTimelineTime, XhTimelineTitle, XhTimerControl, XhTimerDisplay, XhTimerItem, XhTimerRoot, XhTimerSeparator, XhTimestamp, XhToggle, XhToggleGroupHiddenInput, XhToggleGroupItem, XhToggleGroupRoot, XhToolCallApproval, XhToolCallContent, XhToolCallDuration, XhToolCallError, XhToolCallIndicator, XhToolCallInput, XhToolCallLabel, XhToolCallOutput, XhToolCallRoot, XhToolCallStatus, XhToolCallSummary, XhToolCallTrigger, XhToolbarGroup, XhToolbarItem, XhToolbarOverflowTrigger, XhToolbarRoot, XhToolbarSeparator, XhTooltipArrow, XhTooltipContent, XhTooltipPositioner, XhTooltipProvider, XhTooltipRoot, XhTooltipTrigger, XhTourArrow, XhTourBackdrop, XhTourCloseTrigger, XhTourContent, XhTourDescription, XhTourNextTrigger, XhTourPositioner, XhTourPrevTrigger, XhTourProgressDot, XhTourProgressIndicator, XhTourProgressText, XhTourRoot, XhTourSkipTrigger, XhTourSpotlight, XhTourTitle, XhTransferEmpty, XhTransferGroup, XhTransferGroupLabel, XhTransferItem, XhTransferItemCheckbox, XhTransferItemDescription, XhTransferItemSuffix, XhTransferItemText, XhTransferList, XhTransferLoading, XhTransferPanelCount, XhTransferPanelHeader, XhTransferPanelTitle, XhTransferRoot, XhTransferSearch, XhTransferSelectAllTrigger, XhTransferSourcePanel, XhTransferTargetPanel, XhTransferToSourceTrigger, XhTransferToTargetTrigger, XhTreeBranch, XhTreeBranchContent, XhTreeBranchControl, XhTreeBranchIndicator, XhTreeBranchText, XhTreeBranchTrigger, XhTreeEmpty, XhTreeItem, XhTreeItemDescription, XhTreeItemIndicator, XhTreeItemSuffix, XhTreeItemText, XhTreeLabel, XhTreeLiveRegion, XhTreeLoading, XhTreeNodeDragTrigger, XhTreeRoot, XhTreeSelectBranch, XhTreeSelectBranchContent, XhTreeSelectBranchControl, XhTreeSelectBranchEmpty, XhTreeSelectBranchError, XhTreeSelectBranchIndicator, XhTreeSelectBranchLoading, XhTreeSelectBranchRetryTrigger, XhTreeSelectBranchText, XhTreeSelectBranchTrigger, XhTreeSelectClearTrigger, XhTreeSelectContent, XhTreeSelectControl, XhTreeSelectEmpty, XhTreeSelectFooter, XhTreeSelectHiddenInput, XhTreeSelectIndicator, XhTreeSelectInput, XhTreeSelectItem, XhTreeSelectItemDeleteTrigger, XhTreeSelectItemDescription, XhTreeSelectItemIndicator, XhTreeSelectItemSuffix, XhTreeSelectItemText, XhTreeSelectLabel, XhTreeSelectLoading, XhTreeSelectOverflowTag, XhTreeSelectPositioner, XhTreeSelectRoot, XhTreeSelectTag, XhTreeSelectTagLabel, XhTreeSelectTagList, XhTreeSelectTree, XhTreeSelectTrigger, XhTreeSelectValueText, XhTreeTree, XhTruncate, XhTypographyHeading, XhTypographyLink, XhTypographyParagraph, XhTypographyProse, XhTypographyRoot, XhTypographyText, XhVirtualizerContent, XhVirtualizerItem, XhVirtualizerRoot, XhVirtualizerViewport, XhWatermarkContent, XhWatermarkRoot, createColumnStore, createDialogService, createLoadingBarService, createNotificationService, createVueIdGenerator, createVueRuntime, mergeXhConfig, provideAffix, provideApproval, provideAvatarGroup, provideBackTop, provideCitation, provideCitationSource, provideColorField, provideColorSlider, provideColorSwatchPicker, provideContextMenuSub, provideDescriptions, provideDiffView, provideField, provideFieldArray, provideFieldArrayItem, provideFlex, provideFloatButton, provideGrid, provideImageViewer, provideInfiniteScroll, provideInputGroup, provideLayout, provideList, provideLog, provideMarkdownStream, provideMarquee, provideMatrixCode, provideMention, provideMentionItem, provideMenu, provideMenuGroup, provideMenuSub, provideMenubarSub, provideMessageFeed, provideMessageFeedItem, provideNotification, provideNotificationItem, providePageHeader, providePopconfirm, providePromptInput, provideQuestionFlow, provideReasoning, provideResizable, provideScrollbar, provideSideNav, provideSideNavNode, provideSortable, provideStatistic, provideTimeline, provideTimelineItem, provideToolCall, provideTypography, provideWatermark, provideXhConfig, useAccordion, useAffix, useAffixContext, useAnchor, useApproval, useApprovalContext, useAvatar, useAvatarGroupContext, useBackTop, useBackTopContext, useBreadcrumb, useCalendarPicker, useCalendarRangePicker, useCarousel, useCartesianChart, useCascader, useCheckbox, useCheckboxGroup, useCitation, useCitationContext, useCitationSource, useClipboard, useCodeView, useCollapsible, useColorField, useColorFieldContext, useColorPicker, useColorSlider, useColorSliderContext, useColorSwatchPicker, useColorSwatchPickerContext, useCombobox, useCommand, useContextMenu, useContextMenuSubContext, useDateField, useDatePicker, useDateRangePicker, useDescriptionsContext, useDialog, useDiffView, useDiffViewContext, useDownloadTrigger, useDrawer, useEditable, useField, useFieldArray, useFieldArrayContext, useFieldArrayItemContext, useFieldContext, useFieldControl, useFieldLabelWiring, useFieldStateWiring, useFieldset, useFieldsetContext, useFileUpload, useFlexContext, useFloatButton, useFloatButtonContext, useFloatingPanel, useFloatingPanelContext, useForm, useFunnelChart, useGraphChart, useGridContext, useGridList, useGridListContext, useGridListRow, useHeatmap, useHeatmapContext, useHierarchyChart, useHoverCard, useIcon, useImage, useImageCropper, useImageCropperContext, useImageViewer, useImageViewerContext, useInfiniteScroll, useInfiniteScrollContext, useInputGroupContext, useJsonViewer, useLayout, useLayoutContext, useListContext, useListbox, useLoadingBar, useLog, useLogContext, useMachine, useMarkdownStream, useMarkdownStreamContext, useMarqueeContext, useMatrixCodeContext, useMention, useMentionContext, useMentionItemContext, useMenu, useMenuContext, useMenuGroupContext, useMenuSubContext, useMenubar, useMenubarSubContext, useMessageFeed, useMessageFeedContext, useMessageFeedItemContext, useNavigationMenu, useNotification, useNotificationContext, useNotificationContextOptional, useNotificationItem, useNotificationItemContext, useNumberField, useOptionalFieldContext, usePageHeaderContext, usePagination, usePasswordInput, usePasswordInputContext, usePieChart, usePinInput, usePopconfirm, usePopconfirmContext, usePopover, usePromptInput, usePromptInputContext, useQuestionFlow, useQuestionFlowContext, useRadarChart, useRadioGroup, useRating, useReasoning, useReasoningContext, useResizable, useResizableContext, useSankeyChart, useScrollArea, useScrollbar, useScrollbarContext, useSelect, useSideNav, useSideNavContext, useSideNavNodeContext, useSignaturePad, useSignaturePadContext, useSlider, useSortable, useSortableContext, useSparkline, useSplitter, useStatisticContext, useSteps, useSwitch, useTable, useTabs, useTag, useTagContext, useTagGroup, useTagGroupContext, useTagGroupItemContext, useTagsInput, useTextField, useTimeField, useTimePicker, useTimeRangePicker, useTimelineContext, useTimelineItem, useTimer, useTimerContext, useToggle, useToggleGroup, useToolCall, useToolCallContext, useToolbar, useTooltip, useTour, useTransfer, useTree, useTreeSelect, useTruncate, useTypographyContext, useVirtualizer, useWatermarkContext, useXhConfig, vueNormalize, withXhConfig };
315
+ export { XhAccordionContent, XhAccordionHeader, XhAccordionIndicator, XhAccordionItem, XhAccordionItemSeparator, XhAccordionRoot, XhAccordionTrigger, XhAffixContent, XhAffixRoot, XhAlertAction, XhAlertCloseTrigger, XhAlertContent, XhAlertDescription, XhAlertIndicator, XhAlertRoot, XhAlertTitle, XhAnchorIndicator, XhAnchorItem, XhAnchorLink, XhAnchorLinkText, XhAnchorList, XhAnchorRoot, XhApprovalApproveTrigger, XhApprovalDenyTrigger, XhApprovalDescription, XhApprovalFooter, XhApprovalGroup, XhApprovalItem, XhApprovalItemIndicator, XhApprovalItemText, XhApprovalLiveRegion, XhApprovalNote, XhApprovalPendingIndicator, XhApprovalResult, XhApprovalRoot, XhApprovalTimer, XhApprovalTitle, XhAvatarFallback, XhAvatarGroupOverflowItem, XhAvatarGroupRoot, XhAvatarImage, XhAvatarRoot, XhBackTopRoot, XhBackTopTrigger, XhBadge, XhBadgeIndicator, XhBadgeRoot, XhBarCode, XhBreadcrumbEllipsis, XhBreadcrumbEllipsisTrigger, XhBreadcrumbItem, XhBreadcrumbLink, XhBreadcrumbLinkIcon, XhBreadcrumbList, XhBreadcrumbRoot, XhBreadcrumbSeparator, XhButton, XhButtonGroup, XhButtonIndicator, XhButtonLabel, XhButtonPrefix, XhButtonSuffix, XhCalendarPickerCell, XhCalendarPickerCellTrigger, XhCalendarPickerGrid, XhCalendarPickerGridBody, XhCalendarPickerGridHead, XhCalendarPickerHeader, XhCalendarPickerHeading, XhCalendarPickerHeadingMonthTrigger, XhCalendarPickerHeadingYearTrigger, XhCalendarPickerNextTrigger, XhCalendarPickerNextYearTrigger, XhCalendarPickerPrevTrigger, XhCalendarPickerPrevYearTrigger, XhCalendarPickerRoot, XhCalendarPickerWeekDay, XhCalendarPickerWeekNumber, XhCalendarPickerWeekRow, XhCalendarRangePickerCell, XhCalendarRangePickerCellTrigger, XhCalendarRangePickerGrid, XhCalendarRangePickerGridBody, XhCalendarRangePickerGridHead, XhCalendarRangePickerHeader, XhCalendarRangePickerHeading, XhCalendarRangePickerHeadingMonthTrigger, XhCalendarRangePickerHeadingYearTrigger, XhCalendarRangePickerNextTrigger, XhCalendarRangePickerNextYearTrigger, XhCalendarRangePickerPrevTrigger, XhCalendarRangePickerPrevYearTrigger, XhCalendarRangePickerRoot, XhCalendarRangePickerWeekDay, XhCalendarRangePickerWeekNumber, XhCalendarRangePickerWeekRow, XhCardContent, XhCardDescription, XhCardFooter, XhCardHeader, XhCardRoot, XhCardTitle, XhCardTrigger, XhCarouselAutoplayTrigger, XhCarouselIndicator, XhCarouselIndicatorGroup, XhCarouselItem, XhCarouselList, XhCarouselNextTrigger, XhCarouselPrevTrigger, XhCarouselRoot, XhCarouselViewport, XhCartesianChartCaption, XhCartesianChartEmpty, XhCartesianChartLegend, XhCartesianChartPlot, XhCartesianChartRoot, XhCartesianChartTooltip, XhCartesianChartViewport, XhCartesianChartZoomSlider, XhCascaderClearTrigger, XhCascaderColumn, XhCascaderContent, XhCascaderControl, XhCascaderFooter, XhCascaderGroup, XhCascaderGroupLabel, XhCascaderIndicator, XhCascaderInput, XhCascaderItem, XhCascaderItemDeleteTrigger, XhCascaderItemDescription, XhCascaderItemIndicator, XhCascaderItemSuffix, XhCascaderItemText, XhCascaderLabel, XhCascaderLoading, XhCascaderOverflowTag, XhCascaderPositioner, XhCascaderRoot, XhCascaderSearchList, XhCascaderTag, XhCascaderTagLabel, XhCascaderTagList, XhCascaderTrigger, XhCascaderValueText, XhCheckbox, XhCheckboxGroupIndicator, XhCheckboxGroupItem, XhCheckboxGroupItemDescription, XhCheckboxGroupItemText, XhCheckboxGroupLabel, XhCheckboxGroupRoot, XhCheckboxGroupSelectAllTrigger, XhCitationList, XhCitationPositioner, XhCitationPreview, XhCitationRoot, XhCitationSource, XhCitationSourceIndex, XhCitationSourceLink, XhCitationSourceMeta, XhCitationSourceTitle, XhCitationText, XhCitationTrigger, XhClipboardControl, XhClipboardCopyTrigger, XhClipboardIndicator, XhClipboardInput, XhClipboardLabel, XhClipboardRoot, XhClipboardStatus, XhCodeViewCode, XhCodeViewFilename, XhCodeViewFoldTrigger, XhCodeViewHeader, XhCodeViewLangLabel, XhCodeViewPre, XhCodeViewRoot, XhCollapsibleContent, XhCollapsibleHeader, XhCollapsibleIndicator, XhCollapsibleRoot, XhCollapsibleTrigger, XhColorFieldClearTrigger, XhColorFieldControl, XhColorFieldHiddenInput, XhColorFieldInput, XhColorFieldLabel, XhColorFieldRoot, XhColorFieldSwatch, XhColorPickerAlphaSlider, XhColorPickerAreaThumb, XhColorPickerChannelInput, XhColorPickerConfirmTrigger, XhColorPickerContent, XhColorPickerControl, XhColorPickerEyeDropperTrigger, XhColorPickerHiddenInput, XhColorPickerHueSlider, XhColorPickerItemDeleteTrigger, XhColorPickerLabel, XhColorPickerOverflowTag, XhColorPickerPositioner, XhColorPickerRecentSwatchPicker, XhColorPickerRoot, XhColorPickerSaturationArea, XhColorPickerSwatch, XhColorPickerSwatchPicker, XhColorPickerTag, XhColorPickerTagLabel, XhColorPickerTagList, XhColorPickerTrigger, XhColorPickerValueText, XhColorSliderControl, XhColorSliderHiddenInput, XhColorSliderLabel, XhColorSliderRoot, XhColorSliderThumb, XhColorSliderTrack, XhColorSliderValueText, XhColorSwatch, XhColorSwatchPickerItem, XhColorSwatchPickerLabel, XhColorSwatchPickerRoot, XhComboboxClearTrigger, XhComboboxContent, XhComboboxControl, XhComboboxEmpty, XhComboboxGroup, XhComboboxGroupLabel, XhComboboxHiddenInput, XhComboboxInput, XhComboboxItem, XhComboboxItemDeleteTrigger, XhComboboxItemDescription, XhComboboxItemIndicator, XhComboboxItemPrefix, XhComboboxItemSuffix, XhComboboxItemText, XhComboboxLabel, XhComboboxLoading, XhComboboxOverflowTag, XhComboboxPositioner, XhComboboxRoot, XhComboboxTag, XhComboboxTagLabel, XhComboboxTagList, XhComboboxTrigger, XhCommandContent, XhCommandEmpty, XhCommandFooter, XhCommandGroup, XhCommandGroupLabel, XhCommandInput, XhCommandItem, XhCommandItemDescription, XhCommandItemPrefix, XhCommandItemShortcut, XhCommandItemSuffix, XhCommandItemText, XhCommandList, XhCommandLoading, XhCommandRoot, XhCommandTrigger, XhContextMenuArrow, XhContextMenuCheckboxItem, XhContextMenuContent, XhContextMenuGroup, XhContextMenuGroupLabel, XhContextMenuItem, XhContextMenuItemDescription, XhContextMenuItemIndicator, XhContextMenuItemShortcut, XhContextMenuItemSuffix, XhContextMenuItemText, XhContextMenuPositioner, XhContextMenuRadioGroup, XhContextMenuRadioItem, XhContextMenuRoot, XhContextMenuSeparator, XhContextMenuSub, XhContextMenuSubTrigger, XhContextMenuTrigger, XhDateFieldClearTrigger, XhDateFieldControl, XhDateFieldHiddenInput, XhDateFieldLabel, XhDateFieldRoot, XhDateFieldSegment, XhDateFieldSegmentGroup, XhDatePickerCalendar, XhDatePickerCell, XhDatePickerCellTrigger, XhDatePickerClearTrigger, XhDatePickerConfirmTrigger, XhDatePickerContent, XhDatePickerControl, XhDatePickerGrid, XhDatePickerGridBody, XhDatePickerGridHead, XhDatePickerHeader, XhDatePickerHeading, XhDatePickerHeadingMonthTrigger, XhDatePickerHeadingYearTrigger, XhDatePickerHiddenInput, XhDatePickerItemDeleteTrigger, XhDatePickerLabel, XhDatePickerNextTrigger, XhDatePickerNextYearTrigger, XhDatePickerOverflowTag, XhDatePickerPositioner, XhDatePickerPreset, XhDatePickerPresetGroup, XhDatePickerPrevTrigger, XhDatePickerPrevYearTrigger, XhDatePickerRoot, XhDatePickerSegment, XhDatePickerSegmentGroup, XhDatePickerTag, XhDatePickerTagLabel, XhDatePickerTagList, XhDatePickerTimePanel, XhDatePickerTrigger, XhDatePickerWeekDay, XhDatePickerWeekNumber, XhDatePickerWeekRow, XhDateRangePickerCalendar, XhDateRangePickerCell, XhDateRangePickerCellTrigger, XhDateRangePickerClearTrigger, XhDateRangePickerConfirmTrigger, XhDateRangePickerContent, XhDateRangePickerControl, XhDateRangePickerGrid, XhDateRangePickerGridBody, XhDateRangePickerGridHead, XhDateRangePickerHeader, XhDateRangePickerHeading, XhDateRangePickerHeadingMonthTrigger, XhDateRangePickerHeadingYearTrigger, XhDateRangePickerHiddenInput, XhDateRangePickerLabel, XhDateRangePickerNextTrigger, XhDateRangePickerNextYearTrigger, XhDateRangePickerPositioner, XhDateRangePickerPreset, XhDateRangePickerPresetGroup, XhDateRangePickerPrevTrigger, XhDateRangePickerPrevYearTrigger, XhDateRangePickerRangeSeparator, XhDateRangePickerRoot, XhDateRangePickerSegment, XhDateRangePickerSegmentGroup, XhDateRangePickerTimePanel, XhDateRangePickerTrigger, XhDateRangePickerWeekDay, XhDateRangePickerWeekNumber, XhDateRangePickerWeekRow, XhDescriptionsExtra, XhDescriptionsHeader, XhDescriptionsItem, XhDescriptionsLabel, XhDescriptionsRoot, XhDescriptionsTitle, XhDescriptionsValue, XhDialogBody, XhDialogCloseTrigger, XhDialogContent, XhDialogDescription, XhDialogDragTrigger, XhDialogFooter, XhDialogHeader, XhDialogIndicator, XhDialogRoot, XhDialogTitle, XhDialogTrigger, XhDiffViewBody, XhDiffViewEmpty, XhDiffViewHeader, XhDiffViewRoot, XhDiffViewSummary, XhDiffViewTruncation, XhDiffViewViewport, XhDownloadTrigger, XhDrawerBody, XhDrawerCloseTrigger, XhDrawerContent, XhDrawerDescription, XhDrawerFooter, XhDrawerHeader, XhDrawerResizeTrigger, XhDrawerRoot, XhDrawerTitle, XhDrawerTrigger, XhEditableCancelTrigger, XhEditableControl, XhEditableEditTrigger, XhEditableInput, XhEditableLabel, XhEditablePreview, XhEditableRoot, XhEditableSubmitTrigger, XhEmptyStateAction, XhEmptyStateDescription, XhEmptyStateIndicator, XhEmptyStateMedia, XhEmptyStateRoot, XhEmptyStateTitle, XhFieldArrayAddTrigger, XhFieldArrayItem, XhFieldArrayItemAction, XhFieldArrayItemContent, XhFieldArrayItemDeleteTrigger, XhFieldArrayItemLabel, XhFieldArrayMoveDownTrigger, XhFieldArrayMoveUpTrigger, XhFieldArrayRoot, XhFieldBoundary, XhFieldControl, XhFieldDescription, XhFieldErrorText, XhFieldLabel, XhFieldRoot, XhFieldsetActions, XhFieldsetDescription, XhFieldsetErrorText, XhFieldsetFieldGroup, XhFieldsetLegend, XhFieldsetRoot, XhFileUploadClearTrigger, XhFileUploadDropzone, XhFileUploadHiddenInput, XhFileUploadItem, XhFileUploadItemDeleteTrigger, XhFileUploadItemName, XhFileUploadItemPreview, XhFileUploadItemProgress, XhFileUploadItemSizeText, XhFileUploadLabel, XhFileUploadList, XhFileUploadRoot, XhFileUploadTrigger, XhFlex, XhFlexSplit, XhFloatButtonList, XhFloatButtonRoot, XhFloatButtonTrigger, XhFloatingPanelBody, XhFloatingPanelCloseTrigger, XhFloatingPanelContent, XhFloatingPanelDragTrigger, XhFloatingPanelHeader, XhFloatingPanelPositioner, XhFloatingPanelResizeTrigger, XhFloatingPanelRoot, XhFloatingPanelTitle, XhFloatingPanelTrigger, XhFloatingPanelWindowStateTrigger, XhFormErrorSummary, XhFormErrorSummaryItem, XhFormFieldGroup, XhFormResetTrigger, XhFormRoot, XhFormSubmitTrigger, XhFunnelChartCaption, XhFunnelChartEmpty, XhFunnelChartPlot, XhFunnelChartRoot, XhFunnelChartTooltip, XhFunnelChartViewport, XhGraphChartCaption, XhGraphChartEmpty, XhGraphChartLegend, XhGraphChartPlot, XhGraphChartRoot, XhGraphChartTooltip, XhGraphChartViewport, XhGridItem, XhGridListEmpty, XhGridListLabel, XhGridListLoading, XhGridListRoot, XhGridListRow, XhGridListRowAction, XhGridListRowActions, XhGridListRowContent, XhGridListRowDescription, XhGridListRowSelectionIndicator, XhGridListRowText, XhGridRoot, XhHeatmapCell, XhHeatmapColumnLabel, XhHeatmapGrid, XhHeatmapLegend, XhHeatmapLegendItem, XhHeatmapLegendLabel, XhHeatmapMonthBlock, XhHeatmapMonthLabel, XhHeatmapRoot, XhHeatmapRow, XhHeatmapRowLabel, XhHeatmapTooltip, XhHeatmapWeekDay, XhHierarchyChartCaption, XhHierarchyChartEmpty, XhHierarchyChartLegend, XhHierarchyChartPath, XhHierarchyChartPlot, XhHierarchyChartRoot, XhHierarchyChartTooltip, XhHierarchyChartViewport, XhHighlight, XhHoverCardArrow, XhHoverCardContent, XhHoverCardDescription, XhHoverCardPositioner, XhHoverCardRoot, XhHoverCardTitle, XhHoverCardTrigger, XhIcon, XhImageCropperCropArea, XhImageCropperCropHandle, XhImageCropperFlipTrigger, XhImageCropperGrid, XhImageCropperHiddenInput, XhImageCropperImage, XhImageCropperRoot, XhImageCropperRotateSlider, XhImageCropperViewport, XhImageCropperZoomSlider, XhImageFallback, XhImageImage, XhImagePlaceholder, XhImageRoot, XhImageViewerCloseTrigger, XhImageViewerContent, XhImageViewerCounter, XhImageViewerFlipHorizontalTrigger, XhImageViewerFlipVerticalTrigger, XhImageViewerImage, XhImageViewerNextTrigger, XhImageViewerPrevTrigger, XhImageViewerResetTrigger, XhImageViewerRoot, XhImageViewerRotateLeftTrigger, XhImageViewerRotateRightTrigger, XhImageViewerToolbar, XhImageViewerTrigger, XhImageViewerViewport, XhImageViewerZoomInTrigger, XhImageViewerZoomOutTrigger, XhInfiniteScrollLoadMoreTrigger, XhInfiniteScrollRoot, XhInfiniteScrollSentinel, XhInputGroupItem, XhInputGroupRoot, XhJsonViewerRoot, XhKbd, XhLayoutContent, XhLayoutFooter, XhLayoutHeader, XhLayoutRoot, XhLayoutSider, XhLayoutSiderBackdrop, XhLayoutSiderTrigger, XhListItem, XhListItemAction, XhListItemContent, XhListItemDescription, XhListItemMedia, XhListItemTitle, XhListRoot, XhListboxContent, XhListboxEmpty, XhListboxGroup, XhListboxGroupLabel, XhListboxItem, XhListboxItemDescription, XhListboxItemIndicator, XhListboxItemPrefix, XhListboxItemSuffix, XhListboxItemText, XhListboxLabel, XhListboxLoadMoreTrigger, XhListboxLoading, XhListboxRoot, XhLoadingBarPeg, XhLoadingBarRange, XhLoadingBarRoot, XhLoadingBarTrack, XhLogContent, XhLogLine, XhLogLiveRegion, XhLogRoot, XhLogScrollToEndTrigger, XhLogSegment, XhLogViewport, XhMarkdownStreamContent, XhMarkdownStreamLiveRegion, XhMarkdownStreamRoot, XhMarqueeAutoplayTrigger, XhMarqueeContent, XhMarqueeRoot, XhMasonry, XhMatrixCode, XhMatrixCodeLogo, XhMentionContent, XhMentionEmpty, XhMentionInput, XhMentionItem, XhMentionItemDescription, XhMentionItemPrefix, XhMentionItemSuffix, XhMentionItemText, XhMentionLabel, XhMentionLoading, XhMentionPositioner, XhMentionRoot, XhMenuArrow, XhMenuCheckboxItem, XhMenuContent, XhMenuGroup, XhMenuGroupLabel, XhMenuItem, XhMenuItemDescription, XhMenuItemIndicator, XhMenuItemShortcut, XhMenuItemSuffix, XhMenuItemText, XhMenuPositioner, XhMenuRadioGroup, XhMenuRadioItem, XhMenuRoot, XhMenuSeparator, XhMenuSub, XhMenuSubTrigger, XhMenuTrigger, XhMenubarArrow, XhMenubarCheckboxItem, XhMenubarContent, XhMenubarGroup, XhMenubarGroupLabel, XhMenubarItem, XhMenubarItemDescription, XhMenubarItemIndicator, XhMenubarItemShortcut, XhMenubarItemSuffix, XhMenubarItemText, XhMenubarPositioner, XhMenubarRadioGroup, XhMenubarRadioItem, XhMenubarRoot, XhMenubarSeparator, XhMenubarSub, XhMenubarSubTrigger, XhMenubarTrigger, XhMessageFeedItem, XhMessageFeedItemLabel, XhMessageFeedList, XhMessageFeedLiveRegion, XhMessageFeedPendingIndicator, XhMessageFeedRoot, XhMessageFeedScrollToEndTrigger, XhMessageFeedSeparator, XhMessageFeedUnreadCount, XhMessageFeedViewport, XhNavigationMenuBranchContent, XhNavigationMenuBranchIndicator, XhNavigationMenuBranchTrigger, XhNavigationMenuContent, XhNavigationMenuIndicator, XhNavigationMenuItem, XhNavigationMenuLink, XhNavigationMenuList, XhNavigationMenuRoot, XhNavigationMenuTrigger, XhNavigationMenuTriggerIndicator, XhNavigationMenuViewport, XhNotificationGroup, XhNotificationItem, XhNotificationItemActionTrigger, XhNotificationItemCloseTrigger, XhNotificationItemContent, XhNotificationItemDescription, XhNotificationItemIndicator, XhNotificationItemProgress, XhNotificationItemTitle, XhNotificationRoot, XhNumberAnimation, XhNumberFieldControl, XhNumberFieldDecrementTrigger, XhNumberFieldIncrementTrigger, XhNumberFieldInput, XhNumberFieldLabel, XhNumberFieldPrefix, XhNumberFieldRoot, XhNumberFieldSuffix, XhPageHeaderBackTrigger, XhPageHeaderBreadcrumb, XhPageHeaderDescription, XhPageHeaderExtra, XhPageHeaderFooter, XhPageHeaderMedia, XhPageHeaderRoot, XhPageHeaderTitle, XhPaginationContent, XhPaginationEllipsisTrigger, XhPaginationFirstTrigger, XhPaginationItem, XhPaginationJumper, XhPaginationLastTrigger, XhPaginationNextTrigger, XhPaginationPageSizeSelect, XhPaginationPositioner, XhPaginationPrevTrigger, XhPaginationRoot, XhPaginationSummary, XhPasswordInputCapsLockIndicator, XhPasswordInputControl, XhPasswordInputInput, XhPasswordInputLabel, XhPasswordInputRoot, XhPasswordInputStrengthMeter, XhPasswordInputVisibilityTrigger, XhPieChartCaption, XhPieChartCenter, XhPieChartEmpty, XhPieChartLegend, XhPieChartPlot, XhPieChartRoot, XhPieChartTooltip, XhPieChartViewport, XhPinInputGroup, XhPinInputHiddenInput, XhPinInputInput, XhPinInputLabel, XhPinInputRoot, XhPinInputSeparator, XhPopconfirmArrow, XhPopconfirmCancelTrigger, XhPopconfirmConfirmTrigger, XhPopconfirmContent, XhPopconfirmDescription, XhPopconfirmPositioner, XhPopconfirmRoot, XhPopconfirmTitle, XhPopconfirmTrigger, XhPopoverArrow, XhPopoverCloseTrigger, XhPopoverContent, XhPopoverDescription, XhPopoverPositioner, XhPopoverRoot, XhPopoverTitle, XhPopoverTrigger, XhProgress, XhPromptInputControl, XhPromptInputInput, XhPromptInputRoot, XhPromptInputSubmitTrigger, XhQuestionFlowCounter, XhQuestionFlowDescription, XhQuestionFlowFooter, XhQuestionFlowGroup, XhQuestionFlowItem, XhQuestionFlowItemDescription, XhQuestionFlowItemIndicator, XhQuestionFlowItemText, XhQuestionFlowLiveRegion, XhQuestionFlowNextTrigger, XhQuestionFlowNote, XhQuestionFlowPrevTrigger, XhQuestionFlowPrompt, XhQuestionFlowQuestion, XhQuestionFlowResult, XhQuestionFlowRoot, XhQuestionFlowSkipTrigger, XhQuestionFlowSubmitTrigger, XhQuestionFlowTrack, XhQuestionFlowViewport, XhRadarChartCaption, XhRadarChartEmpty, XhRadarChartLegend, XhRadarChartPlot, XhRadarChartRoot, XhRadarChartTooltip, XhRadarChartViewport, XhRadioGroupItem, XhRadioGroupItemDescription, XhRadioGroupItemIcon, XhRadioGroupItemText, XhRadioGroupLabel, XhRadioGroupRoot, XhRadioGroupThumb, XhRatingControl, XhRatingHiddenInput, XhRatingItem, XhRatingLabel, XhRatingRoot, XhRatingValueText, XhReasoningContent, XhReasoningDuration, XhReasoningIcon, XhReasoningIndicator, XhReasoningLabel, XhReasoningRoot, XhReasoningTrigger, XhResizableHandle, XhResizableRoot, XhSankeyChartCaption, XhSankeyChartEmpty, XhSankeyChartLegend, XhSankeyChartPlot, XhSankeyChartRoot, XhSankeyChartTooltip, XhSankeyChartViewport, XhScrollAreaContent, XhScrollAreaCorner, XhScrollAreaRoot, XhScrollAreaScrollbar, XhScrollAreaThumb, XhScrollAreaTrack, XhScrollAreaViewport, XhScrollbarCorner, XhScrollbarRoot, XhScrollbarThumb, XhScrollbarTrack, XhSelectClearTrigger, XhSelectContent, XhSelectControl, XhSelectEmpty, XhSelectFooter, XhSelectGroup, XhSelectGroupLabel, XhSelectIndicator, XhSelectItem, XhSelectItemDeleteTrigger, XhSelectItemDescription, XhSelectItemIndicator, XhSelectItemPrefix, XhSelectItemSuffix, XhSelectItemText, XhSelectLabel, XhSelectList, XhSelectLoading, XhSelectOverflowTag, XhSelectPositioner, XhSelectRoot, XhSelectTag, XhSelectTagLabel, XhSelectTagList, XhSelectTrigger, XhSelectValueText, XhSeparator, XhSeparatorContent, XhSeparatorLine, XhSeparatorRoot, XhSideNavBranch, XhSideNavBranchContent, XhSideNavBranchIndicator, XhSideNavBranchText, XhSideNavBranchTrigger, XhSideNavEmpty, XhSideNavGroup, XhSideNavGroupLabel, XhSideNavGroupList, XhSideNavInput, XhSideNavItem, XhSideNavLink, XhSideNavLinkText, XhSideNavList, XhSideNavRoot, XhSideNavTooltip, XhSignaturePadClearTrigger, XhSignaturePadControl, XhSignaturePadGuide, XhSignaturePadHiddenInput, XhSignaturePadLabel, XhSignaturePadPath, XhSignaturePadRedoTrigger, XhSignaturePadRoot, XhSignaturePadStatus, XhSignaturePadUndoTrigger, XhSkeletonItem, XhSkeletonRoot, XhSliderControl, XhSliderHiddenInput, XhSliderLabel, XhSliderRange, XhSliderRoot, XhSliderThumb, XhSliderTickGroup, XhSliderTrack, XhSliderValueText, XhSortableDropIndicator, XhSortableItem, XhSortableItemDragTrigger, XhSortableLiveRegion, XhSortableRoot, XhSparkline, XhSpinner, XhSpinnerLabel, XhSplitterPanel, XhSplitterResizeTrigger, XhSplitterRoot, XhStatisticLabel, XhStatisticPrefix, XhStatisticRoot, XhStatisticSuffix, XhStatisticTrend, XhStatisticValue, XhStepsContent, XhStepsDescription, XhStepsIndicator, XhStepsItem, XhStepsList, XhStepsRoot, XhStepsSeparator, XhStepsTitle, XhStepsTrigger, XhSwitch, XhTableBody, XhTableCaption, XhTableCell, XhTableColumnDragTrigger, XhTableColumnHeader, XhTableColumnLabel, XhTableColumnList, XhTableColumnResizeTrigger, XhTableColumnVisibilityTrigger, XhTableEmpty, XhTableExpandTrigger, XhTableExpandedRow, XhTableFooter, XhTableHeader, XhTableLoadMoreTrigger, XhTableLoading, XhTableRoot, XhTableRow, XhTableRowDragTrigger, XhTableRowSelectTrigger, XhTableSelectAllTrigger, XhTableSortTrigger, XhTableToolbar, XhTabsCloseTrigger, XhTabsContent, XhTabsIndicator, XhTabsList, XhTabsLiveRegion, XhTabsNextTrigger, XhTabsOverflowTrigger, XhTabsPrevTrigger, XhTabsRoot, XhTabsSeparator, XhTabsTabDragTrigger, XhTabsTrigger, XhTagCloseTrigger, XhTagGroupCell, XhTagGroupItem, XhTagGroupItemDeleteTrigger, XhTagGroupItemIndicator, XhTagGroupItemText, XhTagGroupLabel, XhTagGroupList, XhTagGroupRoot, XhTagLabel, XhTagRoot, XhTagsInputClearTrigger, XhTagsInputControl, XhTagsInputCount, XhTagsInputHiddenInput, XhTagsInputInput, XhTagsInputItem, XhTagsInputItemDeleteTrigger, XhTagsInputItemInput, XhTagsInputItemPreview, XhTagsInputItemText, XhTagsInputLabel, XhTagsInputRoot, XhTextFieldClearTrigger, XhTextFieldControl, XhTextFieldCount, XhTextFieldInput, XhTextFieldLabel, XhTextFieldPrefix, XhTextFieldRoot, XhTextFieldSuffix, XhTimeFieldClearTrigger, XhTimeFieldControl, XhTimeFieldHiddenInput, XhTimeFieldLabel, XhTimeFieldRoot, XhTimeFieldSegment, XhTimeFieldSegmentGroup, XhTimePickerClearTrigger, XhTimePickerColumn, XhTimePickerConfirmTrigger, XhTimePickerContent, XhTimePickerControl, XhTimePickerHiddenInput, XhTimePickerItem, XhTimePickerItemDeleteTrigger, XhTimePickerLabel, XhTimePickerOverflowTag, XhTimePickerPositioner, XhTimePickerPreset, XhTimePickerPresetGroup, XhTimePickerRoot, XhTimePickerSegment, XhTimePickerSegmentGroup, XhTimePickerTag, XhTimePickerTagLabel, XhTimePickerTagList, XhTimePickerTrigger, XhTimeRangePickerClearTrigger, XhTimeRangePickerColumn, XhTimeRangePickerColumnGroup, XhTimeRangePickerColumnGroupLabel, XhTimeRangePickerContent, XhTimeRangePickerControl, XhTimeRangePickerHiddenInput, XhTimeRangePickerItem, XhTimeRangePickerLabel, XhTimeRangePickerPositioner, XhTimeRangePickerPreset, XhTimeRangePickerPresetGroup, XhTimeRangePickerRangeSeparator, XhTimeRangePickerRoot, XhTimeRangePickerSegment, XhTimeRangePickerSegmentGroup, XhTimeRangePickerTrigger, XhTimelineConnector, XhTimelineContent, XhTimelineDescription, XhTimelineIndicator, XhTimelineItem, XhTimelineLabel, XhTimelineRoot, XhTimelineTime, XhTimelineTitle, XhTimerControl, XhTimerDisplay, XhTimerItem, XhTimerRoot, XhTimerSeparator, XhTimestamp, XhToggle, XhToggleGroupHiddenInput, XhToggleGroupItem, XhToggleGroupRoot, XhToolCallApproval, XhToolCallContent, XhToolCallDuration, XhToolCallError, XhToolCallIndicator, XhToolCallInput, XhToolCallLabel, XhToolCallOutput, XhToolCallRoot, XhToolCallStatus, XhToolCallSummary, XhToolCallTrigger, XhToolbarGroup, XhToolbarItem, XhToolbarOverflowTrigger, XhToolbarRoot, XhToolbarSeparator, XhTooltipArrow, XhTooltipContent, XhTooltipPositioner, XhTooltipProvider, XhTooltipRoot, XhTooltipTrigger, XhTourArrow, XhTourBackdrop, XhTourCloseTrigger, XhTourContent, XhTourDescription, XhTourNextTrigger, XhTourPositioner, XhTourPrevTrigger, XhTourProgressDot, XhTourProgressIndicator, XhTourProgressText, XhTourRoot, XhTourSkipTrigger, XhTourSpotlight, XhTourTitle, XhTransferEmpty, XhTransferGroup, XhTransferGroupLabel, XhTransferItem, XhTransferItemCheckbox, XhTransferItemDescription, XhTransferItemSuffix, XhTransferItemText, XhTransferList, XhTransferLoading, XhTransferPanelCount, XhTransferPanelHeader, XhTransferPanelTitle, XhTransferRoot, XhTransferSearch, XhTransferSelectAllTrigger, XhTransferSourcePanel, XhTransferTargetPanel, XhTransferToSourceTrigger, XhTransferToTargetTrigger, XhTreeBranch, XhTreeBranchContent, XhTreeBranchControl, XhTreeBranchIndicator, XhTreeBranchText, XhTreeBranchTrigger, XhTreeEmpty, XhTreeItem, XhTreeItemDescription, XhTreeItemIndicator, XhTreeItemSuffix, XhTreeItemText, XhTreeLabel, XhTreeLiveRegion, XhTreeLoading, XhTreeNodeDragTrigger, XhTreeRoot, XhTreeSelectBranch, XhTreeSelectBranchContent, XhTreeSelectBranchControl, XhTreeSelectBranchEmpty, XhTreeSelectBranchError, XhTreeSelectBranchIndicator, XhTreeSelectBranchLoading, XhTreeSelectBranchRetryTrigger, XhTreeSelectBranchText, XhTreeSelectBranchTrigger, XhTreeSelectClearTrigger, XhTreeSelectContent, XhTreeSelectControl, XhTreeSelectEmpty, XhTreeSelectFooter, XhTreeSelectHiddenInput, XhTreeSelectIndicator, XhTreeSelectInput, XhTreeSelectItem, XhTreeSelectItemDeleteTrigger, XhTreeSelectItemDescription, XhTreeSelectItemIndicator, XhTreeSelectItemSuffix, XhTreeSelectItemText, XhTreeSelectLabel, XhTreeSelectLoading, XhTreeSelectOverflowTag, XhTreeSelectPositioner, XhTreeSelectRoot, XhTreeSelectTag, XhTreeSelectTagLabel, XhTreeSelectTagList, XhTreeSelectTree, XhTreeSelectTrigger, XhTreeSelectValueText, XhTreeTree, XhTruncate, XhTypographyHeading, XhTypographyLink, XhTypographyParagraph, XhTypographyProse, XhTypographyRoot, XhTypographyText, XhVirtualizerContent, XhVirtualizerItem, XhVirtualizerRoot, XhVirtualizerViewport, XhWatermarkContent, XhWatermarkRoot, clearFieldContext, createColumnStore, createDialogService, createLoadingBarService, createNotificationService, createVueIdGenerator, createVueRuntime, mergeXhConfig, provideAffix, provideApproval, provideAvatarGroup, provideBackTop, provideCitation, provideCitationSource, provideColorField, provideColorSlider, provideColorSwatchPicker, provideContextMenuSub, provideDescriptions, provideDiffView, provideField, provideFieldArray, provideFieldArrayItem, provideFlex, provideFloatButton, provideGrid, provideImageViewer, provideInfiniteScroll, provideInputGroup, provideLayout, provideList, provideLog, provideMarkdownStream, provideMarquee, provideMatrixCode, provideMention, provideMentionItem, provideMenu, provideMenuGroup, provideMenuSub, provideMenubarSub, provideMessageFeed, provideMessageFeedItem, provideNotification, provideNotificationItem, providePageHeader, providePopconfirm, providePromptInput, provideQuestionFlow, provideReasoning, provideResizable, provideScrollbar, provideSideNav, provideSideNavNode, provideSortable, provideStatistic, provideTimeline, provideTimelineItem, provideToolCall, provideTypography, provideWatermark, provideXhConfig, useAccordion, useAffix, useAffixContext, useAnchor, useApproval, useApprovalContext, useAvatar, useAvatarGroupContext, useBackTop, useBackTopContext, useBreadcrumb, useCalendarPicker, useCalendarRangePicker, useCarousel, useCartesianChart, useCascader, useCheckbox, useCheckboxGroup, useCitation, useCitationContext, useCitationSource, useClipboard, useCodeView, useCollapsible, useColorField, useColorFieldContext, useColorPicker, useColorSlider, useColorSliderContext, useColorSwatchPicker, useColorSwatchPickerContext, useCombobox, useCommand, useContextMenu, useContextMenuSubContext, useDateField, useDatePicker, useDateRangePicker, useDescriptionsContext, useDialog, useDiffView, useDiffViewContext, useDownloadTrigger, useDrawer, useEditable, useField, useFieldArray, useFieldArrayContext, useFieldArrayItemContext, useFieldContext, useFieldControl, useFieldGroupWiring, useFieldLabelWiring, useFieldStateWiring, useFieldset, useFieldsetContext, useFileUpload, useFlexContext, useFloatButton, useFloatButtonContext, useFloatingPanel, useFloatingPanelContext, useForm, useFunnelChart, useGraphChart, useGridContext, useGridList, useGridListContext, useGridListRow, useHeatmap, useHeatmapContext, useHierarchyChart, useHoverCard, useIcon, useImage, useImageCropper, useImageCropperContext, useImageViewer, useImageViewerContext, useInfiniteScroll, useInfiniteScrollContext, useInputGroupContext, useJsonViewer, useLayout, useLayoutContext, useListContext, useListbox, useLoadingBar, useLog, useLogContext, useMachine, useMarkdownStream, useMarkdownStreamContext, useMarqueeContext, useMatrixCodeContext, useMention, useMentionContext, useMentionItemContext, useMenu, useMenuContext, useMenuGroupContext, useMenuSubContext, useMenubar, useMenubarSubContext, useMessageFeed, useMessageFeedContext, useMessageFeedItemContext, useNavigationMenu, useNotification, useNotificationContext, useNotificationContextOptional, useNotificationItem, useNotificationItemContext, useNumberField, useOptionalFieldContext, usePageHeaderContext, usePagination, usePasswordInput, usePasswordInputContext, usePieChart, usePinInput, usePopconfirm, usePopconfirmContext, usePopover, usePromptInput, usePromptInputContext, useQuestionFlow, useQuestionFlowContext, useRadarChart, useRadioGroup, useRating, useReasoning, useReasoningContext, useResizable, useResizableContext, useSankeyChart, useScrollArea, useScrollbar, useScrollbarContext, useSelect, useSideNav, useSideNavContext, useSideNavNodeContext, useSignaturePad, useSignaturePadContext, useSlider, useSortable, useSortableContext, useSparkline, useSplitter, useStatisticContext, useSteps, useSwitch, useTable, useTabs, useTag, useTagContext, useTagGroup, useTagGroupContext, useTagGroupItemContext, useTagsInput, useTextField, useTimeField, useTimePicker, useTimeRangePicker, useTimelineContext, useTimelineItem, useTimer, useTimerContext, useToggle, useToggleGroup, useToolCall, useToolCallContext, useToolbar, useTooltip, useTour, useTransfer, useTree, useTreeSelect, useTruncate, useTypographyContext, useVirtualizer, useWatermarkContext, useXhConfig, vueNormalize, withXhConfig };
@@ -0,0 +1,2 @@
1
+ import { XhLocale, deDE, enUS, esES, frFR, jaJP, koKR, ptBR, ruRU, zhCN, zhTW } from "@xihan-ui/headless/locale";
2
+ export { type XhLocale, deDE, enUS, esES, frFR, jaJP, koKR, ptBR, ruRU, zhCN, zhTW };
package/dist/locale.js ADDED
@@ -0,0 +1,2 @@
1
+ import { deDE, enUS, esES, frFR, jaJP, koKR, ptBR, ruRU, zhCN, zhTW } from "@xihan-ui/headless/locale";
2
+ export { deDE, enUS, esES, frFR, jaJP, koKR, ptBR, ruRU, zhCN, zhTW };
package/dist/package.js CHANGED
@@ -1,5 +1,5 @@
1
1
  //#region package.json
2
- var version = "3.0.0";
2
+ var version = "3.2.0";
3
3
  //#endregion
4
4
  export { version };
5
5
 
@@ -1,6 +1,6 @@
1
1
  import { mergePartProps } from "./merge-props.js";
2
- import { Comment, Fragment, Text, cloneVNode } from "vue";
3
- import { isEventHandlerKey } from "@xihan-ui/core";
2
+ import { Comment, Fragment, Text, cloneVNode, normalizeClass } from "vue";
3
+ import { isEventHandlerKey, stripScopeClass } from "@xihan-ui/core";
4
4
  //#region src/runtime/as-child.ts
5
5
  /**
6
6
  * asChild:部件不再渲染自己的包裹元素,把应挂载的属性合并到作者提供的子节点上。
@@ -67,6 +67,11 @@ function mergeIntoChild(nodes, props, scope, options = {}) {
67
67
  const keepAnatomy = !!options.applyAnatomy || !carriesOwnAnatomy(child);
68
68
  for (const [key, value] of Object.entries(props)) {
69
69
  if (!keepAnatomy && isRoleMarker(key)) continue;
70
+ if (!keepAnatomy && key === "class") {
71
+ const extra = stripScopeClass(normalizeClass(value));
72
+ if (extra) merged.class = extra;
73
+ continue;
74
+ }
70
75
  merged[key] = value;
71
76
  }
72
77
  if (typeof merged.ref === "function") {
@@ -1 +1 @@
1
- {"version":3,"file":"as-child.js","names":[],"sources":["../../src/runtime/as-child.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 as child 相关实现。\n\nimport type { VNode, VNodeChild } from 'vue'\nimport { isEventHandlerKey } from '@xihan-ui/core'\nimport { cloneVNode, Comment, Fragment, Text } from 'vue'\nimport { mergePartProps } from './merge-props'\n\n/**\n * asChild:部件不再渲染自己的包裹元素,把应挂载的属性合并到作者提供的子节点上。\n *\n * 触发器类部件默认渲染 <button>,作者需要用自己的按钮作为触发器时,只能在 <button> 中再嵌套一个\n * <button>:那是非法嵌套,浏览器会拆开它,事件与焦点都不正确。asChild 是唯一的正确方式。\n */\n\n/** 只忽略注释、空白与空占位;片段内的可见文本同样必须明确拒绝。 */\nfunction attributable(nodes: readonly VNodeChild[], scope: string): VNode[] {\n const out: VNode[] = []\n for (const node of nodes) {\n if (node == null || typeof node === 'boolean')\n continue\n if (Array.isArray(node)) {\n out.push(...attributable(node, scope))\n continue\n }\n if (typeof node === 'string' || typeof node === 'number') {\n if (typeof node === 'string' && node.trim() === '')\n continue\n throw new Error(`[xh] ${scope} asChild 需要恰好一个可挂载子节点,不能包含非空文本`)\n }\n if (node.type === Comment)\n continue\n if (node.type === Text) {\n if (String(node.children ?? '').trim() === '')\n continue\n throw new Error(`[xh] ${scope} asChild 需要恰好一个可挂载子节点,不能包含非空文本`)\n }\n if (node.type === Fragment && Array.isArray(node.children))\n out.push(...attributable(node.children as VNodeChild[], scope))\n else\n out.push(node)\n }\n return out\n}\n\n/** 子节点已带角色标记:组件节点的根由它自己渲染,元素节点检查是否写了 data-scope。 */\nexport function carriesOwnAnatomy(node: VNode): boolean {\n return typeof node.type !== 'string' || node.props?.['data-scope'] != null\n}\n\n/**\n * 角色标记:解剖两位、家族标记(data-xh-*)与随视觉盒走的形态轴(data-variant)。\n * 子节点自带解剖时这些都不该落到它身上:家族标记会在封装自己的视觉盒外再画一层壳,\n * 形态轴会盖掉封装根上作者写的那一档。\n */\nexport function isRoleMarker(key: string): boolean {\n return key === 'data-scope' || key === 'data-part' || key === 'data-variant' || key.startsWith('data-xh-')\n}\n\n/**\n * 元素 ref 解包:子节点是组件时 ref 得到的是组件实例,触发器需要的是它的根元素。\n * 组件多根时 $el 是占位注释,该类子节点本就不适合作为触发器,原样交出由定位层报错。\n */\nfunction unwrapElement(value: unknown): unknown {\n if (value && typeof value === 'object' && '$el' in value)\n return (value as { $el: unknown }).$el\n return value\n}\n\nexport interface MergeIntoChildOptions {\n /**\n * 子节点是组件时缺省视作自带解剖,只落接线属性。路由链接这类只把属性转交给自己渲出元素的封装没有自己的解剖,\n * 置 true 让部件的解剖与家族标记照样落上去。\n */\n applyAnatomy?: boolean\n}\n\n/**\n * 把部件属性合并到作者的子节点上。\n * @param nodes 默认插槽产出\n * @param props 部件该挂的属性(含 ref)\n * @param scope 部件所属组件名,只用于诊断文案\n * @param options 解剖标记的落法\n * @returns 合并后的节点;子节点不合规时抛错\n */\nexport function mergeIntoChild(\n nodes: readonly VNode[] | undefined,\n props: Record<string, unknown>,\n scope: string,\n options: MergeIntoChildOptions = {},\n): VNode {\n const candidates = attributable(nodes ?? [], scope)\n if (candidates.length !== 1)\n throw new Error(`[xh] ${scope} asChild 需要恰好一个可挂载子节点,实际是 ${candidates.length} 个`)\n const child = candidates[0]!\n\n // 子节点自带解剖标记时不覆盖它,只落接线属性;否则整套属性都给它\n const merged: Record<string, unknown> = {}\n const keepAnatomy = !!options.applyAnatomy || !carriesOwnAnatomy(child)\n for (const [key, value] of Object.entries(props)) {\n if (!keepAnatomy && isRoleMarker(key))\n continue\n merged[key] = value\n }\n if (typeof merged.ref === 'function') {\n const inner = merged.ref as (el: unknown) => void\n merged.ref = (value: unknown) => inner(unwrapElement(value))\n }\n // 第三个参数让两边的 ref 都保留:作者自己的 ref 与部件的 ref 各拿各的。\n // cloneVNode 把子节点自己的同名处理器排在传进来这一份的前面,也就是作者先跑、部件后跑;\n // 传进来的 props 已经把写在部件上的那一份按同一个先后合过(mergePartProps),\n // 所以写在子节点上还是写在部件上,作者的处理器都在部件之前。\n const cloned = cloneVNode(child, merged, true)\n // cloneVNode 默认无条件串接事件;改用作者可取消的部件合并,其他属性和双方 ref 保留。\n const events = mergePartProps(merged, child.props ?? {})\n for (const key of Object.keys(events)) {\n if (isEventHandlerKey(key))\n cloned.props![key] = events[key]\n }\n return cloned\n}\n"],"mappings":";;;;;;;;;;;AAoBA,SAAS,aAAa,OAA8B,OAAwB;CAC1E,MAAM,MAAe,CAAC;CACtB,KAAK,MAAM,QAAQ,OAAO;EACxB,IAAI,QAAQ,QAAQ,OAAO,SAAS,WAClC;EACF,IAAI,MAAM,QAAQ,IAAI,GAAG;GACvB,IAAI,KAAK,GAAG,aAAa,MAAM,KAAK,CAAC;GACrC;EACF;EACA,IAAI,OAAO,SAAS,YAAY,OAAO,SAAS,UAAU;GACxD,IAAI,OAAO,SAAS,YAAY,KAAK,KAAK,MAAM,IAC9C;GACF,MAAM,IAAI,MAAM,QAAQ,MAAM,+BAA+B;EAC/D;EACA,IAAI,KAAK,SAAS,SAChB;EACF,IAAI,KAAK,SAAS,MAAM;GACtB,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC,CAAC,KAAK,MAAM,IACzC;GACF,MAAM,IAAI,MAAM,QAAQ,MAAM,+BAA+B;EAC/D;EACA,IAAI,KAAK,SAAS,YAAY,MAAM,QAAQ,KAAK,QAAQ,GACvD,IAAI,KAAK,GAAG,aAAa,KAAK,UAA0B,KAAK,CAAC;OAE9D,IAAI,KAAK,IAAI;CACjB;CACA,OAAO;AACT;;AAGA,SAAgB,kBAAkB,MAAsB;CACtD,OAAO,OAAO,KAAK,SAAS,YAAY,KAAK,QAAQ,iBAAiB;AACxE;;;;;;AAOA,SAAgB,aAAa,KAAsB;CACjD,OAAO,QAAQ,gBAAgB,QAAQ,eAAe,QAAQ,kBAAkB,IAAI,WAAW,UAAU;AAC3G;;;;;AAMA,SAAS,cAAc,OAAyB;CAC9C,IAAI,SAAS,OAAO,UAAU,YAAY,SAAS,OACjD,OAAQ,MAA2B;CACrC,OAAO;AACT;;;;;;;;;AAkBA,SAAgB,eACd,OACA,OACA,OACA,UAAiC,CAAC,GAC3B;CACP,MAAM,aAAa,aAAa,SAAS,CAAC,GAAG,KAAK;CAClD,IAAI,WAAW,WAAW,GACxB,MAAM,IAAI,MAAM,QAAQ,MAAM,4BAA4B,WAAW,OAAO,GAAG;CACjF,MAAM,QAAQ,WAAW;CAGzB,MAAM,SAAkC,CAAC;CACzC,MAAM,cAAc,CAAC,CAAC,QAAQ,gBAAgB,CAAC,kBAAkB,KAAK;CACtE,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,GAAG;EAChD,IAAI,CAAC,eAAe,aAAa,GAAG,GAClC;EACF,OAAO,OAAO;CAChB;CACA,IAAI,OAAO,OAAO,QAAQ,YAAY;EACpC,MAAM,QAAQ,OAAO;EACrB,OAAO,OAAO,UAAmB,MAAM,cAAc,KAAK,CAAC;CAC7D;CAKA,MAAM,SAAS,WAAW,OAAO,QAAQ,IAAI;CAE7C,MAAM,SAAS,eAAe,QAAQ,MAAM,SAAS,CAAC,CAAC;CACvD,KAAK,MAAM,OAAO,OAAO,KAAK,MAAM,GAClC,IAAI,kBAAkB,GAAG,GACvB,OAAO,MAAO,OAAO,OAAO;CAEhC,OAAO;AACT"}
1
+ {"version":3,"file":"as-child.js","names":[],"sources":["../../src/runtime/as-child.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 as child 相关实现。\n\nimport type { VNode, VNodeChild } from 'vue'\nimport { isEventHandlerKey, stripScopeClass } from '@xihan-ui/core'\nimport { cloneVNode, Comment, Fragment, normalizeClass, Text } from 'vue'\nimport { mergePartProps } from './merge-props'\n\n/**\n * asChild:部件不再渲染自己的包裹元素,把应挂载的属性合并到作者提供的子节点上。\n *\n * 触发器类部件默认渲染 <button>,作者需要用自己的按钮作为触发器时,只能在 <button> 中再嵌套一个\n * <button>:那是非法嵌套,浏览器会拆开它,事件与焦点都不正确。asChild 是唯一的正确方式。\n */\n\n/** 只忽略注释、空白与空占位;片段内的可见文本同样必须明确拒绝。 */\nfunction attributable(nodes: readonly VNodeChild[], scope: string): VNode[] {\n const out: VNode[] = []\n for (const node of nodes) {\n if (node == null || typeof node === 'boolean')\n continue\n if (Array.isArray(node)) {\n out.push(...attributable(node, scope))\n continue\n }\n if (typeof node === 'string' || typeof node === 'number') {\n if (typeof node === 'string' && node.trim() === '')\n continue\n throw new Error(`[xh] ${scope} asChild 需要恰好一个可挂载子节点,不能包含非空文本`)\n }\n if (node.type === Comment)\n continue\n if (node.type === Text) {\n if (String(node.children ?? '').trim() === '')\n continue\n throw new Error(`[xh] ${scope} asChild 需要恰好一个可挂载子节点,不能包含非空文本`)\n }\n if (node.type === Fragment && Array.isArray(node.children))\n out.push(...attributable(node.children as VNodeChild[], scope))\n else\n out.push(node)\n }\n return out\n}\n\n/** 子节点已带角色标记:组件节点的根由它自己渲染,元素节点检查是否写了 data-scope。 */\nexport function carriesOwnAnatomy(node: VNode): boolean {\n return typeof node.type !== 'string' || node.props?.['data-scope'] != null\n}\n\n/**\n * 角色标记:解剖两位、家族标记(data-xh-*)与随视觉盒走的形态轴(data-variant)。\n * 子节点自带解剖时这些都不该落到它身上:家族标记会在封装自己的视觉盒外再画一层壳,\n * 形态轴会盖掉封装根上作者写的那一档。\n */\nexport function isRoleMarker(key: string): boolean {\n return key === 'data-scope' || key === 'data-part' || key === 'data-variant' || key.startsWith('data-xh-')\n}\n\n/**\n * 元素 ref 解包:子节点是组件时 ref 得到的是组件实例,触发器需要的是它的根元素。\n * 组件多根时 $el 是占位注释,该类子节点本就不适合作为触发器,原样交出由定位层报错。\n */\nfunction unwrapElement(value: unknown): unknown {\n if (value && typeof value === 'object' && '$el' in value)\n return (value as { $el: unknown }).$el\n return value\n}\n\nexport interface MergeIntoChildOptions {\n /**\n * 子节点是组件时缺省视作自带解剖,只落接线属性。路由链接这类只把属性转交给自己渲出元素的封装没有自己的解剖,\n * 置 true 让部件的解剖与家族标记照样落上去。\n */\n applyAnatomy?: boolean\n}\n\n/**\n * 把部件属性合并到作者的子节点上。\n * @param nodes 默认插槽产出\n * @param props 部件该挂的属性(含 ref)\n * @param scope 部件所属组件名,只用于诊断文案\n * @param options 解剖标记的落法\n * @returns 合并后的节点;子节点不合规时抛错\n */\nexport function mergeIntoChild(\n nodes: readonly VNode[] | undefined,\n props: Record<string, unknown>,\n scope: string,\n options: MergeIntoChildOptions = {},\n): VNode {\n const candidates = attributable(nodes ?? [], scope)\n if (candidates.length !== 1)\n throw new Error(`[xh] ${scope} asChild 需要恰好一个可挂载子节点,实际是 ${candidates.length} 个`)\n const child = candidates[0]!\n\n // 子节点自带解剖标记时不覆盖它,只落接线属性;否则整套属性都给它\n const merged: Record<string, unknown> = {}\n const keepAnatomy = !!options.applyAnatomy || !carriesOwnAnatomy(child)\n for (const [key, value] of Object.entries(props)) {\n if (!keepAnatomy && isRoleMarker(key))\n continue\n // 挂载类随 data-scope 一起让位:作者写的类照合,部件那份的 xh-scope-* 不落到别人的根上\n if (!keepAnatomy && key === 'class') {\n const extra = stripScopeClass(normalizeClass(value))\n if (extra)\n merged.class = extra\n continue\n }\n merged[key] = value\n }\n if (typeof merged.ref === 'function') {\n const inner = merged.ref as (el: unknown) => void\n merged.ref = (value: unknown) => inner(unwrapElement(value))\n }\n // 第三个参数让两边的 ref 都保留:作者自己的 ref 与部件的 ref 各拿各的。\n // cloneVNode 把子节点自己的同名处理器排在传进来这一份的前面,也就是作者先跑、部件后跑;\n // 传进来的 props 已经把写在部件上的那一份按同一个先后合过(mergePartProps),\n // 所以写在子节点上还是写在部件上,作者的处理器都在部件之前。\n const cloned = cloneVNode(child, merged, true)\n // cloneVNode 默认无条件串接事件;改用作者可取消的部件合并,其他属性和双方 ref 保留。\n const events = mergePartProps(merged, child.props ?? {})\n for (const key of Object.keys(events)) {\n if (isEventHandlerKey(key))\n cloned.props![key] = events[key]\n }\n return cloned\n}\n"],"mappings":";;;;;;;;;;;AAoBA,SAAS,aAAa,OAA8B,OAAwB;CAC1E,MAAM,MAAe,CAAC;CACtB,KAAK,MAAM,QAAQ,OAAO;EACxB,IAAI,QAAQ,QAAQ,OAAO,SAAS,WAClC;EACF,IAAI,MAAM,QAAQ,IAAI,GAAG;GACvB,IAAI,KAAK,GAAG,aAAa,MAAM,KAAK,CAAC;GACrC;EACF;EACA,IAAI,OAAO,SAAS,YAAY,OAAO,SAAS,UAAU;GACxD,IAAI,OAAO,SAAS,YAAY,KAAK,KAAK,MAAM,IAC9C;GACF,MAAM,IAAI,MAAM,QAAQ,MAAM,+BAA+B;EAC/D;EACA,IAAI,KAAK,SAAS,SAChB;EACF,IAAI,KAAK,SAAS,MAAM;GACtB,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC,CAAC,KAAK,MAAM,IACzC;GACF,MAAM,IAAI,MAAM,QAAQ,MAAM,+BAA+B;EAC/D;EACA,IAAI,KAAK,SAAS,YAAY,MAAM,QAAQ,KAAK,QAAQ,GACvD,IAAI,KAAK,GAAG,aAAa,KAAK,UAA0B,KAAK,CAAC;OAE9D,IAAI,KAAK,IAAI;CACjB;CACA,OAAO;AACT;;AAGA,SAAgB,kBAAkB,MAAsB;CACtD,OAAO,OAAO,KAAK,SAAS,YAAY,KAAK,QAAQ,iBAAiB;AACxE;;;;;;AAOA,SAAgB,aAAa,KAAsB;CACjD,OAAO,QAAQ,gBAAgB,QAAQ,eAAe,QAAQ,kBAAkB,IAAI,WAAW,UAAU;AAC3G;;;;;AAMA,SAAS,cAAc,OAAyB;CAC9C,IAAI,SAAS,OAAO,UAAU,YAAY,SAAS,OACjD,OAAQ,MAA2B;CACrC,OAAO;AACT;;;;;;;;;AAkBA,SAAgB,eACd,OACA,OACA,OACA,UAAiC,CAAC,GAC3B;CACP,MAAM,aAAa,aAAa,SAAS,CAAC,GAAG,KAAK;CAClD,IAAI,WAAW,WAAW,GACxB,MAAM,IAAI,MAAM,QAAQ,MAAM,4BAA4B,WAAW,OAAO,GAAG;CACjF,MAAM,QAAQ,WAAW;CAGzB,MAAM,SAAkC,CAAC;CACzC,MAAM,cAAc,CAAC,CAAC,QAAQ,gBAAgB,CAAC,kBAAkB,KAAK;CACtE,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,GAAG;EAChD,IAAI,CAAC,eAAe,aAAa,GAAG,GAClC;EAEF,IAAI,CAAC,eAAe,QAAQ,SAAS;GACnC,MAAM,QAAQ,gBAAgB,eAAe,KAAK,CAAC;GACnD,IAAI,OACF,OAAO,QAAQ;GACjB;EACF;EACA,OAAO,OAAO;CAChB;CACA,IAAI,OAAO,OAAO,QAAQ,YAAY;EACpC,MAAM,QAAQ,OAAO;EACrB,OAAO,OAAO,UAAmB,MAAM,cAAc,KAAK,CAAC;CAC7D;CAKA,MAAM,SAAS,WAAW,OAAO,QAAQ,IAAI;CAE7C,MAAM,SAAS,eAAe,QAAQ,MAAM,SAAS,CAAC,CAAC;CACvD,KAAK,MAAM,OAAO,OAAO,KAAK,MAAM,GAClC,IAAI,kBAAkB,GAAG,GACvB,OAAO,MAAO,OAAO,OAAO;CAEhC,OAAO;AACT"}
@@ -1,3 +1,4 @@
1
+ import { clearFieldContext } from "../components/field/context.js";
1
2
  import { Teleport, defineComponent, h, onBeforeUnmount, ref, watch } from "vue";
2
3
  import { createPortalVisualBridge } from "@xihan-ui/core";
3
4
  //#region src/runtime/portal.ts
@@ -18,9 +19,19 @@ const XhPortal = defineComponent({
18
19
  source: {
19
20
  type: Object,
20
21
  default: void 0
22
+ },
23
+ /**
24
+ * 浮层此刻是否呈现(展开中,或退场动画还没播完)。为假时不建视觉桥:关着的浮层壳里只有藏起来的
25
+ * 内容,而每台桥都要在来源整条祖先链上挂观察、建时读一遍计算样式,页面上几十个关着的提示与下拉
26
+ * 白付这笔账,缓存页一进一出还要各重算一遍。缺省为真:常显、或展开才渲染的落点照旧随挂载建桥。
27
+ */
28
+ present: {
29
+ type: Boolean,
30
+ default: true
21
31
  }
22
32
  },
23
33
  setup(props, { slots }) {
34
+ clearFieldContext();
24
35
  const sourceRef = ref(null);
25
36
  const shellRef = ref(null);
26
37
  let bridge = null;
@@ -29,7 +40,7 @@ const XhPortal = defineComponent({
29
40
  bridge = null;
30
41
  const source = props.source?.value ?? sourceRef.value;
31
42
  const shell = shellRef.value;
32
- if (!source || !shell) return;
43
+ if (!source || !shell || !props.present) return;
33
44
  bridge = createPortalVisualBridge({
34
45
  source,
35
46
  shell
@@ -42,6 +53,7 @@ const XhPortal = defineComponent({
42
53
  () => props.to,
43
54
  () => props.disabled
44
55
  ], connect, { flush: "post" });
56
+ watch(() => props.present, connect, { flush: "pre" });
45
57
  onBeforeUnmount(() => {
46
58
  bridge?.dispose();
47
59
  bridge = null;
@@ -1 +1 @@
1
- {"version":3,"file":"portal.js","names":[],"sources":["../../src/runtime/portal.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 portal 相关实现。\n\nimport type { PortalVisualBridge } from '@xihan-ui/core'\nimport type { PropType, Ref, VNode } from 'vue'\nimport { createPortalVisualBridge } from '@xihan-ui/core'\nimport { defineComponent, h, onBeforeUnmount, ref, Teleport, watch } from 'vue'\n\n/**\n * Vue 内部 Portal:Teleport 只负责物理搬运,本层为每个实例增加无盒壳并桥接逻辑来源的视觉轴。\n * 不公开成组件家族;所有浮层部件统一经这里走。\n */\nexport const XhPortal = defineComponent({\n name: 'XhPortal',\n props: {\n to: { type: [String, Object] as PropType<string | Element>, required: true },\n /** 客户端来源节点尚未落定时先原地渲染,绑定所属 Document 后再迁移到正式目标。 */\n disabled: Boolean,\n /** 已有锚点时直接作为逻辑来源,避免在结构敏感的 ButtonGroup/Toolbar 里增加元素标记。 */\n source: { type: Object as PropType<Readonly<Ref<HTMLElement | null>>>, default: undefined },\n },\n setup(props, { slots }) {\n const sourceRef = ref<HTMLTemplateElement | null>(null)\n const shellRef = ref<HTMLElement | null>(null)\n let bridge: PortalVisualBridge | null = null\n\n const connect = (): void => {\n bridge?.dispose()\n bridge = null\n const source = props.source?.value ?? sourceRef.value\n const shell = shellRef.value\n if (!source || !shell)\n return\n bridge = createPortalVisualBridge({ source, shell })\n }\n\n watch([sourceRef, shellRef, () => props.source?.value, () => props.to, () => props.disabled], connect, { flush: 'post' })\n onBeforeUnmount(() => {\n bridge?.dispose()\n bridge = null\n })\n\n return (): VNode | VNode[] => [\n ...(props.source ? [] : [h('template', { 'ref': sourceRef, 'data-xh-portal-source': '' })]),\n h(Teleport, { to: props.to, disabled: props.disabled }, [\n h('div', {\n 'ref': shellRef,\n 'data-xh-portal-shell': '',\n 'style': { display: 'contents' },\n }, slots.default?.()),\n ]),\n ]\n },\n})\n"],"mappings":";;;;;;;AAgBA,MAAa,WAAW,gBAAgB;CACtC,MAAM;CACN,OAAO;EACL,IAAI;GAAE,MAAM,CAAC,QAAQ,MAAM;GAAiC,UAAU;EAAK;;EAE3E,UAAU;;EAEV,QAAQ;GAAE,MAAM;GAAuD,SAAS,KAAA;EAAU;CAC5F;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,YAAY,IAAgC,IAAI;EACtD,MAAM,WAAW,IAAwB,IAAI;EAC7C,IAAI,SAAoC;EAExC,MAAM,gBAAsB;GAC1B,QAAQ,QAAQ;GAChB,SAAS;GACT,MAAM,SAAS,MAAM,QAAQ,SAAS,UAAU;GAChD,MAAM,QAAQ,SAAS;GACvB,IAAI,CAAC,UAAU,CAAC,OACd;GACF,SAAS,yBAAyB;IAAE;IAAQ;GAAM,CAAC;EACrD;EAEA,MAAM;GAAC;GAAW;SAAgB,MAAM,QAAQ;SAAa,MAAM;SAAU,MAAM;EAAQ,GAAG,SAAS,EAAE,OAAO,OAAO,CAAC;EACxH,sBAAsB;GACpB,QAAQ,QAAQ;GAChB,SAAS;EACX,CAAC;EAED,aAA8B,CAC5B,GAAI,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,YAAY;GAAE,OAAO;GAAW,yBAAyB;EAAG,CAAC,CAAC,GACzF,EAAE,UAAU;GAAE,IAAI,MAAM;GAAI,UAAU,MAAM;EAAS,GAAG,CACtD,EAAE,OAAO;GACP,OAAO;GACP,wBAAwB;GACxB,SAAS,EAAE,SAAS,WAAW;EACjC,GAAG,MAAM,UAAU,CAAC,CACtB,CAAC,CACH;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"portal.js","names":[],"sources":["../../src/runtime/portal.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 portal 相关实现。\n\nimport type { PortalVisualBridge } from '@xihan-ui/core'\nimport type { PropType, Ref, VNode } from 'vue'\nimport { createPortalVisualBridge } from '@xihan-ui/core'\nimport { defineComponent, h, onBeforeUnmount, ref, Teleport, watch } from 'vue'\nimport { clearFieldContext } from '../components/field/context'\n\n/**\n * Vue 内部 Portal:Teleport 只负责物理搬运,本层为每个实例增加无盒壳并桥接逻辑来源的视觉轴。\n * 不公开成组件家族;所有浮层部件统一经这里走。\n */\nexport const XhPortal = defineComponent({\n name: 'XhPortal',\n props: {\n to: { type: [String, Object] as PropType<string | Element>, required: true },\n /** 客户端来源节点尚未落定时先原地渲染,绑定所属 Document 后再迁移到正式目标。 */\n disabled: Boolean,\n /** 已有锚点时直接作为逻辑来源,避免在结构敏感的 ButtonGroup/Toolbar 里增加元素标记。 */\n source: { type: Object as PropType<Readonly<Ref<HTMLElement | null>>>, default: undefined },\n /**\n * 浮层此刻是否呈现(展开中,或退场动画还没播完)。为假时不建视觉桥:关着的浮层壳里只有藏起来的\n * 内容,而每台桥都要在来源整条祖先链上挂观察、建时读一遍计算样式,页面上几十个关着的提示与下拉\n * 白付这笔账,缓存页一进一出还要各重算一遍。缺省为真:常显、或展开才渲染的落点照旧随挂载建桥。\n */\n present: { type: Boolean, default: true },\n },\n setup(props, { slots }) {\n // 浮层内容搬到落点后不再是外层字段的控件:放在里面的输入框不被外层字段命名、描述,也不拿同一个 id。\n // 与 Web Components 一致:那边的 Portal 把节点物理搬走,字段按 DOM 祖先链找控件,本来就够不着\n clearFieldContext()\n const sourceRef = ref<HTMLTemplateElement | null>(null)\n const shellRef = ref<HTMLElement | null>(null)\n let bridge: PortalVisualBridge | null = null\n\n const connect = (): void => {\n bridge?.dispose()\n bridge = null\n const source = props.source?.value ?? sourceRef.value\n const shell = shellRef.value\n if (!source || !shell || !props.present)\n return\n bridge = createPortalVisualBridge({ source, shell })\n }\n\n watch([sourceRef, shellRef, () => props.source?.value, () => props.to, () => props.disabled], connect, { flush: 'post' })\n // 来源与壳在挂载时就已就位,转为呈现时赶在本轮渲染之前建桥:内容第一次排版、定位引擎第一次\n // 量尺寸时,壳上已经是来源的环境(密度、方向、主题),不会先按落点的环境量一遍再跳\n watch(() => props.present, connect, { flush: 'pre' })\n onBeforeUnmount(() => {\n bridge?.dispose()\n bridge = null\n })\n\n return (): VNode | VNode[] => [\n ...(props.source ? [] : [h('template', { 'ref': sourceRef, 'data-xh-portal-source': '' })]),\n h(Teleport, { to: props.to, disabled: props.disabled }, [\n h('div', {\n 'ref': shellRef,\n 'data-xh-portal-shell': '',\n 'style': { display: 'contents' },\n }, slots.default?.()),\n ]),\n ]\n },\n})\n"],"mappings":";;;;;;;;AAiBA,MAAa,WAAW,gBAAgB;CACtC,MAAM;CACN,OAAO;EACL,IAAI;GAAE,MAAM,CAAC,QAAQ,MAAM;GAAiC,UAAU;EAAK;;EAE3E,UAAU;;EAEV,QAAQ;GAAE,MAAM;GAAuD,SAAS,KAAA;EAAU;;;;;;EAM1F,SAAS;GAAE,MAAM;GAAS,SAAS;EAAK;CAC1C;CACA,MAAM,OAAO,EAAE,SAAS;EAGtB,kBAAkB;EAClB,MAAM,YAAY,IAAgC,IAAI;EACtD,MAAM,WAAW,IAAwB,IAAI;EAC7C,IAAI,SAAoC;EAExC,MAAM,gBAAsB;GAC1B,QAAQ,QAAQ;GAChB,SAAS;GACT,MAAM,SAAS,MAAM,QAAQ,SAAS,UAAU;GAChD,MAAM,QAAQ,SAAS;GACvB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,SAC9B;GACF,SAAS,yBAAyB;IAAE;IAAQ;GAAM,CAAC;EACrD;EAEA,MAAM;GAAC;GAAW;SAAgB,MAAM,QAAQ;SAAa,MAAM;SAAU,MAAM;EAAQ,GAAG,SAAS,EAAE,OAAO,OAAO,CAAC;EAGxH,YAAY,MAAM,SAAS,SAAS,EAAE,OAAO,MAAM,CAAC;EACpD,sBAAsB;GACpB,QAAQ,QAAQ;GAChB,SAAS;EACX,CAAC;EAED,aAA8B,CAC5B,GAAI,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,YAAY;GAAE,OAAO;GAAW,yBAAyB;EAAG,CAAC,CAAC,GACzF,EAAE,UAAU;GAAE,IAAI,MAAM;GAAI,UAAU,MAAM;EAAS,GAAG,CACtD,EAAE,OAAO;GACP,OAAO;GACP,wBAAwB;GACxB,SAAS,EAAE,SAAS,WAAW;EACjC,GAAG,MAAM,UAAU,CAAC,CACtB,CAAC,CACH;CACF;AACF,CAAC"}
@@ -2,6 +2,11 @@ import { getCurrentInstance, isRef, onBeforeUnmount, onMounted, ref, toValue, wa
2
2
  import { attachCssExit, createPresence } from "@xihan-ui/core/presence";
3
3
  //#region src/runtime/use-overlay-exit.ts
4
4
  /**
5
+ * 退场播完却不卸载的浮层(unmountOnExit 为 false)收起定位层用的属性。
6
+ * 皮肤给定位层声明过 display,UA 的 [hidden]{display:none} 压不住,只能写内联。
7
+ */
8
+ const OVERLAY_STOWED_PROPS = { style: { display: "none" } };
9
+ /**
5
10
  * 返回当前是否应当可见。作者把它覆盖到 content 的 `hidden` 上:
6
11
  * `{ ...api.getContentProps(), hidden: !visible.value || undefined }`。
7
12
  */
@@ -60,6 +65,6 @@ function useOverlayExit(options) {
60
65
  return visible;
61
66
  }
62
67
  //#endregion
63
- export { useOverlayExit };
68
+ export { OVERLAY_STOWED_PROPS, useOverlayExit };
64
69
 
65
70
  //# sourceMappingURL=use-overlay-exit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-overlay-exit.js","names":[],"sources":["../../src/runtime/use-overlay-exit.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 use overlay exit 相关实现。\n\nimport type { RuntimeConfig } from '@xihan-ui/core'\nimport type { PresenceHandle } from '@xihan-ui/core/presence'\nimport type { MaybeRefOrGetter, Ref } from 'vue'\nimport { attachCssExit, createPresence } from '@xihan-ui/core/presence'\nimport { getCurrentInstance, isRef, onBeforeUnmount, onMounted, ref, toValue, watch } from 'vue'\n\n// 退场闸门:把「几时真的收起浮层」从展开态挪到 presence 上。\n//\n// 连接层给 content 打的 `hidden` 是跟着 open 走的——收起那一帧节点就不生成盒子了,\n// 退场动画一帧都播不出来。这里把它改成跟着 presence 走:展开时可见、退场动画播完之前\n// 也可见,播完才真收。作者节点始终留在原地,被拉长的是「可见的时间」而不是「存在的时间」。\n//\n// 所有带退场的部件共用这一件:dialog / drawer / command / image-viewer 的遮罩经 additionalExitRefs\n// 一并计入,轻提示与通知卡片也经它把 Presence 交给机器。\n\nexport interface OverlayExitOptions {\n /**\n * 运行时配置,只用来区分有没有 DOM:服务端没有退场可言,传 null 即退化为可见与否跟随展开态。\n * 客户端必须等真实根节点才能确定 realm 时传 ref/getter;挂载后仍为空会明确失败。\n */\n config: MaybeRefOrGetter<RuntimeConfig | null>\n /** 当前逻辑上是否展开。 */\n isOpen: () => boolean\n /** content 节点,退场动画从它上面探测。 */\n contentRef: Ref<HTMLElement | null>\n /** 与 content 共同决定退出完成的其他真实视觉节点。 */\n additionalExitRefs?: Array<Ref<HTMLElement | null>>\n /** Presence 建立后交给需要共用退出生命周期的 Headless 状态机;卸载时回传 null。 */\n onPresence?: (presence: PresenceHandle | null) => void\n}\n\n/**\n * 返回当前是否应当可见。作者把它覆盖到 content 的 `hidden` 上:\n * `{ ...api.getContentProps(), hidden: !visible.value || undefined }`。\n */\nexport function useOverlayExit(options: OverlayExitOptions): Ref<boolean> {\n const { isOpen, contentRef } = options\n const visible = ref(isOpen())\n let presence: PresenceHandle | null = null\n const tracked = new Map<HTMLElement, () => void>()\n let stopOpen: (() => void) | undefined\n let stopContent: (() => void) | undefined\n\n const start = (config: RuntimeConfig | null): void => {\n if (!config) {\n stopOpen = watch(isOpen, (open) => {\n visible.value = open\n })\n return\n }\n\n presence = createPresence({\n open: isOpen(),\n onRenderedChange: (rendered) => {\n visible.value = rendered\n },\n })\n options.onPresence?.(presence)\n visible.value = presence.rendered\n\n // data-state 提交到 DOM 之后再驱动 presence,让退场探测读到正确的 animationName\n stopOpen = watch(isOpen, open => presence?.update(open), { flush: 'post' })\n\n // 延迟配置到挂载期才就绪时 content 已经存在,immediate 负责补上首次 attach。\n stopContent = watch([contentRef, ...(options.additionalExitRefs ?? [])], (nodes) => {\n const next = new Set(nodes.filter((node): node is HTMLElement => node !== null))\n for (const node of next) {\n if (!tracked.has(node))\n tracked.set(node, attachCssExit(node, presence!))\n }\n for (const [node, detach] of tracked) {\n if (!next.has(node)) {\n tracked.delete(node)\n detach()\n }\n }\n }, { flush: 'post', immediate: true })\n }\n\n const initial = toValue(options.config)\n const delayed = isRef(options.config) || typeof options.config === 'function'\n if (initial || !delayed) {\n start(initial)\n }\n else if (getCurrentInstance()) {\n onMounted(() => {\n const config = toValue(options.config)\n if (!config)\n throw new Error('[xh] useOverlayExit 的延迟 RuntimeConfig 在挂载后仍未就绪')\n start(config)\n })\n }\n else {\n throw new Error('[xh] useOverlayExit 的延迟 RuntimeConfig 只能在 Vue setup 生命周期内使用')\n }\n\n onBeforeUnmount(() => {\n stopOpen?.()\n stopContent?.()\n for (const detach of tracked.values()) detach()\n tracked.clear()\n presence?.dispose()\n options.onPresence?.(null)\n })\n\n return visible\n}\n"],"mappings":";;;;;;;AA0CA,SAAgB,eAAe,SAA2C;CACxE,MAAM,EAAE,QAAQ,eAAe;CAC/B,MAAM,UAAU,IAAI,OAAO,CAAC;CAC5B,IAAI,WAAkC;CACtC,MAAM,0BAAU,IAAI,IAA6B;CACjD,IAAI;CACJ,IAAI;CAEJ,MAAM,SAAS,WAAuC;EACpD,IAAI,CAAC,QAAQ;GACX,WAAW,MAAM,SAAS,SAAS;IACjC,QAAQ,QAAQ;GAClB,CAAC;GACD;EACF;EAEA,WAAW,eAAe;GACxB,MAAM,OAAO;GACb,mBAAmB,aAAa;IAC9B,QAAQ,QAAQ;GAClB;EACF,CAAC;EACD,QAAQ,aAAa,QAAQ;EAC7B,QAAQ,QAAQ,SAAS;EAGzB,WAAW,MAAM,SAAQ,SAAQ,UAAU,OAAO,IAAI,GAAG,EAAE,OAAO,OAAO,CAAC;EAG1E,cAAc,MAAM,CAAC,YAAY,GAAI,QAAQ,sBAAsB,CAAC,CAAE,IAAI,UAAU;GAClF,MAAM,OAAO,IAAI,IAAI,MAAM,QAAQ,SAA8B,SAAS,IAAI,CAAC;GAC/E,KAAK,MAAM,QAAQ,MACjB,IAAI,CAAC,QAAQ,IAAI,IAAI,GACnB,QAAQ,IAAI,MAAM,cAAc,MAAM,QAAS,CAAC;GAEpD,KAAK,MAAM,CAAC,MAAM,WAAW,SAC3B,IAAI,CAAC,KAAK,IAAI,IAAI,GAAG;IACnB,QAAQ,OAAO,IAAI;IACnB,OAAO;GACT;EAEJ,GAAG;GAAE,OAAO;GAAQ,WAAW;EAAK,CAAC;CACvC;CAEA,MAAM,UAAU,QAAQ,QAAQ,MAAM;CACtC,MAAM,UAAU,MAAM,QAAQ,MAAM,KAAK,OAAO,QAAQ,WAAW;CACnE,IAAI,WAAW,CAAC,SACd,MAAM,OAAO;MAEV,IAAI,mBAAmB,GAC1B,gBAAgB;EACd,MAAM,SAAS,QAAQ,QAAQ,MAAM;EACrC,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,gDAAgD;EAClE,MAAM,MAAM;CACd,CAAC;MAGD,MAAM,IAAI,MAAM,6DAA6D;CAG/E,sBAAsB;EACpB,WAAW;EACX,cAAc;EACd,KAAK,MAAM,UAAU,QAAQ,OAAO,GAAG,OAAO;EAC9C,QAAQ,MAAM;EACd,UAAU,QAAQ;EAClB,QAAQ,aAAa,IAAI;CAC3B,CAAC;CAED,OAAO;AACT"}
1
+ {"version":3,"file":"use-overlay-exit.js","names":[],"sources":["../../src/runtime/use-overlay-exit.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 use overlay exit 相关实现。\n\nimport type { RuntimeConfig } from '@xihan-ui/core'\nimport type { PresenceHandle } from '@xihan-ui/core/presence'\nimport type { MaybeRefOrGetter, Ref } from 'vue'\nimport { attachCssExit, createPresence } from '@xihan-ui/core/presence'\nimport { getCurrentInstance, isRef, onBeforeUnmount, onMounted, ref, toValue, watch } from 'vue'\n\n// 退场闸门:把「几时真的收起浮层」从展开态挪到 presence 上。\n//\n// 连接层给 content 打的 `hidden` 是跟着 open 走的——收起那一帧节点就不生成盒子了,\n// 退场动画一帧都播不出来。这里把它改成跟着 presence 走:展开时可见、退场动画播完之前\n// 也可见,播完才真收。作者节点始终留在原地,被拉长的是「可见的时间」而不是「存在的时间」。\n//\n// 所有带退场的部件共用这一件:dialog / drawer / command / image-viewer 的遮罩经 additionalExitRefs\n// 一并计入,轻提示与通知卡片也经它把 Presence 交给机器。\n\n/**\n * 退场播完却不卸载的浮层(unmountOnExit 为 false)收起定位层用的属性。\n * 皮肤给定位层声明过 display,UA 的 [hidden]{display:none} 压不住,只能写内联。\n */\nexport const OVERLAY_STOWED_PROPS = { style: { display: 'none' } } as const\n\nexport interface OverlayExitOptions {\n /**\n * 运行时配置,只用来区分有没有 DOM:服务端没有退场可言,传 null 即退化为可见与否跟随展开态。\n * 客户端必须等真实根节点才能确定 realm 时传 ref/getter;挂载后仍为空会明确失败。\n */\n config: MaybeRefOrGetter<RuntimeConfig | null>\n /** 当前逻辑上是否展开。 */\n isOpen: () => boolean\n /** content 节点,退场动画从它上面探测。 */\n contentRef: Ref<HTMLElement | null>\n /** 与 content 共同决定退出完成的其他真实视觉节点。 */\n additionalExitRefs?: Array<Ref<HTMLElement | null>>\n /** Presence 建立后交给需要共用退出生命周期的 Headless 状态机;卸载时回传 null。 */\n onPresence?: (presence: PresenceHandle | null) => void\n}\n\n/**\n * 返回当前是否应当可见。作者把它覆盖到 content 的 `hidden` 上:\n * `{ ...api.getContentProps(), hidden: !visible.value || undefined }`。\n */\nexport function useOverlayExit(options: OverlayExitOptions): Ref<boolean> {\n const { isOpen, contentRef } = options\n const visible = ref(isOpen())\n let presence: PresenceHandle | null = null\n const tracked = new Map<HTMLElement, () => void>()\n let stopOpen: (() => void) | undefined\n let stopContent: (() => void) | undefined\n\n const start = (config: RuntimeConfig | null): void => {\n if (!config) {\n stopOpen = watch(isOpen, (open) => {\n visible.value = open\n })\n return\n }\n\n presence = createPresence({\n open: isOpen(),\n onRenderedChange: (rendered) => {\n visible.value = rendered\n },\n })\n options.onPresence?.(presence)\n visible.value = presence.rendered\n\n // data-state 提交到 DOM 之后再驱动 presence,让退场探测读到正确的 animationName\n stopOpen = watch(isOpen, open => presence?.update(open), { flush: 'post' })\n\n // 延迟配置到挂载期才就绪时 content 已经存在,immediate 负责补上首次 attach。\n stopContent = watch([contentRef, ...(options.additionalExitRefs ?? [])], (nodes) => {\n const next = new Set(nodes.filter((node): node is HTMLElement => node !== null))\n for (const node of next) {\n if (!tracked.has(node))\n tracked.set(node, attachCssExit(node, presence!))\n }\n for (const [node, detach] of tracked) {\n if (!next.has(node)) {\n tracked.delete(node)\n detach()\n }\n }\n }, { flush: 'post', immediate: true })\n }\n\n const initial = toValue(options.config)\n const delayed = isRef(options.config) || typeof options.config === 'function'\n if (initial || !delayed) {\n start(initial)\n }\n else if (getCurrentInstance()) {\n onMounted(() => {\n const config = toValue(options.config)\n if (!config)\n throw new Error('[xh] useOverlayExit 的延迟 RuntimeConfig 在挂载后仍未就绪')\n start(config)\n })\n }\n else {\n throw new Error('[xh] useOverlayExit 的延迟 RuntimeConfig 只能在 Vue setup 生命周期内使用')\n }\n\n onBeforeUnmount(() => {\n stopOpen?.()\n stopContent?.()\n for (const detach of tracked.values()) detach()\n tracked.clear()\n presence?.dispose()\n options.onPresence?.(null)\n })\n\n return visible\n}\n"],"mappings":";;;;;;;AA0BA,MAAa,uBAAuB,EAAE,OAAO,EAAE,SAAS,OAAO,EAAE;;;;;AAsBjE,SAAgB,eAAe,SAA2C;CACxE,MAAM,EAAE,QAAQ,eAAe;CAC/B,MAAM,UAAU,IAAI,OAAO,CAAC;CAC5B,IAAI,WAAkC;CACtC,MAAM,0BAAU,IAAI,IAA6B;CACjD,IAAI;CACJ,IAAI;CAEJ,MAAM,SAAS,WAAuC;EACpD,IAAI,CAAC,QAAQ;GACX,WAAW,MAAM,SAAS,SAAS;IACjC,QAAQ,QAAQ;GAClB,CAAC;GACD;EACF;EAEA,WAAW,eAAe;GACxB,MAAM,OAAO;GACb,mBAAmB,aAAa;IAC9B,QAAQ,QAAQ;GAClB;EACF,CAAC;EACD,QAAQ,aAAa,QAAQ;EAC7B,QAAQ,QAAQ,SAAS;EAGzB,WAAW,MAAM,SAAQ,SAAQ,UAAU,OAAO,IAAI,GAAG,EAAE,OAAO,OAAO,CAAC;EAG1E,cAAc,MAAM,CAAC,YAAY,GAAI,QAAQ,sBAAsB,CAAC,CAAE,IAAI,UAAU;GAClF,MAAM,OAAO,IAAI,IAAI,MAAM,QAAQ,SAA8B,SAAS,IAAI,CAAC;GAC/E,KAAK,MAAM,QAAQ,MACjB,IAAI,CAAC,QAAQ,IAAI,IAAI,GACnB,QAAQ,IAAI,MAAM,cAAc,MAAM,QAAS,CAAC;GAEpD,KAAK,MAAM,CAAC,MAAM,WAAW,SAC3B,IAAI,CAAC,KAAK,IAAI,IAAI,GAAG;IACnB,QAAQ,OAAO,IAAI;IACnB,OAAO;GACT;EAEJ,GAAG;GAAE,OAAO;GAAQ,WAAW;EAAK,CAAC;CACvC;CAEA,MAAM,UAAU,QAAQ,QAAQ,MAAM;CACtC,MAAM,UAAU,MAAM,QAAQ,MAAM,KAAK,OAAO,QAAQ,WAAW;CACnE,IAAI,WAAW,CAAC,SACd,MAAM,OAAO;MAEV,IAAI,mBAAmB,GAC1B,gBAAgB;EACd,MAAM,SAAS,QAAQ,QAAQ,MAAM;EACrC,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,gDAAgD;EAClE,MAAM,MAAM;CACd,CAAC;MAGD,MAAM,IAAI,MAAM,6DAA6D;CAG/E,sBAAsB;EACpB,WAAW;EACX,cAAc;EACd,KAAK,MAAM,UAAU,QAAQ,OAAO,GAAG,OAAO;EAC9C,QAAQ,MAAM;EACd,UAAU,QAAQ;EAClB,QAAQ,aAAa,IAAI;CAC3B,CAAC;CAED,OAAO;AACT"}
@@ -0,0 +1,25 @@
1
+ //#region src/runtime/with-handlers.ts
2
+ /**
3
+ * 组件把 emit 翻成 headless 认的回调(`onClear: () => emit('clear')`),并进交给状态机的 props。
4
+ *
5
+ * props 是响应式代理,展开成新对象会丢掉响应;这里再包一层代理:读回调键给回调,
6
+ * 其余照旧穿透到原 props,展开(`{ ...props }`)时回调键也一并列出。
7
+ */
8
+ function withHandlers(props, handlers) {
9
+ const own = (key) => typeof key === "string" && Object.hasOwn(handlers, key);
10
+ return new Proxy(props, {
11
+ get: (target, key, receiver) => own(key) ? handlers[key] : Reflect.get(target, key, receiver),
12
+ has: (target, key) => own(key) || Reflect.has(target, key),
13
+ ownKeys: (target) => [.../* @__PURE__ */ new Set([...Reflect.ownKeys(target), ...Object.keys(handlers)])],
14
+ getOwnPropertyDescriptor: (target, key) => own(key) ? {
15
+ configurable: true,
16
+ enumerable: true,
17
+ writable: false,
18
+ value: handlers[key]
19
+ } : Reflect.getOwnPropertyDescriptor(target, key)
20
+ });
21
+ }
22
+ //#endregion
23
+ export { withHandlers };
24
+
25
+ //# sourceMappingURL=with-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-handlers.js","names":[],"sources":["../../src/runtime/with-handlers.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 把适配器自己翻译出的回调并进 props 代理。\n\n/**\n * 组件把 emit 翻成 headless 认的回调(`onClear: () => emit('clear')`),并进交给状态机的 props。\n *\n * props 是响应式代理,展开成新对象会丢掉响应;这里再包一层代理:读回调键给回调,\n * 其余照旧穿透到原 props,展开(`{ ...props }`)时回调键也一并列出。\n */\nexport function withHandlers<T extends object>(props: T, handlers: Readonly<Record<string, unknown>>): T {\n const own = (key: string | symbol): key is string => typeof key === 'string' && Object.hasOwn(handlers, key)\n return new Proxy(props, {\n get: (target, key, receiver) => (own(key) ? handlers[key] : Reflect.get(target, key, receiver)),\n has: (target, key) => own(key) || Reflect.has(target, key),\n ownKeys: target => [...new Set([...Reflect.ownKeys(target), ...Object.keys(handlers)])],\n getOwnPropertyDescriptor: (target, key) => (own(key)\n ? { configurable: true, enumerable: true, writable: false, value: handlers[key] }\n : Reflect.getOwnPropertyDescriptor(target, key)),\n })\n}\n"],"mappings":";;;;;;;AAaA,SAAgB,aAA+B,OAAU,UAAgD;CACvG,MAAM,OAAO,QAAwC,OAAO,QAAQ,YAAY,OAAO,OAAO,UAAU,GAAG;CAC3G,OAAO,IAAI,MAAM,OAAO;EACtB,MAAM,QAAQ,KAAK,aAAc,IAAI,GAAG,IAAI,SAAS,OAAO,QAAQ,IAAI,QAAQ,KAAK,QAAQ;EAC7F,MAAM,QAAQ,QAAQ,IAAI,GAAG,KAAK,QAAQ,IAAI,QAAQ,GAAG;EACzD,UAAS,WAAU,CAAC,mBAAG,IAAI,IAAI,CAAC,GAAG,QAAQ,QAAQ,MAAM,GAAG,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC;EACtF,2BAA2B,QAAQ,QAAS,IAAI,GAAG,IAC/C;GAAE,cAAc;GAAM,YAAY;GAAM,UAAU;GAAO,OAAO,SAAS;EAAK,IAC9E,QAAQ,yBAAyB,QAAQ,GAAG;CAClD,CAAC;AACH"}
@@ -43,11 +43,11 @@ interface PromptOptions<T extends object> extends Omit<ConfirmOptions, 'onOk' |
43
43
  onOk?: (value: T) => boolean | void | Promise<boolean | void>;
44
44
  }
45
45
  interface DialogServiceOptions {
46
- /** 确认按钮文案,默认 OK。 */
46
+ /** 确认按钮文案;未提供时取 config 里 translations.dialog.ok,再退英文语言包(OK)。 */
47
47
  okText?: MaybeRefOrGetter<string>;
48
- /** 取消按钮文案,默认 Cancel。 */
48
+ /** 取消按钮文案;未提供时取 translations.dialog.cancel,再退英文语言包(Cancel)。 */
49
49
  cancelText?: MaybeRefOrGetter<string>;
50
- /** 动作失败时的安全提示,支持与按钮文案相同的响应式来源。 */
50
+ /** 动作失败时的安全提示,支持与按钮文案相同的响应式来源;未提供时取 translations.dialog.actionError。 */
51
51
  actionErrorText?: MaybeRefOrGetter<string>;
52
52
  /**
53
53
  * 提供给对话框子树的全局配置(locale / translations / size / portalContainer)。
@@ -1 +1 @@
1
- {"version":3,"file":"dialog-service.d.ts","names":[],"sources":["../../src/services/dialog-service.ts"],"mappings":";;;;;;;;;;;;KA4BY,6BAA6B;;UAGxB;EACf;;UAGe;EACf;EACA,UAAU;;EAEV,OAAO;;EAEP,QAAQ;EACR,SAAS;EACT,aAAa;;EAEb,8BAA8B;;EAE9B,iBAAiB,OAAO,6BAA6B;;;KAI3C,eAAe,KAAK;;UAGf,cAAc,0BAA0B,KAAK;;EAE5D,cAAc;;EAEd,OAAO,OAAO,MAAM;;EAEpB;;EAEA,QAAQ,OAAO,uBAAuB;;UAGvB;;EAEf,SAAS;;EAET,aAAa;;EAEb,kBAAkB;;;;;;EAMlB,SAAS,iBAAiB;;EAE1B,SAAS;;UAGM;;WAEN,aAAa;;EAEtB,UAAU,SAAS,mBAAmB;EACtC,OAAO,SAAS,iBAAiB;EACjC,UAAU,SAAS,iBAAiB;EACpC,UAAU,SAAS,iBAAiB;EACpC,QAAQ,SAAS,iBAAiB;;EAElC,SAAS,kBAAkB,SAAS,cAAc,OAAO,QAAQ;;EAEjE,YAAY,MAAM,iBAAiB;;EAEnC;;iBAqBc,oBAAoB,UAAS,uBAA4B"}
1
+ {"version":3,"file":"dialog-service.d.ts","names":[],"sources":["../../src/services/dialog-service.ts"],"mappings":";;;;;;;;;;;;KA4BY,6BAA6B;;UAGxB;EACf;;UAGe;EACf;EACA,UAAU;;EAEV,OAAO;;EAEP,QAAQ;EACR,SAAS;EACT,aAAa;;EAEb,8BAA8B;;EAE9B,iBAAiB,OAAO,6BAA6B;;;KAI3C,eAAe,KAAK;;UAGf,cAAc,0BAA0B,KAAK;;EAE5D,cAAc;;EAEd,OAAO,OAAO,MAAM;;EAEpB;;EAEA,QAAQ,OAAO,uBAAuB;;UAGvB;;EAEf,SAAS;;EAET,aAAa;;EAEb,kBAAkB;;;;;;EAMlB,SAAS,iBAAiB;;EAE1B,SAAS;;UAGM;;WAEN,aAAa;;EAEtB,UAAU,SAAS,mBAAmB;EACtC,OAAO,SAAS,iBAAiB;EACjC,UAAU,SAAS,iBAAiB;EACpC,UAAU,SAAS,iBAAiB;EACpC,QAAQ,SAAS,iBAAiB;;EAElC,SAAS,kBAAkB,SAAS,cAAc,OAAO,QAAQ;;EAEjE,YAAY,MAAM,iBAAiB;;EAEnC;;iBAsBc,oBAAoB,UAAS,uBAA4B"}
@@ -4,13 +4,13 @@ import { spinArc } from "./glyph.js";
4
4
  import { createServiceConfig } from "./service-config.js";
5
5
  import { createApp, defineComponent, h, reactive, shallowRef, toRaw, toValue } from "vue";
6
6
  import { ensurePortalRoot } from "@xihan-ui/core";
7
- import { createDialogServiceController, dialogServiceBadgeTone } from "@xihan-ui/headless";
7
+ import { createDialogServiceController, dialogServiceBadgeTone, dialogServiceTranslations } from "@xihan-ui/headless";
8
8
  //#region src/services/dialog-service.ts
9
9
  function createDialogService(options = {}) {
10
10
  if (typeof document === "undefined") throw new Error("createDialogService 需要 document;SSR 里请等到客户端再创建");
11
11
  const defaults = {
12
- okText: options.okText ?? "OK",
13
- cancelText: options.cancelText ?? "Cancel"
12
+ okText: options.okText,
13
+ cancelText: options.cancelText
14
14
  };
15
15
  const configSource = createServiceConfig(options.config);
16
16
  const holder = options.target ?? document.createElement("div");
@@ -39,6 +39,8 @@ function createDialogService(options = {}) {
39
39
  if (serviceState.failure) return null;
40
40
  const request = serviceState.current;
41
41
  const spec = request?.spec;
42
+ const text = dialogServiceTranslations(configSource.read()?.translations?.dialog);
43
+ const okText = toValue(spec?.okText) ?? text.ok;
42
44
  return h(XhDialogRoot, {
43
45
  "open": serviceState.open,
44
46
  "onUpdate:open": onOpenChange,
@@ -56,18 +58,18 @@ function createDialogService(options = {}) {
56
58
  serviceState.actionError ? h("p", {
57
59
  role: "alert",
58
60
  style: { color: "var(--xh-fg-danger)" }
59
- }, toValue(options.actionErrorText) ?? "Action failed. Please try again.") : null
61
+ }, toValue(options.actionErrorText) ?? text.actionError) : null
60
62
  ]),
61
63
  h(XhDialogFooter, null, () => [spec.showCancel ? h(XhButton, {
62
64
  variant: "ghost",
63
65
  disabled: serviceState.busy,
64
66
  onClick: () => controller.close(false)
65
- }, () => toValue(spec.cancelText)) : null, h(XhButton, {
67
+ }, () => toValue(spec.cancelText) ?? text.cancel) : null, h(XhButton, {
66
68
  variant: "solid",
67
69
  tone: spec.tone,
68
70
  loading: serviceState.busy,
69
71
  onClick: controller.confirmCurrent
70
- }, () => [serviceState.busy ? h(XhButtonIndicator, () => spinArc()) : null, h(XhButtonLabel, () => serviceState.busy ? `${toValue(spec.okText)}…` : toValue(spec.okText))])])
72
+ }, () => [serviceState.busy ? h(XhButtonIndicator, () => spinArc()) : null, h(XhButtonLabel, () => serviceState.busy ? `${okText}…` : okText)])])
71
73
  ]) : null);
72
74
  };
73
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dialog-service.js","names":[],"sources":["../../src/services/dialog-service.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 全局命令式确认框服务:confirm/info/success/warning/error 一次调用弹出,\n// 自带标题徽记、正文与按钮行。同一时刻只挂一个对话框,后来的排队顺次弹出,\n// 避开多层模态叠加。onOk 返回 Promise 时确认钮自动进入 pending 并拦住关闭,\n// 失败保持打开以便重试或取消。\nimport type { Tone } from '@xihan-ui/core'\nimport type { DialogServiceBadge, DialogServiceControllerSpec, DialogServiceControllerState } from '@xihan-ui/headless'\nimport type { App, MaybeRefOrGetter, VNodeChild } from 'vue'\nimport type { XhConfig } from '../config/config'\nimport { ensurePortalRoot } from '@xihan-ui/core'\nimport { createDialogServiceController, dialogServiceBadgeTone } from '@xihan-ui/headless'\nimport { createApp, defineComponent, h, reactive, shallowRef, toRaw, toValue } from 'vue'\nimport { XhButton, XhButtonIndicator, XhButtonLabel } from '../components/button'\nimport { XhDialogBody, XhDialogContent, XhDialogDescription, XhDialogFooter, XhDialogHeader, XhDialogIndicator, XhDialogRoot, XhDialogTitle } from '../components/dialog/dialog'\nimport { spinArc } from './glyph'\nimport { createServiceConfig } from './service-config'\n\n/**\n * 对话框正文。传字符串时经 description 部件(读屏的 aria-describedby 由它承接);\n * 传渲染函数时整块展开在正文位,自行决定渲染内容。\n *\n * 不接收裸 VNode:服务的宿主是常驻的,忙态切换即整棵重渲,\n * 同一个 VNode 实例被复用时的行为未定义。\n */\nexport type DialogBody = string | (() => VNodeChild)\n\n/** 动作异常保留原始原因;可见文案由 actionErrorText 提供。 */\nexport interface DialogActionError {\n cause: unknown\n}\n\nexport interface ConfirmOptions {\n title: string\n content?: DialogBody\n /** 确认按钮语气,默认 brand;危险操作传 danger。 */\n tone?: Tone\n /** 标题旁的类型徽记。未提供时不显示徽记。 */\n badge?: DialogServiceBadge\n okText?: MaybeRefOrGetter<string>\n cancelText?: MaybeRefOrGetter<string>\n /** false 阻止关闭;抛错或 Promise 拒绝进入 actionError,保持打开。 */\n onOk?: () => boolean | void | Promise<unknown>\n /** 动作失败通知;通知自身失败时拒绝所属请求。 */\n onActionError?: (error: DialogActionError) => void | Promise<void>\n}\n\n/** 单按钮告知框的入参:没有取消按钮,徽记由预设档决定,其余同 confirm。 */\nexport type AlertOptions = Omit<ConfirmOptions, 'tone' | 'badge'>\n\n/** 取值型弹窗的入参。正文自行拼装表单,确认时把该份值带回。 */\nexport interface PromptOptions<T extends object> extends Omit<ConfirmOptions, 'onOk' | 'content'> {\n /** 每次打开建立一份初值;服务用 reactive 包装后交给 body 与 onOk,两边是同一份。 */\n initialValue: T\n /** 用该份可写代理渲染表单主体。 */\n body: (value: T) => VNodeChild\n /** 落焦到哪个节点,CSS 选择器。 */\n initialFocus?: string\n /** false 只阻止关闭;抛错或拒绝进入独立动作异常,弹窗保持打开。 */\n onOk?: (value: T) => boolean | void | Promise<boolean | void>\n}\n\nexport interface DialogServiceOptions {\n /** 确认按钮文案,默认 OK。 */\n okText?: MaybeRefOrGetter<string>\n /** 取消按钮文案,默认 Cancel。 */\n cancelText?: MaybeRefOrGetter<string>\n /** 动作失败时的安全提示,支持与按钮文案相同的响应式来源。 */\n actionErrorText?: MaybeRefOrGetter<string>\n /**\n * 提供给对话框子树的全局配置(locale / translations / size / portalContainer)。\n * 本服务自带宿主应用,无法接收组件树中的 provideXhConfig,需要与应用同语言时从这里提供;\n * 传 ref/getter 即可在运行期跟随切换语言,也可以之后用 setConfig 推送。\n */\n config?: MaybeRefOrGetter<XhConfig>\n /** 宿主容器;未提供时在 body 下新建一个。 */\n target?: HTMLElement\n}\n\nexport interface DialogService {\n /** 当前请求的动作异常,重试、关闭和切换请求时清空。 */\n readonly actionError: DialogActionError | null\n /** 确认经 onOk 后 resolve true;取消/Esc resolve false。 */\n confirm: (options: ConfirmOptions) => Promise<boolean>\n info: (options: AlertOptions) => Promise<void>\n success: (options: AlertOptions) => Promise<void>\n warning: (options: AlertOptions) => Promise<void>\n error: (options: AlertOptions) => Promise<void>\n /** 确认后 resolve 一份值的普通对象快照;取消 / Esc / 卸载 resolve null。 */\n prompt: <T extends object>(options: PromptOptions<T>) => Promise<T | null>\n /** 更换全局配置源。 */\n setConfig: (next: MaybeRefOrGetter<XhConfig> | undefined) => void\n /** 卸载宿主应用并移除容器。 */\n dispose: () => void\n}\n\ninterface Spec extends DialogServiceControllerSpec {\n title: string\n content?: DialogBody\n tone: Tone\n okText: MaybeRefOrGetter<string>\n cancelText: MaybeRefOrGetter<string>\n showCancel: boolean\n /** 标题旁的类型徽记(预设档使用),confirm 不带。 */\n badge?: DialogServiceBadge\n /** 返回 false 阻止本次确认;异常由独立错误状态报告。 */\n onOk?: () => unknown\n onActionError?: (error: DialogActionError) => void | Promise<void>\n /** 取值型弹窗的正文与可写的值,两边是同一个对象。 */\n body?: (value: object) => VNodeChild\n value?: object\n initialFocus?: string\n}\n\nexport function createDialogService(options: DialogServiceOptions = {}): DialogService {\n if (typeof document === 'undefined')\n throw new Error('createDialogService 需要 document;SSR 里请等到客户端再创建')\n\n // 文案不在创建时求值:队列里的对话框会跨过一次切语言\n const defaults = { okText: options.okText ?? 'OK', cancelText: options.cancelText ?? 'Cancel' }\n const configSource = createServiceConfig(options.config)\n const holder = options.target ?? document.createElement('div')\n let hostFailure: { cause: unknown } | null = null\n try {\n if (!options.target)\n ensurePortalRoot(document).appendChild(holder)\n if (holder.nodeType !== 1 || holder.ownerDocument !== document || !holder.isConnected)\n throw new Error('DialogService target 必须是当前文档中已连接的元素')\n }\n catch (cause) {\n hostFailure = { cause }\n }\n\n // 整份核心快照放 shallowRef:Spec 里的 MaybeRefOrGetter 不能被 reactive 深层解包。\n let publishState: (next: DialogServiceControllerState<Spec>) => void = () => {}\n const controller = createDialogServiceController<Spec>({\n onStateChange: next => publishState(next),\n })\n const state = shallowRef(controller.state)\n publishState = next => void (state.value = next)\n if (hostFailure)\n controller.fail(hostFailure.cause)\n\n // 机器侧的关闭(Esc 等)从这里回来:未定的一律按取消结\n function onOpenChange(open: boolean): void {\n if (open)\n return\n controller.close(false)\n }\n\n const Host = defineComponent({\n name: 'XhDialogServiceHost',\n setup() {\n configSource.provide()\n return () => {\n const serviceState = state.value\n if (serviceState.failure)\n return null\n const request = serviceState.current\n const spec = request?.spec\n return h(XhDialogRoot, {\n 'open': serviceState.open,\n 'onUpdate:open': onOpenChange,\n 'modal': true,\n 'role': 'alertdialog',\n 'closeOnEscape': !serviceState.busy,\n 'closeOnInteractOutside': false,\n 'initialFocus': spec?.initialFocus,\n 'onExitComplete': () => controller.finishExit(request),\n }, () => spec\n ? h(XhDialogContent, null, () => [\n h(XhDialogHeader, null, () => [\n spec.badge ? h(XhDialogIndicator, { 'data-tone': dialogServiceBadgeTone(spec.badge) }) : null,\n h(XhDialogTitle, () => spec.title),\n ]),\n h(XhDialogBody, null, () => [\n // 串走 description,函数正文与 prompt 表单也在唯一滚动区内。\n typeof spec.content === 'string'\n ? h(XhDialogDescription, () => spec.content as string)\n : typeof spec.content === 'function' ? spec.content() : null,\n spec.body && spec.value ? spec.body(spec.value) : null,\n serviceState.actionError ? h('p', { role: 'alert', style: { color: 'var(--xh-fg-danger)' } }, toValue(options.actionErrorText) ?? 'Action failed. Please try again.') : null,\n ]),\n h(XhDialogFooter, null, () => [\n spec.showCancel\n ? h(XhButton, { variant: 'ghost', disabled: serviceState.busy, onClick: () => controller.close(false) }, () => toValue(spec.cancelText))\n : null,\n h(XhButton, { variant: 'solid', tone: spec.tone, loading: serviceState.busy, onClick: controller.confirmCurrent }, () => [\n serviceState.busy ? h(XhButtonIndicator, () => spinArc()) : null,\n h(XhButtonLabel, () => (serviceState.busy ? `${toValue(spec.okText)}…` : toValue(spec.okText))),\n ]),\n ]),\n ])\n : null)\n }\n },\n })\n\n const app: App = createApp(Host)\n let mounted = false\n function failHost(cause: unknown): void {\n controller.fail(cause)\n }\n app.config.errorHandler = failHost\n if (!hostFailure) {\n try {\n app.mount(holder)\n mounted = true\n }\n catch (cause) {\n failHost(cause)\n }\n }\n\n const alert = (badge: DialogServiceBadge, tone: Tone) => async (opts: AlertOptions): Promise<void> => {\n await controller.request({\n title: opts.title,\n content: opts.content,\n tone,\n okText: opts.okText ?? defaults.okText,\n cancelText: defaults.cancelText,\n showCancel: false,\n badge,\n onOk: opts.onOk,\n onActionError: opts.onActionError,\n })\n }\n\n return {\n get actionError() { return controller.state.actionError },\n confirm: opts => controller.request({\n title: opts.title,\n content: opts.content,\n tone: opts.tone ?? 'brand',\n okText: opts.okText ?? defaults.okText,\n cancelText: opts.cancelText ?? defaults.cancelText,\n showCancel: true,\n badge: opts.badge,\n onOk: opts.onOk,\n onActionError: opts.onActionError,\n }),\n prompt: <T extends object>(opts: PromptOptions<T>): Promise<T | null> => {\n // body 与 onOk 拿的是同一份可写代理:正文里改了什么,确认时就读到什么\n const value = reactive({ ...opts.initialValue }) as T\n return controller.request({\n title: opts.title,\n tone: opts.tone ?? 'brand',\n okText: opts.okText ?? defaults.okText,\n cancelText: opts.cancelText ?? defaults.cancelText,\n showCancel: true,\n badge: opts.badge,\n initialFocus: opts.initialFocus,\n body: v => opts.body(v as T),\n value,\n onOk: opts.onOk ? () => opts.onOk!(value) : undefined,\n onActionError: opts.onActionError,\n }).then(ok => (ok ? { ...toRaw(value) } as T : null))\n },\n info: alert('info', 'info'),\n success: alert('success', 'success'),\n warning: alert('warning', 'warning'),\n error: alert('error', 'danger'),\n setConfig: next => configSource.set(next),\n dispose: () => {\n controller.dispose()\n if (mounted)\n app.unmount()\n if (!options.target)\n holder.remove()\n },\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"dialog-service.js","names":[],"sources":["../../src/services/dialog-service.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 全局命令式确认框服务:confirm/info/success/warning/error 一次调用弹出,\n// 自带标题徽记、正文与按钮行。同一时刻只挂一个对话框,后来的排队顺次弹出,\n// 避开多层模态叠加。onOk 返回 Promise 时确认钮自动进入 pending 并拦住关闭,\n// 失败保持打开以便重试或取消。\nimport type { Tone } from '@xihan-ui/core'\nimport type { DialogServiceBadge, DialogServiceControllerSpec, DialogServiceControllerState } from '@xihan-ui/headless'\nimport type { App, MaybeRefOrGetter, VNodeChild } from 'vue'\nimport type { XhConfig } from '../config/config'\nimport { ensurePortalRoot } from '@xihan-ui/core'\nimport { createDialogServiceController, dialogServiceBadgeTone, dialogServiceTranslations } from '@xihan-ui/headless'\nimport { createApp, defineComponent, h, reactive, shallowRef, toRaw, toValue } from 'vue'\nimport { XhButton, XhButtonIndicator, XhButtonLabel } from '../components/button'\nimport { XhDialogBody, XhDialogContent, XhDialogDescription, XhDialogFooter, XhDialogHeader, XhDialogIndicator, XhDialogRoot, XhDialogTitle } from '../components/dialog/dialog'\nimport { spinArc } from './glyph'\nimport { createServiceConfig } from './service-config'\n\n/**\n * 对话框正文。传字符串时经 description 部件(读屏的 aria-describedby 由它承接);\n * 传渲染函数时整块展开在正文位,自行决定渲染内容。\n *\n * 不接收裸 VNode:服务的宿主是常驻的,忙态切换即整棵重渲,\n * 同一个 VNode 实例被复用时的行为未定义。\n */\nexport type DialogBody = string | (() => VNodeChild)\n\n/** 动作异常保留原始原因;可见文案由 actionErrorText 提供。 */\nexport interface DialogActionError {\n cause: unknown\n}\n\nexport interface ConfirmOptions {\n title: string\n content?: DialogBody\n /** 确认按钮语气,默认 brand;危险操作传 danger。 */\n tone?: Tone\n /** 标题旁的类型徽记。未提供时不显示徽记。 */\n badge?: DialogServiceBadge\n okText?: MaybeRefOrGetter<string>\n cancelText?: MaybeRefOrGetter<string>\n /** false 阻止关闭;抛错或 Promise 拒绝进入 actionError,保持打开。 */\n onOk?: () => boolean | void | Promise<unknown>\n /** 动作失败通知;通知自身失败时拒绝所属请求。 */\n onActionError?: (error: DialogActionError) => void | Promise<void>\n}\n\n/** 单按钮告知框的入参:没有取消按钮,徽记由预设档决定,其余同 confirm。 */\nexport type AlertOptions = Omit<ConfirmOptions, 'tone' | 'badge'>\n\n/** 取值型弹窗的入参。正文自行拼装表单,确认时把该份值带回。 */\nexport interface PromptOptions<T extends object> extends Omit<ConfirmOptions, 'onOk' | 'content'> {\n /** 每次打开建立一份初值;服务用 reactive 包装后交给 body 与 onOk,两边是同一份。 */\n initialValue: T\n /** 用该份可写代理渲染表单主体。 */\n body: (value: T) => VNodeChild\n /** 落焦到哪个节点,CSS 选择器。 */\n initialFocus?: string\n /** false 只阻止关闭;抛错或拒绝进入独立动作异常,弹窗保持打开。 */\n onOk?: (value: T) => boolean | void | Promise<boolean | void>\n}\n\nexport interface DialogServiceOptions {\n /** 确认按钮文案;未提供时取 config 里 translations.dialog.ok,再退英文语言包(OK)。 */\n okText?: MaybeRefOrGetter<string>\n /** 取消按钮文案;未提供时取 translations.dialog.cancel,再退英文语言包(Cancel)。 */\n cancelText?: MaybeRefOrGetter<string>\n /** 动作失败时的安全提示,支持与按钮文案相同的响应式来源;未提供时取 translations.dialog.actionError。 */\n actionErrorText?: MaybeRefOrGetter<string>\n /**\n * 提供给对话框子树的全局配置(locale / translations / size / portalContainer)。\n * 本服务自带宿主应用,无法接收组件树中的 provideXhConfig,需要与应用同语言时从这里提供;\n * 传 ref/getter 即可在运行期跟随切换语言,也可以之后用 setConfig 推送。\n */\n config?: MaybeRefOrGetter<XhConfig>\n /** 宿主容器;未提供时在 body 下新建一个。 */\n target?: HTMLElement\n}\n\nexport interface DialogService {\n /** 当前请求的动作异常,重试、关闭和切换请求时清空。 */\n readonly actionError: DialogActionError | null\n /** 确认经 onOk 后 resolve true;取消/Esc resolve false。 */\n confirm: (options: ConfirmOptions) => Promise<boolean>\n info: (options: AlertOptions) => Promise<void>\n success: (options: AlertOptions) => Promise<void>\n warning: (options: AlertOptions) => Promise<void>\n error: (options: AlertOptions) => Promise<void>\n /** 确认后 resolve 一份值的普通对象快照;取消 / Esc / 卸载 resolve null。 */\n prompt: <T extends object>(options: PromptOptions<T>) => Promise<T | null>\n /** 更换全局配置源。 */\n setConfig: (next: MaybeRefOrGetter<XhConfig> | undefined) => void\n /** 卸载宿主应用并移除容器。 */\n dispose: () => void\n}\n\ninterface Spec extends DialogServiceControllerSpec {\n title: string\n content?: DialogBody\n tone: Tone\n /** 未给时取服务配置里 dialog 那一桶的 ok,再退英文语言包。 */\n okText?: MaybeRefOrGetter<string>\n cancelText?: MaybeRefOrGetter<string>\n showCancel: boolean\n /** 标题旁的类型徽记(预设档使用),confirm 不带。 */\n badge?: DialogServiceBadge\n /** 返回 false 阻止本次确认;异常由独立错误状态报告。 */\n onOk?: () => unknown\n onActionError?: (error: DialogActionError) => void | Promise<void>\n /** 取值型弹窗的正文与可写的值,两边是同一个对象。 */\n body?: (value: object) => VNodeChild\n value?: object\n initialFocus?: string\n}\n\nexport function createDialogService(options: DialogServiceOptions = {}): DialogService {\n if (typeof document === 'undefined')\n throw new Error('createDialogService 需要 document;SSR 里请等到客户端再创建')\n\n // 文案不在创建时求值:队列里的对话框会跨过一次切语言。没给的那几句在渲染时取服务配置的语言包\n const defaults = { okText: options.okText, cancelText: options.cancelText }\n const configSource = createServiceConfig(options.config)\n const holder = options.target ?? document.createElement('div')\n let hostFailure: { cause: unknown } | null = null\n try {\n if (!options.target)\n ensurePortalRoot(document).appendChild(holder)\n if (holder.nodeType !== 1 || holder.ownerDocument !== document || !holder.isConnected)\n throw new Error('DialogService target 必须是当前文档中已连接的元素')\n }\n catch (cause) {\n hostFailure = { cause }\n }\n\n // 整份核心快照放 shallowRef:Spec 里的 MaybeRefOrGetter 不能被 reactive 深层解包。\n let publishState: (next: DialogServiceControllerState<Spec>) => void = () => {}\n const controller = createDialogServiceController<Spec>({\n onStateChange: next => publishState(next),\n })\n const state = shallowRef(controller.state)\n publishState = next => void (state.value = next)\n if (hostFailure)\n controller.fail(hostFailure.cause)\n\n // 机器侧的关闭(Esc 等)从这里回来:未定的一律按取消结\n function onOpenChange(open: boolean): void {\n if (open)\n return\n controller.close(false)\n }\n\n const Host = defineComponent({\n name: 'XhDialogServiceHost',\n setup() {\n configSource.provide()\n return () => {\n const serviceState = state.value\n if (serviceState.failure)\n return null\n const request = serviceState.current\n const spec = request?.spec\n const text = dialogServiceTranslations(configSource.read()?.translations?.dialog)\n const okText = toValue(spec?.okText) ?? text.ok\n return h(XhDialogRoot, {\n 'open': serviceState.open,\n 'onUpdate:open': onOpenChange,\n 'modal': true,\n 'role': 'alertdialog',\n 'closeOnEscape': !serviceState.busy,\n 'closeOnInteractOutside': false,\n 'initialFocus': spec?.initialFocus,\n 'onExitComplete': () => controller.finishExit(request),\n }, () => spec\n ? h(XhDialogContent, null, () => [\n h(XhDialogHeader, null, () => [\n spec.badge ? h(XhDialogIndicator, { 'data-tone': dialogServiceBadgeTone(spec.badge) }) : null,\n h(XhDialogTitle, () => spec.title),\n ]),\n h(XhDialogBody, null, () => [\n // 串走 description,函数正文与 prompt 表单也在唯一滚动区内。\n typeof spec.content === 'string'\n ? h(XhDialogDescription, () => spec.content as string)\n : typeof spec.content === 'function' ? spec.content() : null,\n spec.body && spec.value ? spec.body(spec.value) : null,\n serviceState.actionError ? h('p', { role: 'alert', style: { color: 'var(--xh-fg-danger)' } }, toValue(options.actionErrorText) ?? text.actionError) : null,\n ]),\n h(XhDialogFooter, null, () => [\n spec.showCancel\n ? h(XhButton, { variant: 'ghost', disabled: serviceState.busy, onClick: () => controller.close(false) }, () => toValue(spec.cancelText) ?? text.cancel)\n : null,\n h(XhButton, { variant: 'solid', tone: spec.tone, loading: serviceState.busy, onClick: controller.confirmCurrent }, () => [\n serviceState.busy ? h(XhButtonIndicator, () => spinArc()) : null,\n h(XhButtonLabel, () => (serviceState.busy ? `${okText}…` : okText)),\n ]),\n ]),\n ])\n : null)\n }\n },\n })\n\n const app: App = createApp(Host)\n let mounted = false\n function failHost(cause: unknown): void {\n controller.fail(cause)\n }\n app.config.errorHandler = failHost\n if (!hostFailure) {\n try {\n app.mount(holder)\n mounted = true\n }\n catch (cause) {\n failHost(cause)\n }\n }\n\n const alert = (badge: DialogServiceBadge, tone: Tone) => async (opts: AlertOptions): Promise<void> => {\n await controller.request({\n title: opts.title,\n content: opts.content,\n tone,\n okText: opts.okText ?? defaults.okText,\n cancelText: defaults.cancelText,\n showCancel: false,\n badge,\n onOk: opts.onOk,\n onActionError: opts.onActionError,\n })\n }\n\n return {\n get actionError() { return controller.state.actionError },\n confirm: opts => controller.request({\n title: opts.title,\n content: opts.content,\n tone: opts.tone ?? 'brand',\n okText: opts.okText ?? defaults.okText,\n cancelText: opts.cancelText ?? defaults.cancelText,\n showCancel: true,\n badge: opts.badge,\n onOk: opts.onOk,\n onActionError: opts.onActionError,\n }),\n prompt: <T extends object>(opts: PromptOptions<T>): Promise<T | null> => {\n // body 与 onOk 拿的是同一份可写代理:正文里改了什么,确认时就读到什么\n const value = reactive({ ...opts.initialValue }) as T\n return controller.request({\n title: opts.title,\n tone: opts.tone ?? 'brand',\n okText: opts.okText ?? defaults.okText,\n cancelText: opts.cancelText ?? defaults.cancelText,\n showCancel: true,\n badge: opts.badge,\n initialFocus: opts.initialFocus,\n body: v => opts.body(v as T),\n value,\n onOk: opts.onOk ? () => opts.onOk!(value) : undefined,\n onActionError: opts.onActionError,\n }).then(ok => (ok ? { ...toRaw(value) } as T : null))\n },\n info: alert('info', 'info'),\n success: alert('success', 'success'),\n warning: alert('warning', 'warning'),\n error: alert('error', 'danger'),\n setConfig: next => configSource.set(next),\n dispose: () => {\n controller.dispose()\n if (mounted)\n app.unmount()\n if (!options.target)\n holder.remove()\n },\n }\n}\n"],"mappings":"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"}
@@ -7,7 +7,8 @@ function createServiceConfig(initial) {
7
7
  provide: () => provideXhConfig(() => toValue(box.value.src) ?? {}),
8
8
  set: (next) => {
9
9
  box.value = { src: next };
10
- }
10
+ },
11
+ read: () => toValue(box.value.src)
11
12
  };
12
13
  }
13
14
  //#endregion