@salt-ds/lab 1.0.0-alpha.1 → 1.0.0-alpha.3

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 (458) hide show
  1. package/dist-cjs/packages/lab/src/accordion/AccordionSection.js +1 -0
  2. package/dist-cjs/packages/lab/src/accordion/AccordionSection.js.map +1 -1
  3. package/dist-cjs/packages/lab/src/app-header/AppHeader.js +1 -0
  4. package/dist-cjs/packages/lab/src/app-header/AppHeader.js.map +1 -1
  5. package/dist-cjs/packages/lab/src/banner/Banner.css.js +1 -1
  6. package/dist-cjs/packages/lab/src/breadcrumbs/Breadcrumb.js.map +1 -1
  7. package/dist-cjs/packages/lab/src/button-bar/OrderedButton.js +1 -0
  8. package/dist-cjs/packages/lab/src/button-bar/OrderedButton.js.map +1 -1
  9. package/dist-cjs/packages/lab/src/calendar/internal/CalendarDay.css.js +1 -1
  10. package/dist-cjs/packages/lab/src/calendar/internal/CalendarDay.js +33 -49
  11. package/dist-cjs/packages/lab/src/calendar/internal/CalendarDay.js.map +1 -1
  12. package/dist-cjs/packages/lab/src/calendar/internal/CalendarNavigation.js +34 -64
  13. package/dist-cjs/packages/lab/src/calendar/internal/CalendarNavigation.js.map +1 -1
  14. package/dist-cjs/packages/lab/src/calendar/useSelection.js +1 -0
  15. package/dist-cjs/packages/lab/src/calendar/useSelection.js.map +1 -1
  16. package/dist-cjs/packages/lab/src/carousel/Carousel.js +1 -0
  17. package/dist-cjs/packages/lab/src/carousel/Carousel.js.map +1 -1
  18. package/dist-cjs/packages/lab/src/cascading-menu/CascadingMenu.js +1 -0
  19. package/dist-cjs/packages/lab/src/cascading-menu/CascadingMenu.js.map +1 -1
  20. package/dist-cjs/packages/lab/src/cascading-menu/CascadingMenuItem.css.js +1 -1
  21. package/dist-cjs/packages/lab/src/cascading-menu/CascadingMenuItem.js +46 -60
  22. package/dist-cjs/packages/lab/src/cascading-menu/CascadingMenuItem.js.map +1 -1
  23. package/dist-cjs/packages/lab/src/cascading-menu/CascadingMenuList.js +3 -3
  24. package/dist-cjs/packages/lab/src/cascading-menu/CascadingMenuList.js.map +1 -1
  25. package/dist-cjs/packages/lab/src/cascading-menu/internal/useClickAway.js +1 -0
  26. package/dist-cjs/packages/lab/src/cascading-menu/internal/useClickAway.js.map +1 -1
  27. package/dist-cjs/packages/lab/src/cascading-menu/internal/useMenuTriggerHandlers.js +1 -0
  28. package/dist-cjs/packages/lab/src/cascading-menu/internal/useMenuTriggerHandlers.js.map +1 -1
  29. package/dist-cjs/packages/lab/src/color-chooser/ColorChooser.css.js +1 -1
  30. package/dist-cjs/packages/lab/src/color-chooser/Swatch.css.js +1 -1
  31. package/dist-cjs/packages/lab/src/combo-box/ComboBox.js +1 -0
  32. package/dist-cjs/packages/lab/src/combo-box/ComboBox.js.map +1 -1
  33. package/dist-cjs/packages/lab/src/combo-box/useCombobox.js +1 -0
  34. package/dist-cjs/packages/lab/src/combo-box/useCombobox.js.map +1 -1
  35. package/dist-cjs/packages/lab/src/combo-box-deprecated/filterHelpers.js +1 -0
  36. package/dist-cjs/packages/lab/src/combo-box-deprecated/filterHelpers.js.map +1 -1
  37. package/dist-cjs/packages/lab/src/combo-box-deprecated/internal/DefaultComboBox.js +21 -39
  38. package/dist-cjs/packages/lab/src/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
  39. package/dist-cjs/packages/lab/src/combo-box-deprecated/internal/MultiSelectComboBox.js +28 -49
  40. package/dist-cjs/packages/lab/src/combo-box-deprecated/internal/MultiSelectComboBox.js.map +1 -1
  41. package/dist-cjs/packages/lab/src/combo-box-deprecated/internal/useComboBox.js +1 -0
  42. package/dist-cjs/packages/lab/src/combo-box-deprecated/internal/useComboBox.js.map +1 -1
  43. package/dist-cjs/packages/lab/src/combo-box-deprecated/internal/useMultiSelectComboBox.js +1 -0
  44. package/dist-cjs/packages/lab/src/combo-box-deprecated/internal/useMultiSelectComboBox.js.map +1 -1
  45. package/dist-cjs/packages/lab/src/common-hooks/useViewportTracking.js +1 -0
  46. package/dist-cjs/packages/lab/src/common-hooks/useViewportTracking.js.map +1 -1
  47. package/dist-cjs/packages/lab/src/common-hooks/utils/filter-utils.js +1 -0
  48. package/dist-cjs/packages/lab/src/common-hooks/utils/filter-utils.js.map +1 -1
  49. package/dist-cjs/packages/lab/src/contact-details/ContactAction.js +8 -23
  50. package/dist-cjs/packages/lab/src/contact-details/ContactAction.js.map +1 -1
  51. package/dist-cjs/packages/lab/src/contact-details/ContactAvatar.js +2 -3
  52. package/dist-cjs/packages/lab/src/contact-details/ContactAvatar.js.map +1 -1
  53. package/dist-cjs/packages/lab/src/contact-details/ContactFavoriteToggle.js.map +1 -1
  54. package/dist-cjs/packages/lab/src/contact-details/MailLinkComponent.js +1 -0
  55. package/dist-cjs/packages/lab/src/contact-details/MailLinkComponent.js.map +1 -1
  56. package/dist-cjs/packages/lab/src/contact-details/internal/FavoriteToggleWithTooltip.js +8 -19
  57. package/dist-cjs/packages/lab/src/contact-details/internal/FavoriteToggleWithTooltip.js.map +1 -1
  58. package/dist-cjs/packages/lab/src/content-status/ContentStatus.css.js +1 -1
  59. package/dist-cjs/packages/lab/src/content-status/internal/StatusIndicator.js +1 -2
  60. package/dist-cjs/packages/lab/src/content-status/internal/StatusIndicator.js.map +1 -1
  61. package/dist-cjs/packages/lab/src/deck-layout/DeckLayout.js +1 -0
  62. package/dist-cjs/packages/lab/src/deck-layout/DeckLayout.js.map +1 -1
  63. package/dist-cjs/packages/lab/src/dialog/DialogContent.js +0 -1
  64. package/dist-cjs/packages/lab/src/dialog/DialogContent.js.map +1 -1
  65. package/dist-cjs/packages/lab/src/dropdown/Dropdown.js +1 -0
  66. package/dist-cjs/packages/lab/src/dropdown/Dropdown.js.map +1 -1
  67. package/dist-cjs/packages/lab/src/dropdown/DropdownBase.js +6 -6
  68. package/dist-cjs/packages/lab/src/dropdown/DropdownBase.js.map +1 -1
  69. package/dist-cjs/packages/lab/src/dropdown/DropdownButton.css.js +1 -1
  70. package/dist-cjs/packages/lab/src/dropdown/useDropdown.js +1 -0
  71. package/dist-cjs/packages/lab/src/dropdown/useDropdown.js.map +1 -1
  72. package/dist-cjs/packages/lab/src/dropdown/useDropdownBase.js +1 -0
  73. package/dist-cjs/packages/lab/src/dropdown/useDropdownBase.js.map +1 -1
  74. package/dist-cjs/packages/lab/src/file-drop-zone/FileDropZone.css.js +1 -1
  75. package/dist-cjs/packages/lab/src/form-field/FormField.js +60 -73
  76. package/dist-cjs/packages/lab/src/form-field/FormField.js.map +1 -1
  77. package/dist-cjs/packages/lab/src/form-field/StatusIndicator.js +17 -30
  78. package/dist-cjs/packages/lab/src/form-field/StatusIndicator.js.map +1 -1
  79. package/dist-cjs/packages/lab/src/index.js +3 -17
  80. package/dist-cjs/packages/lab/src/index.js.map +1 -1
  81. package/dist-cjs/packages/lab/src/layer-layout/LayerLayout.js +3 -2
  82. package/dist-cjs/packages/lab/src/layer-layout/LayerLayout.js.map +1 -1
  83. package/dist-cjs/packages/lab/src/list/Highlighter.css.js +1 -1
  84. package/dist-cjs/packages/lab/src/list/Highlighter.js +1 -0
  85. package/dist-cjs/packages/lab/src/list/Highlighter.js.map +1 -1
  86. package/dist-cjs/packages/lab/src/list/List.js +1 -0
  87. package/dist-cjs/packages/lab/src/list/List.js.map +1 -1
  88. package/dist-cjs/packages/lab/src/list/ListItem.css.js +1 -1
  89. package/dist-cjs/packages/lab/src/list/VirtualizedList.js +1 -0
  90. package/dist-cjs/packages/lab/src/list/VirtualizedList.js.map +1 -1
  91. package/dist-cjs/packages/lab/src/list/useList.js +1 -0
  92. package/dist-cjs/packages/lab/src/list/useList.js.map +1 -1
  93. package/dist-cjs/packages/lab/src/list/useListHeight.js +1 -0
  94. package/dist-cjs/packages/lab/src/list/useListHeight.js.map +1 -1
  95. package/dist-cjs/packages/lab/src/list-deprecated/List.js +5 -26
  96. package/dist-cjs/packages/lab/src/list-deprecated/List.js.map +1 -1
  97. package/dist-cjs/packages/lab/src/list-deprecated/ListItemBase.js +28 -58
  98. package/dist-cjs/packages/lab/src/list-deprecated/ListItemBase.js.map +1 -1
  99. package/dist-cjs/packages/lab/src/list-deprecated/internal/Highlighter.js +1 -0
  100. package/dist-cjs/packages/lab/src/list-deprecated/internal/Highlighter.js.map +1 -1
  101. package/dist-cjs/packages/lab/src/list-deprecated/internal/scrollIntoView.js +1 -5
  102. package/dist-cjs/packages/lab/src/list-deprecated/internal/scrollIntoView.js.map +1 -1
  103. package/dist-cjs/packages/lab/src/list-deprecated/useTypeSelect.js +1 -0
  104. package/dist-cjs/packages/lab/src/list-deprecated/useTypeSelect.js.map +1 -1
  105. package/dist-cjs/packages/lab/src/logo/Logo.css.js +1 -1
  106. package/dist-cjs/packages/lab/src/metric/MetricContent.css.js +1 -1
  107. package/dist-cjs/packages/lab/src/overlay/Overlay.js +1 -1
  108. package/dist-cjs/packages/lab/src/overlay/Overlay.js.map +1 -1
  109. package/dist-cjs/packages/lab/src/overlay/useOverlay.js +11 -12
  110. package/dist-cjs/packages/lab/src/overlay/useOverlay.js.map +1 -1
  111. package/dist-cjs/packages/lab/src/parent-child-item/ParentChildItem.js +9 -5
  112. package/dist-cjs/packages/lab/src/parent-child-item/ParentChildItem.js.map +1 -1
  113. package/dist-cjs/packages/lab/src/parent-child-layout/ParentChildLayout.js +2 -1
  114. package/dist-cjs/packages/lab/src/parent-child-layout/ParentChildLayout.js.map +1 -1
  115. package/dist-cjs/packages/lab/src/pill/Pill.css.js +1 -1
  116. package/dist-cjs/packages/lab/src/pill/PillBase.js +39 -55
  117. package/dist-cjs/packages/lab/src/pill/PillBase.js.map +1 -1
  118. package/dist-cjs/packages/lab/src/query-input/internal/CategoryList.js +1 -0
  119. package/dist-cjs/packages/lab/src/query-input/internal/CategoryList.js.map +1 -1
  120. package/dist-cjs/packages/lab/src/query-input/internal/CategoryListItem.js +1 -0
  121. package/dist-cjs/packages/lab/src/query-input/internal/CategoryListItem.js.map +1 -1
  122. package/dist-cjs/packages/lab/src/query-input/internal/QueryInputBody.js +1 -0
  123. package/dist-cjs/packages/lab/src/query-input/internal/QueryInputBody.js.map +1 -1
  124. package/dist-cjs/packages/lab/src/query-input/internal/SearchList.js +1 -0
  125. package/dist-cjs/packages/lab/src/query-input/internal/SearchList.js.map +1 -1
  126. package/dist-cjs/packages/lab/src/query-input/internal/ValueList.js +1 -0
  127. package/dist-cjs/packages/lab/src/query-input/internal/ValueList.js.map +1 -1
  128. package/dist-cjs/packages/lab/src/query-input/internal/ValueSelector.js +2 -3
  129. package/dist-cjs/packages/lab/src/query-input/internal/ValueSelector.js.map +1 -1
  130. package/dist-cjs/packages/lab/src/query-input/useQueryInput.js +1 -0
  131. package/dist-cjs/packages/lab/src/query-input/useQueryInput.js.map +1 -1
  132. package/dist-cjs/packages/lab/src/responsive/useOverflow.js +1 -0
  133. package/dist-cjs/packages/lab/src/responsive/useOverflow.js.map +1 -1
  134. package/dist-cjs/packages/lab/src/skip-link/SkipLink.css.js +1 -1
  135. package/dist-cjs/packages/lab/src/slider/internal/SliderHandle.js +17 -26
  136. package/dist-cjs/packages/lab/src/slider/internal/SliderHandle.js.map +1 -1
  137. package/dist-cjs/packages/lab/src/stepper-input/useStepperInput.js +1 -0
  138. package/dist-cjs/packages/lab/src/stepper-input/useStepperInput.js.map +1 -1
  139. package/dist-cjs/packages/lab/src/tabs/Tabstrip.css.js +1 -1
  140. package/dist-cjs/packages/lab/src/tabs/Tabstrip.js +35 -45
  141. package/dist-cjs/packages/lab/src/tabs/Tabstrip.js.map +1 -1
  142. package/dist-cjs/packages/lab/src/tabs/useActivationIndicator.js +1 -0
  143. package/dist-cjs/packages/lab/src/tabs/useActivationIndicator.js.map +1 -1
  144. package/dist-cjs/packages/lab/src/tabs/useKeyboardNavigation.js +1 -0
  145. package/dist-cjs/packages/lab/src/tabs/useKeyboardNavigation.js.map +1 -1
  146. package/dist-cjs/packages/lab/src/toggle-button/ToggleButton.js +6 -26
  147. package/dist-cjs/packages/lab/src/toggle-button/ToggleButton.js.map +1 -1
  148. package/dist-cjs/packages/lab/src/tokenized-input/TokenizedInput.js.map +1 -1
  149. package/dist-cjs/packages/lab/src/tokenized-input/useTokenizedInput.js +1 -0
  150. package/dist-cjs/packages/lab/src/tokenized-input/useTokenizedInput.js.map +1 -1
  151. package/dist-cjs/packages/lab/src/toolbar/Toolbar.js +1 -0
  152. package/dist-cjs/packages/lab/src/toolbar/Toolbar.js.map +1 -1
  153. package/dist-cjs/packages/lab/src/toolbar/Tooltray.css.js +1 -1
  154. package/dist-cjs/packages/lab/src/toolbar/internal/renderToolbarItems.js +1 -0
  155. package/dist-cjs/packages/lab/src/toolbar/internal/renderToolbarItems.js.map +1 -1
  156. package/dist-cjs/packages/lab/src/toolbar/overflow-panel/OverflowPanel.js +1 -0
  157. package/dist-cjs/packages/lab/src/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  158. package/dist-cjs/packages/lab/src/tree/Tree.js +1 -0
  159. package/dist-cjs/packages/lab/src/tree/Tree.js.map +1 -1
  160. package/dist-cjs/packages/lab/src/tree/useTree.js +1 -0
  161. package/dist-cjs/packages/lab/src/tree/useTree.js.map +1 -1
  162. package/dist-cjs/packages/lab/src/utils/useFloatingUI.js +38 -0
  163. package/dist-cjs/packages/lab/src/utils/useFloatingUI.js.map +1 -0
  164. package/dist-cjs/packages/lab/src/utils/useIsViewportLargerThanBreakpoint.js +1 -2
  165. package/dist-cjs/packages/lab/src/utils/useIsViewportLargerThanBreakpoint.js.map +1 -1
  166. package/dist-es/packages/lab/src/accordion/AccordionSection.js +1 -0
  167. package/dist-es/packages/lab/src/accordion/AccordionSection.js.map +1 -1
  168. package/dist-es/packages/lab/src/app-header/AppHeader.js +1 -0
  169. package/dist-es/packages/lab/src/app-header/AppHeader.js.map +1 -1
  170. package/dist-es/packages/lab/src/banner/Banner.css.js +1 -1
  171. package/dist-es/packages/lab/src/breadcrumbs/Breadcrumb.js.map +1 -1
  172. package/dist-es/packages/lab/src/button-bar/OrderedButton.js +1 -0
  173. package/dist-es/packages/lab/src/button-bar/OrderedButton.js.map +1 -1
  174. package/dist-es/packages/lab/src/calendar/internal/CalendarDay.css.js +1 -1
  175. package/dist-es/packages/lab/src/calendar/internal/CalendarDay.js +35 -51
  176. package/dist-es/packages/lab/src/calendar/internal/CalendarDay.js.map +1 -1
  177. package/dist-es/packages/lab/src/calendar/internal/CalendarNavigation.js +35 -65
  178. package/dist-es/packages/lab/src/calendar/internal/CalendarNavigation.js.map +1 -1
  179. package/dist-es/packages/lab/src/calendar/useSelection.js +1 -0
  180. package/dist-es/packages/lab/src/calendar/useSelection.js.map +1 -1
  181. package/dist-es/packages/lab/src/carousel/Carousel.js +1 -0
  182. package/dist-es/packages/lab/src/carousel/Carousel.js.map +1 -1
  183. package/dist-es/packages/lab/src/cascading-menu/CascadingMenu.js +1 -0
  184. package/dist-es/packages/lab/src/cascading-menu/CascadingMenu.js.map +1 -1
  185. package/dist-es/packages/lab/src/cascading-menu/CascadingMenuItem.css.js +1 -1
  186. package/dist-es/packages/lab/src/cascading-menu/CascadingMenuItem.js +48 -62
  187. package/dist-es/packages/lab/src/cascading-menu/CascadingMenuItem.js.map +1 -1
  188. package/dist-es/packages/lab/src/cascading-menu/CascadingMenuList.js +3 -3
  189. package/dist-es/packages/lab/src/cascading-menu/CascadingMenuList.js.map +1 -1
  190. package/dist-es/packages/lab/src/cascading-menu/internal/useClickAway.js +1 -0
  191. package/dist-es/packages/lab/src/cascading-menu/internal/useClickAway.js.map +1 -1
  192. package/dist-es/packages/lab/src/cascading-menu/internal/useMenuTriggerHandlers.js +1 -0
  193. package/dist-es/packages/lab/src/cascading-menu/internal/useMenuTriggerHandlers.js.map +1 -1
  194. package/dist-es/packages/lab/src/color-chooser/ColorChooser.css.js +1 -1
  195. package/dist-es/packages/lab/src/color-chooser/Swatch.css.js +1 -1
  196. package/dist-es/packages/lab/src/combo-box/ComboBox.js +1 -0
  197. package/dist-es/packages/lab/src/combo-box/ComboBox.js.map +1 -1
  198. package/dist-es/packages/lab/src/combo-box/useCombobox.js +1 -0
  199. package/dist-es/packages/lab/src/combo-box/useCombobox.js.map +1 -1
  200. package/dist-es/packages/lab/src/combo-box-deprecated/filterHelpers.js +1 -0
  201. package/dist-es/packages/lab/src/combo-box-deprecated/filterHelpers.js.map +1 -1
  202. package/dist-es/packages/lab/src/combo-box-deprecated/internal/DefaultComboBox.js +19 -37
  203. package/dist-es/packages/lab/src/combo-box-deprecated/internal/DefaultComboBox.js.map +1 -1
  204. package/dist-es/packages/lab/src/combo-box-deprecated/internal/MultiSelectComboBox.js +26 -47
  205. package/dist-es/packages/lab/src/combo-box-deprecated/internal/MultiSelectComboBox.js.map +1 -1
  206. package/dist-es/packages/lab/src/combo-box-deprecated/internal/useComboBox.js +1 -0
  207. package/dist-es/packages/lab/src/combo-box-deprecated/internal/useComboBox.js.map +1 -1
  208. package/dist-es/packages/lab/src/combo-box-deprecated/internal/useMultiSelectComboBox.js +1 -0
  209. package/dist-es/packages/lab/src/combo-box-deprecated/internal/useMultiSelectComboBox.js.map +1 -1
  210. package/dist-es/packages/lab/src/common-hooks/useViewportTracking.js +1 -0
  211. package/dist-es/packages/lab/src/common-hooks/useViewportTracking.js.map +1 -1
  212. package/dist-es/packages/lab/src/common-hooks/utils/filter-utils.js +1 -0
  213. package/dist-es/packages/lab/src/common-hooks/utils/filter-utils.js.map +1 -1
  214. package/dist-es/packages/lab/src/contact-details/ContactAction.js +10 -25
  215. package/dist-es/packages/lab/src/contact-details/ContactAction.js.map +1 -1
  216. package/dist-es/packages/lab/src/contact-details/ContactAvatar.js +2 -3
  217. package/dist-es/packages/lab/src/contact-details/ContactAvatar.js.map +1 -1
  218. package/dist-es/packages/lab/src/contact-details/ContactFavoriteToggle.js.map +1 -1
  219. package/dist-es/packages/lab/src/contact-details/MailLinkComponent.js +1 -0
  220. package/dist-es/packages/lab/src/contact-details/MailLinkComponent.js.map +1 -1
  221. package/dist-es/packages/lab/src/contact-details/internal/FavoriteToggleWithTooltip.js +9 -20
  222. package/dist-es/packages/lab/src/contact-details/internal/FavoriteToggleWithTooltip.js.map +1 -1
  223. package/dist-es/packages/lab/src/content-status/ContentStatus.css.js +1 -1
  224. package/dist-es/packages/lab/src/content-status/internal/StatusIndicator.js +1 -2
  225. package/dist-es/packages/lab/src/content-status/internal/StatusIndicator.js.map +1 -1
  226. package/dist-es/packages/lab/src/deck-layout/DeckLayout.js +1 -0
  227. package/dist-es/packages/lab/src/deck-layout/DeckLayout.js.map +1 -1
  228. package/dist-es/packages/lab/src/dialog/DialogContent.js +0 -1
  229. package/dist-es/packages/lab/src/dialog/DialogContent.js.map +1 -1
  230. package/dist-es/packages/lab/src/dropdown/Dropdown.js +1 -0
  231. package/dist-es/packages/lab/src/dropdown/Dropdown.js.map +1 -1
  232. package/dist-es/packages/lab/src/dropdown/DropdownBase.js +3 -3
  233. package/dist-es/packages/lab/src/dropdown/DropdownBase.js.map +1 -1
  234. package/dist-es/packages/lab/src/dropdown/DropdownButton.css.js +1 -1
  235. package/dist-es/packages/lab/src/dropdown/useDropdown.js +1 -0
  236. package/dist-es/packages/lab/src/dropdown/useDropdown.js.map +1 -1
  237. package/dist-es/packages/lab/src/dropdown/useDropdownBase.js +1 -0
  238. package/dist-es/packages/lab/src/dropdown/useDropdownBase.js.map +1 -1
  239. package/dist-es/packages/lab/src/file-drop-zone/FileDropZone.css.js +1 -1
  240. package/dist-es/packages/lab/src/form-field/FormField.js +62 -75
  241. package/dist-es/packages/lab/src/form-field/FormField.js.map +1 -1
  242. package/dist-es/packages/lab/src/form-field/StatusIndicator.js +18 -31
  243. package/dist-es/packages/lab/src/form-field/StatusIndicator.js.map +1 -1
  244. package/dist-es/packages/lab/src/index.js +1 -7
  245. package/dist-es/packages/lab/src/index.js.map +1 -1
  246. package/dist-es/packages/lab/src/layer-layout/LayerLayout.js +3 -2
  247. package/dist-es/packages/lab/src/layer-layout/LayerLayout.js.map +1 -1
  248. package/dist-es/packages/lab/src/list/Highlighter.css.js +1 -1
  249. package/dist-es/packages/lab/src/list/Highlighter.js +1 -0
  250. package/dist-es/packages/lab/src/list/Highlighter.js.map +1 -1
  251. package/dist-es/packages/lab/src/list/List.js +1 -0
  252. package/dist-es/packages/lab/src/list/List.js.map +1 -1
  253. package/dist-es/packages/lab/src/list/ListItem.css.js +1 -1
  254. package/dist-es/packages/lab/src/list/VirtualizedList.js +1 -0
  255. package/dist-es/packages/lab/src/list/VirtualizedList.js.map +1 -1
  256. package/dist-es/packages/lab/src/list/useList.js +1 -0
  257. package/dist-es/packages/lab/src/list/useList.js.map +1 -1
  258. package/dist-es/packages/lab/src/list/useListHeight.js +1 -0
  259. package/dist-es/packages/lab/src/list/useListHeight.js.map +1 -1
  260. package/dist-es/packages/lab/src/list-deprecated/List.js +5 -26
  261. package/dist-es/packages/lab/src/list-deprecated/List.js.map +1 -1
  262. package/dist-es/packages/lab/src/list-deprecated/ListItemBase.js +31 -61
  263. package/dist-es/packages/lab/src/list-deprecated/ListItemBase.js.map +1 -1
  264. package/dist-es/packages/lab/src/list-deprecated/internal/Highlighter.js +1 -0
  265. package/dist-es/packages/lab/src/list-deprecated/internal/Highlighter.js.map +1 -1
  266. package/dist-es/packages/lab/src/list-deprecated/internal/scrollIntoView.js +2 -2
  267. package/dist-es/packages/lab/src/list-deprecated/internal/scrollIntoView.js.map +1 -1
  268. package/dist-es/packages/lab/src/list-deprecated/useTypeSelect.js +1 -0
  269. package/dist-es/packages/lab/src/list-deprecated/useTypeSelect.js.map +1 -1
  270. package/dist-es/packages/lab/src/logo/Logo.css.js +1 -1
  271. package/dist-es/packages/lab/src/metric/MetricContent.css.js +1 -1
  272. package/dist-es/packages/lab/src/overlay/Overlay.js +1 -1
  273. package/dist-es/packages/lab/src/overlay/Overlay.js.map +1 -1
  274. package/dist-es/packages/lab/src/overlay/useOverlay.js +2 -3
  275. package/dist-es/packages/lab/src/overlay/useOverlay.js.map +1 -1
  276. package/dist-es/packages/lab/src/parent-child-item/ParentChildItem.js +9 -5
  277. package/dist-es/packages/lab/src/parent-child-item/ParentChildItem.js.map +1 -1
  278. package/dist-es/packages/lab/src/parent-child-layout/ParentChildLayout.js +2 -1
  279. package/dist-es/packages/lab/src/parent-child-layout/ParentChildLayout.js.map +1 -1
  280. package/dist-es/packages/lab/src/pill/Pill.css.js +1 -1
  281. package/dist-es/packages/lab/src/pill/PillBase.js +41 -57
  282. package/dist-es/packages/lab/src/pill/PillBase.js.map +1 -1
  283. package/dist-es/packages/lab/src/query-input/internal/CategoryList.js +1 -0
  284. package/dist-es/packages/lab/src/query-input/internal/CategoryList.js.map +1 -1
  285. package/dist-es/packages/lab/src/query-input/internal/CategoryListItem.js +1 -0
  286. package/dist-es/packages/lab/src/query-input/internal/CategoryListItem.js.map +1 -1
  287. package/dist-es/packages/lab/src/query-input/internal/QueryInputBody.js +1 -0
  288. package/dist-es/packages/lab/src/query-input/internal/QueryInputBody.js.map +1 -1
  289. package/dist-es/packages/lab/src/query-input/internal/SearchList.js +1 -0
  290. package/dist-es/packages/lab/src/query-input/internal/SearchList.js.map +1 -1
  291. package/dist-es/packages/lab/src/query-input/internal/ValueList.js +1 -0
  292. package/dist-es/packages/lab/src/query-input/internal/ValueList.js.map +1 -1
  293. package/dist-es/packages/lab/src/query-input/internal/ValueSelector.js +2 -3
  294. package/dist-es/packages/lab/src/query-input/internal/ValueSelector.js.map +1 -1
  295. package/dist-es/packages/lab/src/query-input/useQueryInput.js +1 -0
  296. package/dist-es/packages/lab/src/query-input/useQueryInput.js.map +1 -1
  297. package/dist-es/packages/lab/src/responsive/useOverflow.js +1 -0
  298. package/dist-es/packages/lab/src/responsive/useOverflow.js.map +1 -1
  299. package/dist-es/packages/lab/src/skip-link/SkipLink.css.js +1 -1
  300. package/dist-es/packages/lab/src/slider/internal/SliderHandle.js +19 -28
  301. package/dist-es/packages/lab/src/slider/internal/SliderHandle.js.map +1 -1
  302. package/dist-es/packages/lab/src/stepper-input/useStepperInput.js +1 -0
  303. package/dist-es/packages/lab/src/stepper-input/useStepperInput.js.map +1 -1
  304. package/dist-es/packages/lab/src/tabs/Tabstrip.css.js +1 -1
  305. package/dist-es/packages/lab/src/tabs/Tabstrip.js +36 -46
  306. package/dist-es/packages/lab/src/tabs/Tabstrip.js.map +1 -1
  307. package/dist-es/packages/lab/src/tabs/useActivationIndicator.js +1 -0
  308. package/dist-es/packages/lab/src/tabs/useActivationIndicator.js.map +1 -1
  309. package/dist-es/packages/lab/src/tabs/useKeyboardNavigation.js +1 -0
  310. package/dist-es/packages/lab/src/tabs/useKeyboardNavigation.js.map +1 -1
  311. package/dist-es/packages/lab/src/toggle-button/ToggleButton.js +8 -28
  312. package/dist-es/packages/lab/src/toggle-button/ToggleButton.js.map +1 -1
  313. package/dist-es/packages/lab/src/tokenized-input/TokenizedInput.js.map +1 -1
  314. package/dist-es/packages/lab/src/tokenized-input/useTokenizedInput.js +1 -0
  315. package/dist-es/packages/lab/src/tokenized-input/useTokenizedInput.js.map +1 -1
  316. package/dist-es/packages/lab/src/toolbar/Toolbar.js +1 -0
  317. package/dist-es/packages/lab/src/toolbar/Toolbar.js.map +1 -1
  318. package/dist-es/packages/lab/src/toolbar/Tooltray.css.js +1 -1
  319. package/dist-es/packages/lab/src/toolbar/internal/renderToolbarItems.js +1 -0
  320. package/dist-es/packages/lab/src/toolbar/internal/renderToolbarItems.js.map +1 -1
  321. package/dist-es/packages/lab/src/toolbar/overflow-panel/OverflowPanel.js +1 -0
  322. package/dist-es/packages/lab/src/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  323. package/dist-es/packages/lab/src/tree/Tree.js +1 -0
  324. package/dist-es/packages/lab/src/tree/Tree.js.map +1 -1
  325. package/dist-es/packages/lab/src/tree/useTree.js +1 -0
  326. package/dist-es/packages/lab/src/tree/useTree.js.map +1 -1
  327. package/dist-es/packages/lab/src/{popper → utils}/useFloatingUI.js +10 -9
  328. package/dist-es/packages/lab/src/utils/useFloatingUI.js.map +1 -0
  329. package/dist-es/packages/lab/src/utils/useIsViewportLargerThanBreakpoint.js +1 -2
  330. package/dist-es/packages/lab/src/utils/useIsViewportLargerThanBreakpoint.js.map +1 -1
  331. package/dist-types/breadcrumbs/Breadcrumb.d.ts +1 -1
  332. package/dist-types/calendar/internal/CalendarCarousel.d.ts +1 -1
  333. package/dist-types/calendar/internal/CalendarDay.d.ts +2 -2
  334. package/dist-types/calendar/internal/CalendarMonth.d.ts +1 -1
  335. package/dist-types/calendar/internal/CalendarNavigation.d.ts +1 -1
  336. package/dist-types/calendar/internal/CalendarWeekHeader.d.ts +2 -2
  337. package/dist-types/calendar/useCalendarDay.d.ts +1 -1
  338. package/dist-types/cascading-menu/CascadingMenuList.d.ts +1 -1
  339. package/dist-types/cascading-menu/CascadingMenuProps.d.ts +1 -1
  340. package/dist-types/combo-box-deprecated/internal/DefaultComboBox.d.ts +1 -3
  341. package/dist-types/combo-box-deprecated/internal/useComboBox.d.ts +3 -4
  342. package/dist-types/combo-box-deprecated/internal/useMultiSelectComboBox.d.ts +10 -5
  343. package/dist-types/contact-details/ContactAction.d.ts +1 -2
  344. package/dist-types/contact-details/ContactAvatar.d.ts +3 -4
  345. package/dist-types/contact-details/ContactFavoriteToggle.d.ts +1 -1
  346. package/dist-types/contact-details/internal/FavoriteToggleWithTooltip.d.ts +1 -1
  347. package/dist-types/content-status/internal/StatusIndicator.d.ts +1 -2
  348. package/dist-types/form-field/StatusIndicator.d.ts +1 -1
  349. package/dist-types/index.d.ts +0 -5
  350. package/dist-types/layer-layout/LayerLayout.d.ts +1 -1
  351. package/dist-types/list-deprecated/ListProps.d.ts +0 -5
  352. package/dist-types/overlay/Overlay.d.ts +1 -1
  353. package/dist-types/overlay/useOverlay.d.ts +1 -1
  354. package/dist-types/pill/PillBase.d.ts +1 -1
  355. package/dist-types/skip-link/SkipLink.d.ts +1 -1
  356. package/dist-types/stepper-input/useStepperInput.d.ts +4 -0
  357. package/dist-types/tokenized-input/TokenizedInput.d.ts +1 -1
  358. package/dist-types/toolbar/ToolbarProps.d.ts +1 -1
  359. package/dist-types/utils/index.d.ts +1 -0
  360. package/dist-types/utils/useFloatingUI.d.ts +34 -0
  361. package/dist-types/window/ElectronWindow.d.ts +1 -1
  362. package/dist-types/window/WindowContext.d.ts +3 -3
  363. package/package.json +4 -4
  364. package/dist-cjs/packages/lab/src/avatar/Avatar.css.js +0 -9
  365. package/dist-cjs/packages/lab/src/avatar/Avatar.css.js.map +0 -1
  366. package/dist-cjs/packages/lab/src/avatar/Avatar.js +0 -62
  367. package/dist-cjs/packages/lab/src/avatar/Avatar.js.map +0 -1
  368. package/dist-cjs/packages/lab/src/avatar/internal/DefaultAvatar.js +0 -45
  369. package/dist-cjs/packages/lab/src/avatar/internal/DefaultAvatar.js.map +0 -1
  370. package/dist-cjs/packages/lab/src/avatar/internal/constants.js +0 -8
  371. package/dist-cjs/packages/lab/src/avatar/internal/constants.js.map +0 -1
  372. package/dist-cjs/packages/lab/src/avatar/internal/useLoaded.js +0 -47
  373. package/dist-cjs/packages/lab/src/avatar/internal/useLoaded.js.map +0 -1
  374. package/dist-cjs/packages/lab/src/popper/useFloatingUI.js +0 -37
  375. package/dist-cjs/packages/lab/src/popper/useFloatingUI.js.map +0 -1
  376. package/dist-cjs/packages/lab/src/spinner/Spinner.css.js +0 -9
  377. package/dist-cjs/packages/lab/src/spinner/Spinner.css.js.map +0 -1
  378. package/dist-cjs/packages/lab/src/spinner/Spinner.js +0 -76
  379. package/dist-cjs/packages/lab/src/spinner/Spinner.js.map +0 -1
  380. package/dist-cjs/packages/lab/src/spinner/svgSpinners/SpinnerLarge.js +0 -71
  381. package/dist-cjs/packages/lab/src/spinner/svgSpinners/SpinnerLarge.js.map +0 -1
  382. package/dist-cjs/packages/lab/src/spinner/svgSpinners/SpinnerMedium.js +0 -71
  383. package/dist-cjs/packages/lab/src/spinner/svgSpinners/SpinnerMedium.js.map +0 -1
  384. package/dist-cjs/packages/lab/src/spinner/svgSpinners/SpinnerSmall.js +0 -71
  385. package/dist-cjs/packages/lab/src/spinner/svgSpinners/SpinnerSmall.js.map +0 -1
  386. package/dist-cjs/packages/lab/src/spinner/svgSpinners/index.js +0 -21
  387. package/dist-cjs/packages/lab/src/spinner/svgSpinners/index.js.map +0 -1
  388. package/dist-cjs/packages/lab/src/split-layout/SplitLayout.css.js +0 -9
  389. package/dist-cjs/packages/lab/src/split-layout/SplitLayout.css.js.map +0 -1
  390. package/dist-cjs/packages/lab/src/split-layout/SplitLayout.js +0 -40
  391. package/dist-cjs/packages/lab/src/split-layout/SplitLayout.js.map +0 -1
  392. package/dist-cjs/packages/lab/src/tooltip/Tooltip.css.js +0 -9
  393. package/dist-cjs/packages/lab/src/tooltip/Tooltip.css.js.map +0 -1
  394. package/dist-cjs/packages/lab/src/tooltip/Tooltip.js +0 -84
  395. package/dist-cjs/packages/lab/src/tooltip/Tooltip.js.map +0 -1
  396. package/dist-cjs/packages/lab/src/tooltip/TooltipContext.js +0 -26
  397. package/dist-cjs/packages/lab/src/tooltip/TooltipContext.js.map +0 -1
  398. package/dist-cjs/packages/lab/src/tooltip/useAriaAnnounce.js +0 -87
  399. package/dist-cjs/packages/lab/src/tooltip/useAriaAnnounce.js.map +0 -1
  400. package/dist-cjs/packages/lab/src/tooltip/useTooltip.js +0 -137
  401. package/dist-cjs/packages/lab/src/tooltip/useTooltip.js.map +0 -1
  402. package/dist-es/packages/lab/src/avatar/Avatar.css.js +0 -7
  403. package/dist-es/packages/lab/src/avatar/Avatar.css.js.map +0 -1
  404. package/dist-es/packages/lab/src/avatar/Avatar.js +0 -58
  405. package/dist-es/packages/lab/src/avatar/Avatar.js.map +0 -1
  406. package/dist-es/packages/lab/src/avatar/internal/DefaultAvatar.js +0 -41
  407. package/dist-es/packages/lab/src/avatar/internal/DefaultAvatar.js.map +0 -1
  408. package/dist-es/packages/lab/src/avatar/internal/constants.js +0 -4
  409. package/dist-es/packages/lab/src/avatar/internal/constants.js.map +0 -1
  410. package/dist-es/packages/lab/src/avatar/internal/useLoaded.js +0 -43
  411. package/dist-es/packages/lab/src/avatar/internal/useLoaded.js.map +0 -1
  412. package/dist-es/packages/lab/src/popper/useFloatingUI.js.map +0 -1
  413. package/dist-es/packages/lab/src/spinner/Spinner.css.js +0 -7
  414. package/dist-es/packages/lab/src/spinner/Spinner.css.js.map +0 -1
  415. package/dist-es/packages/lab/src/spinner/Spinner.js +0 -71
  416. package/dist-es/packages/lab/src/spinner/Spinner.js.map +0 -1
  417. package/dist-es/packages/lab/src/spinner/svgSpinners/SpinnerLarge.js +0 -67
  418. package/dist-es/packages/lab/src/spinner/svgSpinners/SpinnerLarge.js.map +0 -1
  419. package/dist-es/packages/lab/src/spinner/svgSpinners/SpinnerMedium.js +0 -67
  420. package/dist-es/packages/lab/src/spinner/svgSpinners/SpinnerMedium.js.map +0 -1
  421. package/dist-es/packages/lab/src/spinner/svgSpinners/SpinnerSmall.js +0 -67
  422. package/dist-es/packages/lab/src/spinner/svgSpinners/SpinnerSmall.js.map +0 -1
  423. package/dist-es/packages/lab/src/spinner/svgSpinners/index.js +0 -17
  424. package/dist-es/packages/lab/src/spinner/svgSpinners/index.js.map +0 -1
  425. package/dist-es/packages/lab/src/split-layout/SplitLayout.css.js +0 -7
  426. package/dist-es/packages/lab/src/split-layout/SplitLayout.css.js.map +0 -1
  427. package/dist-es/packages/lab/src/split-layout/SplitLayout.js +0 -36
  428. package/dist-es/packages/lab/src/split-layout/SplitLayout.js.map +0 -1
  429. package/dist-es/packages/lab/src/tooltip/Tooltip.css.js +0 -7
  430. package/dist-es/packages/lab/src/tooltip/Tooltip.css.js.map +0 -1
  431. package/dist-es/packages/lab/src/tooltip/Tooltip.js +0 -80
  432. package/dist-es/packages/lab/src/tooltip/Tooltip.js.map +0 -1
  433. package/dist-es/packages/lab/src/tooltip/TooltipContext.js +0 -21
  434. package/dist-es/packages/lab/src/tooltip/TooltipContext.js.map +0 -1
  435. package/dist-es/packages/lab/src/tooltip/useAriaAnnounce.js +0 -83
  436. package/dist-es/packages/lab/src/tooltip/useAriaAnnounce.js.map +0 -1
  437. package/dist-es/packages/lab/src/tooltip/useTooltip.js +0 -133
  438. package/dist-es/packages/lab/src/tooltip/useTooltip.js.map +0 -1
  439. package/dist-types/avatar/Avatar.d.ts +0 -13
  440. package/dist-types/avatar/index.d.ts +0 -1
  441. package/dist-types/avatar/internal/DefaultAvatar.d.ts +0 -2
  442. package/dist-types/avatar/internal/constants.d.ts +0 -1
  443. package/dist-types/avatar/internal/useLoaded.d.ts +0 -2
  444. package/dist-types/popper/index.d.ts +0 -1
  445. package/dist-types/popper/useFloatingUI.d.ts +0 -5
  446. package/dist-types/spinner/Spinner.d.ts +0 -45
  447. package/dist-types/spinner/index.d.ts +0 -1
  448. package/dist-types/spinner/svgSpinners/SpinnerLarge.d.ts +0 -2
  449. package/dist-types/spinner/svgSpinners/SpinnerMedium.d.ts +0 -2
  450. package/dist-types/spinner/svgSpinners/SpinnerSmall.d.ts +0 -2
  451. package/dist-types/spinner/svgSpinners/index.d.ts +0 -2
  452. package/dist-types/split-layout/SplitLayout.d.ts +0 -32
  453. package/dist-types/split-layout/index.d.ts +0 -1
  454. package/dist-types/tooltip/Tooltip.d.ts +0 -37
  455. package/dist-types/tooltip/TooltipContext.d.ts +0 -22
  456. package/dist-types/tooltip/index.d.ts +0 -3
  457. package/dist-types/tooltip/useAriaAnnounce.d.ts +0 -9
  458. package/dist-types/tooltip/useTooltip.d.ts +0 -31
@@ -6,13 +6,10 @@ var jsxRuntime = require('react/jsx-runtime');
6
6
  var clsx = require('clsx');
7
7
  var React = require('react');
8
8
  var core = require('@salt-ds/core');
9
- require('../tooltip/Tooltip.js');
10
- var TooltipContext = require('../tooltip/TooltipContext.js');
11
- var useTooltip = require('../tooltip/useTooltip.js');
12
- var constants = require('./constants.js');
13
9
  var DeleteButton = require('./internal/DeleteButton.js');
14
- require('./Pill.css.js');
15
10
  var DivButton = require('./internal/DivButton.js');
11
+ var constants = require('./constants.js');
12
+ require('./Pill.css.js');
16
13
 
17
14
  const useEllipsisIsActive = () => {
18
15
  const labelRef = React.useRef(null);
@@ -45,7 +42,6 @@ const PillBase = React.forwardRef(function PillBase2({
45
42
  onKeyUp = noop,
46
43
  ...rest
47
44
  }, ref) {
48
- const { Tooltip, enterDelay, leaveDelay, placement } = TooltipContext.useTooltipContext();
49
45
  const [active, setActive] = React.useState(false);
50
46
  const [labelRef, ellipsis] = useEllipsisIsActive();
51
47
  const clickKeys = ["Enter", " "];
@@ -84,56 +80,44 @@ const PillBase = React.forwardRef(function PillBase2({
84
80
  });
85
81
  }
86
82
  };
87
- const { getTriggerProps, getTooltipProps } = useTooltip.useTooltip({
83
+ return /* @__PURE__ */ jsxRuntime.jsx(core.Tooltip, {
84
+ content: label,
88
85
  disabled: !ellipsis && disabled,
89
- enterDelay,
90
- placement,
91
- leaveDelay
92
- });
93
- const { ref: triggerRef, ...triggerProps } = getTriggerProps({
94
- "aria-disabled": disabled || void 0,
95
- "aria-roledescription": ariaRoledescription,
96
- className: clsx.clsx(
97
- withBaseName(),
98
- {
99
- [withBaseName("clickable")]: clickable,
100
- [withBaseName("deletable")]: deletable && !disabled,
101
- [withBaseName("disabled")]: disabled,
102
- [withBaseName("active")]: active
103
- },
104
- className
105
- ),
106
- "data-testid": "pill",
107
- onKeyDown: disabled ? void 0 : handleKeyDown,
108
- onKeyUp: disabled ? void 0 : handleKeyUp,
109
- onClick: disabled ? void 0 : handleClick,
110
- role: "button",
111
- tabIndex: disabled ? -1 : 0,
112
- ...rest
113
- });
114
- const handleRef = core.useForkRef(triggerRef, ref);
115
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
116
- children: [
117
- /* @__PURE__ */ jsxRuntime.jsx(Tooltip, {
118
- ...getTooltipProps({ title: label, ...TooltipProps2 })
119
- }),
120
- /* @__PURE__ */ jsxRuntime.jsxs(Component, {
121
- ref: handleRef,
122
- ...triggerProps,
123
- children: [
124
- pillIcon || null,
125
- /* @__PURE__ */ jsxRuntime.jsx("div", {
126
- className: withBaseName("label"),
127
- ref: labelRef,
128
- children: /* @__PURE__ */ jsxRuntime.jsx("span", {
129
- className: withBaseName("innerLabel"),
130
- children: label
131
- })
132
- }),
133
- deletable ? renderDeleteIcon() : null
134
- ]
135
- })
136
- ]
86
+ ...TooltipProps2,
87
+ children: /* @__PURE__ */ jsxRuntime.jsxs(Component, {
88
+ "aria-disabled": disabled || void 0,
89
+ "aria-roledescription": ariaRoledescription,
90
+ className: clsx.clsx(
91
+ withBaseName(),
92
+ {
93
+ [withBaseName("clickable")]: clickable,
94
+ [withBaseName("deletable")]: deletable && !disabled,
95
+ [withBaseName("disabled")]: disabled,
96
+ [withBaseName("active")]: active
97
+ },
98
+ className
99
+ ),
100
+ "data-testid": "pill",
101
+ onKeyDown: disabled ? void 0 : handleKeyDown,
102
+ onKeyUp: disabled ? void 0 : handleKeyUp,
103
+ onClick: disabled ? void 0 : handleClick,
104
+ role: "button",
105
+ tabIndex: disabled ? -1 : 0,
106
+ ref,
107
+ ...rest,
108
+ children: [
109
+ pillIcon || null,
110
+ /* @__PURE__ */ jsxRuntime.jsx("div", {
111
+ className: withBaseName("label"),
112
+ ref: labelRef,
113
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", {
114
+ className: withBaseName("innerLabel"),
115
+ children: label
116
+ })
117
+ }),
118
+ deletable ? renderDeleteIcon() : null
119
+ ]
120
+ })
137
121
  });
138
122
  });
139
123
 
@@ -1 +1 @@
1
- {"version":3,"file":"PillBase.js","sources":["../src/pill/PillBase.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n cloneElement,\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n KeyboardEvent,\n MutableRefObject,\n ReactElement,\n ReactEventHandler,\n SyntheticEvent,\n useRef,\n useState,\n} from \"react\";\nimport {\n makePrefixer,\n useForkRef,\n useIsomorphicLayoutEffect,\n} from \"@salt-ds/core\";\nimport { TooltipProps, useTooltip, useTooltipContext } from \"../tooltip\";\nimport { pillBaseName } from \"./constants\";\nimport { DeleteButton } from \"./internal/DeleteButton\";\n\nimport \"./Pill.css\";\nimport { DivButton } from \"./internal/DivButton\";\n\nconst useEllipsisIsActive = (): [\n MutableRefObject<HTMLDivElement | null>,\n boolean\n] => {\n const labelRef = useRef<HTMLDivElement | null>(null);\n const [showEllipsis, setShowEllipsis] = useState(false);\n\n useIsomorphicLayoutEffect(() => {\n if (labelRef.current) {\n setShowEllipsis(\n labelRef.current.offsetWidth < labelRef.current.scrollWidth\n );\n }\n }, []);\n return [labelRef, showEllipsis];\n};\n\nconst noop = () => undefined;\n\nconst withBaseName = makePrefixer(pillBaseName);\n\nexport interface PillBaseProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Props passed to the tooltip\n */\n TooltipProps?: Partial<TooltipProps>;\n /**\n * Defines a human-readable, author-localized description for the role of an element.\n *\n * This should be in favour of aria-label for `Pill`\n **/\n \"aria-roledescription\"?: string;\n /**\n * Clickable variation. Use 'onClick' for callback.\n */\n clickable?: boolean;\n /**\n * Shows delete icon. Use `onDelete` for callback.\n */\n deletable?: boolean;\n /**\n * Override the default delete icon element. Shown only if `deletable` is set.\n */\n // TODO: Should this be DeleteIcon (caps)?\n deleteIcon?: ReactElement;\n /**\n * If `true`, the pill will be disabled.\n */\n disabled?: boolean;\n /**\n * Whether the pill is been highlighted.\n * If `true`, the pill will display Tooltip when text within is truncated.\n */\n highlighted?: boolean;\n /**\n * Icon element.\n */\n // TODO: Should this be Icon (caps)?\n icon?: ReactElement;\n /**\n * The content of the label.\n */\n label?: string;\n /**\n * Callback function fired when pill is clicked.\n */\n onClick?: (event: SyntheticEvent<HTMLDivElement>) => void;\n /**\n * Callback function fired when the delete icon is clicked. Used when `deletable` is true.\n */\n onDelete?: ReactEventHandler<HTMLElement>;\n}\n\nexport const PillBase = forwardRef(function PillBase(\n {\n TooltipProps = {},\n \"aria-roledescription\": ariaRoledescription = \"Pill\",\n label,\n className,\n // New API\n clickable,\n disabled,\n // TODO: Should this be a prop as we have variant: 'closable'\n // New API.\n deletable,\n deleteIcon: deleteIconProp,\n // TODO: Not implemented. Consider to add `useImperativeHandle` like API to Tooltip?\n highlighted,\n icon,\n onClick = noop,\n onDelete,\n onKeyDown = noop,\n onKeyUp = noop,\n ...rest\n }: PillBaseProps,\n ref: ForwardedRef<HTMLDivElement>\n) {\n const { Tooltip, enterDelay, leaveDelay, placement } = useTooltipContext();\n\n const [active, setActive] = useState(false);\n const [labelRef, ellipsis] = useEllipsisIsActive();\n const clickKeys = [\"Enter\", \" \"];\n\n const pillIcon =\n // FIXME: icon type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n icon && isValidElement<any>(icon)\n ? cloneElement(icon, {\n ...icon.props,\n // FIXME: icon.props is any\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n className: clsx(withBaseName(\"icon\"), icon.props.className),\n })\n : icon;\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown(event);\n if (!disabled && !deletable && clickKeys.indexOf(event.key) !== -1) {\n setActive(true);\n }\n };\n\n const handleKeyUp = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyUp(event);\n setActive(false);\n };\n\n const handleClick = (event: SyntheticEvent<HTMLDivElement, Event>) => {\n onClick(event);\n };\n\n // FIXME: use polymorphic button as div for deletable and clickable cases.\n const Component = deletable || clickable ? DivButton : \"div\";\n\n const renderDeleteIcon = () => {\n // FIXME: deleteIconProp type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (deleteIconProp && isValidElement<any>(deleteIconProp)) {\n return cloneElement(deleteIconProp, {\n className: clsx(\n withBaseName(`deleteButton`),\n // FIXME: deleteIconProp.props is any\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n deleteIconProp.props.className\n ),\n disabled,\n onClick: onDelete,\n });\n } else {\n return <DeleteButton disabled={disabled} onClick={onDelete} />;\n }\n };\n\n const { getTriggerProps, getTooltipProps } = useTooltip({\n disabled: !ellipsis && disabled,\n enterDelay,\n placement,\n leaveDelay,\n });\n\n const { ref: triggerRef, ...triggerProps } = getTriggerProps<\n typeof Component\n >({\n \"aria-disabled\": disabled || undefined,\n \"aria-roledescription\": ariaRoledescription,\n className: clsx(\n withBaseName(),\n {\n [withBaseName(\"clickable\")]: clickable,\n [withBaseName(\"deletable\")]: deletable && !disabled,\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"active\")]: active,\n },\n className\n ),\n // @ts-ignore\n \"data-testid\": \"pill\",\n onKeyDown: disabled ? undefined : handleKeyDown,\n onKeyUp: disabled ? undefined : handleKeyUp,\n onClick: disabled ? undefined : handleClick,\n role: \"button\",\n tabIndex: disabled ? -1 : 0,\n ...rest,\n });\n\n const handleRef = useForkRef(triggerRef, ref);\n\n return (\n <>\n <Tooltip {...getTooltipProps({ title: label, ...TooltipProps })} />\n <Component ref={handleRef} {...triggerProps}>\n {pillIcon || null}\n <div className={withBaseName(\"label\")} ref={labelRef}>\n <span className={withBaseName(\"innerLabel\")}>{label}</span>\n </div>\n {deletable ? renderDeleteIcon() : null}\n </Component>\n </>\n );\n});\n"],"names":["useRef","useState","useIsomorphicLayoutEffect","makePrefixer","pillBaseName","forwardRef","PillBase","TooltipProps","useTooltipContext","isValidElement","cloneElement","clsx","DivButton","jsx","DeleteButton","useTooltip","useForkRef","jsxs","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"PillBase.js","sources":["../src/pill/PillBase.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n cloneElement,\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n KeyboardEvent,\n MutableRefObject,\n ReactElement,\n ReactEventHandler,\n SyntheticEvent,\n useRef,\n useState,\n} from \"react\";\nimport {\n makePrefixer,\n Tooltip,\n TooltipProps,\n useIsomorphicLayoutEffect,\n} from \"@salt-ds/core\";\n\nimport { DeleteButton } from \"./internal/DeleteButton\";\nimport { DivButton } from \"./internal/DivButton\";\nimport { pillBaseName } from \"./constants\";\n\nimport \"./Pill.css\";\n\nconst useEllipsisIsActive = (): [\n MutableRefObject<HTMLDivElement | null>,\n boolean\n] => {\n const labelRef = useRef<HTMLDivElement | null>(null);\n const [showEllipsis, setShowEllipsis] = useState(false);\n\n useIsomorphicLayoutEffect(() => {\n if (labelRef.current) {\n setShowEllipsis(\n labelRef.current.offsetWidth < labelRef.current.scrollWidth\n );\n }\n }, []);\n return [labelRef, showEllipsis];\n};\n\nconst noop = () => undefined;\n\nconst withBaseName = makePrefixer(pillBaseName);\n\nexport interface PillBaseProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Props passed to the tooltip\n */\n TooltipProps?: Partial<TooltipProps>;\n /**\n * Defines a human-readable, author-localized description for the role of an element.\n *\n * This should be in favour of aria-label for `Pill`\n **/\n \"aria-roledescription\"?: string;\n /**\n * Clickable variation. Use 'onClick' for callback.\n */\n clickable?: boolean;\n /**\n * Shows delete icon. Use `onDelete` for callback.\n */\n deletable?: boolean;\n /**\n * Override the default delete icon element. Shown only if `deletable` is set.\n */\n // TODO: Should this be DeleteIcon (caps)?\n deleteIcon?: ReactElement;\n /**\n * If `true`, the pill will be disabled.\n */\n disabled?: boolean;\n /**\n * Whether the pill is been highlighted.\n * If `true`, the pill will display Tooltip when text within is truncated.\n */\n highlighted?: boolean;\n /**\n * Icon element.\n */\n // TODO: Should this be Icon (caps)?\n icon?: ReactElement;\n /**\n * The content of the label.\n */\n label?: string;\n /**\n * Callback function fired when pill is clicked.\n */\n onClick?: (event: SyntheticEvent<HTMLDivElement>) => void;\n /**\n * Callback function fired when the delete icon is clicked. Used when `deletable` is true.\n */\n onDelete?: ReactEventHandler<HTMLElement>;\n}\n\nexport const PillBase = forwardRef(function PillBase(\n {\n TooltipProps = {},\n \"aria-roledescription\": ariaRoledescription = \"Pill\",\n label,\n className,\n // New API\n clickable,\n disabled,\n // TODO: Should this be a prop as we have variant: 'closable'\n // New API.\n deletable,\n deleteIcon: deleteIconProp,\n // TODO: Not implemented. Consider to add `useImperativeHandle` like API to Tooltip?\n highlighted,\n icon,\n onClick = noop,\n onDelete,\n onKeyDown = noop,\n onKeyUp = noop,\n ...rest\n }: PillBaseProps,\n ref: ForwardedRef<HTMLDivElement>\n) {\n const [active, setActive] = useState(false);\n const [labelRef, ellipsis] = useEllipsisIsActive();\n const clickKeys = [\"Enter\", \" \"];\n\n const pillIcon =\n // FIXME: icon type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n icon && isValidElement<any>(icon)\n ? cloneElement(icon, {\n ...icon.props,\n // FIXME: icon.props is any\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n className: clsx(withBaseName(\"icon\"), icon.props.className),\n })\n : icon;\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown(event);\n if (!disabled && !deletable && clickKeys.indexOf(event.key) !== -1) {\n setActive(true);\n }\n };\n\n const handleKeyUp = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyUp(event);\n setActive(false);\n };\n\n const handleClick = (event: SyntheticEvent<HTMLDivElement, Event>) => {\n onClick(event);\n };\n\n // FIXME: use polymorphic button as div for deletable and clickable cases.\n const Component = deletable || clickable ? DivButton : \"div\";\n\n const renderDeleteIcon = () => {\n // FIXME: deleteIconProp type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (deleteIconProp && isValidElement<any>(deleteIconProp)) {\n return cloneElement(deleteIconProp, {\n className: clsx(\n withBaseName(`deleteButton`),\n // FIXME: deleteIconProp.props is any\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n deleteIconProp.props.className\n ),\n disabled,\n onClick: onDelete,\n });\n } else {\n return <DeleteButton disabled={disabled} onClick={onDelete} />;\n }\n };\n\n return (\n <Tooltip content={label} disabled={!ellipsis && disabled} {...TooltipProps}>\n <Component\n aria-disabled={disabled || undefined}\n aria-roledescription={ariaRoledescription}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"clickable\")]: clickable,\n [withBaseName(\"deletable\")]: deletable && !disabled,\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"active\")]: active,\n },\n className\n )}\n data-testid=\"pill\"\n onKeyDown={disabled ? undefined : handleKeyDown}\n onKeyUp={disabled ? undefined : handleKeyUp}\n onClick={disabled ? undefined : handleClick}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n ref={ref}\n {...rest}\n >\n {pillIcon || null}\n <div className={withBaseName(\"label\")} ref={labelRef}>\n <span className={withBaseName(\"innerLabel\")}>{label}</span>\n </div>\n {deletable ? renderDeleteIcon() : null}\n </Component>\n </Tooltip>\n );\n});\n"],"names":["useRef","useState","useIsomorphicLayoutEffect","makePrefixer","pillBaseName","forwardRef","PillBase","TooltipProps","isValidElement","cloneElement","clsx","DivButton","jsx","DeleteButton","Tooltip","jsxs"],"mappings":"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"}
@@ -10,6 +10,7 @@ require('../../list/ListItem.js');
10
10
  var List = require('../../list/List.js');
11
11
  require('../../common-hooks/collectionProvider.js');
12
12
  require('../../common-hooks/keyUtils.js');
13
+ require('../../utils/useFloatingUI.js');
13
14
  require('../../responsive/useResizeObserver.js');
14
15
  require('../../list/VirtualizedList.js');
15
16
  var CategoryListItem = require('./CategoryListItem.js');
@@ -1 +1 @@
1
- {"version":3,"file":"CategoryList.js","sources":["../src/query-input/internal/CategoryList.tsx"],"sourcesContent":["import { Dispatch, SetStateAction, useCallback, useRef, useState } from \"react\";\nimport { makePrefixer, useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport { QueryInputCategory } from \"../queryInputTypes\";\nimport { SelectHandler } from \"../../common-hooks\";\nimport { List } from \"../../list\";\nimport { CategoryListItem } from \"./CategoryListItem\";\nimport { CategoryListContext } from \"./CategoryListContext\";\n\nconst withBaseName = makePrefixer(\"saltCategoryList\");\n\nexport interface CategoryListProps {\n categories: QueryInputCategory[];\n rootWidth: number;\n onCategorySelect: (category: QueryInputCategory | null) => void;\n highlightedCategoryIndex?: number;\n setHighlightedCategoryIndex: Dispatch<SetStateAction<number>>;\n}\n\nconst getCategoryLabel = (category: QueryInputCategory) => category.name;\n\nexport function CategoryList(props: CategoryListProps) {\n const {\n categories,\n rootWidth,\n onCategorySelect,\n highlightedCategoryIndex,\n setHighlightedCategoryIndex,\n } = props;\n\n const measureRef = useRef<HTMLDivElement>(null);\n const [measuredCategories, setMeasuredCategories] = useState<\n QueryInputCategory[]\n >([]);\n const [contextValue, setContextValue] = useState<CategoryListContext>({\n width: 0,\n });\n\n useIsomorphicLayoutEffect(() => {\n setTimeout(() => {\n if (measureRef.current) {\n const width = measureRef.current.offsetWidth;\n setMeasuredCategories(categories);\n setContextValue({\n width,\n });\n }\n }, 0);\n }, [categories, setMeasuredCategories, setContextValue]);\n\n const onSelect: SelectHandler<QueryInputCategory> = useCallback(\n (_, item) => {\n onCategorySelect(item);\n },\n [onCategorySelect]\n );\n\n const isMeasuring = measuredCategories !== categories;\n\n if (isMeasuring) {\n return (\n <div ref={measureRef} className={withBaseName(\"categoryWidthMeasure\")}>\n {categories.map((c, i) => {\n return (\n <div key={i} className={withBaseName(\"category\")}>\n {c.name}\n </div>\n );\n })}\n </div>\n );\n }\n\n return (\n <CategoryListContext.Provider value={contextValue}>\n <List<QueryInputCategory>\n ListItem={CategoryListItem}\n data-testid=\"category-list\"\n highlightedIndex={highlightedCategoryIndex}\n itemToString={getCategoryLabel}\n onHighlight={setHighlightedCategoryIndex}\n onSelect={onSelect}\n source={categories}\n width={rootWidth}\n />\n </CategoryListContext.Provider>\n );\n}\n"],"names":["makePrefixer","useRef","useState","useIsomorphicLayoutEffect","useCallback","jsx","CategoryListContext","List","CategoryListItem"],"mappings":";;;;;;;;;;;;;;;;;AAQA,MAAM,YAAA,GAAeA,kBAAa,kBAAkB,CAAA,CAAA;AAUpD,MAAM,gBAAA,GAAmB,CAAC,QAAA,KAAiC,QAAS,CAAA,IAAA,CAAA;AAE7D,SAAS,aAAa,KAA0B,EAAA;AACrD,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,SAAA;AAAA,IACA,gBAAA;AAAA,IACA,wBAAA;AAAA,IACA,2BAAA;AAAA,GACE,GAAA,KAAA,CAAA;AAEJ,EAAM,MAAA,UAAA,GAAaC,aAAuB,IAAI,CAAA,CAAA;AAC9C,EAAA,MAAM,CAAC,kBAAoB,EAAA,qBAAqB,CAAI,GAAAC,cAAA,CAElD,EAAE,CAAA,CAAA;AACJ,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,cAA8B,CAAA;AAAA,IACpE,KAAO,EAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAAC,8BAAA,CAA0B,MAAM;AAC9B,IAAA,UAAA,CAAW,MAAM;AACf,MAAA,IAAI,WAAW,OAAS,EAAA;AACtB,QAAM,MAAA,KAAA,GAAQ,WAAW,OAAQ,CAAA,WAAA,CAAA;AACjC,QAAA,qBAAA,CAAsB,UAAU,CAAA,CAAA;AAChC,QAAgB,eAAA,CAAA;AAAA,UACd,KAAA;AAAA,SACD,CAAA,CAAA;AAAA,OACH;AAAA,OACC,CAAC,CAAA,CAAA;AAAA,GACH,EAAA,CAAC,UAAY,EAAA,qBAAA,EAAuB,eAAe,CAAC,CAAA,CAAA;AAEvD,EAAA,MAAM,QAA8C,GAAAC,iBAAA;AAAA,IAClD,CAAC,GAAG,IAAS,KAAA;AACX,MAAA,gBAAA,CAAiB,IAAI,CAAA,CAAA;AAAA,KACvB;AAAA,IACA,CAAC,gBAAgB,CAAA;AAAA,GACnB,CAAA;AAEA,EAAA,MAAM,cAAc,kBAAuB,KAAA,UAAA,CAAA;AAE3C,EAAA,IAAI,WAAa,EAAA;AACf,IAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,MAAI,GAAK,EAAA,UAAA;AAAA,MAAY,SAAA,EAAW,aAAa,sBAAsB,CAAA;AAAA,MACjE,QAAW,EAAA,UAAA,CAAA,GAAA,CAAI,CAAC,CAAA,EAAG,CAAM,KAAA;AACxB,QAAA,uBACGA,cAAA,CAAA,KAAA,EAAA;AAAA,UAAY,SAAA,EAAW,aAAa,UAAU,CAAA;AAAA,UAC5C,QAAE,EAAA,CAAA,CAAA,IAAA;AAAA,SAAA,EADK,CAEV,CAAA,CAAA;AAAA,OAEH,CAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AAEA,EACE,uBAAAA,cAAA,CAACC,wCAAoB,QAApB,EAAA;AAAA,IAA6B,KAAO,EAAA,YAAA;AAAA,IACnC,QAAC,kBAAAD,cAAA,CAAAE,SAAA,EAAA;AAAA,MACC,QAAU,EAAAC,iCAAA;AAAA,MACV,aAAY,EAAA,eAAA;AAAA,MACZ,gBAAkB,EAAA,wBAAA;AAAA,MAClB,YAAc,EAAA,gBAAA;AAAA,MACd,WAAa,EAAA,2BAAA;AAAA,MACb,QAAA;AAAA,MACA,MAAQ,EAAA,UAAA;AAAA,MACR,KAAO,EAAA,SAAA;AAAA,KACT,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"CategoryList.js","sources":["../src/query-input/internal/CategoryList.tsx"],"sourcesContent":["import { Dispatch, SetStateAction, useCallback, useRef, useState } from \"react\";\nimport { makePrefixer, useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport { QueryInputCategory } from \"../queryInputTypes\";\nimport { SelectHandler } from \"../../common-hooks\";\nimport { List } from \"../../list\";\nimport { CategoryListItem } from \"./CategoryListItem\";\nimport { CategoryListContext } from \"./CategoryListContext\";\n\nconst withBaseName = makePrefixer(\"saltCategoryList\");\n\nexport interface CategoryListProps {\n categories: QueryInputCategory[];\n rootWidth: number;\n onCategorySelect: (category: QueryInputCategory | null) => void;\n highlightedCategoryIndex?: number;\n setHighlightedCategoryIndex: Dispatch<SetStateAction<number>>;\n}\n\nconst getCategoryLabel = (category: QueryInputCategory) => category.name;\n\nexport function CategoryList(props: CategoryListProps) {\n const {\n categories,\n rootWidth,\n onCategorySelect,\n highlightedCategoryIndex,\n setHighlightedCategoryIndex,\n } = props;\n\n const measureRef = useRef<HTMLDivElement>(null);\n const [measuredCategories, setMeasuredCategories] = useState<\n QueryInputCategory[]\n >([]);\n const [contextValue, setContextValue] = useState<CategoryListContext>({\n width: 0,\n });\n\n useIsomorphicLayoutEffect(() => {\n setTimeout(() => {\n if (measureRef.current) {\n const width = measureRef.current.offsetWidth;\n setMeasuredCategories(categories);\n setContextValue({\n width,\n });\n }\n }, 0);\n }, [categories, setMeasuredCategories, setContextValue]);\n\n const onSelect: SelectHandler<QueryInputCategory> = useCallback(\n (_, item) => {\n onCategorySelect(item);\n },\n [onCategorySelect]\n );\n\n const isMeasuring = measuredCategories !== categories;\n\n if (isMeasuring) {\n return (\n <div ref={measureRef} className={withBaseName(\"categoryWidthMeasure\")}>\n {categories.map((c, i) => {\n return (\n <div key={i} className={withBaseName(\"category\")}>\n {c.name}\n </div>\n );\n })}\n </div>\n );\n }\n\n return (\n <CategoryListContext.Provider value={contextValue}>\n <List<QueryInputCategory>\n ListItem={CategoryListItem}\n data-testid=\"category-list\"\n highlightedIndex={highlightedCategoryIndex}\n itemToString={getCategoryLabel}\n onHighlight={setHighlightedCategoryIndex}\n onSelect={onSelect}\n source={categories}\n width={rootWidth}\n />\n </CategoryListContext.Provider>\n );\n}\n"],"names":["makePrefixer","useRef","useState","useIsomorphicLayoutEffect","useCallback","jsx","CategoryListContext","List","CategoryListItem"],"mappings":";;;;;;;;;;;;;;;;;;AAQA,MAAM,YAAA,GAAeA,kBAAa,kBAAkB,CAAA,CAAA;AAUpD,MAAM,gBAAA,GAAmB,CAAC,QAAA,KAAiC,QAAS,CAAA,IAAA,CAAA;AAE7D,SAAS,aAAa,KAA0B,EAAA;AACrD,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,SAAA;AAAA,IACA,gBAAA;AAAA,IACA,wBAAA;AAAA,IACA,2BAAA;AAAA,GACE,GAAA,KAAA,CAAA;AAEJ,EAAM,MAAA,UAAA,GAAaC,aAAuB,IAAI,CAAA,CAAA;AAC9C,EAAA,MAAM,CAAC,kBAAoB,EAAA,qBAAqB,CAAI,GAAAC,cAAA,CAElD,EAAE,CAAA,CAAA;AACJ,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,cAA8B,CAAA;AAAA,IACpE,KAAO,EAAA,CAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAAC,8BAAA,CAA0B,MAAM;AAC9B,IAAA,UAAA,CAAW,MAAM;AACf,MAAA,IAAI,WAAW,OAAS,EAAA;AACtB,QAAM,MAAA,KAAA,GAAQ,WAAW,OAAQ,CAAA,WAAA,CAAA;AACjC,QAAA,qBAAA,CAAsB,UAAU,CAAA,CAAA;AAChC,QAAgB,eAAA,CAAA;AAAA,UACd,KAAA;AAAA,SACD,CAAA,CAAA;AAAA,OACH;AAAA,OACC,CAAC,CAAA,CAAA;AAAA,GACH,EAAA,CAAC,UAAY,EAAA,qBAAA,EAAuB,eAAe,CAAC,CAAA,CAAA;AAEvD,EAAA,MAAM,QAA8C,GAAAC,iBAAA;AAAA,IAClD,CAAC,GAAG,IAAS,KAAA;AACX,MAAA,gBAAA,CAAiB,IAAI,CAAA,CAAA;AAAA,KACvB;AAAA,IACA,CAAC,gBAAgB,CAAA;AAAA,GACnB,CAAA;AAEA,EAAA,MAAM,cAAc,kBAAuB,KAAA,UAAA,CAAA;AAE3C,EAAA,IAAI,WAAa,EAAA;AACf,IAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,MAAI,GAAK,EAAA,UAAA;AAAA,MAAY,SAAA,EAAW,aAAa,sBAAsB,CAAA;AAAA,MACjE,QAAW,EAAA,UAAA,CAAA,GAAA,CAAI,CAAC,CAAA,EAAG,CAAM,KAAA;AACxB,QAAA,uBACGA,cAAA,CAAA,KAAA,EAAA;AAAA,UAAY,SAAA,EAAW,aAAa,UAAU,CAAA;AAAA,UAC5C,QAAE,EAAA,CAAA,CAAA,IAAA;AAAA,SAAA,EADK,CAEV,CAAA,CAAA;AAAA,OAEH,CAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AAEA,EACE,uBAAAA,cAAA,CAACC,wCAAoB,QAApB,EAAA;AAAA,IAA6B,KAAO,EAAA,YAAA;AAAA,IACnC,QAAC,kBAAAD,cAAA,CAAAE,SAAA,EAAA;AAAA,MACC,QAAU,EAAAC,iCAAA;AAAA,MACV,aAAY,EAAA,eAAA;AAAA,MACZ,gBAAkB,EAAA,wBAAA;AAAA,MAClB,YAAc,EAAA,gBAAA;AAAA,MACd,WAAa,EAAA,2BAAA;AAAA,MACb,QAAA;AAAA,MACA,MAAQ,EAAA,UAAA;AAAA,MACR,KAAO,EAAA,SAAA;AAAA,KACT,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -11,6 +11,7 @@ var ListItem = require('../../list/ListItem.js');
11
11
  require('../../list/List.js');
12
12
  require('../../common-hooks/collectionProvider.js');
13
13
  require('../../common-hooks/keyUtils.js');
14
+ require('../../utils/useFloatingUI.js');
14
15
  require('../../responsive/useResizeObserver.js');
15
16
  require('../../list/VirtualizedList.js');
16
17
  var CategoryListContext = require('./CategoryListContext.js');
@@ -1 +1 @@
1
- {"version":3,"file":"CategoryListItem.js","sources":["../src/query-input/internal/CategoryListItem.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { ChevronRightIcon } from \"@salt-ds/icons\";\nimport { CSSProperties, useMemo, useRef } from \"react\";\nimport { ListItem, ListItemProps, ListItemType } from \"../../list\";\nimport { QueryInputCategory } from \"../queryInputTypes\";\nimport { useCategoryListContext } from \"./CategoryListContext\";\n\nconst withBaseName = makePrefixer(\"saltCategoryListItem\");\n\nexport interface CategoryListItemProps\n extends ListItemProps<QueryInputCategory> {\n category: QueryInputCategory;\n}\n\nexport const CategoryListItem: ListItemType<QueryInputCategory> =\n function CategoryListItem({ item: category, ...props }) {\n const textRef = useRef<HTMLDivElement>(null);\n const context = useCategoryListContext();\n\n const textStyle: CSSProperties = useMemo(\n () => ({\n minWidth: context.width,\n }),\n [context.width]\n );\n\n return (\n <ListItem {...props} label={category?.name}>\n <div ref={textRef} className={withBaseName(\"text\")} style={textStyle}>\n {category?.name}\n </div>\n <div className={withBaseName(\"valuesContainer\")}>\n <span>(</span>\n <span className={withBaseName(\"values\")}>\n {category?.values.join(\", \")}\n </span>\n <span>)</span>\n </div>\n <ChevronRightIcon className={withBaseName(\"chevron\")} />\n </ListItem>\n );\n };\n"],"names":["makePrefixer","CategoryListItem","useRef","useCategoryListContext","useMemo","jsxs","ListItem","jsx","ChevronRightIcon"],"mappings":";;;;;;;;;;;;;;;;;AAOA,MAAM,YAAA,GAAeA,kBAAa,sBAAsB,CAAA,CAAA;AAOjD,MAAM,mBACX,SAASC,iBAAAA,CAAiB,EAAE,IAAM,EAAA,QAAA,EAAA,GAAa,OAAS,EAAA;AACtD,EAAM,MAAA,OAAA,GAAUC,aAAuB,IAAI,CAAA,CAAA;AAC3C,EAAA,MAAM,UAAUC,0CAAuB,EAAA,CAAA;AAEvC,EAAA,MAAM,SAA2B,GAAAC,aAAA;AAAA,IAC/B,OAAO;AAAA,MACL,UAAU,OAAQ,CAAA,KAAA;AAAA,KACpB,CAAA;AAAA,IACA,CAAC,QAAQ,KAAK,CAAA;AAAA,GAChB,CAAA;AAEA,EAAA,uBACGC,eAAA,CAAAC,iBAAA,EAAA;AAAA,IAAU,GAAG,KAAA;AAAA,IAAO,OAAO,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,IAAA;AAAA,IACpC,QAAA,EAAA;AAAA,sBAACC,cAAA,CAAA,KAAA,EAAA;AAAA,QAAI,GAAK,EAAA,OAAA;AAAA,QAAS,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,QAAG,KAAO,EAAA,SAAA;AAAA,QACxD,QAAU,EAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,IAAA;AAAA,OACb,CAAA;AAAA,sBACCF,eAAA,CAAA,KAAA,EAAA;AAAA,QAAI,SAAA,EAAW,aAAa,iBAAiB,CAAA;AAAA,QAC5C,QAAA,EAAA;AAAA,0BAACE,cAAA,CAAA,MAAA,EAAA;AAAA,YAAK,QAAA,EAAA,GAAA;AAAA,WAAC,CAAA;AAAA,0BACNA,cAAA,CAAA,MAAA,EAAA;AAAA,YAAK,SAAA,EAAW,aAAa,QAAQ,CAAA;AAAA,YACnC,QAAA,EAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,OAAO,IAAK,CAAA,IAAA,CAAA;AAAA,WACzB,CAAA;AAAA,0BACCA,cAAA,CAAA,MAAA,EAAA;AAAA,YAAK,QAAA,EAAA,GAAA;AAAA,WAAC,CAAA;AAAA,SAAA;AAAA,OACT,CAAA;AAAA,sBACCA,cAAA,CAAAC,sBAAA,EAAA;AAAA,QAAiB,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,OAAG,CAAA;AAAA,KAAA;AAAA,GACxD,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"CategoryListItem.js","sources":["../src/query-input/internal/CategoryListItem.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { ChevronRightIcon } from \"@salt-ds/icons\";\nimport { CSSProperties, useMemo, useRef } from \"react\";\nimport { ListItem, ListItemProps, ListItemType } from \"../../list\";\nimport { QueryInputCategory } from \"../queryInputTypes\";\nimport { useCategoryListContext } from \"./CategoryListContext\";\n\nconst withBaseName = makePrefixer(\"saltCategoryListItem\");\n\nexport interface CategoryListItemProps\n extends ListItemProps<QueryInputCategory> {\n category: QueryInputCategory;\n}\n\nexport const CategoryListItem: ListItemType<QueryInputCategory> =\n function CategoryListItem({ item: category, ...props }) {\n const textRef = useRef<HTMLDivElement>(null);\n const context = useCategoryListContext();\n\n const textStyle: CSSProperties = useMemo(\n () => ({\n minWidth: context.width,\n }),\n [context.width]\n );\n\n return (\n <ListItem {...props} label={category?.name}>\n <div ref={textRef} className={withBaseName(\"text\")} style={textStyle}>\n {category?.name}\n </div>\n <div className={withBaseName(\"valuesContainer\")}>\n <span>(</span>\n <span className={withBaseName(\"values\")}>\n {category?.values.join(\", \")}\n </span>\n <span>)</span>\n </div>\n <ChevronRightIcon className={withBaseName(\"chevron\")} />\n </ListItem>\n );\n };\n"],"names":["makePrefixer","CategoryListItem","useRef","useCategoryListContext","useMemo","jsxs","ListItem","jsx","ChevronRightIcon"],"mappings":";;;;;;;;;;;;;;;;;;AAOA,MAAM,YAAA,GAAeA,kBAAa,sBAAsB,CAAA,CAAA;AAOjD,MAAM,mBACX,SAASC,iBAAAA,CAAiB,EAAE,IAAM,EAAA,QAAA,EAAA,GAAa,OAAS,EAAA;AACtD,EAAM,MAAA,OAAA,GAAUC,aAAuB,IAAI,CAAA,CAAA;AAC3C,EAAA,MAAM,UAAUC,0CAAuB,EAAA,CAAA;AAEvC,EAAA,MAAM,SAA2B,GAAAC,aAAA;AAAA,IAC/B,OAAO;AAAA,MACL,UAAU,OAAQ,CAAA,KAAA;AAAA,KACpB,CAAA;AAAA,IACA,CAAC,QAAQ,KAAK,CAAA;AAAA,GAChB,CAAA;AAEA,EAAA,uBACGC,eAAA,CAAAC,iBAAA,EAAA;AAAA,IAAU,GAAG,KAAA;AAAA,IAAO,OAAO,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,IAAA;AAAA,IACpC,QAAA,EAAA;AAAA,sBAACC,cAAA,CAAA,KAAA,EAAA;AAAA,QAAI,GAAK,EAAA,OAAA;AAAA,QAAS,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,QAAG,KAAO,EAAA,SAAA;AAAA,QACxD,QAAU,EAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,IAAA;AAAA,OACb,CAAA;AAAA,sBACCF,eAAA,CAAA,KAAA,EAAA;AAAA,QAAI,SAAA,EAAW,aAAa,iBAAiB,CAAA;AAAA,QAC5C,QAAA,EAAA;AAAA,0BAACE,cAAA,CAAA,MAAA,EAAA;AAAA,YAAK,QAAA,EAAA,GAAA;AAAA,WAAC,CAAA;AAAA,0BACNA,cAAA,CAAA,MAAA,EAAA;AAAA,YAAK,SAAA,EAAW,aAAa,QAAQ,CAAA;AAAA,YACnC,QAAA,EAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,OAAO,IAAK,CAAA,IAAA,CAAA;AAAA,WACzB,CAAA;AAAA,0BACCA,cAAA,CAAA,MAAA,EAAA;AAAA,YAAK,QAAA,EAAA,GAAA;AAAA,WAAC,CAAA;AAAA,SAAA;AAAA,OACT,CAAA;AAAA,sBACCA,cAAA,CAAAC,sBAAA,EAAA;AAAA,QAAiB,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,OAAG,CAAA;AAAA,KAAA;AAAA,GACxD,CAAA,CAAA;AAEJ;;;;"}
@@ -11,6 +11,7 @@ var ToggleButtonGroup = require('../../toggle-button/ToggleButtonGroup.js');
11
11
  var TokenizedInput = require('../../tokenized-input/TokenizedInput.js');
12
12
  require('../../tokenized-input/TokenizedInputBase.js');
13
13
  require('clipboard-copy');
14
+ require('../../utils/useFloatingUI.js');
14
15
  require('../../form-field-context/FormFieldContext.js');
15
16
 
16
17
  const withBaseName = core.makePrefixer("saltQueryInputBody");
@@ -1 +1 @@
1
- {"version":3,"file":"QueryInputBody.js","sources":["../src/query-input/internal/QueryInputBody.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { FilterIcon } from \"@salt-ds/icons\";\nimport {\n ChangeEventHandler,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n Ref,\n SyntheticEvent,\n useMemo,\n} from \"react\";\n\nimport {\n ToggleButton,\n ToggleButtonGroup,\n ToggleButtonGroupChangeEventHandler,\n} from \"../../toggle-button\";\nimport {\n ChangeHandler,\n StringToItem,\n TokenizedInput,\n} from \"../../tokenized-input\";\nimport { QueryInputItem } from \"../queryInputTypes\";\nimport { BooleanOperator } from \"../useQueryInput\";\n\nconst withBaseName = makePrefixer(\"saltQueryInputBody\");\n\nexport interface QueryInputBodyProps {\n inputRef: Ref<HTMLInputElement>;\n disabled?: boolean;\n showCategory?: boolean;\n selectedItems: QueryInputItem[];\n onBlur: FocusEventHandler<HTMLInputElement>;\n onFocus: FocusEventHandler<HTMLInputElement>;\n onInputFocus: FocusEventHandler<HTMLInputElement>;\n onInputBlur: FocusEventHandler<HTMLInputElement>;\n onInputClick: (event: SyntheticEvent) => void;\n onInputClear: () => void;\n inputValue?: string;\n onInputChange: ChangeEventHandler<HTMLInputElement>;\n isFocused?: boolean;\n onSelectedItemsChange: ChangeHandler<QueryInputItem>;\n onKeyDown: KeyboardEventHandler<HTMLInputElement | HTMLButtonElement>;\n booleanOperator: BooleanOperator;\n onBooleanOperatorChange: (newBooleanOperator: BooleanOperator) => void;\n}\n\nexport const QueryInputBody = forwardRef<HTMLDivElement, QueryInputBodyProps>(\n function QueryInputBody(props, ref) {\n const {\n inputRef,\n disabled,\n selectedItems,\n onInputFocus,\n onInputBlur,\n showCategory,\n inputValue,\n onInputChange,\n isFocused,\n onInputClear,\n onSelectedItemsChange,\n onKeyDown,\n onInputClick,\n booleanOperator,\n onBooleanOperatorChange,\n } = props;\n\n const itemToString = useMemo(() => {\n if (showCategory) {\n return (item: QueryInputItem) => [item.category, item.value].join(\": \");\n }\n return (item: QueryInputItem) => item.value;\n }, [showCategory]);\n\n const stringToItem: StringToItem<QueryInputItem> = (\n selectedItems,\n value\n ) => {\n return {\n category: null,\n value,\n };\n };\n\n const onChange: ToggleButtonGroupChangeEventHandler = (event, index) => {\n const newBooleanOperator = index === 0 ? \"and\" : \"or\";\n onBooleanOperatorChange(newBooleanOperator);\n };\n\n return (\n <div ref={ref} className={withBaseName()}>\n <FilterIcon />\n <TokenizedInput\n inputRef={inputRef}\n disabled={disabled}\n className={withBaseName(\"input\")}\n selectedItems={selectedItems}\n itemToString={itemToString as any}\n stringToItem={stringToItem as any}\n onInputFocus={onInputFocus}\n onInputBlur={onInputBlur}\n value={inputValue}\n onClick={onInputClick}\n onInputChange={onInputChange}\n expanded={isFocused}\n onClear={onInputClear}\n onChange={onSelectedItemsChange as any}\n onKeyDown={onKeyDown}\n />\n <div className={withBaseName(\"separator\")} />\n <ToggleButtonGroup\n variant=\"secondary\"\n className={withBaseName(\"buttonGroup\")}\n data-testid=\"boolean-selector\"\n selectedIndex={booleanOperator === \"and\" ? 0 : 1}\n onChange={onChange}\n >\n <ToggleButton value=\"and\">And</ToggleButton>\n <ToggleButton value=\"or\">Or</ToggleButton>\n </ToggleButtonGroup>\n </div>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","QueryInputBody","useMemo","selectedItems","jsxs","jsx","FilterIcon","TokenizedInput","ToggleButtonGroup","ToggleButton"],"mappings":"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"}
1
+ {"version":3,"file":"QueryInputBody.js","sources":["../src/query-input/internal/QueryInputBody.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { FilterIcon } from \"@salt-ds/icons\";\nimport {\n ChangeEventHandler,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n Ref,\n SyntheticEvent,\n useMemo,\n} from \"react\";\n\nimport {\n ToggleButton,\n ToggleButtonGroup,\n ToggleButtonGroupChangeEventHandler,\n} from \"../../toggle-button\";\nimport {\n ChangeHandler,\n StringToItem,\n TokenizedInput,\n} from \"../../tokenized-input\";\nimport { QueryInputItem } from \"../queryInputTypes\";\nimport { BooleanOperator } from \"../useQueryInput\";\n\nconst withBaseName = makePrefixer(\"saltQueryInputBody\");\n\nexport interface QueryInputBodyProps {\n inputRef: Ref<HTMLInputElement>;\n disabled?: boolean;\n showCategory?: boolean;\n selectedItems: QueryInputItem[];\n onBlur: FocusEventHandler<HTMLInputElement>;\n onFocus: FocusEventHandler<HTMLInputElement>;\n onInputFocus: FocusEventHandler<HTMLInputElement>;\n onInputBlur: FocusEventHandler<HTMLInputElement>;\n onInputClick: (event: SyntheticEvent) => void;\n onInputClear: () => void;\n inputValue?: string;\n onInputChange: ChangeEventHandler<HTMLInputElement>;\n isFocused?: boolean;\n onSelectedItemsChange: ChangeHandler<QueryInputItem>;\n onKeyDown: KeyboardEventHandler<HTMLInputElement | HTMLButtonElement>;\n booleanOperator: BooleanOperator;\n onBooleanOperatorChange: (newBooleanOperator: BooleanOperator) => void;\n}\n\nexport const QueryInputBody = forwardRef<HTMLDivElement, QueryInputBodyProps>(\n function QueryInputBody(props, ref) {\n const {\n inputRef,\n disabled,\n selectedItems,\n onInputFocus,\n onInputBlur,\n showCategory,\n inputValue,\n onInputChange,\n isFocused,\n onInputClear,\n onSelectedItemsChange,\n onKeyDown,\n onInputClick,\n booleanOperator,\n onBooleanOperatorChange,\n } = props;\n\n const itemToString = useMemo(() => {\n if (showCategory) {\n return (item: QueryInputItem) => [item.category, item.value].join(\": \");\n }\n return (item: QueryInputItem) => item.value;\n }, [showCategory]);\n\n const stringToItem: StringToItem<QueryInputItem> = (\n selectedItems,\n value\n ) => {\n return {\n category: null,\n value,\n };\n };\n\n const onChange: ToggleButtonGroupChangeEventHandler = (event, index) => {\n const newBooleanOperator = index === 0 ? \"and\" : \"or\";\n onBooleanOperatorChange(newBooleanOperator);\n };\n\n return (\n <div ref={ref} className={withBaseName()}>\n <FilterIcon />\n <TokenizedInput\n inputRef={inputRef}\n disabled={disabled}\n className={withBaseName(\"input\")}\n selectedItems={selectedItems}\n itemToString={itemToString as any}\n stringToItem={stringToItem as any}\n onInputFocus={onInputFocus}\n onInputBlur={onInputBlur}\n value={inputValue}\n onClick={onInputClick}\n onInputChange={onInputChange}\n expanded={isFocused}\n onClear={onInputClear}\n onChange={onSelectedItemsChange as any}\n onKeyDown={onKeyDown}\n />\n <div className={withBaseName(\"separator\")} />\n <ToggleButtonGroup\n variant=\"secondary\"\n className={withBaseName(\"buttonGroup\")}\n data-testid=\"boolean-selector\"\n selectedIndex={booleanOperator === \"and\" ? 0 : 1}\n onChange={onChange}\n >\n <ToggleButton value=\"and\">And</ToggleButton>\n <ToggleButton value=\"or\">Or</ToggleButton>\n </ToggleButtonGroup>\n </div>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","QueryInputBody","useMemo","selectedItems","jsxs","jsx","FilterIcon","TokenizedInput","ToggleButtonGroup","ToggleButton"],"mappings":"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"}
@@ -11,6 +11,7 @@ var List = require('../../list/List.js');
11
11
  var ListItemGroup = require('../../list/ListItemGroup.js');
12
12
  require('../../common-hooks/collectionProvider.js');
13
13
  require('../../common-hooks/keyUtils.js');
14
+ require('../../utils/useFloatingUI.js');
14
15
  require('../../responsive/useResizeObserver.js');
15
16
  require('../../list/VirtualizedList.js');
16
17
  require('../QueryInput.css.js');
@@ -1 +1 @@
1
- {"version":3,"file":"SearchList.js","sources":["../src/query-input/internal/SearchList.tsx"],"sourcesContent":["import { Dispatch, SetStateAction, useCallback } from \"react\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { List, ListItem, ListItemGroup } from \"../../list\";\n\nimport { SelectionChangeHandler } from \"../../common-hooks\";\n\nimport { QueryInputCategory, QueryInputItem } from \"../queryInputTypes\";\nimport \"../QueryInput.css\";\n\nconst withBaseName = makePrefixer(\"saltQueryInputSearchList\");\n\nexport interface SearchListProps {\n inputValue?: string;\n selectedItems?: QueryInputItem[];\n onChange: (items: QueryInputItem[]) => void;\n rootWidth: number;\n highlightedIndex?: number;\n visibleCategories: QueryInputCategory[];\n setHighlightedIndex: Dispatch<SetStateAction<number>>;\n}\n\nfunction itemToString(item: QueryInputItem) {\n return [item.category, item.value].join(\": \");\n}\n\nexport function SearchList(props: SearchListProps) {\n const {\n inputValue,\n selectedItems,\n onChange: onChangeProp,\n rootWidth,\n highlightedIndex,\n setHighlightedIndex,\n visibleCategories,\n } = props;\n\n const onChange: SelectionChangeHandler<QueryInputItem, \"multiple\"> =\n useCallback(\n (event, items) => {\n onChangeProp(items || []);\n },\n [onChangeProp]\n );\n\n return (\n <List\n checkable={false}\n data-testid=\"search-list\"\n highlightedIndex={highlightedIndex}\n itemTextHighlightPattern={inputValue}\n itemToString={itemToString}\n onHighlight={setHighlightedIndex}\n onSelectionChange={onChange}\n selectionStrategy=\"multiple\"\n selected={selectedItems}\n width={rootWidth}\n >\n {visibleCategories.map((inputCategory: QueryInputCategory) => {\n return (\n <ListItemGroup key={inputCategory.name} label={inputCategory.name}>\n {inputCategory.values.map((label) => (\n <ListItem key={label} label={label} />\n ))}\n </ListItemGroup>\n );\n })}\n <ListItem className={withBaseName(\"addKeyword\")}>\n {`Add keyword: \"${inputValue}\"`}\n </ListItem>\n </List>\n );\n}\n"],"names":["makePrefixer","useCallback","jsxs","List","jsx","ListItemGroup","ListItem"],"mappings":";;;;;;;;;;;;;;;;;AASA,MAAM,YAAA,GAAeA,kBAAa,0BAA0B,CAAA,CAAA;AAY5D,SAAS,aAAa,IAAsB,EAAA;AAC1C,EAAA,OAAO,CAAC,IAAK,CAAA,QAAA,EAAU,KAAK,KAAK,CAAA,CAAE,KAAK,IAAI,CAAA,CAAA;AAC9C,CAAA;AAEO,SAAS,WAAW,KAAwB,EAAA;AACjD,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAU,EAAA,YAAA;AAAA,IACV,SAAA;AAAA,IACA,gBAAA;AAAA,IACA,mBAAA;AAAA,IACA,iBAAA;AAAA,GACE,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,QACJ,GAAAC,iBAAA;AAAA,IACE,CAAC,OAAO,KAAU,KAAA;AAChB,MAAa,YAAA,CAAA,KAAA,IAAS,EAAE,CAAA,CAAA;AAAA,KAC1B;AAAA,IACA,CAAC,YAAY,CAAA;AAAA,GACf,CAAA;AAEF,EAAA,uBACGC,eAAA,CAAAC,SAAA,EAAA;AAAA,IACC,SAAW,EAAA,KAAA;AAAA,IACX,aAAY,EAAA,aAAA;AAAA,IACZ,gBAAA;AAAA,IACA,wBAA0B,EAAA,UAAA;AAAA,IAC1B,YAAA;AAAA,IACA,WAAa,EAAA,mBAAA;AAAA,IACb,iBAAmB,EAAA,QAAA;AAAA,IACnB,iBAAkB,EAAA,UAAA;AAAA,IAClB,QAAU,EAAA,aAAA;AAAA,IACV,KAAO,EAAA,SAAA;AAAA,IAEN,QAAA,EAAA;AAAA,MAAkB,iBAAA,CAAA,GAAA,CAAI,CAAC,aAAsC,KAAA;AAC5D,QAAA,uBACGC,cAAA,CAAAC,2BAAA,EAAA;AAAA,UAAuC,OAAO,aAAc,CAAA,IAAA;AAAA,UAC1D,QAAc,EAAA,aAAA,CAAA,MAAA,CAAO,GAAI,CAAA,CAAC,0BACxBD,cAAA,CAAAE,iBAAA,EAAA;AAAA,YAAqB,KAAA;AAAA,WAAA,EAAP,KAAqB,CACrC,CAAA;AAAA,SAAA,EAHiB,cAAc,IAIlC,CAAA,CAAA;AAAA,OAEH,CAAA;AAAA,sBACAF,cAAA,CAAAE,iBAAA,EAAA;AAAA,QAAS,SAAA,EAAW,aAAa,YAAY,CAAA;AAAA,QAC3C,QAAiB,EAAA,CAAA,cAAA,EAAA,UAAA,CAAA,CAAA,CAAA;AAAA,OACpB,CAAA;AAAA,KAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"SearchList.js","sources":["../src/query-input/internal/SearchList.tsx"],"sourcesContent":["import { Dispatch, SetStateAction, useCallback } from \"react\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { List, ListItem, ListItemGroup } from \"../../list\";\n\nimport { SelectionChangeHandler } from \"../../common-hooks\";\n\nimport { QueryInputCategory, QueryInputItem } from \"../queryInputTypes\";\nimport \"../QueryInput.css\";\n\nconst withBaseName = makePrefixer(\"saltQueryInputSearchList\");\n\nexport interface SearchListProps {\n inputValue?: string;\n selectedItems?: QueryInputItem[];\n onChange: (items: QueryInputItem[]) => void;\n rootWidth: number;\n highlightedIndex?: number;\n visibleCategories: QueryInputCategory[];\n setHighlightedIndex: Dispatch<SetStateAction<number>>;\n}\n\nfunction itemToString(item: QueryInputItem) {\n return [item.category, item.value].join(\": \");\n}\n\nexport function SearchList(props: SearchListProps) {\n const {\n inputValue,\n selectedItems,\n onChange: onChangeProp,\n rootWidth,\n highlightedIndex,\n setHighlightedIndex,\n visibleCategories,\n } = props;\n\n const onChange: SelectionChangeHandler<QueryInputItem, \"multiple\"> =\n useCallback(\n (event, items) => {\n onChangeProp(items || []);\n },\n [onChangeProp]\n );\n\n return (\n <List\n checkable={false}\n data-testid=\"search-list\"\n highlightedIndex={highlightedIndex}\n itemTextHighlightPattern={inputValue}\n itemToString={itemToString}\n onHighlight={setHighlightedIndex}\n onSelectionChange={onChange}\n selectionStrategy=\"multiple\"\n selected={selectedItems}\n width={rootWidth}\n >\n {visibleCategories.map((inputCategory: QueryInputCategory) => {\n return (\n <ListItemGroup key={inputCategory.name} label={inputCategory.name}>\n {inputCategory.values.map((label) => (\n <ListItem key={label} label={label} />\n ))}\n </ListItemGroup>\n );\n })}\n <ListItem className={withBaseName(\"addKeyword\")}>\n {`Add keyword: \"${inputValue}\"`}\n </ListItem>\n </List>\n );\n}\n"],"names":["makePrefixer","useCallback","jsxs","List","jsx","ListItemGroup","ListItem"],"mappings":";;;;;;;;;;;;;;;;;;AASA,MAAM,YAAA,GAAeA,kBAAa,0BAA0B,CAAA,CAAA;AAY5D,SAAS,aAAa,IAAsB,EAAA;AAC1C,EAAA,OAAO,CAAC,IAAK,CAAA,QAAA,EAAU,KAAK,KAAK,CAAA,CAAE,KAAK,IAAI,CAAA,CAAA;AAC9C,CAAA;AAEO,SAAS,WAAW,KAAwB,EAAA;AACjD,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAU,EAAA,YAAA;AAAA,IACV,SAAA;AAAA,IACA,gBAAA;AAAA,IACA,mBAAA;AAAA,IACA,iBAAA;AAAA,GACE,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,QACJ,GAAAC,iBAAA;AAAA,IACE,CAAC,OAAO,KAAU,KAAA;AAChB,MAAa,YAAA,CAAA,KAAA,IAAS,EAAE,CAAA,CAAA;AAAA,KAC1B;AAAA,IACA,CAAC,YAAY,CAAA;AAAA,GACf,CAAA;AAEF,EAAA,uBACGC,eAAA,CAAAC,SAAA,EAAA;AAAA,IACC,SAAW,EAAA,KAAA;AAAA,IACX,aAAY,EAAA,aAAA;AAAA,IACZ,gBAAA;AAAA,IACA,wBAA0B,EAAA,UAAA;AAAA,IAC1B,YAAA;AAAA,IACA,WAAa,EAAA,mBAAA;AAAA,IACb,iBAAmB,EAAA,QAAA;AAAA,IACnB,iBAAkB,EAAA,UAAA;AAAA,IAClB,QAAU,EAAA,aAAA;AAAA,IACV,KAAO,EAAA,SAAA;AAAA,IAEN,QAAA,EAAA;AAAA,MAAkB,iBAAA,CAAA,GAAA,CAAI,CAAC,aAAsC,KAAA;AAC5D,QAAA,uBACGC,cAAA,CAAAC,2BAAA,EAAA;AAAA,UAAuC,OAAO,aAAc,CAAA,IAAA;AAAA,UAC1D,QAAc,EAAA,aAAA,CAAA,MAAA,CAAO,GAAI,CAAA,CAAC,0BACxBD,cAAA,CAAAE,iBAAA,EAAA;AAAA,YAAqB,KAAA;AAAA,WAAA,EAAP,KAAqB,CACrC,CAAA;AAAA,SAAA,EAHiB,cAAc,IAIlC,CAAA,CAAA;AAAA,OAEH,CAAA;AAAA,sBACAF,cAAA,CAAAE,iBAAA,EAAA;AAAA,QAAS,SAAA,EAAW,aAAa,YAAY,CAAA;AAAA,QAC3C,QAAiB,EAAA,CAAA,cAAA,EAAA,UAAA,CAAA,CAAA,CAAA;AAAA,OACpB,CAAA;AAAA,KAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -11,6 +11,7 @@ var List = require('../../list/List.js');
11
11
  require('react');
12
12
  require('../../common-hooks/collectionProvider.js');
13
13
  require('../../common-hooks/keyUtils.js');
14
+ require('../../utils/useFloatingUI.js');
14
15
  require('../../responsive/useResizeObserver.js');
15
16
  require('../../list/VirtualizedList.js');
16
17
 
@@ -1 +1 @@
1
- {"version":3,"file":"ValueList.js","sources":["../src/query-input/internal/ValueList.tsx"],"sourcesContent":["import { QueryInputCategory } from \"../queryInputTypes\";\nimport { Dispatch, ReactElement, SetStateAction } from \"react\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { ChevronLeftIcon } from \"@salt-ds/icons\";\nimport { List, ListItem } from \"../../list\";\nimport { SelectHandler } from \"../../common-hooks\";\n\nconst withBaseName = makePrefixer(\"saltQueryInputValueList\");\n\nexport interface ValueListProps {\n category: QueryInputCategory | null;\n rootWidth: number;\n onBack: () => void;\n selectedValues: string[];\n onValueToggle: (category: QueryInputCategory, value: string) => void;\n highlightedValueIndex?: number;\n setHighlightedValueIndex: Dispatch<SetStateAction<number>>;\n}\n\nexport function ValueList(props: ValueListProps) {\n const {\n category,\n rootWidth,\n onBack,\n selectedValues,\n onValueToggle,\n highlightedValueIndex,\n setHighlightedValueIndex,\n } = props;\n\n const handleSelect: SelectHandler = (_, value: string) => {\n onValueToggle(category!, value);\n };\n\n const items: ReactElement[] = category\n ? category.values.map((value) => (\n <ListItem key={value} item={value}>\n {value}\n </ListItem>\n ))\n : [];\n\n return (\n <div className={withBaseName()} tabIndex={0} data-testid=\"value-list\">\n <List\n borderless={true}\n checkable={false}\n highlightedIndex={highlightedValueIndex}\n onHighlight={setHighlightedValueIndex}\n onSelect={handleSelect}\n selectionStrategy=\"multiple\"\n selected={selectedValues}\n width={rootWidth}\n >\n <ListItem\n className={withBaseName(\"back\")}\n onClick={onBack}\n selectable={false}\n >\n <ChevronLeftIcon />\n <div className={withBaseName(\"category\")}>\n {category ? category.name : \"\"}\n </div>\n </ListItem>\n {items}\n </List>\n </div>\n );\n}\n"],"names":["makePrefixer","jsx","ListItem","jsxs","List","ChevronLeftIcon"],"mappings":";;;;;;;;;;;;;;;;AAOA,MAAM,YAAA,GAAeA,kBAAa,yBAAyB,CAAA,CAAA;AAYpD,SAAS,UAAU,KAAuB,EAAA;AAC/C,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,aAAA;AAAA,IACA,qBAAA;AAAA,IACA,wBAAA;AAAA,GACE,GAAA,KAAA,CAAA;AAEJ,EAAM,MAAA,YAAA,GAA8B,CAAC,CAAA,EAAG,KAAkB,KAAA;AACxD,IAAA,aAAA,CAAc,UAAW,KAAK,CAAA,CAAA;AAAA,GAChC,CAAA;AAEA,EAAA,MAAM,QAAwB,QAC1B,GAAA,QAAA,CAAS,OAAO,GAAI,CAAA,CAAC,0BAClBC,cAAA,CAAAC,iBAAA,EAAA;AAAA,IAAqB,IAAM,EAAA,KAAA;AAAA,IACzB,QAAA,EAAA,KAAA;AAAA,GADY,EAAA,KAEf,CACD,CAAA,GACD,EAAC,CAAA;AAEL,EAAA,uBACGD,cAAA,CAAA,KAAA,EAAA;AAAA,IAAI,WAAW,YAAa,EAAA;AAAA,IAAG,QAAU,EAAA,CAAA;AAAA,IAAG,aAAY,EAAA,YAAA;AAAA,IACvD,QAAC,kBAAAE,eAAA,CAAAC,SAAA,EAAA;AAAA,MACC,UAAY,EAAA,IAAA;AAAA,MACZ,SAAW,EAAA,KAAA;AAAA,MACX,gBAAkB,EAAA,qBAAA;AAAA,MAClB,WAAa,EAAA,wBAAA;AAAA,MACb,QAAU,EAAA,YAAA;AAAA,MACV,iBAAkB,EAAA,UAAA;AAAA,MAClB,QAAU,EAAA,cAAA;AAAA,MACV,KAAO,EAAA,SAAA;AAAA,MAEP,QAAA,EAAA;AAAA,wBAACD,eAAA,CAAAD,iBAAA,EAAA;AAAA,UACC,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,UAC9B,OAAS,EAAA,MAAA;AAAA,UACT,UAAY,EAAA,KAAA;AAAA,UAEZ,QAAA,EAAA;AAAA,4BAAAD,cAAA,CAACI,qBAAgB,EAAA,EAAA,CAAA;AAAA,4BAChBJ,cAAA,CAAA,KAAA,EAAA;AAAA,cAAI,SAAA,EAAW,aAAa,UAAU,CAAA;AAAA,cACpC,QAAA,EAAA,QAAA,GAAW,SAAS,IAAO,GAAA,EAAA;AAAA,aAC9B,CAAA;AAAA,WAAA;AAAA,SACF,CAAA;AAAA,QACC,KAAA;AAAA,OAAA;AAAA,KACH,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"ValueList.js","sources":["../src/query-input/internal/ValueList.tsx"],"sourcesContent":["import { QueryInputCategory } from \"../queryInputTypes\";\nimport { Dispatch, ReactElement, SetStateAction } from \"react\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { ChevronLeftIcon } from \"@salt-ds/icons\";\nimport { List, ListItem } from \"../../list\";\nimport { SelectHandler } from \"../../common-hooks\";\n\nconst withBaseName = makePrefixer(\"saltQueryInputValueList\");\n\nexport interface ValueListProps {\n category: QueryInputCategory | null;\n rootWidth: number;\n onBack: () => void;\n selectedValues: string[];\n onValueToggle: (category: QueryInputCategory, value: string) => void;\n highlightedValueIndex?: number;\n setHighlightedValueIndex: Dispatch<SetStateAction<number>>;\n}\n\nexport function ValueList(props: ValueListProps) {\n const {\n category,\n rootWidth,\n onBack,\n selectedValues,\n onValueToggle,\n highlightedValueIndex,\n setHighlightedValueIndex,\n } = props;\n\n const handleSelect: SelectHandler = (_, value: string) => {\n onValueToggle(category!, value);\n };\n\n const items: ReactElement[] = category\n ? category.values.map((value) => (\n <ListItem key={value} item={value}>\n {value}\n </ListItem>\n ))\n : [];\n\n return (\n <div className={withBaseName()} tabIndex={0} data-testid=\"value-list\">\n <List\n borderless={true}\n checkable={false}\n highlightedIndex={highlightedValueIndex}\n onHighlight={setHighlightedValueIndex}\n onSelect={handleSelect}\n selectionStrategy=\"multiple\"\n selected={selectedValues}\n width={rootWidth}\n >\n <ListItem\n className={withBaseName(\"back\")}\n onClick={onBack}\n selectable={false}\n >\n <ChevronLeftIcon />\n <div className={withBaseName(\"category\")}>\n {category ? category.name : \"\"}\n </div>\n </ListItem>\n {items}\n </List>\n </div>\n );\n}\n"],"names":["makePrefixer","jsx","ListItem","jsxs","List","ChevronLeftIcon"],"mappings":";;;;;;;;;;;;;;;;;AAOA,MAAM,YAAA,GAAeA,kBAAa,yBAAyB,CAAA,CAAA;AAYpD,SAAS,UAAU,KAAuB,EAAA;AAC/C,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,aAAA;AAAA,IACA,qBAAA;AAAA,IACA,wBAAA;AAAA,GACE,GAAA,KAAA,CAAA;AAEJ,EAAM,MAAA,YAAA,GAA8B,CAAC,CAAA,EAAG,KAAkB,KAAA;AACxD,IAAA,aAAA,CAAc,UAAW,KAAK,CAAA,CAAA;AAAA,GAChC,CAAA;AAEA,EAAA,MAAM,QAAwB,QAC1B,GAAA,QAAA,CAAS,OAAO,GAAI,CAAA,CAAC,0BAClBC,cAAA,CAAAC,iBAAA,EAAA;AAAA,IAAqB,IAAM,EAAA,KAAA;AAAA,IACzB,QAAA,EAAA,KAAA;AAAA,GADY,EAAA,KAEf,CACD,CAAA,GACD,EAAC,CAAA;AAEL,EAAA,uBACGD,cAAA,CAAA,KAAA,EAAA;AAAA,IAAI,WAAW,YAAa,EAAA;AAAA,IAAG,QAAU,EAAA,CAAA;AAAA,IAAG,aAAY,EAAA,YAAA;AAAA,IACvD,QAAC,kBAAAE,eAAA,CAAAC,SAAA,EAAA;AAAA,MACC,UAAY,EAAA,IAAA;AAAA,MACZ,SAAW,EAAA,KAAA;AAAA,MACX,gBAAkB,EAAA,qBAAA;AAAA,MAClB,WAAa,EAAA,wBAAA;AAAA,MACb,QAAU,EAAA,YAAA;AAAA,MACV,iBAAkB,EAAA,UAAA;AAAA,MAClB,QAAU,EAAA,cAAA;AAAA,MACV,KAAO,EAAA,SAAA;AAAA,MAEP,QAAA,EAAA;AAAA,wBAACD,eAAA,CAAAD,iBAAA,EAAA;AAAA,UACC,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,UAC9B,OAAS,EAAA,MAAA;AAAA,UACT,UAAY,EAAA,KAAA;AAAA,UAEZ,QAAA,EAAA;AAAA,4BAAAD,cAAA,CAACI,qBAAgB,EAAA,EAAA,CAAA;AAAA,4BAChBJ,cAAA,CAAA,KAAA,EAAA;AAAA,cAAI,SAAA,EAAW,aAAa,UAAU,CAAA;AAAA,cACpC,QAAA,EAAA,QAAA,GAAW,SAAS,IAAO,GAAA,EAAA;AAAA,aAC9B,CAAA;AAAA,WAAA;AAAA,SACF,CAAA;AAAA,QACC,KAAA;AAAA,OAAA;AAAA,KACH,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -8,10 +8,9 @@ var React = require('react');
8
8
  var CategoryList = require('./CategoryList.js');
9
9
  var SearchList = require('./SearchList.js');
10
10
  var ValueList = require('./ValueList.js');
11
+ var Portal = require('../../portal/Portal.js');
11
12
  var WindowContext = require('../../window/WindowContext.js');
12
13
  require('../../window/ElectronWindow.js');
13
- var useFloatingUI = require('../../popper/useFloatingUI.js');
14
- var Portal = require('../../portal/Portal.js');
15
14
 
16
15
  const withBaseName = core.makePrefixer("saltQueryInputValueSelector");
17
16
  function ValueSelector(props) {
@@ -76,7 +75,7 @@ function ValueSelector(props) {
76
75
  });
77
76
  };
78
77
  const Window = WindowContext.useWindow();
79
- const { reference, floating, x, y, strategy } = useFloatingUI.useFloatingUI({
78
+ const { reference, floating, x, y, strategy } = core.useFloatingUI({
80
79
  placement: "bottom"
81
80
  });
82
81
  const handleRef = core.useForkRef(floating, popperRef);
@@ -1 +1 @@
1
- {"version":3,"file":"ValueSelector.js","sources":["../src/query-input/internal/ValueSelector.tsx"],"sourcesContent":["import {\n makePrefixer,\n useForkRef,\n useIsomorphicLayoutEffect,\n} from \"@salt-ds/core\";\nimport { Dispatch, Ref, SetStateAction, useMemo } from \"react\";\nimport { QueryInputCategory, QueryInputItem } from \"../queryInputTypes\";\nimport { CategoryList } from \"./CategoryList\";\nimport { SearchList } from \"./SearchList\";\nimport { ValueList } from \"./ValueList\";\nimport { useWindow } from \"../../window\";\nimport { useFloatingUI } from \"../../popper\";\nimport { Portal } from \"../../portal\";\n\nconst withBaseName = makePrefixer(\"saltQueryInputValueSelector\");\n\nexport interface ValueSelectorProps {\n isOpen: boolean;\n anchorElement: HTMLElement | null;\n popperRef: Ref<HTMLDivElement>;\n\n inputValue?: string;\n categories: QueryInputCategory[];\n selectedCategory: QueryInputCategory | null;\n onSelectedCategoryChange: (category: QueryInputCategory | null) => void;\n\n width: number;\n selectedItems: QueryInputItem[];\n onValueToggle: (category: QueryInputCategory, value: string) => void;\n onSearchListChange: (items: QueryInputItem[]) => void;\n\n highlightedIndex?: number;\n visibleCategories: QueryInputCategory[];\n\n highlightedCategoryIndex?: number;\n highlightedValueIndex?: number;\n setHighlightedIndex: Dispatch<SetStateAction<number>>;\n setHighlightedCategoryIndex: Dispatch<SetStateAction<number>>;\n setHighlightedValueIndex: Dispatch<SetStateAction<number>>;\n}\n\nexport function ValueSelector(props: ValueSelectorProps) {\n const {\n isOpen,\n inputValue,\n anchorElement,\n popperRef,\n categories,\n selectedCategory,\n onSelectedCategoryChange,\n width,\n selectedItems,\n onValueToggle,\n highlightedIndex,\n visibleCategories,\n highlightedCategoryIndex,\n highlightedValueIndex,\n onSearchListChange,\n setHighlightedValueIndex,\n setHighlightedCategoryIndex,\n setHighlightedIndex,\n } = props;\n\n const selectedCategoryValues = useMemo(() => {\n if (!selectedCategory) {\n return [];\n }\n return selectedItems\n .filter((item) => item.category === selectedCategory.name)\n .map(({ value }) => value);\n }, [selectedCategory, selectedItems]);\n\n const onBackToCategories = () => {\n onSelectedCategoryChange(null);\n };\n\n const renderContent = () => {\n if (inputValue) {\n return (\n <SearchList\n inputValue={inputValue}\n selectedItems={selectedItems}\n onChange={onSearchListChange}\n rootWidth={width}\n highlightedIndex={highlightedIndex}\n visibleCategories={visibleCategories}\n setHighlightedIndex={setHighlightedIndex}\n />\n );\n }\n\n if (!selectedCategory) {\n return (\n <CategoryList\n categories={categories}\n rootWidth={width}\n onCategorySelect={onSelectedCategoryChange}\n highlightedCategoryIndex={highlightedCategoryIndex}\n setHighlightedCategoryIndex={setHighlightedCategoryIndex}\n />\n );\n }\n\n return (\n <ValueList\n category={selectedCategory}\n rootWidth={width}\n onBack={onBackToCategories}\n selectedValues={selectedCategoryValues}\n onValueToggle={onValueToggle}\n highlightedValueIndex={highlightedValueIndex}\n setHighlightedValueIndex={setHighlightedValueIndex}\n />\n );\n };\n\n const Window = useWindow();\n const { reference, floating, x, y, strategy } = useFloatingUI({\n placement: \"bottom\",\n });\n const handleRef = useForkRef<HTMLDivElement>(floating, popperRef);\n useIsomorphicLayoutEffect(() => {\n if (anchorElement) {\n reference(anchorElement);\n }\n }, [reference, anchorElement]);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <Portal>\n <Window\n style={{\n top: y ?? \"\",\n left: x ?? \"\",\n position: strategy,\n }}\n ref={handleRef}\n >\n <div className={withBaseName(\"content\")}>{renderContent()}</div>\n </Window>\n </Portal>\n );\n}\n"],"names":["makePrefixer","useMemo","jsx","SearchList","CategoryList","ValueList","useWindow","useFloatingUI","useForkRef","useIsomorphicLayoutEffect","Portal"],"mappings":"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"}
1
+ {"version":3,"file":"ValueSelector.js","sources":["../src/query-input/internal/ValueSelector.tsx"],"sourcesContent":["import {\n makePrefixer,\n useFloatingUI,\n useForkRef,\n useIsomorphicLayoutEffect,\n} from \"@salt-ds/core\";\nimport { Dispatch, Ref, SetStateAction, useMemo } from \"react\";\nimport { QueryInputCategory, QueryInputItem } from \"../queryInputTypes\";\nimport { CategoryList } from \"./CategoryList\";\nimport { SearchList } from \"./SearchList\";\nimport { ValueList } from \"./ValueList\";\nimport { Portal } from \"../../portal\";\nimport { useWindow } from \"../../window\";\n\nconst withBaseName = makePrefixer(\"saltQueryInputValueSelector\");\n\nexport interface ValueSelectorProps {\n isOpen: boolean;\n anchorElement: HTMLElement | null;\n popperRef: Ref<HTMLDivElement>;\n\n inputValue?: string;\n categories: QueryInputCategory[];\n selectedCategory: QueryInputCategory | null;\n onSelectedCategoryChange: (category: QueryInputCategory | null) => void;\n\n width: number;\n selectedItems: QueryInputItem[];\n onValueToggle: (category: QueryInputCategory, value: string) => void;\n onSearchListChange: (items: QueryInputItem[]) => void;\n\n highlightedIndex?: number;\n visibleCategories: QueryInputCategory[];\n\n highlightedCategoryIndex?: number;\n highlightedValueIndex?: number;\n setHighlightedIndex: Dispatch<SetStateAction<number>>;\n setHighlightedCategoryIndex: Dispatch<SetStateAction<number>>;\n setHighlightedValueIndex: Dispatch<SetStateAction<number>>;\n}\n\nexport function ValueSelector(props: ValueSelectorProps) {\n const {\n isOpen,\n inputValue,\n anchorElement,\n popperRef,\n categories,\n selectedCategory,\n onSelectedCategoryChange,\n width,\n selectedItems,\n onValueToggle,\n highlightedIndex,\n visibleCategories,\n highlightedCategoryIndex,\n highlightedValueIndex,\n onSearchListChange,\n setHighlightedValueIndex,\n setHighlightedCategoryIndex,\n setHighlightedIndex,\n } = props;\n\n const selectedCategoryValues = useMemo(() => {\n if (!selectedCategory) {\n return [];\n }\n return selectedItems\n .filter((item) => item.category === selectedCategory.name)\n .map(({ value }) => value);\n }, [selectedCategory, selectedItems]);\n\n const onBackToCategories = () => {\n onSelectedCategoryChange(null);\n };\n\n const renderContent = () => {\n if (inputValue) {\n return (\n <SearchList\n inputValue={inputValue}\n selectedItems={selectedItems}\n onChange={onSearchListChange}\n rootWidth={width}\n highlightedIndex={highlightedIndex}\n visibleCategories={visibleCategories}\n setHighlightedIndex={setHighlightedIndex}\n />\n );\n }\n\n if (!selectedCategory) {\n return (\n <CategoryList\n categories={categories}\n rootWidth={width}\n onCategorySelect={onSelectedCategoryChange}\n highlightedCategoryIndex={highlightedCategoryIndex}\n setHighlightedCategoryIndex={setHighlightedCategoryIndex}\n />\n );\n }\n\n return (\n <ValueList\n category={selectedCategory}\n rootWidth={width}\n onBack={onBackToCategories}\n selectedValues={selectedCategoryValues}\n onValueToggle={onValueToggle}\n highlightedValueIndex={highlightedValueIndex}\n setHighlightedValueIndex={setHighlightedValueIndex}\n />\n );\n };\n\n const Window = useWindow();\n const { reference, floating, x, y, strategy } = useFloatingUI({\n placement: \"bottom\",\n });\n const handleRef = useForkRef<HTMLDivElement>(floating, popperRef);\n useIsomorphicLayoutEffect(() => {\n if (anchorElement) {\n reference(anchorElement);\n }\n }, [reference, anchorElement]);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <Portal>\n <Window\n style={{\n top: y ?? \"\",\n left: x ?? \"\",\n position: strategy,\n }}\n ref={handleRef}\n >\n <div className={withBaseName(\"content\")}>{renderContent()}</div>\n </Window>\n </Portal>\n );\n}\n"],"names":["makePrefixer","useMemo","jsx","SearchList","CategoryList","ValueList","useWindow","useFloatingUI","useForkRef","useIsomorphicLayoutEffect","Portal"],"mappings":"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"}
@@ -7,6 +7,7 @@ var React = require('react');
7
7
  var usePopperStatus = require('./internal/usePopperStatus.js');
8
8
  require('react/jsx-runtime');
9
9
  require('../responsive/useResizeObserver.js');
10
+ require('../utils/useFloatingUI.js');
10
11
  var useWidth = require('../responsive/useWidth.js');
11
12
 
12
13
  function useQueryInput(props, forwardedRef) {
@@ -1 +1 @@
1
- {"version":3,"file":"useQueryInput.js","sources":["../src/query-input/useQueryInput.ts"],"sourcesContent":["import { useControlled, useForkRef } from \"@salt-ds/core\";\nimport {\n ChangeEventHandler,\n FocusEventHandler,\n ForwardedRef,\n KeyboardEventHandler,\n Ref,\n RefObject,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { QueryInputBodyProps } from \"./internal/QueryInputBody\";\nimport { usePopperStatus } from \"./internal/usePopperStatus\";\nimport { ValueSelectorProps } from \"./internal/ValueSelector\";\nimport { QueryInputProps } from \"./QueryInput\";\nimport { QueryInputCategory, QueryInputItem } from \"./queryInputTypes\";\nimport { useWidth } from \"../responsive\";\n\nexport type BooleanOperator = \"or\" | \"and\";\n\nexport interface UseQueryInputResult {\n queryInputProps: {\n onFocus: FocusEventHandler<HTMLDivElement>;\n onBlur: FocusEventHandler<HTMLDivElement>;\n };\n queryInputBodyRef: Ref<HTMLDivElement>;\n queryInputBodyProps: QueryInputBodyProps;\n valueSelectorProps: ValueSelectorProps;\n}\n\nexport function useQueryInput(\n props: QueryInputProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n): UseQueryInputResult {\n const bodyRef = useRef<HTMLDivElement>(null);\n const popperRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [widthBodyRef, bodyWidth] = useWidth<HTMLDivElement>(true);\n\n const forkedRef1 = useForkRef<HTMLDivElement>(\n forwardedRef,\n bodyRef\n ) as RefObject<HTMLDivElement>;\n const queryInputBodyRef = useForkRef<HTMLDivElement>(\n forkedRef1,\n widthBodyRef\n );\n\n const [selectedItems, setSelectedItems] = useControlled({\n controlled: props.selectedItems,\n default: props.defaultSelectedItems || [],\n name: \"QueryInput\",\n state: \"selectedItems\",\n });\n\n const [booleanOperator, setBooleanOperator] = useControlled({\n controlled: props.booleanOperator,\n default: props.defaultBooleanOperator || \"and\",\n name: \"QueryInput\",\n state: \"booleanOperator\",\n });\n\n const popperStatus = usePopperStatus({\n initialOpen: false,\n autoClose: props.autoClose,\n });\n\n const [isFocused, setIsFocused] = useState<boolean>(false);\n const [highlightedIndex, setHighlightedIndex] = useState(0);\n const [highlightedCategoryIndex, setHighlightedCategoryIndex] = useState(0);\n const [highlightedValueIndex, setHighlightedValueIndex] = useState(0);\n const [selectedCategory, setSelectedCategory] =\n useState<QueryInputCategory | null>(null);\n const searchListIndexPositions = useRef<Array<QueryInputCategory | string>>(\n []\n );\n\n const onInputFocus: FocusEventHandler<HTMLInputElement> = (event) => {\n popperStatus.onFocus(event);\n setIsFocused(true);\n };\n\n const onInputBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n if (!inputRef.current) {\n return;\n }\n const relatedTarget = event.relatedTarget as Node | null;\n const isBodyFocused = bodyRef.current === relatedTarget;\n if (isBodyFocused) {\n inputRef.current.focus();\n return;\n }\n const isFocusWithinBody =\n bodyRef.current && bodyRef.current.contains(relatedTarget);\n if (isFocusWithinBody) {\n return;\n }\n const isFocusWithinPopper =\n popperRef.current && popperRef.current.contains(relatedTarget);\n if (isFocusWithinPopper) {\n inputRef.current.focus();\n return;\n }\n setIsFocused(false);\n popperStatus.onBlur(event);\n };\n\n const onFocus: FocusEventHandler<HTMLDivElement> = (event) => {\n setIsFocused(true);\n popperStatus.onFocus(event);\n };\n\n const onBlur: FocusEventHandler<HTMLDivElement> = (event) => {\n let relatedTarget = event.relatedTarget as Node | null;\n const isBodyFocused = bodyRef.current === relatedTarget;\n if (isBodyFocused) {\n return;\n }\n const isFocusWithinBody =\n bodyRef.current && bodyRef.current.contains(relatedTarget);\n if (isFocusWithinBody) {\n return;\n }\n const isFocusWithinPopper =\n popperRef.current && popperRef.current.contains(relatedTarget);\n if (isFocusWithinPopper) {\n return;\n }\n setIsFocused(false);\n popperStatus.onBlur(event);\n };\n\n const onSelectedItemsChange = (newItems: QueryInputItem[] | undefined) => {\n const newItem =\n newItems &&\n newItems.find(\n (item) => item.category == null && item.value === inputValue\n );\n if (newItem) {\n setInputValue(\"\");\n }\n setSelectedItems(newItems || []);\n if (props.onChange) {\n props.onChange(newItems || []);\n }\n popperStatus.onChange();\n };\n\n const onBooleanOperatorChange = (operator: BooleanOperator) => {\n setBooleanOperator(operator);\n if (props.onBooleanOperatorChange) {\n props.onBooleanOperatorChange(operator);\n }\n };\n\n const onSelectedCategoryChange = (category: QueryInputCategory | null) => {\n if (inputRef.current) {\n inputRef.current.focus();\n }\n setSelectedCategory(category);\n };\n\n const [inputValue, setInputValue] = useState<string>(\"\");\n\n const searchListItems = useMemo(() => {\n const [searchListItems, indexPositions] = filterCategories(\n props.categories,\n inputValue\n );\n searchListIndexPositions.current = indexPositions;\n return searchListItems;\n }, [props.categories, inputValue]);\n\n const onInputChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n const newInputValue = event.target.value;\n setInputValue(newInputValue);\n // If we have search results, the first index position will be a header\n setHighlightedIndex(searchListIndexPositions.current.length === 0 ? 0 : 1);\n };\n\n const searchListItemCount = useMemo(() => {\n return searchListItems.reduce(\n (acc, category) => acc + category.values.length,\n 0\n );\n }, [searchListItems]);\n\n const onInputClear = () => {\n onSelectedItemsChange([]);\n };\n\n const onInputClick = () => {\n popperStatus.onClick();\n };\n\n const newItemFromSelected = (): QueryInputItem | undefined => {\n const i = highlightedIndex;\n for (const category of searchListItems) {\n if (i < category.values.length) {\n const value = category.values[i];\n return {\n category: category.name,\n value,\n };\n }\n }\n };\n\n const { displayedItemCount = 10 } = props;\n\n const onSearchListKeyDown = (key: string) => {\n switch (key) {\n case \"Home\":\n setHighlightedIndex(0);\n return;\n case \"End\":\n setHighlightedIndex(searchListItemCount);\n return;\n case \"ArrowUp\":\n setHighlightedIndex((i) =>\n prevSearchItemIndex(i, searchListIndexPositions.current)\n );\n return;\n case \"ArrowDown\":\n // setHighlightedIndex((i) => Math.min(searchListItemCount, i + 1));\n setHighlightedIndex((i) =>\n nextSearchItemIndex(i, searchListIndexPositions.current)\n );\n return;\n case \"PageDown\":\n setHighlightedIndex((i) =>\n Math.min(searchListItemCount, i + displayedItemCount)\n );\n return;\n case \"PageUp\":\n setHighlightedIndex((i) => Math.max(0, i - displayedItemCount));\n return;\n case \"Enter\":\n if (highlightedIndex === searchListItemCount) {\n const newItems = [\n ...selectedItems,\n { category: null, value: inputValue },\n ];\n onSelectedItemsChange(newItems);\n } else {\n if (highlightedIndex >= 0 && highlightedIndex < searchListItemCount) {\n const newItem = newItemFromSelected();\n if (newItem) {\n const newItems = [...selectedItems, newItem];\n onSelectedItemsChange(newItems);\n }\n }\n setInputValue(\"\");\n }\n return;\n default:\n return;\n }\n };\n\n const onCategoryListKeyDown = (key: string) => {\n switch (key) {\n case \"Home\":\n setHighlightedCategoryIndex(0);\n return;\n case \"End\":\n setHighlightedCategoryIndex(props.categories.length - 1);\n return;\n case \"ArrowUp\":\n setHighlightedCategoryIndex((i) => Math.max(0, i - 1));\n return;\n case \"ArrowDown\":\n setHighlightedCategoryIndex((i) =>\n Math.min(props.categories.length - 1, i + 1)\n );\n return;\n case \"PageUp\":\n setHighlightedCategoryIndex((i) => Math.max(0, i - displayedItemCount));\n return;\n case \"PageDown\":\n setHighlightedCategoryIndex((i) =>\n Math.min(props.categories.length - 1, i + displayedItemCount)\n );\n return;\n case \"Enter\":\n if (\n highlightedCategoryIndex >= 0 &&\n highlightedCategoryIndex < props.categories.length\n ) {\n const category = props.categories[highlightedCategoryIndex];\n setSelectedCategory(category);\n }\n return;\n case \"ArrowRight\":\n if (\n highlightedCategoryIndex >= 0 &&\n highlightedCategoryIndex < props.categories.length\n ) {\n const category = props.categories[highlightedCategoryIndex];\n setSelectedCategory(category);\n }\n return;\n default:\n return;\n }\n };\n\n const onValueListKeyDown = (key: string) => {\n switch (key) {\n case \"Home\":\n setHighlightedValueIndex(0);\n return;\n case \"End\":\n setHighlightedValueIndex(selectedCategory!.values.length);\n return;\n case \"ArrowUp\":\n setHighlightedValueIndex((i) => Math.max(0, i - 1));\n return;\n case \"ArrowDown\":\n setHighlightedValueIndex((i) =>\n Math.min(selectedCategory!.values.length, i + 1)\n );\n return;\n case \"PageUp\":\n setHighlightedValueIndex((i) => Math.max(0, i - displayedItemCount));\n return;\n case \"PageDown\":\n setHighlightedValueIndex((i) =>\n Math.min(selectedCategory!.values.length, i + displayedItemCount)\n );\n return;\n case \"Enter\":\n if (highlightedValueIndex === 0) {\n setSelectedCategory(null);\n } else {\n const value = selectedCategory!.values[highlightedValueIndex - 1];\n const newItems = selectedItems.filter(\n (item) =>\n !(\n item.category === selectedCategory!.name && item.value === value\n )\n );\n if (newItems.length === selectedItems.length) {\n newItems.push({ category: selectedCategory!.name, value });\n }\n onSelectedItemsChange(newItems);\n }\n return;\n case \"ArrowLeft\":\n setSelectedCategory(null);\n return;\n default:\n return;\n }\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLInputElement> = (event) => {\n popperStatus.onKeyDown(event);\n let key = event.key;\n if (event.key === \" \" && event.ctrlKey) {\n key = \"Enter\";\n }\n const isSearchListActive = inputValue !== \"\";\n const isCategoryListActive = !isSearchListActive && !selectedCategory;\n const isValueListActive = !isSearchListActive && !isCategoryListActive;\n if (isSearchListActive) {\n onSearchListKeyDown(key);\n } else if (isCategoryListActive) {\n onCategoryListKeyDown(key);\n } else {\n onValueListKeyDown(key);\n }\n switch (event.key) {\n case \"ArrowUp\":\n case \"ArrowDown\":\n case \"Enter\":\n event.preventDefault();\n break;\n case \"ArrowLeft\":\n if (isValueListActive) {\n event.preventDefault();\n }\n break;\n case \"ArrowRight\":\n if (isCategoryListActive) {\n event.preventDefault();\n }\n break;\n case \"Escape\":\n setInputValue(\"\");\n }\n };\n\n const onValueToggle = (category: QueryInputCategory, value: string) => {\n const newItems = selectedItems.filter(\n (item) => !(item.category === category.name && item.value === value)\n );\n if (newItems.length === selectedItems.length) {\n newItems.push({ category: category.name, value });\n }\n onSelectedItemsChange(newItems);\n };\n\n return {\n queryInputBodyRef,\n queryInputProps: {\n onFocus,\n onBlur,\n },\n queryInputBodyProps: {\n inputRef: inputRef,\n disabled: props.disabled,\n selectedItems,\n onFocus,\n onBlur,\n onInputClick,\n onInputFocus,\n onInputBlur,\n onInputClear,\n inputValue,\n onInputChange,\n onSelectedItemsChange,\n onKeyDown,\n isFocused,\n booleanOperator,\n onBooleanOperatorChange,\n },\n valueSelectorProps: {\n isOpen: popperStatus.isOpen,\n categories: props.categories,\n selectedCategory,\n selectedItems,\n onValueToggle,\n onSearchListChange: onSelectedItemsChange,\n anchorElement: bodyRef.current,\n width: bodyWidth,\n onSelectedCategoryChange,\n popperRef,\n inputValue,\n highlightedIndex,\n visibleCategories: searchListItems,\n highlightedCategoryIndex,\n highlightedValueIndex,\n setHighlightedCategoryIndex,\n setHighlightedValueIndex,\n setHighlightedIndex,\n },\n };\n}\n\nfunction filterCategories(\n categories: QueryInputCategory[],\n inputValue?: string\n): [QueryInputCategory[], Array<QueryInputCategory | string>] {\n // Note: if there is no input value, this List would not be display\n if (!inputValue) {\n return [categories, []];\n }\n const query = inputValue.toUpperCase();\n const visibleCategories: QueryInputCategory[] = [];\n const indexPositions: Array<QueryInputCategory | string> = [];\n for (const c of categories) {\n const values = c.values.filter((v) => v.toUpperCase().includes(query));\n if (values.length > 0) {\n const queryInputCategory = {\n name: c.name,\n values,\n };\n visibleCategories.push(queryInputCategory);\n indexPositions.push(queryInputCategory, ...values);\n }\n }\n return [visibleCategories, indexPositions];\n}\n\nfunction nextSearchItemIndex(\n index: number,\n indexPositions: Array<QueryInputCategory | string>\n) {\n const nextIndex = index + 1;\n // Note: allow 1 for the extra ListItem we append to end of List\n if (nextIndex === indexPositions.length + 1) {\n return index;\n } else if (nextIndex === indexPositions.length) {\n return nextIndex;\n } else if (typeof indexPositions[nextIndex] === \"string\") {\n return nextIndex;\n } else {\n return nextIndex + 1;\n }\n}\n\nfunction prevSearchItemIndex(\n index: number,\n indexPositions: Array<QueryInputCategory | string>\n) {\n const nextIndex = index - 1;\n if (nextIndex === 0) {\n return index;\n } else if (typeof indexPositions[nextIndex] === \"string\") {\n return nextIndex;\n } else {\n return nextIndex - 1;\n }\n}\n"],"names":["useRef","useWidth","useForkRef","useControlled","usePopperStatus","useState","useMemo","searchListItems"],"mappings":";;;;;;;;;;;AA+BgB,SAAA,aAAA,CACd,OACA,YACqB,EAAA;AACrB,EAAM,MAAA,OAAA,GAAUA,aAAuB,IAAI,CAAA,CAAA;AAC3C,EAAM,MAAA,SAAA,GAAYA,aAAuB,IAAI,CAAA,CAAA;AAC7C,EAAM,MAAA,QAAA,GAAWA,aAAyB,IAAI,CAAA,CAAA;AAC9C,EAAA,MAAM,CAAC,YAAA,EAAc,SAAS,CAAA,GAAIC,kBAAyB,IAAI,CAAA,CAAA;AAE/D,EAAA,MAAM,UAAa,GAAAC,eAAA;AAAA,IACjB,YAAA;AAAA,IACA,OAAA;AAAA,GACF,CAAA;AACA,EAAA,MAAM,iBAAoB,GAAAA,eAAA;AAAA,IACxB,UAAA;AAAA,IACA,YAAA;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIC,kBAAc,CAAA;AAAA,IACtD,YAAY,KAAM,CAAA,aAAA;AAAA,IAClB,OAAA,EAAS,KAAM,CAAA,oBAAA,IAAwB,EAAC;AAAA,IACxC,IAAM,EAAA,YAAA;AAAA,IACN,KAAO,EAAA,eAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIA,kBAAc,CAAA;AAAA,IAC1D,YAAY,KAAM,CAAA,eAAA;AAAA,IAClB,OAAA,EAAS,MAAM,sBAA0B,IAAA,KAAA;AAAA,IACzC,IAAM,EAAA,YAAA;AAAA,IACN,KAAO,EAAA,iBAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,MAAM,eAAeC,+BAAgB,CAAA;AAAA,IACnC,WAAa,EAAA,KAAA;AAAA,IACb,WAAW,KAAM,CAAA,SAAA;AAAA,GAClB,CAAA,CAAA;AAED,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIC,eAAkB,KAAK,CAAA,CAAA;AACzD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,eAAS,CAAC,CAAA,CAAA;AAC1D,EAAA,MAAM,CAAC,wBAAA,EAA0B,2BAA2B,CAAA,GAAIA,eAAS,CAAC,CAAA,CAAA;AAC1E,EAAA,MAAM,CAAC,qBAAA,EAAuB,wBAAwB,CAAA,GAAIA,eAAS,CAAC,CAAA,CAAA;AACpE,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAC1CA,eAAoC,IAAI,CAAA,CAAA;AAC1C,EAAA,MAAM,wBAA2B,GAAAL,YAAA;AAAA,IAC/B,EAAC;AAAA,GACH,CAAA;AAEA,EAAM,MAAA,YAAA,GAAoD,CAAC,KAAU,KAAA;AACnE,IAAA,YAAA,CAAa,QAAQ,KAAK,CAAA,CAAA;AAC1B,IAAA,YAAA,CAAa,IAAI,CAAA,CAAA;AAAA,GACnB,CAAA;AAEA,EAAM,MAAA,WAAA,GAAmD,CAAC,KAAU,KAAA;AAClE,IAAI,IAAA,CAAC,SAAS,OAAS,EAAA;AACrB,MAAA,OAAA;AAAA,KACF;AACA,IAAA,MAAM,gBAAgB,KAAM,CAAA,aAAA,CAAA;AAC5B,IAAM,MAAA,aAAA,GAAgB,QAAQ,OAAY,KAAA,aAAA,CAAA;AAC1C,IAAA,IAAI,aAAe,EAAA;AACjB,MAAA,QAAA,CAAS,QAAQ,KAAM,EAAA,CAAA;AACvB,MAAA,OAAA;AAAA,KACF;AACA,IAAA,MAAM,oBACJ,OAAQ,CAAA,OAAA,IAAW,OAAQ,CAAA,OAAA,CAAQ,SAAS,aAAa,CAAA,CAAA;AAC3D,IAAA,IAAI,iBAAmB,EAAA;AACrB,MAAA,OAAA;AAAA,KACF;AACA,IAAA,MAAM,sBACJ,SAAU,CAAA,OAAA,IAAW,SAAU,CAAA,OAAA,CAAQ,SAAS,aAAa,CAAA,CAAA;AAC/D,IAAA,IAAI,mBAAqB,EAAA;AACvB,MAAA,QAAA,CAAS,QAAQ,KAAM,EAAA,CAAA;AACvB,MAAA,OAAA;AAAA,KACF;AACA,IAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAClB,IAAA,YAAA,CAAa,OAAO,KAAK,CAAA,CAAA;AAAA,GAC3B,CAAA;AAEA,EAAM,MAAA,OAAA,GAA6C,CAAC,KAAU,KAAA;AAC5D,IAAA,YAAA,CAAa,IAAI,CAAA,CAAA;AACjB,IAAA,YAAA,CAAa,QAAQ,KAAK,CAAA,CAAA;AAAA,GAC5B,CAAA;AAEA,EAAM,MAAA,MAAA,GAA4C,CAAC,KAAU,KAAA;AAC3D,IAAA,IAAI,gBAAgB,KAAM,CAAA,aAAA,CAAA;AAC1B,IAAM,MAAA,aAAA,GAAgB,QAAQ,OAAY,KAAA,aAAA,CAAA;AAC1C,IAAA,IAAI,aAAe,EAAA;AACjB,MAAA,OAAA;AAAA,KACF;AACA,IAAA,MAAM,oBACJ,OAAQ,CAAA,OAAA,IAAW,OAAQ,CAAA,OAAA,CAAQ,SAAS,aAAa,CAAA,CAAA;AAC3D,IAAA,IAAI,iBAAmB,EAAA;AACrB,MAAA,OAAA;AAAA,KACF;AACA,IAAA,MAAM,sBACJ,SAAU,CAAA,OAAA,IAAW,SAAU,CAAA,OAAA,CAAQ,SAAS,aAAa,CAAA,CAAA;AAC/D,IAAA,IAAI,mBAAqB,EAAA;AACvB,MAAA,OAAA;AAAA,KACF;AACA,IAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAClB,IAAA,YAAA,CAAa,OAAO,KAAK,CAAA,CAAA;AAAA,GAC3B,CAAA;AAEA,EAAM,MAAA,qBAAA,GAAwB,CAAC,QAA2C,KAAA;AACxE,IAAM,MAAA,OAAA,GACJ,YACA,QAAS,CAAA,IAAA;AAAA,MACP,CAAC,IAAS,KAAA,IAAA,CAAK,QAAY,IAAA,IAAA,IAAQ,KAAK,KAAU,KAAA,UAAA;AAAA,KACpD,CAAA;AACF,IAAA,IAAI,OAAS,EAAA;AACX,MAAA,aAAA,CAAc,EAAE,CAAA,CAAA;AAAA,KAClB;AACA,IAAiB,gBAAA,CAAA,QAAA,IAAY,EAAE,CAAA,CAAA;AAC/B,IAAA,IAAI,MAAM,QAAU,EAAA;AAClB,MAAM,KAAA,CAAA,QAAA,CAAS,QAAY,IAAA,EAAE,CAAA,CAAA;AAAA,KAC/B;AACA,IAAA,YAAA,CAAa,QAAS,EAAA,CAAA;AAAA,GACxB,CAAA;AAEA,EAAM,MAAA,uBAAA,GAA0B,CAAC,QAA8B,KAAA;AAC7D,IAAA,kBAAA,CAAmB,QAAQ,CAAA,CAAA;AAC3B,IAAA,IAAI,MAAM,uBAAyB,EAAA;AACjC,MAAA,KAAA,CAAM,wBAAwB,QAAQ,CAAA,CAAA;AAAA,KACxC;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,wBAAA,GAA2B,CAAC,QAAwC,KAAA;AACxE,IAAA,IAAI,SAAS,OAAS,EAAA;AACpB,MAAA,QAAA,CAAS,QAAQ,KAAM,EAAA,CAAA;AAAA,KACzB;AACA,IAAA,mBAAA,CAAoB,QAAQ,CAAA,CAAA;AAAA,GAC9B,CAAA;AAEA,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIK,eAAiB,EAAE,CAAA,CAAA;AAEvD,EAAM,MAAA,eAAA,GAAkBC,cAAQ,MAAM;AACpC,IAAM,MAAA,CAACC,gBAAiB,EAAA,cAAc,CAAI,GAAA,gBAAA;AAAA,MACxC,KAAM,CAAA,UAAA;AAAA,MACN,UAAA;AAAA,KACF,CAAA;AACA,IAAA,wBAAA,CAAyB,OAAU,GAAA,cAAA,CAAA;AACnC,IAAOA,OAAAA,gBAAAA,CAAAA;AAAA,GACN,EAAA,CAAC,KAAM,CAAA,UAAA,EAAY,UAAU,CAAC,CAAA,CAAA;AAEjC,EAAM,MAAA,aAAA,GAAsD,CAAC,KAAU,KAAA;AACrE,IAAM,MAAA,aAAA,GAAgB,MAAM,MAAO,CAAA,KAAA,CAAA;AACnC,IAAA,aAAA,CAAc,aAAa,CAAA,CAAA;AAE3B,IAAA,mBAAA,CAAoB,wBAAyB,CAAA,OAAA,CAAQ,MAAW,KAAA,CAAA,GAAI,IAAI,CAAC,CAAA,CAAA;AAAA,GAC3E,CAAA;AAEA,EAAM,MAAA,mBAAA,GAAsBD,cAAQ,MAAM;AACxC,IAAA,OAAO,eAAgB,CAAA,MAAA;AAAA,MACrB,CAAC,GAAA,EAAK,QAAa,KAAA,GAAA,GAAM,SAAS,MAAO,CAAA,MAAA;AAAA,MACzC,CAAA;AAAA,KACF,CAAA;AAAA,GACF,EAAG,CAAC,eAAe,CAAC,CAAA,CAAA;AAEpB,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,qBAAA,CAAsB,EAAE,CAAA,CAAA;AAAA,GAC1B,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,YAAA,CAAa,OAAQ,EAAA,CAAA;AAAA,GACvB,CAAA;AAEA,EAAA,MAAM,sBAAsB,MAAkC;AAC5D,IAAA,MAAM,CAAI,GAAA,gBAAA,CAAA;AACV,IAAA,KAAA,MAAW,YAAY,eAAiB,EAAA;AACtC,MAAI,IAAA,CAAA,GAAI,QAAS,CAAA,MAAA,CAAO,MAAQ,EAAA;AAC9B,QAAM,MAAA,KAAA,GAAQ,SAAS,MAAO,CAAA,CAAA,CAAA,CAAA;AAC9B,QAAO,OAAA;AAAA,UACL,UAAU,QAAS,CAAA,IAAA;AAAA,UACnB,KAAA;AAAA,SACF,CAAA;AAAA,OACF;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,EAAE,kBAAqB,GAAA,EAAA,EAAO,GAAA,KAAA,CAAA;AAEpC,EAAM,MAAA,mBAAA,GAAsB,CAAC,GAAgB,KAAA;AAC3C,IAAQ,QAAA,GAAA;AAAA,MACD,KAAA,MAAA;AACH,QAAA,mBAAA,CAAoB,CAAC,CAAA,CAAA;AACrB,QAAA,OAAA;AAAA,MACG,KAAA,KAAA;AACH,QAAA,mBAAA,CAAoB,mBAAmB,CAAA,CAAA;AACvC,QAAA,OAAA;AAAA,MACG,KAAA,SAAA;AACH,QAAA,mBAAA;AAAA,UAAoB,CAAC,CAAA,KACnB,mBAAoB,CAAA,CAAA,EAAG,yBAAyB,OAAO,CAAA;AAAA,SACzD,CAAA;AACA,QAAA,OAAA;AAAA,MACG,KAAA,WAAA;AAEH,QAAA,mBAAA;AAAA,UAAoB,CAAC,CAAA,KACnB,mBAAoB,CAAA,CAAA,EAAG,yBAAyB,OAAO,CAAA;AAAA,SACzD,CAAA;AACA,QAAA,OAAA;AAAA,MACG,KAAA,UAAA;AACH,QAAA,mBAAA;AAAA,UAAoB,CAAC,CACnB,KAAA,IAAA,CAAK,GAAI,CAAA,mBAAA,EAAqB,IAAI,kBAAkB,CAAA;AAAA,SACtD,CAAA;AACA,QAAA,OAAA;AAAA,MACG,KAAA,QAAA;AACH,QAAA,mBAAA,CAAoB,CAAC,CAAM,KAAA,IAAA,CAAK,IAAI,CAAG,EAAA,CAAA,GAAI,kBAAkB,CAAC,CAAA,CAAA;AAC9D,QAAA,OAAA;AAAA,MACG,KAAA,OAAA;AACH,QAAA,IAAI,qBAAqB,mBAAqB,EAAA;AAC5C,UAAA,MAAM,QAAW,GAAA;AAAA,YACf,GAAG,aAAA;AAAA,YACH,EAAE,QAAA,EAAU,IAAM,EAAA,KAAA,EAAO,UAAW,EAAA;AAAA,WACtC,CAAA;AACA,UAAA,qBAAA,CAAsB,QAAQ,CAAA,CAAA;AAAA,SACzB,MAAA;AACL,UAAI,IAAA,gBAAA,IAAoB,CAAK,IAAA,gBAAA,GAAmB,mBAAqB,EAAA;AACnE,YAAA,MAAM,UAAU,mBAAoB,EAAA,CAAA;AACpC,YAAA,IAAI,OAAS,EAAA;AACX,cAAA,MAAM,QAAW,GAAA,CAAC,GAAG,aAAA,EAAe,OAAO,CAAA,CAAA;AAC3C,cAAA,qBAAA,CAAsB,QAAQ,CAAA,CAAA;AAAA,aAChC;AAAA,WACF;AACA,UAAA,aAAA,CAAc,EAAE,CAAA,CAAA;AAAA,SAClB;AACA,QAAA,OAAA;AAAA,MAAA;AAEA,QAAA,OAAA;AAAA,KAAA;AAAA,GAEN,CAAA;AAEA,EAAM,MAAA,qBAAA,GAAwB,CAAC,GAAgB,KAAA;AAC7C,IAAQ,QAAA,GAAA;AAAA,MACD,KAAA,MAAA;AACH,QAAA,2BAAA,CAA4B,CAAC,CAAA,CAAA;AAC7B,QAAA,OAAA;AAAA,MACG,KAAA,KAAA;AACH,QAA4B,2BAAA,CAAA,KAAA,CAAM,UAAW,CAAA,MAAA,GAAS,CAAC,CAAA,CAAA;AACvD,QAAA,OAAA;AAAA,MACG,KAAA,SAAA;AACH,QAAA,2BAAA,CAA4B,CAAC,CAAM,KAAA,IAAA,CAAK,IAAI,CAAG,EAAA,CAAA,GAAI,CAAC,CAAC,CAAA,CAAA;AACrD,QAAA,OAAA;AAAA,MACG,KAAA,WAAA;AACH,QAAA,2BAAA;AAAA,UAA4B,CAAC,MAC3B,IAAK,CAAA,GAAA,CAAI,MAAM,UAAW,CAAA,MAAA,GAAS,CAAG,EAAA,CAAA,GAAI,CAAC,CAAA;AAAA,SAC7C,CAAA;AACA,QAAA,OAAA;AAAA,MACG,KAAA,QAAA;AACH,QAAA,2BAAA,CAA4B,CAAC,CAAM,KAAA,IAAA,CAAK,IAAI,CAAG,EAAA,CAAA,GAAI,kBAAkB,CAAC,CAAA,CAAA;AACtE,QAAA,OAAA;AAAA,MACG,KAAA,UAAA;AACH,QAAA,2BAAA;AAAA,UAA4B,CAAC,MAC3B,IAAK,CAAA,GAAA,CAAI,MAAM,UAAW,CAAA,MAAA,GAAS,CAAG,EAAA,CAAA,GAAI,kBAAkB,CAAA;AAAA,SAC9D,CAAA;AACA,QAAA,OAAA;AAAA,MACG,KAAA,OAAA;AACH,QAAA,IACE,wBAA4B,IAAA,CAAA,IAC5B,wBAA2B,GAAA,KAAA,CAAM,WAAW,MAC5C,EAAA;AACA,UAAM,MAAA,QAAA,GAAW,MAAM,UAAW,CAAA,wBAAA,CAAA,CAAA;AAClC,UAAA,mBAAA,CAAoB,QAAQ,CAAA,CAAA;AAAA,SAC9B;AACA,QAAA,OAAA;AAAA,MACG,KAAA,YAAA;AACH,QAAA,IACE,wBAA4B,IAAA,CAAA,IAC5B,wBAA2B,GAAA,KAAA,CAAM,WAAW,MAC5C,EAAA;AACA,UAAM,MAAA,QAAA,GAAW,MAAM,UAAW,CAAA,wBAAA,CAAA,CAAA;AAClC,UAAA,mBAAA,CAAoB,QAAQ,CAAA,CAAA;AAAA,SAC9B;AACA,QAAA,OAAA;AAAA,MAAA;AAEA,QAAA,OAAA;AAAA,KAAA;AAAA,GAEN,CAAA;AAEA,EAAM,MAAA,kBAAA,GAAqB,CAAC,GAAgB,KAAA;AAC1C,IAAQ,QAAA,GAAA;AAAA,MACD,KAAA,MAAA;AACH,QAAA,wBAAA,CAAyB,CAAC,CAAA,CAAA;AAC1B,QAAA,OAAA;AAAA,MACG,KAAA,KAAA;AACH,QAAyB,wBAAA,CAAA,gBAAA,CAAkB,OAAO,MAAM,CAAA,CAAA;AACxD,QAAA,OAAA;AAAA,MACG,KAAA,SAAA;AACH,QAAA,wBAAA,CAAyB,CAAC,CAAM,KAAA,IAAA,CAAK,IAAI,CAAG,EAAA,CAAA,GAAI,CAAC,CAAC,CAAA,CAAA;AAClD,QAAA,OAAA;AAAA,MACG,KAAA,WAAA;AACH,QAAA,wBAAA;AAAA,UAAyB,CAAC,MACxB,IAAK,CAAA,GAAA,CAAI,iBAAkB,MAAO,CAAA,MAAA,EAAQ,IAAI,CAAC,CAAA;AAAA,SACjD,CAAA;AACA,QAAA,OAAA;AAAA,MACG,KAAA,QAAA;AACH,QAAA,wBAAA,CAAyB,CAAC,CAAM,KAAA,IAAA,CAAK,IAAI,CAAG,EAAA,CAAA,GAAI,kBAAkB,CAAC,CAAA,CAAA;AACnE,QAAA,OAAA;AAAA,MACG,KAAA,UAAA;AACH,QAAA,wBAAA;AAAA,UAAyB,CAAC,MACxB,IAAK,CAAA,GAAA,CAAI,iBAAkB,MAAO,CAAA,MAAA,EAAQ,IAAI,kBAAkB,CAAA;AAAA,SAClE,CAAA;AACA,QAAA,OAAA;AAAA,MACG,KAAA,OAAA;AACH,QAAA,IAAI,0BAA0B,CAAG,EAAA;AAC/B,UAAA,mBAAA,CAAoB,IAAI,CAAA,CAAA;AAAA,SACnB,MAAA;AACL,UAAM,MAAA,KAAA,GAAQ,gBAAkB,CAAA,MAAA,CAAO,qBAAwB,GAAA,CAAA,CAAA,CAAA;AAC/D,UAAA,MAAM,WAAW,aAAc,CAAA,MAAA;AAAA,YAC7B,CAAC,SACC,EACE,IAAA,CAAK,aAAa,gBAAkB,CAAA,IAAA,IAAQ,KAAK,KAAU,KAAA,KAAA,CAAA;AAAA,WAEjE,CAAA;AACA,UAAI,IAAA,QAAA,CAAS,MAAW,KAAA,aAAA,CAAc,MAAQ,EAAA;AAC5C,YAAA,QAAA,CAAS,KAAK,EAAE,QAAA,EAAU,gBAAkB,CAAA,IAAA,EAAM,OAAO,CAAA,CAAA;AAAA,WAC3D;AACA,UAAA,qBAAA,CAAsB,QAAQ,CAAA,CAAA;AAAA,SAChC;AACA,QAAA,OAAA;AAAA,MACG,KAAA,WAAA;AACH,QAAA,mBAAA,CAAoB,IAAI,CAAA,CAAA;AACxB,QAAA,OAAA;AAAA,MAAA;AAEA,QAAA,OAAA;AAAA,KAAA;AAAA,GAEN,CAAA;AAEA,EAAM,MAAA,SAAA,GAAoD,CAAC,KAAU,KAAA;AACnE,IAAA,YAAA,CAAa,UAAU,KAAK,CAAA,CAAA;AAC5B,IAAA,IAAI,MAAM,KAAM,CAAA,GAAA,CAAA;AAChB,IAAA,IAAI,KAAM,CAAA,GAAA,KAAQ,GAAO,IAAA,KAAA,CAAM,OAAS,EAAA;AACtC,MAAM,GAAA,GAAA,OAAA,CAAA;AAAA,KACR;AACA,IAAA,MAAM,qBAAqB,UAAe,KAAA,EAAA,CAAA;AAC1C,IAAM,MAAA,oBAAA,GAAuB,CAAC,kBAAA,IAAsB,CAAC,gBAAA,CAAA;AACrD,IAAM,MAAA,iBAAA,GAAoB,CAAC,kBAAA,IAAsB,CAAC,oBAAA,CAAA;AAClD,IAAA,IAAI,kBAAoB,EAAA;AACtB,MAAA,mBAAA,CAAoB,GAAG,CAAA,CAAA;AAAA,eACd,oBAAsB,EAAA;AAC/B,MAAA,qBAAA,CAAsB,GAAG,CAAA,CAAA;AAAA,KACpB,MAAA;AACL,MAAA,kBAAA,CAAmB,GAAG,CAAA,CAAA;AAAA,KACxB;AACA,IAAA,QAAQ,KAAM,CAAA,GAAA;AAAA,MACP,KAAA,SAAA,CAAA;AAAA,MACA,KAAA,WAAA,CAAA;AAAA,MACA,KAAA,OAAA;AACH,QAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AACrB,QAAA,MAAA;AAAA,MACG,KAAA,WAAA;AACH,QAAA,IAAI,iBAAmB,EAAA;AACrB,UAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AAAA,SACvB;AACA,QAAA,MAAA;AAAA,MACG,KAAA,YAAA;AACH,QAAA,IAAI,oBAAsB,EAAA;AACxB,UAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AAAA,SACvB;AACA,QAAA,MAAA;AAAA,MACG,KAAA,QAAA;AACH,QAAA,aAAA,CAAc,EAAE,CAAA,CAAA;AAAA,KAAA;AAAA,GAEtB,CAAA;AAEA,EAAM,MAAA,aAAA,GAAgB,CAAC,QAAA,EAA8B,KAAkB,KAAA;AACrE,IAAA,MAAM,WAAW,aAAc,CAAA,MAAA;AAAA,MAC7B,CAAC,SAAS,EAAE,IAAA,CAAK,aAAa,QAAS,CAAA,IAAA,IAAQ,KAAK,KAAU,KAAA,KAAA,CAAA;AAAA,KAChE,CAAA;AACA,IAAI,IAAA,QAAA,CAAS,MAAW,KAAA,aAAA,CAAc,MAAQ,EAAA;AAC5C,MAAA,QAAA,CAAS,KAAK,EAAE,QAAA,EAAU,QAAS,CAAA,IAAA,EAAM,OAAO,CAAA,CAAA;AAAA,KAClD;AACA,IAAA,qBAAA,CAAsB,QAAQ,CAAA,CAAA;AAAA,GAChC,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,iBAAA;AAAA,IACA,eAAiB,EAAA;AAAA,MACf,OAAA;AAAA,MACA,MAAA;AAAA,KACF;AAAA,IACA,mBAAqB,EAAA;AAAA,MACnB,QAAA;AAAA,MACA,UAAU,KAAM,CAAA,QAAA;AAAA,MAChB,aAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,qBAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,eAAA;AAAA,MACA,uBAAA;AAAA,KACF;AAAA,IACA,kBAAoB,EAAA;AAAA,MAClB,QAAQ,YAAa,CAAA,MAAA;AAAA,MACrB,YAAY,KAAM,CAAA,UAAA;AAAA,MAClB,gBAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,kBAAoB,EAAA,qBAAA;AAAA,MACpB,eAAe,OAAQ,CAAA,OAAA;AAAA,MACvB,KAAO,EAAA,SAAA;AAAA,MACP,wBAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,gBAAA;AAAA,MACA,iBAAmB,EAAA,eAAA;AAAA,MACnB,wBAAA;AAAA,MACA,qBAAA;AAAA,MACA,2BAAA;AAAA,MACA,wBAAA;AAAA,MACA,mBAAA;AAAA,KACF;AAAA,GACF,CAAA;AACF,CAAA;AAEA,SAAS,gBAAA,CACP,YACA,UAC4D,EAAA;AAE5D,EAAA,IAAI,CAAC,UAAY,EAAA;AACf,IAAO,OAAA,CAAC,UAAY,EAAA,EAAE,CAAA,CAAA;AAAA,GACxB;AACA,EAAM,MAAA,KAAA,GAAQ,WAAW,WAAY,EAAA,CAAA;AACrC,EAAA,MAAM,oBAA0C,EAAC,CAAA;AACjD,EAAA,MAAM,iBAAqD,EAAC,CAAA;AAC5D,EAAA,KAAA,MAAW,KAAK,UAAY,EAAA;AAC1B,IAAM,MAAA,MAAA,GAAS,CAAE,CAAA,MAAA,CAAO,MAAO,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,WAAY,EAAA,CAAE,QAAS,CAAA,KAAK,CAAC,CAAA,CAAA;AACrE,IAAI,IAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AACrB,MAAA,MAAM,kBAAqB,GAAA;AAAA,QACzB,MAAM,CAAE,CAAA,IAAA;AAAA,QACR,MAAA;AAAA,OACF,CAAA;AACA,MAAA,iBAAA,CAAkB,KAAK,kBAAkB,CAAA,CAAA;AACzC,MAAe,cAAA,CAAA,IAAA,CAAK,kBAAoB,EAAA,GAAG,MAAM,CAAA,CAAA;AAAA,KACnD;AAAA,GACF;AACA,EAAO,OAAA,CAAC,mBAAmB,cAAc,CAAA,CAAA;AAC3C,CAAA;AAEA,SAAS,mBAAA,CACP,OACA,cACA,EAAA;AACA,EAAA,MAAM,YAAY,KAAQ,GAAA,CAAA,CAAA;AAE1B,EAAI,IAAA,SAAA,KAAc,cAAe,CAAA,MAAA,GAAS,CAAG,EAAA;AAC3C,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,MAAA,IAAW,SAAc,KAAA,cAAA,CAAe,MAAQ,EAAA;AAC9C,IAAO,OAAA,SAAA,CAAA;AAAA,GACE,MAAA,IAAA,OAAO,cAAe,CAAA,SAAA,CAAA,KAAe,QAAU,EAAA;AACxD,IAAO,OAAA,SAAA,CAAA;AAAA,GACF,MAAA;AACL,IAAA,OAAO,SAAY,GAAA,CAAA,CAAA;AAAA,GACrB;AACF,CAAA;AAEA,SAAS,mBAAA,CACP,OACA,cACA,EAAA;AACA,EAAA,MAAM,YAAY,KAAQ,GAAA,CAAA,CAAA;AAC1B,EAAA,IAAI,cAAc,CAAG,EAAA;AACnB,IAAO,OAAA,KAAA,CAAA;AAAA,GACE,MAAA,IAAA,OAAO,cAAe,CAAA,SAAA,CAAA,KAAe,QAAU,EAAA;AACxD,IAAO,OAAA,SAAA,CAAA;AAAA,GACF,MAAA;AACL,IAAA,OAAO,SAAY,GAAA,CAAA,CAAA;AAAA,GACrB;AACF;;;;"}
1
+ {"version":3,"file":"useQueryInput.js","sources":["../src/query-input/useQueryInput.ts"],"sourcesContent":["import { useControlled, useForkRef } from \"@salt-ds/core\";\nimport {\n ChangeEventHandler,\n FocusEventHandler,\n ForwardedRef,\n KeyboardEventHandler,\n Ref,\n RefObject,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { QueryInputBodyProps } from \"./internal/QueryInputBody\";\nimport { usePopperStatus } from \"./internal/usePopperStatus\";\nimport { ValueSelectorProps } from \"./internal/ValueSelector\";\nimport { QueryInputProps } from \"./QueryInput\";\nimport { QueryInputCategory, QueryInputItem } from \"./queryInputTypes\";\nimport { useWidth } from \"../responsive\";\n\nexport type BooleanOperator = \"or\" | \"and\";\n\nexport interface UseQueryInputResult {\n queryInputProps: {\n onFocus: FocusEventHandler<HTMLDivElement>;\n onBlur: FocusEventHandler<HTMLDivElement>;\n };\n queryInputBodyRef: Ref<HTMLDivElement>;\n queryInputBodyProps: QueryInputBodyProps;\n valueSelectorProps: ValueSelectorProps;\n}\n\nexport function useQueryInput(\n props: QueryInputProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n): UseQueryInputResult {\n const bodyRef = useRef<HTMLDivElement>(null);\n const popperRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [widthBodyRef, bodyWidth] = useWidth<HTMLDivElement>(true);\n\n const forkedRef1 = useForkRef<HTMLDivElement>(\n forwardedRef,\n bodyRef\n ) as RefObject<HTMLDivElement>;\n const queryInputBodyRef = useForkRef<HTMLDivElement>(\n forkedRef1,\n widthBodyRef\n );\n\n const [selectedItems, setSelectedItems] = useControlled({\n controlled: props.selectedItems,\n default: props.defaultSelectedItems || [],\n name: \"QueryInput\",\n state: \"selectedItems\",\n });\n\n const [booleanOperator, setBooleanOperator] = useControlled({\n controlled: props.booleanOperator,\n default: props.defaultBooleanOperator || \"and\",\n name: \"QueryInput\",\n state: \"booleanOperator\",\n });\n\n const popperStatus = usePopperStatus({\n initialOpen: false,\n autoClose: props.autoClose,\n });\n\n const [isFocused, setIsFocused] = useState<boolean>(false);\n const [highlightedIndex, setHighlightedIndex] = useState(0);\n const [highlightedCategoryIndex, setHighlightedCategoryIndex] = useState(0);\n const [highlightedValueIndex, setHighlightedValueIndex] = useState(0);\n const [selectedCategory, setSelectedCategory] =\n useState<QueryInputCategory | null>(null);\n const searchListIndexPositions = useRef<Array<QueryInputCategory | string>>(\n []\n );\n\n const onInputFocus: FocusEventHandler<HTMLInputElement> = (event) => {\n popperStatus.onFocus(event);\n setIsFocused(true);\n };\n\n const onInputBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n if (!inputRef.current) {\n return;\n }\n const relatedTarget = event.relatedTarget as Node | null;\n const isBodyFocused = bodyRef.current === relatedTarget;\n if (isBodyFocused) {\n inputRef.current.focus();\n return;\n }\n const isFocusWithinBody =\n bodyRef.current && bodyRef.current.contains(relatedTarget);\n if (isFocusWithinBody) {\n return;\n }\n const isFocusWithinPopper =\n popperRef.current && popperRef.current.contains(relatedTarget);\n if (isFocusWithinPopper) {\n inputRef.current.focus();\n return;\n }\n setIsFocused(false);\n popperStatus.onBlur(event);\n };\n\n const onFocus: FocusEventHandler<HTMLDivElement> = (event) => {\n setIsFocused(true);\n popperStatus.onFocus(event);\n };\n\n const onBlur: FocusEventHandler<HTMLDivElement> = (event) => {\n let relatedTarget = event.relatedTarget as Node | null;\n const isBodyFocused = bodyRef.current === relatedTarget;\n if (isBodyFocused) {\n return;\n }\n const isFocusWithinBody =\n bodyRef.current && bodyRef.current.contains(relatedTarget);\n if (isFocusWithinBody) {\n return;\n }\n const isFocusWithinPopper =\n popperRef.current && popperRef.current.contains(relatedTarget);\n if (isFocusWithinPopper) {\n return;\n }\n setIsFocused(false);\n popperStatus.onBlur(event);\n };\n\n const onSelectedItemsChange = (newItems: QueryInputItem[] | undefined) => {\n const newItem =\n newItems &&\n newItems.find(\n (item) => item.category == null && item.value === inputValue\n );\n if (newItem) {\n setInputValue(\"\");\n }\n setSelectedItems(newItems || []);\n if (props.onChange) {\n props.onChange(newItems || []);\n }\n popperStatus.onChange();\n };\n\n const onBooleanOperatorChange = (operator: BooleanOperator) => {\n setBooleanOperator(operator);\n if (props.onBooleanOperatorChange) {\n props.onBooleanOperatorChange(operator);\n }\n };\n\n const onSelectedCategoryChange = (category: QueryInputCategory | null) => {\n if (inputRef.current) {\n inputRef.current.focus();\n }\n setSelectedCategory(category);\n };\n\n const [inputValue, setInputValue] = useState<string>(\"\");\n\n const searchListItems = useMemo(() => {\n const [searchListItems, indexPositions] = filterCategories(\n props.categories,\n inputValue\n );\n searchListIndexPositions.current = indexPositions;\n return searchListItems;\n }, [props.categories, inputValue]);\n\n const onInputChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n const newInputValue = event.target.value;\n setInputValue(newInputValue);\n // If we have search results, the first index position will be a header\n setHighlightedIndex(searchListIndexPositions.current.length === 0 ? 0 : 1);\n };\n\n const searchListItemCount = useMemo(() => {\n return searchListItems.reduce(\n (acc, category) => acc + category.values.length,\n 0\n );\n }, [searchListItems]);\n\n const onInputClear = () => {\n onSelectedItemsChange([]);\n };\n\n const onInputClick = () => {\n popperStatus.onClick();\n };\n\n const newItemFromSelected = (): QueryInputItem | undefined => {\n const i = highlightedIndex;\n for (const category of searchListItems) {\n if (i < category.values.length) {\n const value = category.values[i];\n return {\n category: category.name,\n value,\n };\n }\n }\n };\n\n const { displayedItemCount = 10 } = props;\n\n const onSearchListKeyDown = (key: string) => {\n switch (key) {\n case \"Home\":\n setHighlightedIndex(0);\n return;\n case \"End\":\n setHighlightedIndex(searchListItemCount);\n return;\n case \"ArrowUp\":\n setHighlightedIndex((i) =>\n prevSearchItemIndex(i, searchListIndexPositions.current)\n );\n return;\n case \"ArrowDown\":\n // setHighlightedIndex((i) => Math.min(searchListItemCount, i + 1));\n setHighlightedIndex((i) =>\n nextSearchItemIndex(i, searchListIndexPositions.current)\n );\n return;\n case \"PageDown\":\n setHighlightedIndex((i) =>\n Math.min(searchListItemCount, i + displayedItemCount)\n );\n return;\n case \"PageUp\":\n setHighlightedIndex((i) => Math.max(0, i - displayedItemCount));\n return;\n case \"Enter\":\n if (highlightedIndex === searchListItemCount) {\n const newItems = [\n ...selectedItems,\n { category: null, value: inputValue },\n ];\n onSelectedItemsChange(newItems);\n } else {\n if (highlightedIndex >= 0 && highlightedIndex < searchListItemCount) {\n const newItem = newItemFromSelected();\n if (newItem) {\n const newItems = [...selectedItems, newItem];\n onSelectedItemsChange(newItems);\n }\n }\n setInputValue(\"\");\n }\n return;\n default:\n return;\n }\n };\n\n const onCategoryListKeyDown = (key: string) => {\n switch (key) {\n case \"Home\":\n setHighlightedCategoryIndex(0);\n return;\n case \"End\":\n setHighlightedCategoryIndex(props.categories.length - 1);\n return;\n case \"ArrowUp\":\n setHighlightedCategoryIndex((i) => Math.max(0, i - 1));\n return;\n case \"ArrowDown\":\n setHighlightedCategoryIndex((i) =>\n Math.min(props.categories.length - 1, i + 1)\n );\n return;\n case \"PageUp\":\n setHighlightedCategoryIndex((i) => Math.max(0, i - displayedItemCount));\n return;\n case \"PageDown\":\n setHighlightedCategoryIndex((i) =>\n Math.min(props.categories.length - 1, i + displayedItemCount)\n );\n return;\n case \"Enter\":\n if (\n highlightedCategoryIndex >= 0 &&\n highlightedCategoryIndex < props.categories.length\n ) {\n const category = props.categories[highlightedCategoryIndex];\n setSelectedCategory(category);\n }\n return;\n case \"ArrowRight\":\n if (\n highlightedCategoryIndex >= 0 &&\n highlightedCategoryIndex < props.categories.length\n ) {\n const category = props.categories[highlightedCategoryIndex];\n setSelectedCategory(category);\n }\n return;\n default:\n return;\n }\n };\n\n const onValueListKeyDown = (key: string) => {\n switch (key) {\n case \"Home\":\n setHighlightedValueIndex(0);\n return;\n case \"End\":\n setHighlightedValueIndex(selectedCategory!.values.length);\n return;\n case \"ArrowUp\":\n setHighlightedValueIndex((i) => Math.max(0, i - 1));\n return;\n case \"ArrowDown\":\n setHighlightedValueIndex((i) =>\n Math.min(selectedCategory!.values.length, i + 1)\n );\n return;\n case \"PageUp\":\n setHighlightedValueIndex((i) => Math.max(0, i - displayedItemCount));\n return;\n case \"PageDown\":\n setHighlightedValueIndex((i) =>\n Math.min(selectedCategory!.values.length, i + displayedItemCount)\n );\n return;\n case \"Enter\":\n if (highlightedValueIndex === 0) {\n setSelectedCategory(null);\n } else {\n const value = selectedCategory!.values[highlightedValueIndex - 1];\n const newItems = selectedItems.filter(\n (item) =>\n !(\n item.category === selectedCategory!.name && item.value === value\n )\n );\n if (newItems.length === selectedItems.length) {\n newItems.push({ category: selectedCategory!.name, value });\n }\n onSelectedItemsChange(newItems);\n }\n return;\n case \"ArrowLeft\":\n setSelectedCategory(null);\n return;\n default:\n return;\n }\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLInputElement> = (event) => {\n popperStatus.onKeyDown(event);\n let key = event.key;\n if (event.key === \" \" && event.ctrlKey) {\n key = \"Enter\";\n }\n const isSearchListActive = inputValue !== \"\";\n const isCategoryListActive = !isSearchListActive && !selectedCategory;\n const isValueListActive = !isSearchListActive && !isCategoryListActive;\n if (isSearchListActive) {\n onSearchListKeyDown(key);\n } else if (isCategoryListActive) {\n onCategoryListKeyDown(key);\n } else {\n onValueListKeyDown(key);\n }\n switch (event.key) {\n case \"ArrowUp\":\n case \"ArrowDown\":\n case \"Enter\":\n event.preventDefault();\n break;\n case \"ArrowLeft\":\n if (isValueListActive) {\n event.preventDefault();\n }\n break;\n case \"ArrowRight\":\n if (isCategoryListActive) {\n event.preventDefault();\n }\n break;\n case \"Escape\":\n setInputValue(\"\");\n }\n };\n\n const onValueToggle = (category: QueryInputCategory, value: string) => {\n const newItems = selectedItems.filter(\n (item) => !(item.category === category.name && item.value === value)\n );\n if (newItems.length === selectedItems.length) {\n newItems.push({ category: category.name, value });\n }\n onSelectedItemsChange(newItems);\n };\n\n return {\n queryInputBodyRef,\n queryInputProps: {\n onFocus,\n onBlur,\n },\n queryInputBodyProps: {\n inputRef: inputRef,\n disabled: props.disabled,\n selectedItems,\n onFocus,\n onBlur,\n onInputClick,\n onInputFocus,\n onInputBlur,\n onInputClear,\n inputValue,\n onInputChange,\n onSelectedItemsChange,\n onKeyDown,\n isFocused,\n booleanOperator,\n onBooleanOperatorChange,\n },\n valueSelectorProps: {\n isOpen: popperStatus.isOpen,\n categories: props.categories,\n selectedCategory,\n selectedItems,\n onValueToggle,\n onSearchListChange: onSelectedItemsChange,\n anchorElement: bodyRef.current,\n width: bodyWidth,\n onSelectedCategoryChange,\n popperRef,\n inputValue,\n highlightedIndex,\n visibleCategories: searchListItems,\n highlightedCategoryIndex,\n highlightedValueIndex,\n setHighlightedCategoryIndex,\n setHighlightedValueIndex,\n setHighlightedIndex,\n },\n };\n}\n\nfunction filterCategories(\n categories: QueryInputCategory[],\n inputValue?: string\n): [QueryInputCategory[], Array<QueryInputCategory | string>] {\n // Note: if there is no input value, this List would not be display\n if (!inputValue) {\n return [categories, []];\n }\n const query = inputValue.toUpperCase();\n const visibleCategories: QueryInputCategory[] = [];\n const indexPositions: Array<QueryInputCategory | string> = [];\n for (const c of categories) {\n const values = c.values.filter((v) => v.toUpperCase().includes(query));\n if (values.length > 0) {\n const queryInputCategory = {\n name: c.name,\n values,\n };\n visibleCategories.push(queryInputCategory);\n indexPositions.push(queryInputCategory, ...values);\n }\n }\n return [visibleCategories, indexPositions];\n}\n\nfunction nextSearchItemIndex(\n index: number,\n indexPositions: Array<QueryInputCategory | string>\n) {\n const nextIndex = index + 1;\n // Note: allow 1 for the extra ListItem we append to end of List\n if (nextIndex === indexPositions.length + 1) {\n return index;\n } else if (nextIndex === indexPositions.length) {\n return nextIndex;\n } else if (typeof indexPositions[nextIndex] === \"string\") {\n return nextIndex;\n } else {\n return nextIndex + 1;\n }\n}\n\nfunction prevSearchItemIndex(\n index: number,\n indexPositions: Array<QueryInputCategory | string>\n) {\n const nextIndex = index - 1;\n if (nextIndex === 0) {\n return index;\n } else if (typeof indexPositions[nextIndex] === \"string\") {\n return nextIndex;\n } else {\n return nextIndex - 1;\n }\n}\n"],"names":["useRef","useWidth","useForkRef","useControlled","usePopperStatus","useState","useMemo","searchListItems"],"mappings":"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"}
@@ -6,6 +6,7 @@ var React = require('react');
6
6
  var overflowUtils = require('./overflowUtils.js');
7
7
  var partition = require('../utils/partition.js');
8
8
  var core = require('@salt-ds/core');
9
+ require('../utils/useFloatingUI.js');
9
10
 
10
11
  const NO_OVERFLOW_INDICATOR = { size: 0 };
11
12
  const getPriority = (item) => item.priority;