@cratis/components 4.21.0 → 4.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. package/MIGRATION.md +3 -3
  2. package/compat-manifest.json +16 -16
  3. package/dist/esm/Canvas/Canvas.d.ts +12 -81
  4. package/dist/esm/Canvas/Canvas.d.ts.map +1 -1
  5. package/dist/esm/Canvas/Canvas.js +83 -676
  6. package/dist/esm/Canvas/Canvas.js.map +1 -1
  7. package/dist/esm/Canvas/CanvasCaptureAttributes.d.ts +10 -0
  8. package/dist/esm/Canvas/CanvasCaptureAttributes.d.ts.map +1 -0
  9. package/dist/esm/Canvas/CanvasCaptureAttributes.js +4 -0
  10. package/dist/esm/Canvas/CanvasCaptureAttributes.js.map +1 -0
  11. package/dist/esm/Canvas/CanvasContext.d.ts +9 -0
  12. package/dist/esm/Canvas/CanvasContext.d.ts.map +1 -0
  13. package/dist/esm/Canvas/CanvasContext.js +4 -0
  14. package/dist/esm/Canvas/CanvasContext.js.map +1 -0
  15. package/dist/esm/Canvas/CanvasHandle.d.ts +13 -0
  16. package/dist/esm/Canvas/CanvasHandle.d.ts.map +1 -0
  17. package/dist/esm/Canvas/CanvasHandle.js +4 -0
  18. package/dist/esm/Canvas/CanvasHandle.js.map +1 -0
  19. package/dist/esm/Canvas/CanvasItem.js +4 -1
  20. package/dist/esm/Canvas/CanvasItem.js.map +1 -1
  21. package/dist/esm/Canvas/CanvasItemData.d.ts +10 -0
  22. package/dist/esm/Canvas/CanvasItemData.d.ts.map +1 -0
  23. package/dist/esm/Canvas/CanvasItemData.js +4 -0
  24. package/dist/esm/Canvas/CanvasItemData.js.map +1 -0
  25. package/dist/esm/Canvas/CanvasItemRegistryContext.d.ts +5 -0
  26. package/dist/esm/Canvas/CanvasItemRegistryContext.d.ts.map +1 -0
  27. package/dist/esm/Canvas/CanvasItemRegistryContext.js +6 -0
  28. package/dist/esm/Canvas/CanvasItemRegistryContext.js.map +1 -0
  29. package/dist/esm/Canvas/CanvasItemRegistryContextValue.d.ts +26 -0
  30. package/dist/esm/Canvas/CanvasItemRegistryContextValue.d.ts.map +1 -0
  31. package/dist/esm/Canvas/CanvasItemRegistryContextValue.js +4 -0
  32. package/dist/esm/Canvas/CanvasItemRegistryContextValue.js.map +1 -0
  33. package/dist/esm/Canvas/CanvasItemRegistryEntry.d.ts +19 -0
  34. package/dist/esm/Canvas/CanvasItemRegistryEntry.d.ts.map +1 -0
  35. package/dist/esm/Canvas/CanvasItemRegistryEntry.js +4 -0
  36. package/dist/esm/Canvas/CanvasItemRegistryEntry.js.map +1 -0
  37. package/dist/esm/Canvas/WebKitGestureEvent.d.ts +13 -0
  38. package/dist/esm/Canvas/WebKitGestureEvent.d.ts.map +1 -0
  39. package/dist/esm/Canvas/WebKitGestureEvent.js +4 -0
  40. package/dist/esm/Canvas/WebKitGestureEvent.js.map +1 -0
  41. package/dist/esm/Canvas/canvasEasing.d.ts +8 -0
  42. package/dist/esm/Canvas/canvasEasing.d.ts.map +1 -0
  43. package/dist/esm/Canvas/canvasEasing.js +8 -0
  44. package/dist/esm/Canvas/canvasEasing.js.map +1 -0
  45. package/dist/esm/Canvas/canvasGestureTuning.d.ts +6 -0
  46. package/dist/esm/Canvas/canvasGestureTuning.d.ts.map +1 -0
  47. package/dist/esm/Canvas/canvasGestureTuning.js +7 -0
  48. package/dist/esm/Canvas/canvasGestureTuning.js.map +1 -0
  49. package/dist/esm/Canvas/index.js +2 -1
  50. package/dist/esm/Canvas/index.js.map +1 -1
  51. package/dist/esm/Canvas/shapes/Region/Region.js +4 -1
  52. package/dist/esm/Canvas/shapes/Region/Region.js.map +1 -1
  53. package/dist/esm/Canvas/useCanvasCamera.d.ts +37 -0
  54. package/dist/esm/Canvas/useCanvasCamera.d.ts.map +1 -0
  55. package/dist/esm/Canvas/useCanvasCamera.js +79 -0
  56. package/dist/esm/Canvas/useCanvasCamera.js.map +1 -0
  57. package/dist/esm/Canvas/useCanvasItemRegistry.d.ts +14 -0
  58. package/dist/esm/Canvas/useCanvasItemRegistry.d.ts.map +1 -0
  59. package/dist/esm/Canvas/useCanvasItemRegistry.js +59 -0
  60. package/dist/esm/Canvas/useCanvasItemRegistry.js.map +1 -0
  61. package/dist/esm/Canvas/useCanvasNavigation.d.ts +36 -0
  62. package/dist/esm/Canvas/useCanvasNavigation.d.ts.map +1 -0
  63. package/dist/esm/Canvas/useCanvasNavigation.js +186 -0
  64. package/dist/esm/Canvas/useCanvasNavigation.js.map +1 -0
  65. package/dist/esm/Canvas/useCanvasPointerGestures.d.ts +34 -0
  66. package/dist/esm/Canvas/useCanvasPointerGestures.d.ts.map +1 -0
  67. package/dist/esm/Canvas/useCanvasPointerGestures.js +178 -0
  68. package/dist/esm/Canvas/useCanvasPointerGestures.js.map +1 -0
  69. package/dist/esm/Canvas/useCanvasWheelZoom.d.ts +23 -0
  70. package/dist/esm/Canvas/useCanvasWheelZoom.d.ts.map +1 -0
  71. package/dist/esm/Canvas/useCanvasWheelZoom.js +146 -0
  72. package/dist/esm/Canvas/useCanvasWheelZoom.js.map +1 -0
  73. package/dist/esm/Canvas/useLatestRef.d.ts +8 -0
  74. package/dist/esm/Canvas/useLatestRef.d.ts.map +1 -0
  75. package/dist/esm/Canvas/useLatestRef.js +12 -0
  76. package/dist/esm/Canvas/useLatestRef.js.map +1 -0
  77. package/dist/esm/Canvas/usePixiApplication.d.ts +32 -0
  78. package/dist/esm/Canvas/usePixiApplication.d.ts.map +1 -0
  79. package/dist/esm/Canvas/usePixiApplication.js +92 -0
  80. package/dist/esm/Canvas/usePixiApplication.js.map +1 -0
  81. package/dist/esm/Canvas/usePixiItems.d.ts +19 -0
  82. package/dist/esm/Canvas/usePixiItems.d.ts.map +1 -0
  83. package/dist/esm/Canvas/usePixiItems.js +49 -0
  84. package/dist/esm/Canvas/usePixiItems.js.map +1 -0
  85. package/dist/esm/Chat/ChatSidebar.d.ts.map +1 -1
  86. package/dist/esm/Chat/ChatSidebar.js +1 -1
  87. package/dist/esm/Chat/ChatSidebar.js.map +1 -1
  88. package/dist/esm/ClassNames/classNames.d.ts +7 -0
  89. package/dist/esm/ClassNames/classNames.d.ts.map +1 -0
  90. package/dist/esm/ClassNames/classNames.js +4 -0
  91. package/dist/esm/ClassNames/classNames.js.map +1 -0
  92. package/dist/esm/Common/Breadcrumbs.d.ts.map +1 -1
  93. package/dist/esm/Common/Breadcrumbs.js +1 -1
  94. package/dist/esm/Common/Breadcrumbs.js.map +1 -1
  95. package/dist/esm/Common/ComboBox.d.ts.map +1 -1
  96. package/dist/esm/Common/ComboBox.js +1 -1
  97. package/dist/esm/Common/ComboBox.js.map +1 -1
  98. package/dist/esm/Common/DatePickerInputImplementation.d.ts.map +1 -1
  99. package/dist/esm/Common/DatePickerInputImplementation.js +1 -1
  100. package/dist/esm/Common/DatePickerInputImplementation.js.map +1 -1
  101. package/dist/esm/Common/NumberInput.d.ts.map +1 -1
  102. package/dist/esm/Common/NumberInput.js +1 -1
  103. package/dist/esm/Common/NumberInput.js.map +1 -1
  104. package/dist/esm/Common/Tabs.d.ts.map +1 -1
  105. package/dist/esm/Common/Tabs.js +1 -1
  106. package/dist/esm/Common/Tabs.js.map +1 -1
  107. package/dist/esm/Common/TagGroup.d.ts.map +1 -1
  108. package/dist/esm/Common/TagGroup.js +1 -1
  109. package/dist/esm/Common/TagGroup.js.map +1 -1
  110. package/dist/esm/Common/ToggleGroup.d.ts.map +1 -1
  111. package/dist/esm/Common/ToggleGroup.js +1 -1
  112. package/dist/esm/Common/ToggleGroup.js.map +1 -1
  113. package/dist/esm/DataTables/ColumnFilterMenu.d.ts.map +1 -1
  114. package/dist/esm/DataTables/ColumnFilterMenu.js +1 -1
  115. package/dist/esm/DataTables/ColumnFilterMenu.js.map +1 -1
  116. package/dist/esm/DataTables/DataTableBody.d.ts +22 -0
  117. package/dist/esm/DataTables/DataTableBody.d.ts.map +1 -0
  118. package/dist/esm/DataTables/DataTableBody.js +10 -0
  119. package/dist/esm/DataTables/DataTableBody.js.map +1 -0
  120. package/dist/esm/DataTables/DataTableCore.d.ts +8 -48
  121. package/dist/esm/DataTables/DataTableCore.d.ts.map +1 -1
  122. package/dist/esm/DataTables/DataTableCore.js +50 -278
  123. package/dist/esm/DataTables/DataTableCore.js.map +1 -1
  124. package/dist/esm/DataTables/DataTableHeaderCell.d.ts +25 -0
  125. package/dist/esm/DataTables/DataTableHeaderCell.d.ts.map +1 -0
  126. package/dist/esm/DataTables/DataTableHeaderCell.js +26 -0
  127. package/dist/esm/DataTables/DataTableHeaderCell.js.map +1 -0
  128. package/dist/esm/DataTables/DataTableMessageOverrides.d.ts +12 -0
  129. package/dist/esm/DataTables/DataTableMessageOverrides.d.ts.map +1 -0
  130. package/dist/esm/DataTables/DataTableMessageOverrides.js +4 -0
  131. package/dist/esm/DataTables/DataTableMessageOverrides.js.map +1 -0
  132. package/dist/esm/DataTables/DataTableMessages.d.ts +12 -0
  133. package/dist/esm/DataTables/DataTableMessages.d.ts.map +1 -0
  134. package/dist/esm/DataTables/DataTableMessages.js +4 -0
  135. package/dist/esm/DataTables/DataTableMessages.js.map +1 -0
  136. package/dist/esm/DataTables/DataTableParts.d.ts +40 -0
  137. package/dist/esm/DataTables/DataTableParts.d.ts.map +1 -0
  138. package/dist/esm/DataTables/DataTableParts.js +4 -0
  139. package/dist/esm/DataTables/DataTableParts.js.map +1 -0
  140. package/dist/esm/DataTables/DataTableRow.d.ts +22 -0
  141. package/dist/esm/DataTables/DataTableRow.d.ts.map +1 -0
  142. package/dist/esm/DataTables/DataTableRow.js +25 -0
  143. package/dist/esm/DataTables/DataTableRow.js.map +1 -0
  144. package/dist/esm/DataTables/DataTableRowClickEvent.d.ts +8 -0
  145. package/dist/esm/DataTables/DataTableRowClickEvent.d.ts.map +1 -0
  146. package/dist/esm/DataTables/DataTableRowClickEvent.js +4 -0
  147. package/dist/esm/DataTables/DataTableRowClickEvent.js.map +1 -0
  148. package/dist/esm/DataTables/DataTableSearch.d.ts +13 -0
  149. package/dist/esm/DataTables/DataTableSearch.d.ts.map +1 -0
  150. package/dist/esm/DataTables/DataTableSearch.js +7 -0
  151. package/dist/esm/DataTables/DataTableSearch.js.map +1 -0
  152. package/dist/esm/DataTables/DataTableState.d.ts +18 -0
  153. package/dist/esm/DataTables/DataTableState.d.ts.map +1 -0
  154. package/dist/esm/DataTables/DataTableState.js +4 -0
  155. package/dist/esm/DataTables/DataTableState.js.map +1 -0
  156. package/dist/esm/DataTables/DataTableStateProps.d.ts +20 -0
  157. package/dist/esm/DataTables/DataTableStateProps.d.ts.map +1 -0
  158. package/dist/esm/DataTables/DataTableStateProps.js +4 -0
  159. package/dist/esm/DataTables/DataTableStateProps.js.map +1 -0
  160. package/dist/esm/DataTables/ProcessedRow.d.ts +8 -0
  161. package/dist/esm/DataTables/ProcessedRow.d.ts.map +1 -0
  162. package/dist/esm/DataTables/ProcessedRow.js +4 -0
  163. package/dist/esm/DataTables/ProcessedRow.js.map +1 -0
  164. package/dist/esm/DataTables/RowProcessingState.d.ts +17 -0
  165. package/dist/esm/DataTables/RowProcessingState.d.ts.map +1 -0
  166. package/dist/esm/DataTables/RowProcessingState.js +4 -0
  167. package/dist/esm/DataTables/RowProcessingState.js.map +1 -0
  168. package/dist/esm/DataTables/RowSelection.d.ts +19 -0
  169. package/dist/esm/DataTables/RowSelection.d.ts.map +1 -0
  170. package/dist/esm/DataTables/RowSelection.js +4 -0
  171. package/dist/esm/DataTables/RowSelection.js.map +1 -0
  172. package/dist/esm/DataTables/RowSelectionSource.d.ts +16 -0
  173. package/dist/esm/DataTables/RowSelectionSource.d.ts.map +1 -0
  174. package/dist/esm/DataTables/RowSelectionSource.js +4 -0
  175. package/dist/esm/DataTables/RowSelectionSource.js.map +1 -0
  176. package/dist/esm/DataTables/matchesFilterEntry.d.ts +15 -0
  177. package/dist/esm/DataTables/matchesFilterEntry.d.ts.map +1 -0
  178. package/dist/esm/DataTables/matchesFilterEntry.js +70 -0
  179. package/dist/esm/DataTables/matchesFilterEntry.js.map +1 -0
  180. package/dist/esm/DataTables/processRows.d.ts +10 -0
  181. package/dist/esm/DataTables/processRows.d.ts.map +1 -0
  182. package/dist/esm/DataTables/processRows.js +42 -0
  183. package/dist/esm/DataTables/processRows.js.map +1 -0
  184. package/dist/esm/DataTables/useDataTableMessages.d.ts +9 -0
  185. package/dist/esm/DataTables/useDataTableMessages.d.ts.map +1 -0
  186. package/dist/esm/DataTables/useDataTableMessages.js +33 -0
  187. package/dist/esm/DataTables/useDataTableMessages.js.map +1 -0
  188. package/dist/esm/DataTables/useDataTableState.d.ts +10 -0
  189. package/dist/esm/DataTables/useDataTableState.d.ts.map +1 -0
  190. package/dist/esm/DataTables/useDataTableState.js +19 -0
  191. package/dist/esm/DataTables/useDataTableState.js.map +1 -0
  192. package/dist/esm/DataTables/useRowSelection.d.ts +9 -0
  193. package/dist/esm/DataTables/useRowSelection.d.ts.map +1 -0
  194. package/dist/esm/DataTables/useRowSelection.js +87 -0
  195. package/dist/esm/DataTables/useRowSelection.js.map +1 -0
  196. package/dist/esm/DataTables/valueAtPath.d.ts +10 -0
  197. package/dist/esm/DataTables/valueAtPath.d.ts.map +1 -0
  198. package/dist/esm/DataTables/valueAtPath.js +18 -0
  199. package/dist/esm/DataTables/valueAtPath.js.map +1 -0
  200. package/dist/esm/Dialogs/DialogImplementation.d.ts.map +1 -1
  201. package/dist/esm/Dialogs/DialogImplementation.js +1 -1
  202. package/dist/esm/Dialogs/DialogImplementation.js.map +1 -1
  203. package/dist/esm/Display/Message.d.ts +8 -1
  204. package/dist/esm/Display/Message.d.ts.map +1 -1
  205. package/dist/esm/Display/Message.js +1 -1
  206. package/dist/esm/Display/Message.js.map +1 -1
  207. package/dist/esm/Dropdown/DropdownImplementation.d.ts.map +1 -1
  208. package/dist/esm/Dropdown/DropdownImplementation.js +1 -1
  209. package/dist/esm/Dropdown/DropdownImplementation.js.map +1 -1
  210. package/dist/esm/Notifications/Toaster.d.ts.map +1 -1
  211. package/dist/esm/Notifications/Toaster.js +1 -1
  212. package/dist/esm/Notifications/Toaster.js.map +1 -1
  213. package/dist/esm/PivotViewer/components/PivotCanvas.d.ts +7 -50
  214. package/dist/esm/PivotViewer/components/PivotCanvas.d.ts.map +1 -1
  215. package/dist/esm/PivotViewer/components/PivotCanvas.js +34 -433
  216. package/dist/esm/PivotViewer/components/PivotCanvas.js.map +1 -1
  217. package/dist/esm/PivotViewer/components/PivotCanvasProps.d.ts +51 -0
  218. package/dist/esm/PivotViewer/components/PivotCanvasProps.d.ts.map +1 -0
  219. package/dist/esm/PivotViewer/components/PivotCanvasProps.js +4 -0
  220. package/dist/esm/PivotViewer/components/PivotCanvasProps.js.map +1 -0
  221. package/dist/esm/PivotViewer/components/pivot/PivotRenderContext.d.ts +16 -0
  222. package/dist/esm/PivotViewer/components/pivot/PivotRenderContext.d.ts.map +1 -0
  223. package/dist/esm/PivotViewer/components/pivot/PivotRenderContext.js +4 -0
  224. package/dist/esm/PivotViewer/components/pivot/PivotRenderContext.js.map +1 -0
  225. package/dist/esm/PivotViewer/components/pivot/PivotStage.d.ts +19 -0
  226. package/dist/esm/PivotViewer/components/pivot/PivotStage.d.ts.map +1 -0
  227. package/dist/esm/PivotViewer/components/pivot/PivotStage.js +4 -0
  228. package/dist/esm/PivotViewer/components/pivot/PivotStage.js.map +1 -0
  229. package/dist/esm/PivotViewer/components/pivot/PivotTransitionState.d.ts +21 -0
  230. package/dist/esm/PivotViewer/components/pivot/PivotTransitionState.d.ts.map +1 -0
  231. package/dist/esm/PivotViewer/components/pivot/PivotTransitionState.js +4 -0
  232. package/dist/esm/PivotViewer/components/pivot/PivotTransitionState.js.map +1 -0
  233. package/dist/esm/PivotViewer/components/pivot/asReactMouseEvent.d.ts +8 -0
  234. package/dist/esm/PivotViewer/components/pivot/asReactMouseEvent.d.ts.map +1 -0
  235. package/dist/esm/PivotViewer/components/pivot/asReactMouseEvent.js +6 -0
  236. package/dist/esm/PivotViewer/components/pivot/asReactMouseEvent.js.map +1 -0
  237. package/dist/esm/PivotViewer/components/pivot/sprites.js +1 -1
  238. package/dist/esm/PivotViewer/components/pivot/usePivotCardColors.d.ts +22 -0
  239. package/dist/esm/PivotViewer/components/pivot/usePivotCardColors.d.ts.map +1 -0
  240. package/dist/esm/PivotViewer/components/pivot/usePivotCardColors.js +25 -0
  241. package/dist/esm/PivotViewer/components/pivot/usePivotCardColors.js.map +1 -0
  242. package/dist/esm/PivotViewer/components/pivot/usePivotGroupBackgrounds.d.ts +8 -0
  243. package/dist/esm/PivotViewer/components/pivot/usePivotGroupBackgrounds.d.ts.map +1 -0
  244. package/dist/esm/PivotViewer/components/pivot/usePivotGroupBackgrounds.js +53 -0
  245. package/dist/esm/PivotViewer/components/pivot/usePivotGroupBackgrounds.js.map +1 -0
  246. package/dist/esm/PivotViewer/components/pivot/usePivotScrollSync.d.ts +8 -0
  247. package/dist/esm/PivotViewer/components/pivot/usePivotScrollSync.d.ts.map +1 -0
  248. package/dist/esm/PivotViewer/components/pivot/usePivotScrollSync.js +100 -0
  249. package/dist/esm/PivotViewer/components/pivot/usePivotScrollSync.js.map +1 -0
  250. package/dist/esm/PivotViewer/components/pivot/usePivotSelectionHighlight.d.ts +7 -0
  251. package/dist/esm/PivotViewer/components/pivot/usePivotSelectionHighlight.d.ts.map +1 -0
  252. package/dist/esm/PivotViewer/components/pivot/usePivotSelectionHighlight.js +35 -0
  253. package/dist/esm/PivotViewer/components/pivot/usePivotSelectionHighlight.js.map +1 -0
  254. package/dist/esm/PivotViewer/components/pivot/usePivotSpriteSync.d.ts +8 -0
  255. package/dist/esm/PivotViewer/components/pivot/usePivotSpriteSync.d.ts.map +1 -0
  256. package/dist/esm/PivotViewer/components/pivot/usePivotSpriteSync.js +123 -0
  257. package/dist/esm/PivotViewer/components/pivot/usePivotSpriteSync.js.map +1 -0
  258. package/dist/esm/PivotViewer/components/pivot/usePivotStage.d.ts +21 -0
  259. package/dist/esm/PivotViewer/components/pivot/usePivotStage.d.ts.map +1 -0
  260. package/dist/esm/PivotViewer/components/pivot/usePivotStage.js +171 -0
  261. package/dist/esm/PivotViewer/components/pivot/usePivotStage.js.map +1 -0
  262. package/dist/esm/PivotViewer/components/pivot/usePivotTransitionState.d.ts +13 -0
  263. package/dist/esm/PivotViewer/components/pivot/usePivotTransitionState.d.ts.map +1 -0
  264. package/dist/esm/PivotViewer/components/pivot/usePivotTransitionState.js +31 -0
  265. package/dist/esm/PivotViewer/components/pivot/usePivotTransitionState.js.map +1 -0
  266. package/dist/esm/TimeMachine/EventsView.d.ts.map +1 -1
  267. package/dist/esm/TimeMachine/EventsView.js +1 -1
  268. package/dist/esm/TimeMachine/EventsView.js.map +1 -1
  269. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownImplementation.js","sources":["../../../Dropdown/DropdownImplementation.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport type { JSX, Key, MouseEvent, RefObject } from 'react';\nimport {\n Button as AriaButton,\n ListBox,\n ListBoxItem,\n Popover,\n Select as AriaSelect,\n SelectValue,\n} from 'react-aria-components/Select';\nimport {\n Button as ComboBoxButton,\n ComboBox,\n ComboBoxStateContext,\n ComboBoxValue,\n Input,\n ListBox as ComboBoxListBox,\n ListBoxItem as ComboBoxListBoxItem,\n Popover as ComboBoxPopover,\n} from 'react-aria-components/ComboBox';\nimport { UNSAFE_PortalProvider } from 'react-aria';\nimport { unstable_useOverlayEnvironment } from '../renderer/RendererContext';\nimport { useCratisComponentsConfig } from '../Common/CratisComponentsProvider';\nimport { useCratisIcon } from '../configuration/useCratisIcon';\nimport { OVERLAY_OFFSET, zIndexAboveDialog } from '../renderer/dialogStack';\nimport { useNearestDialogZIndex } from '../renderer/DialogStackContext';\nimport type { DropdownProps } from './Dropdown';\nimport { useExternalLabel } from './useExternalLabel';\nimport {\n asReactAriaButtonProps,\n asReactAriaListBoxItemProps,\n asReactAriaListBoxProps,\n} from '../Common/reactAriaProps';\n\ntype DropdownOptionValue =\n string | number | boolean | bigint | symbol | object | null | undefined;\n\ninterface ResolvedOption {\n key: string;\n label: string;\n value: unknown;\n disabled: boolean;\n}\n\nconst conventionalField = (\n options: unknown[] | undefined,\n field: 'label' | 'value',\n): string | undefined => {\n const first = options?.[0];\n return first !== null && typeof first === 'object' && field in first\n ? field\n : undefined;\n};\n\nconst optionValue = (value: unknown): DropdownOptionValue => {\n if (typeof value === 'function') return String(value);\n return value as DropdownOptionValue;\n};\n\nconst readField = (option: unknown, field: string | undefined): DropdownOptionValue => {\n if (!field || option === null || typeof option !== 'object')\n return optionValue(option);\n return field in option\n ? optionValue((option as Record<string, unknown>)[field])\n : optionValue(option);\n};\n\nconst resolveOptions = (\n options: unknown[] | undefined,\n optionLabel: string | undefined,\n optionValue: string | undefined,\n): ResolvedOption[] =>\n (options ?? []).map((option, index) => {\n const value = readField(option, optionValue);\n const labelValue = readField(option, optionLabel);\n const keyValue = value ?? index;\n const disabled =\n option !== null && typeof option === 'object' && 'disabled' in option\n ? Boolean((option as { disabled?: unknown }).disabled)\n : false;\n\n return {\n key: `${typeof keyValue}:${String(keyValue)}:${index}`,\n label: String(labelValue ?? value ?? ''),\n value,\n disabled,\n };\n });\n\nconst classNames = (...values: Array<string | undefined>) =>\n values.filter(Boolean).join(' ');\n\n/** The part of the ComboBox lifecycle a commit has to reach, from outside the ComboBox subtree. */\ninterface CommittableComboBox {\n close: () => void;\n}\n\n/**\n * Publishes the ComboBox state to the commit handler, which is declared outside the ComboBox and so\n * cannot read the context itself. Renders nothing.\n */\nconst ComboBoxCommitBridge = ({\n handle,\n}: {\n handle: RefObject<CommittableComboBox | null>;\n}) => {\n const state = useContext(ComboBoxStateContext);\n useEffect(() => {\n handle.current = state;\n return () => {\n handle.current = null;\n };\n });\n return null;\n};\n\nconst renderTriggerWithOpenState = (props: JSX.IntrinsicElements['button']) => (\n <button\n {...props}\n data-open={\n props['aria-expanded'] === true || props['aria-expanded'] === 'true'\n ? true\n : undefined\n }\n />\n);\n\n/** A renderer-independent single or multiple select with stable Cratis parts. */\nexport const DropdownImplementation = <T = unknown,>({\n value,\n options,\n optionLabel = conventionalField(options, 'label'),\n optionValue = conventionalField(options, 'value'),\n placeholder,\n filter,\n filterPlaceholder,\n multiple,\n showClear,\n invalid,\n disabled,\n className,\n style,\n id,\n inputId,\n panelClassName,\n name,\n tabIndex,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n ariaLabel: ariaLabelAlias,\n ariaLabelledBy,\n ariaDescribedBy,\n ariaInvalid,\n onChange,\n onBlur,\n pt,\n}: DropdownProps<T>) => {\n const [isOpen, setIsOpen] = useState(false);\n const comboBox = useRef<CommittableComboBox | null>(null);\n const { ref: attachExternalLabel, labelledBy: externalLabelledBy } = useExternalLabel();\n const overlayEnvironment = unstable_useOverlayEnvironment();\n const nearestDialogZIndex = useNearestDialogZIndex();\n const resolvedPopoverZIndex =\n nearestDialogZIndex === null\n ? 'var(--cratis-z-index-overlay)'\n : zIndexAboveDialog(nearestDialogZIndex, OVERLAY_OFFSET);\n const { messages } = useCratisComponentsConfig();\n const dropdownMessages = messages?.dropdown;\n const showOptionsLabel =\n pt?.trigger?.['aria-label'] ??\n pt?.select?.['aria-label'] ??\n dropdownMessages?.showOptions ??\n 'Show options';\n const clearSelectionLabel =\n pt?.clear?.['aria-label'] ??\n dropdownMessages?.clearSelection ??\n 'Clear selection';\n const icon = useCratisIcon();\n const expandIcon = icon('expand', '⌄');\n const clearIcon = icon('clear', '×');\n const resolvedOptions = resolveOptions(options, optionLabel, optionValue);\n // React Aria decides that a selection happened - and only then closes the overlay and syncs the\n // filter text - by watching the key handed to it change. Deriving that key from `value` alone\n // means a consumer that does not feed the emitted value straight back gets a committed selection\n // the Dropdown never acts on: the popup stays open over an unchanged filter. Remembering what the\n // user just committed keeps the commit whole on its own, while an incoming `value` still wins and\n // still drops the memory the moment the consumer answers.\n const [committed, setCommitted] = useState<{\n key: string | null;\n observedValue: unknown;\n } | null>(null);\n const remembered =\n committed !== null && Object.is(committed.observedValue, value)\n ? committed\n : null;\n const remember = (key: string | null) => setCommitted({ key, observedValue: value });\n const selectedOption =\n resolvedOptions.find((option) => Object.is(option.value, value)) ??\n (remembered?.key == null\n ? undefined\n : resolvedOptions.find((option) => option.key === remembered.key));\n const selectedKey = selectedOption?.key ?? null;\n const controlPart = filter ? pt?.filter : multiple ? pt?.multiple : pt?.trigger;\n const effectiveAriaLabel =\n ariaLabel ??\n ariaLabelAlias ??\n pt?.input?.['aria-label'] ??\n pt?.select?.['aria-label'] ??\n controlPart?.['aria-label'];\n const effectiveAriaLabelledby =\n ariaLabelledby ??\n ariaLabelledBy ??\n pt?.input?.['aria-labelledby'] ??\n pt?.select?.['aria-labelledby'] ??\n controlPart?.['aria-labelledby'] ??\n (effectiveAriaLabel ? undefined : externalLabelledBy);\n const effectiveAriaDescribedby =\n ariaDescribedby ??\n ariaDescribedBy ??\n pt?.input?.['aria-describedby'] ??\n pt?.select?.['aria-describedby'];\n const inputAriaInvalid = pt?.input?.['aria-invalid'] ?? pt?.select?.['aria-invalid'];\n const effectiveInvalid =\n invalid ??\n ariaInvalid ??\n (inputAriaInvalid === true ||\n inputAriaInvalid === 'true' ||\n inputAriaInvalid === 'grammar' ||\n inputAriaInvalid === 'spelling');\n const rootClassName = classNames(\n 'cratis-dropdown',\n pt?.root?.className,\n pt?.select?.className,\n className,\n );\n const triggerId = id ?? inputId ?? pt?.trigger?.id ?? pt?.input?.id ?? pt?.select?.id;\n\n const selectOption = (key: Key | null) => {\n const option = resolvedOptions.find((candidate) => candidate.key === String(key));\n remember(option?.key ?? null);\n onChange?.((option?.value ?? null) as T, { source: 'user' });\n // React Aria hands the closing of a filtered overlay to whoever owns the value, and stands\n // down when that value does not come back as one of the options. Nothing about a committed\n // option is the consumer's to close, so close it here and let the filter text follow the\n // selection the Dropdown ends up showing.\n comboBox.current?.close();\n };\n const clearSelection = (event: MouseEvent<HTMLButtonElement>) => {\n remember(null);\n onChange?.(null as T, { source: 'user', nativeEvent: event.nativeEvent });\n };\n const selectOptions = (keys: readonly Key[]) => {\n const selectedKeys = new Set(keys.map(String));\n const values = resolvedOptions\n .filter((option) => selectedKeys.has(option.key))\n .map((option) => option.value);\n onChange?.(values as T, { source: 'user' });\n };\n // React Aria's Select trigger context does not forward aria-invalid from its Button child.\n // Keep the Cratis validation contract on the actual focusable control after context props merge.\n const applyTriggerState = useCallback((element: HTMLButtonElement | null) => {\n attachExternalLabel(element);\n if (!element) return;\n // React Aria puts the selected value first. Keep the field label first while\n // preserving the selected-value reference and all other context-generated ids.\n if (effectiveAriaLabelledby) {\n const references = [\n ...effectiveAriaLabelledby.split(/\\s+/u),\n ...(element.getAttribute('aria-labelledby') ?? '').split(/\\s+/u),\n ].filter(Boolean);\n element.setAttribute('aria-labelledby', [...new Set(references)].join(' '));\n }\n if (effectiveInvalid) element.setAttribute('aria-invalid', 'true');\n else element.removeAttribute('aria-invalid');\n if (tabIndex !== undefined) element.tabIndex = tabIndex;\n }, [effectiveAriaLabelledby, effectiveInvalid, attachExternalLabel, tabIndex]);\n\n if (multiple) {\n const selectedValues = Array.isArray(value) ? value : [];\n const selectedKeys = resolvedOptions\n .filter((option) =>\n selectedValues.some((selected) => Object.is(selected, option.value)),\n )\n .map((option) => option.key);\n\n if (filter) {\n return (\n <span\n {...pt?.root}\n className={rootClassName}\n data-cratis-part='root'\n data-invalid={effectiveInvalid || undefined}\n data-disabled={disabled || undefined}\n data-open={isOpen || undefined}\n data-selected={selectedKeys.length > 0 || undefined}\n style={{ ...pt?.root?.style, ...pt?.select?.style, ...style }}\n onBlur={onBlur}\n >\n <UNSAFE_PortalProvider getContainer={overlayEnvironment.getContainer}>\n <ComboBox\n selectionMode='multiple'\n onOpenChange={setIsOpen}\n value={selectedKeys}\n onChange={selectOptions}\n isDisabled={disabled}\n isInvalid={effectiveInvalid}\n name={name}\n aria-label={effectiveAriaLabel}\n aria-labelledby={effectiveAriaLabelledby}\n aria-describedby={effectiveAriaDescribedby}\n allowsEmptyCollection\n className='cratis-dropdown__combobox'\n >\n <ComboBoxValue\n {...pt?.value}\n placeholder={placeholder}\n className={classNames(\n 'cratis-dropdown__value',\n pt?.value?.className,\n )}\n data-cratis-part='value'\n data-disabled={disabled || undefined}\n data-invalid={effectiveInvalid || undefined}\n data-open={isOpen || undefined}\n data-selected={selectedKeys.length > 0 || undefined}\n />\n <Input\n {...pt?.filter}\n ref={attachExternalLabel}\n id={triggerId}\n placeholder={filterPlaceholder ?? placeholder}\n tabIndex={tabIndex}\n aria-invalid={effectiveInvalid || undefined}\n className={classNames(\n 'cratis-dropdown__filter',\n pt?.input?.className,\n pt?.filter?.className,\n )}\n style={{ ...pt?.input?.style, ...pt?.filter?.style }}\n data-cratis-part='filter'\n data-disabled={disabled || undefined}\n data-invalid={effectiveInvalid || undefined}\n data-open={isOpen || undefined}\n />\n <ComboBoxButton\n {...asReactAriaButtonProps(pt?.trigger)}\n className={classNames(\n 'cratis-dropdown__indicator',\n pt?.trigger?.className,\n )}\n data-cratis-part='trigger'\n data-disabled={disabled || undefined}\n data-invalid={effectiveInvalid || undefined}\n data-selected={selectedKeys.length > 0 || undefined}\n render={renderTriggerWithOpenState}\n aria-label={showOptionsLabel}\n >\n <span aria-hidden='true'>{expandIcon}</span>\n </ComboBoxButton>\n {showClear && selectedKeys.length > 0 && (\n <button\n {...pt?.clear}\n type='button'\n disabled={disabled}\n className={classNames(\n 'cratis-dropdown__clear',\n pt?.clear?.className,\n )}\n data-cratis-part='clear'\n data-disabled={disabled || undefined}\n aria-label={clearSelectionLabel}\n onClick={(event) =>\n onChange?.([] as T, {\n source: 'user',\n nativeEvent: event.nativeEvent,\n })\n }\n >\n <span aria-hidden='true'>{clearIcon}</span>\n </button>\n )}\n <ComboBoxPopover\n {...pt?.popover}\n className={classNames(\n 'cratis-dropdown__popover',\n pt?.popover?.className,\n panelClassName,\n )}\n style={{\n zIndex: resolvedPopoverZIndex,\n ...pt?.popover?.style,\n }}\n data-cratis-part='popover'\n data-open\n >\n <ComboBoxListBox\n {...asReactAriaListBoxProps<ResolvedOption>(\n pt?.listbox,\n )}\n items={resolvedOptions}\n className={classNames(\n 'cratis-dropdown__listbox',\n pt?.listbox?.className,\n )}\n data-cratis-part='listbox'\n data-open\n >\n {(option) => (\n <ComboBoxListBoxItem\n {...asReactAriaListBoxItemProps<ResolvedOption>(\n pt?.option,\n )}\n id={option.key}\n textValue={option.label}\n isDisabled={option.disabled}\n className={classNames(\n 'cratis-dropdown__option',\n pt?.option?.className,\n )}\n data-cratis-part='option'\n data-disabled={option.disabled || undefined}\n data-selected={\n selectedKeys.includes(option.key) ||\n undefined\n }\n >\n {option.label}\n </ComboBoxListBoxItem>\n )}\n </ComboBoxListBox>\n </ComboBoxPopover>\n </ComboBox>\n </UNSAFE_PortalProvider>\n </span>\n );\n }\n\n return (\n <span\n {...pt?.root}\n className={rootClassName}\n data-cratis-part='root'\n data-invalid={effectiveInvalid || undefined}\n data-disabled={disabled || undefined}\n data-selected={selectedKeys.length > 0 || undefined}\n style={{ ...pt?.root?.style, ...pt?.select?.style, ...style }}\n onBlur={onBlur}\n >\n <select\n {...pt?.multiple}\n ref={attachExternalLabel}\n id={triggerId ?? pt?.multiple?.id}\n name={name}\n multiple\n disabled={disabled}\n value={selectedKeys}\n tabIndex={tabIndex}\n aria-label={effectiveAriaLabel}\n aria-labelledby={effectiveAriaLabelledby}\n aria-describedby={effectiveAriaDescribedby}\n aria-invalid={effectiveInvalid || undefined}\n className={classNames(\n 'cratis-dropdown__multiple',\n pt?.input?.className,\n pt?.multiple?.className,\n )}\n data-cratis-part='multiple'\n data-disabled={disabled || undefined}\n data-invalid={effectiveInvalid || undefined}\n data-selected={selectedKeys.length > 0 || undefined}\n onChange={(event) => {\n const keys = Array.from(\n event.currentTarget.selectedOptions,\n (option) => option.value,\n );\n const values = resolvedOptions\n .filter((option) => keys.includes(option.key))\n .map((option) => option.value);\n onChange?.(values as T, {\n source: 'user',\n nativeEvent: event.nativeEvent,\n });\n }}\n >\n {resolvedOptions.map((option) => (\n <option\n key={option.key}\n value={option.key}\n disabled={option.disabled}\n data-disabled={option.disabled || undefined}\n data-selected={selectedKeys.includes(option.key) || undefined}\n >\n {option.label}\n </option>\n ))}\n </select>\n {showClear && selectedKeys.length > 0 && (\n <button\n {...pt?.clear}\n type='button'\n disabled={disabled}\n className={classNames(\n 'cratis-dropdown__clear',\n pt?.clear?.className,\n )}\n data-cratis-part='clear'\n data-disabled={disabled || undefined}\n aria-label={clearSelectionLabel}\n onClick={(event) =>\n onChange?.([] as T, {\n source: 'user',\n nativeEvent: event.nativeEvent,\n })\n }\n >\n <span aria-hidden='true'>{clearIcon}</span>\n </button>\n )}\n </span>\n );\n }\n\n if (filter) {\n return (\n <span\n {...pt?.root}\n className={rootClassName}\n data-cratis-part='root'\n data-invalid={effectiveInvalid || undefined}\n data-disabled={disabled || undefined}\n data-open={isOpen || undefined}\n data-selected={selectedKey !== null || undefined}\n style={{ ...pt?.root?.style, ...pt?.select?.style, ...style }}\n onBlur={onBlur}\n >\n <UNSAFE_PortalProvider getContainer={overlayEnvironment.getContainer}>\n <ComboBox\n onOpenChange={setIsOpen}\n value={selectedKey}\n onChange={selectOption}\n isDisabled={disabled}\n isInvalid={effectiveInvalid}\n name={name}\n aria-label={effectiveAriaLabel}\n aria-labelledby={effectiveAriaLabelledby}\n aria-describedby={effectiveAriaDescribedby}\n allowsEmptyCollection\n className='cratis-dropdown__combobox'\n >\n <ComboBoxCommitBridge handle={comboBox} />\n <Input\n {...pt?.filter}\n ref={attachExternalLabel}\n id={triggerId}\n placeholder={filterPlaceholder ?? placeholder}\n tabIndex={tabIndex}\n aria-invalid={effectiveInvalid || undefined}\n className={classNames(\n 'cratis-dropdown__filter',\n pt?.input?.className,\n pt?.filter?.className,\n )}\n style={{ ...pt?.input?.style, ...pt?.filter?.style }}\n data-cratis-part='filter'\n data-disabled={disabled || undefined}\n data-invalid={effectiveInvalid || undefined}\n data-open={isOpen || undefined}\n />\n <ComboBoxButton\n {...asReactAriaButtonProps(pt?.trigger)}\n className={classNames(\n 'cratis-dropdown__indicator',\n pt?.trigger?.className,\n )}\n data-cratis-part='trigger'\n data-disabled={disabled || undefined}\n data-invalid={effectiveInvalid || undefined}\n data-selected={selectedKey !== null || undefined}\n render={renderTriggerWithOpenState}\n aria-label={showOptionsLabel}\n >\n <span aria-hidden='true'>{expandIcon}</span>\n </ComboBoxButton>\n {showClear && selectedKey !== null && (\n <button\n {...pt?.clear}\n type='button'\n disabled={disabled}\n className={classNames(\n 'cratis-dropdown__clear',\n pt?.clear?.className,\n )}\n data-cratis-part='clear'\n data-disabled={disabled || undefined}\n aria-label={clearSelectionLabel}\n onClick={clearSelection}\n >\n <span aria-hidden='true'>{clearIcon}</span>\n </button>\n )}\n <ComboBoxPopover\n {...pt?.popover}\n className={classNames(\n 'cratis-dropdown__popover',\n pt?.popover?.className,\n panelClassName,\n )}\n style={{\n zIndex: resolvedPopoverZIndex,\n ...pt?.popover?.style,\n }}\n data-cratis-part='popover'\n data-open\n >\n <ComboBoxListBox\n {...asReactAriaListBoxProps<ResolvedOption>(pt?.listbox)}\n items={resolvedOptions}\n className={classNames(\n 'cratis-dropdown__listbox',\n pt?.listbox?.className,\n )}\n data-cratis-part='listbox'\n data-open\n >\n {(option) => (\n <ComboBoxListBoxItem\n {...asReactAriaListBoxItemProps<ResolvedOption>(\n pt?.option,\n )}\n id={option.key}\n textValue={option.label}\n isDisabled={option.disabled}\n className={classNames(\n 'cratis-dropdown__option',\n pt?.option?.className,\n )}\n data-cratis-part='option'\n data-disabled={option.disabled || undefined}\n data-selected={\n option.key === selectedKey || undefined\n }\n >\n {option.label}\n </ComboBoxListBoxItem>\n )}\n </ComboBoxListBox>\n </ComboBoxPopover>\n </ComboBox>\n </UNSAFE_PortalProvider>\n </span>\n );\n }\n\n return (\n <span\n {...pt?.root}\n className={rootClassName}\n data-cratis-part='root'\n data-invalid={effectiveInvalid || undefined}\n data-disabled={disabled || undefined}\n data-open={isOpen || undefined}\n data-selected={selectedKey !== null || undefined}\n style={{ ...pt?.root?.style, ...pt?.select?.style, ...style }}\n onBlur={onBlur}\n >\n <UNSAFE_PortalProvider getContainer={overlayEnvironment.getContainer}>\n <AriaSelect\n onOpenChange={setIsOpen}\n value={selectedKey}\n onChange={selectOption}\n isDisabled={disabled}\n isInvalid={effectiveInvalid}\n name={name}\n aria-label={effectiveAriaLabel}\n aria-labelledby={effectiveAriaLabelledby}\n aria-describedby={effectiveAriaDescribedby}\n className='cratis-dropdown__select'\n >\n <AriaButton\n {...asReactAriaButtonProps(pt?.trigger)}\n ref={applyTriggerState}\n id={triggerId}\n excludeFromTabOrder={tabIndex === -1}\n aria-invalid={effectiveInvalid || undefined}\n className={classNames(\n 'cratis-dropdown__trigger',\n pt?.input?.className,\n pt?.trigger?.className,\n )}\n style={{ ...pt?.input?.style, ...pt?.trigger?.style }}\n data-cratis-part='trigger'\n data-disabled={disabled || undefined}\n data-invalid={effectiveInvalid || undefined}\n data-selected={selectedKey !== null || undefined}\n render={renderTriggerWithOpenState}\n >\n <SelectValue\n {...pt?.value}\n className={classNames(\n 'cratis-dropdown__value',\n pt?.value?.className,\n )}\n data-cratis-part='value'\n data-disabled={disabled || undefined}\n data-invalid={effectiveInvalid || undefined}\n data-open={isOpen || undefined}\n data-selected={selectedKey !== null || undefined}\n >\n {selectedOption?.label ?? placeholder}\n </SelectValue>\n <span\n {...pt?.indicator}\n className={classNames(\n 'cratis-dropdown__indicator',\n pt?.indicator?.className,\n )}\n data-cratis-part='indicator'\n data-disabled={disabled || undefined}\n data-invalid={effectiveInvalid || undefined}\n data-open={isOpen || undefined}\n aria-hidden='true'\n >\n {expandIcon}\n </span>\n </AriaButton>\n {showClear && selectedKey !== null && (\n <button\n {...pt?.clear}\n type='button'\n disabled={disabled}\n className={classNames(\n 'cratis-dropdown__clear',\n pt?.clear?.className,\n )}\n data-cratis-part='clear'\n data-disabled={disabled || undefined}\n aria-label={clearSelectionLabel}\n onClick={clearSelection}\n >\n <span aria-hidden='true'>{clearIcon}</span>\n </button>\n )}\n <Popover\n {...pt?.popover}\n className={classNames(\n 'cratis-dropdown__popover',\n pt?.popover?.className,\n panelClassName,\n )}\n style={{\n zIndex: resolvedPopoverZIndex,\n ...pt?.popover?.style,\n }}\n data-cratis-part='popover'\n data-open\n >\n <ListBox\n {...asReactAriaListBoxProps<ResolvedOption>(pt?.listbox)}\n items={resolvedOptions}\n className={classNames(\n 'cratis-dropdown__listbox',\n pt?.listbox?.className,\n )}\n data-cratis-part='listbox'\n data-open\n >\n {(option) => (\n <ListBoxItem\n {...asReactAriaListBoxItemProps<ResolvedOption>(\n pt?.option,\n )}\n id={option.key}\n textValue={option.label}\n isDisabled={option.disabled}\n className={classNames(\n 'cratis-dropdown__option',\n pt?.option?.className,\n )}\n data-cratis-part='option'\n data-disabled={option.disabled || undefined}\n data-selected={\n option.key === selectedKey || undefined\n }\n >\n {option.label}\n </ListBoxItem>\n )}\n </ListBox>\n </Popover>\n </AriaSelect>\n </UNSAFE_PortalProvider>\n </span>\n );\n};\n\nDropdownImplementation.displayName = 'DropdownImplementation';\n"],"names":["_jsx","_jsxs","ComboBoxButton","ComboBoxPopover","ComboBoxListBox","ComboBoxListBoxItem","AriaSelect","AriaButton","Popover","ListBox","ListBoxItem"],"mappings":"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"}
1
+ {"version":3,"file":"DropdownImplementation.js","sources":["../../../Dropdown/DropdownImplementation.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport type { JSX, Key, MouseEvent, RefObject } from 'react';\nimport {\n Button as AriaButton,\n ListBox,\n ListBoxItem,\n Popover,\n Select as AriaSelect,\n SelectValue,\n} from 'react-aria-components/Select';\nimport {\n Button as ComboBoxButton,\n ComboBox,\n ComboBoxStateContext,\n ComboBoxValue,\n Input,\n ListBox as ComboBoxListBox,\n ListBoxItem as ComboBoxListBoxItem,\n Popover as ComboBoxPopover,\n} from 'react-aria-components/ComboBox';\nimport { UNSAFE_PortalProvider } from 'react-aria';\nimport { unstable_useOverlayEnvironment } from '../renderer/RendererContext';\nimport { useCratisComponentsConfig } from '../Common/CratisComponentsProvider';\nimport { useCratisIcon } from '../configuration/useCratisIcon';\nimport { OVERLAY_OFFSET, zIndexAboveDialog } from '../renderer/dialogStack';\nimport { useNearestDialogZIndex } from '../renderer/DialogStackContext';\nimport type { DropdownProps } from './Dropdown';\nimport { useExternalLabel } from './useExternalLabel';\nimport {\n asReactAriaButtonProps,\n asReactAriaListBoxItemProps,\n asReactAriaListBoxProps,\n} from '../Common/reactAriaProps';\nimport { classNames } from '../ClassNames/classNames';\n\ntype DropdownOptionValue =\n string | number | boolean | bigint | symbol | object | null | undefined;\n\ninterface ResolvedOption {\n key: string;\n label: string;\n value: unknown;\n disabled: boolean;\n}\n\nconst conventionalField = (\n options: unknown[] | undefined,\n field: 'label' | 'value',\n): string | undefined => {\n const first = options?.[0];\n return first !== null && typeof first === 'object' && field in first\n ? field\n : undefined;\n};\n\nconst optionValue = (value: unknown): DropdownOptionValue => {\n if (typeof value === 'function') return String(value);\n return value as DropdownOptionValue;\n};\n\nconst readField = (option: unknown, field: string | undefined): DropdownOptionValue => {\n if (!field || option === null || typeof option !== 'object')\n return optionValue(option);\n return field in option\n ? optionValue((option as Record<string, unknown>)[field])\n : optionValue(option);\n};\n\nconst resolveOptions = (\n options: unknown[] | undefined,\n optionLabel: string | undefined,\n optionValue: string | undefined,\n): ResolvedOption[] =>\n (options ?? []).map((option, index) => {\n const value = readField(option, optionValue);\n const labelValue = readField(option, optionLabel);\n const keyValue = value ?? index;\n const disabled =\n option !== null && typeof option === 'object' && 'disabled' in option\n ? Boolean((option as { disabled?: unknown }).disabled)\n : false;\n\n return {\n key: `${typeof keyValue}:${String(keyValue)}:${index}`,\n label: String(labelValue ?? value ?? ''),\n value,\n disabled,\n };\n });\n\n/** The part of the ComboBox lifecycle a commit has to reach, from outside the ComboBox subtree. */\ninterface CommittableComboBox {\n close: () => void;\n}\n\n/**\n * Publishes the ComboBox state to the commit handler, which is declared outside the ComboBox and so\n * cannot read the context itself. Renders nothing.\n */\nconst ComboBoxCommitBridge = ({\n handle,\n}: {\n handle: RefObject<CommittableComboBox | null>;\n}) => {\n const state = useContext(ComboBoxStateContext);\n useEffect(() => {\n handle.current = state;\n return () => {\n handle.current = null;\n };\n });\n return null;\n};\n\nconst renderTriggerWithOpenState = (props: JSX.IntrinsicElements['button']) => (\n <button\n {...props}\n data-open={\n props['aria-expanded'] === true || props['aria-expanded'] === 'true'\n ? true\n : undefined\n }\n />\n);\n\n/** A renderer-independent single or multiple select with stable Cratis parts. */\nexport const DropdownImplementation = <T = unknown,>({\n value,\n options,\n optionLabel = conventionalField(options, 'label'),\n optionValue = conventionalField(options, 'value'),\n placeholder,\n filter,\n filterPlaceholder,\n multiple,\n showClear,\n invalid,\n disabled,\n className,\n style,\n id,\n inputId,\n panelClassName,\n name,\n tabIndex,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n ariaLabel: ariaLabelAlias,\n ariaLabelledBy,\n ariaDescribedBy,\n ariaInvalid,\n onChange,\n onBlur,\n pt,\n}: DropdownProps<T>) => {\n const [isOpen, setIsOpen] = useState(false);\n const comboBox = useRef<CommittableComboBox | null>(null);\n const { ref: attachExternalLabel, labelledBy: externalLabelledBy } = useExternalLabel();\n const overlayEnvironment = unstable_useOverlayEnvironment();\n const nearestDialogZIndex = useNearestDialogZIndex();\n const resolvedPopoverZIndex =\n nearestDialogZIndex === null\n ? 'var(--cratis-z-index-overlay)'\n : zIndexAboveDialog(nearestDialogZIndex, OVERLAY_OFFSET);\n const { messages } = useCratisComponentsConfig();\n const dropdownMessages = messages?.dropdown;\n const showOptionsLabel =\n pt?.trigger?.['aria-label'] ??\n pt?.select?.['aria-label'] ??\n dropdownMessages?.showOptions ??\n 'Show options';\n const clearSelectionLabel =\n pt?.clear?.['aria-label'] ??\n dropdownMessages?.clearSelection ??\n 'Clear selection';\n const icon = useCratisIcon();\n const expandIcon = icon('expand', '⌄');\n const clearIcon = icon('clear', '×');\n const resolvedOptions = resolveOptions(options, optionLabel, optionValue);\n // React Aria decides that a selection happened - and only then closes the overlay and syncs the\n // filter text - by watching the key handed to it change. Deriving that key from `value` alone\n // means a consumer that does not feed the emitted value straight back gets a committed selection\n // the Dropdown never acts on: the popup stays open over an unchanged filter. Remembering what the\n // user just committed keeps the commit whole on its own, while an incoming `value` still wins and\n // still drops the memory the moment the consumer answers.\n const [committed, setCommitted] = useState<{\n key: string | null;\n observedValue: unknown;\n } | null>(null);\n const remembered =\n committed !== null && Object.is(committed.observedValue, value)\n ? committed\n : null;\n const remember = (key: string | null) => setCommitted({ key, observedValue: value });\n const selectedOption =\n resolvedOptions.find((option) => Object.is(option.value, value)) ??\n (remembered?.key == null\n ? undefined\n : resolvedOptions.find((option) => option.key === remembered.key));\n const selectedKey = selectedOption?.key ?? null;\n const controlPart = filter ? pt?.filter : multiple ? pt?.multiple : pt?.trigger;\n const effectiveAriaLabel =\n ariaLabel ??\n ariaLabelAlias ??\n pt?.input?.['aria-label'] ??\n pt?.select?.['aria-label'] ??\n controlPart?.['aria-label'];\n const effectiveAriaLabelledby =\n ariaLabelledby ??\n ariaLabelledBy ??\n pt?.input?.['aria-labelledby'] ??\n pt?.select?.['aria-labelledby'] ??\n controlPart?.['aria-labelledby'] ??\n (effectiveAriaLabel ? undefined : externalLabelledBy);\n const effectiveAriaDescribedby =\n ariaDescribedby ??\n ariaDescribedBy ??\n pt?.input?.['aria-describedby'] ??\n pt?.select?.['aria-describedby'];\n const inputAriaInvalid = pt?.input?.['aria-invalid'] ?? pt?.select?.['aria-invalid'];\n const effectiveInvalid =\n invalid ??\n ariaInvalid ??\n (inputAriaInvalid === true ||\n inputAriaInvalid === 'true' ||\n inputAriaInvalid === 'grammar' ||\n inputAriaInvalid === 'spelling');\n const rootClassName = classNames(\n 'cratis-dropdown',\n pt?.root?.className,\n pt?.select?.className,\n className,\n );\n const triggerId = id ?? inputId ?? pt?.trigger?.id ?? pt?.input?.id ?? pt?.select?.id;\n\n const selectOption = (key: Key | null) => {\n const option = resolvedOptions.find((candidate) => candidate.key === String(key));\n remember(option?.key ?? null);\n onChange?.((option?.value ?? null) as T, { source: 'user' });\n // React Aria hands the closing of a filtered overlay to whoever owns the value, and stands\n // down when that value does not come back as one of the options. Nothing about a committed\n // option is the consumer's to close, so close it here and let the filter text follow the\n // selection the Dropdown ends up showing.\n comboBox.current?.close();\n };\n const clearSelection = (event: MouseEvent<HTMLButtonElement>) => {\n remember(null);\n onChange?.(null as T, { source: 'user', nativeEvent: event.nativeEvent });\n };\n const selectOptions = (keys: readonly Key[]) => {\n const selectedKeys = new Set(keys.map(String));\n const values = resolvedOptions\n .filter((option) => selectedKeys.has(option.key))\n .map((option) => option.value);\n onChange?.(values as T, { source: 'user' });\n };\n // React Aria's Select trigger context does not forward aria-invalid from its Button child.\n // Keep the Cratis validation contract on the actual focusable control after context props merge.\n const applyTriggerState = useCallback((element: HTMLButtonElement | null) => {\n attachExternalLabel(element);\n if (!element) return;\n // React Aria puts the selected value first. Keep the field label first while\n // preserving the selected-value reference and all other context-generated ids.\n if (effectiveAriaLabelledby) {\n const references = [\n ...effectiveAriaLabelledby.split(/\\s+/u),\n ...(element.getAttribute('aria-labelledby') ?? '').split(/\\s+/u),\n ].filter(Boolean);\n element.setAttribute('aria-labelledby', [...new Set(references)].join(' '));\n }\n if (effectiveInvalid) element.setAttribute('aria-invalid', 'true');\n else element.removeAttribute('aria-invalid');\n if (tabIndex !== undefined) element.tabIndex = tabIndex;\n }, [effectiveAriaLabelledby, effectiveInvalid, attachExternalLabel, tabIndex]);\n\n if (multiple) {\n const selectedValues = Array.isArray(value) ? value : [];\n const selectedKeys = resolvedOptions\n .filter((option) =>\n selectedValues.some((selected) => Object.is(selected, option.value)),\n )\n .map((option) => option.key);\n\n if (filter) {\n return (\n <span\n {...pt?.root}\n className={rootClassName}\n data-cratis-part='root'\n data-invalid={effectiveInvalid || undefined}\n data-disabled={disabled || undefined}\n data-open={isOpen || undefined}\n data-selected={selectedKeys.length > 0 || undefined}\n style={{ ...pt?.root?.style, ...pt?.select?.style, ...style }}\n onBlur={onBlur}\n >\n <UNSAFE_PortalProvider getContainer={overlayEnvironment.getContainer}>\n <ComboBox\n selectionMode='multiple'\n onOpenChange={setIsOpen}\n value={selectedKeys}\n onChange={selectOptions}\n isDisabled={disabled}\n isInvalid={effectiveInvalid}\n name={name}\n aria-label={effectiveAriaLabel}\n aria-labelledby={effectiveAriaLabelledby}\n aria-describedby={effectiveAriaDescribedby}\n allowsEmptyCollection\n className='cratis-dropdown__combobox'\n >\n <ComboBoxValue\n {...pt?.value}\n placeholder={placeholder}\n className={classNames(\n 'cratis-dropdown__value',\n pt?.value?.className,\n )}\n data-cratis-part='value'\n data-disabled={disabled || undefined}\n data-invalid={effectiveInvalid || undefined}\n data-open={isOpen || undefined}\n data-selected={selectedKeys.length > 0 || undefined}\n />\n <Input\n {...pt?.filter}\n ref={attachExternalLabel}\n id={triggerId}\n placeholder={filterPlaceholder ?? placeholder}\n tabIndex={tabIndex}\n aria-invalid={effectiveInvalid || undefined}\n className={classNames(\n 'cratis-dropdown__filter',\n pt?.input?.className,\n pt?.filter?.className,\n )}\n style={{ ...pt?.input?.style, ...pt?.filter?.style }}\n data-cratis-part='filter'\n data-disabled={disabled || undefined}\n data-invalid={effectiveInvalid || undefined}\n data-open={isOpen || undefined}\n />\n <ComboBoxButton\n {...asReactAriaButtonProps(pt?.trigger)}\n className={classNames(\n 'cratis-dropdown__indicator',\n pt?.trigger?.className,\n )}\n data-cratis-part='trigger'\n data-disabled={disabled || undefined}\n data-invalid={effectiveInvalid || undefined}\n data-selected={selectedKeys.length > 0 || undefined}\n render={renderTriggerWithOpenState}\n aria-label={showOptionsLabel}\n >\n <span aria-hidden='true'>{expandIcon}</span>\n </ComboBoxButton>\n {showClear && selectedKeys.length > 0 && (\n <button\n {...pt?.clear}\n type='button'\n disabled={disabled}\n className={classNames(\n 'cratis-dropdown__clear',\n pt?.clear?.className,\n )}\n data-cratis-part='clear'\n data-disabled={disabled || undefined}\n aria-label={clearSelectionLabel}\n onClick={(event) =>\n onChange?.([] as T, {\n source: 'user',\n nativeEvent: event.nativeEvent,\n })\n }\n >\n <span aria-hidden='true'>{clearIcon}</span>\n </button>\n )}\n <ComboBoxPopover\n {...pt?.popover}\n className={classNames(\n 'cratis-dropdown__popover',\n pt?.popover?.className,\n panelClassName,\n )}\n style={{\n zIndex: resolvedPopoverZIndex,\n ...pt?.popover?.style,\n }}\n data-cratis-part='popover'\n data-open\n >\n <ComboBoxListBox\n {...asReactAriaListBoxProps<ResolvedOption>(\n pt?.listbox,\n )}\n items={resolvedOptions}\n className={classNames(\n 'cratis-dropdown__listbox',\n pt?.listbox?.className,\n )}\n data-cratis-part='listbox'\n data-open\n >\n {(option) => (\n <ComboBoxListBoxItem\n {...asReactAriaListBoxItemProps<ResolvedOption>(\n pt?.option,\n )}\n id={option.key}\n textValue={option.label}\n isDisabled={option.disabled}\n className={classNames(\n 'cratis-dropdown__option',\n pt?.option?.className,\n )}\n data-cratis-part='option'\n data-disabled={option.disabled || undefined}\n data-selected={\n selectedKeys.includes(option.key) ||\n undefined\n }\n >\n {option.label}\n </ComboBoxListBoxItem>\n )}\n </ComboBoxListBox>\n </ComboBoxPopover>\n </ComboBox>\n </UNSAFE_PortalProvider>\n </span>\n );\n }\n\n return (\n <span\n {...pt?.root}\n className={rootClassName}\n data-cratis-part='root'\n data-invalid={effectiveInvalid || undefined}\n data-disabled={disabled || undefined}\n data-selected={selectedKeys.length > 0 || undefined}\n style={{ ...pt?.root?.style, ...pt?.select?.style, ...style }}\n onBlur={onBlur}\n >\n <select\n {...pt?.multiple}\n ref={attachExternalLabel}\n id={triggerId ?? pt?.multiple?.id}\n name={name}\n multiple\n disabled={disabled}\n value={selectedKeys}\n tabIndex={tabIndex}\n aria-label={effectiveAriaLabel}\n aria-labelledby={effectiveAriaLabelledby}\n aria-describedby={effectiveAriaDescribedby}\n aria-invalid={effectiveInvalid || undefined}\n className={classNames(\n 'cratis-dropdown__multiple',\n pt?.input?.className,\n pt?.multiple?.className,\n )}\n data-cratis-part='multiple'\n data-disabled={disabled || undefined}\n data-invalid={effectiveInvalid || undefined}\n data-selected={selectedKeys.length > 0 || undefined}\n onChange={(event) => {\n const keys = Array.from(\n event.currentTarget.selectedOptions,\n (option) => option.value,\n );\n const values = resolvedOptions\n .filter((option) => keys.includes(option.key))\n .map((option) => option.value);\n onChange?.(values as T, {\n source: 'user',\n nativeEvent: event.nativeEvent,\n });\n }}\n >\n {resolvedOptions.map((option) => (\n <option\n key={option.key}\n value={option.key}\n disabled={option.disabled}\n data-disabled={option.disabled || undefined}\n data-selected={selectedKeys.includes(option.key) || undefined}\n >\n {option.label}\n </option>\n ))}\n </select>\n {showClear && selectedKeys.length > 0 && (\n <button\n {...pt?.clear}\n type='button'\n disabled={disabled}\n className={classNames(\n 'cratis-dropdown__clear',\n pt?.clear?.className,\n )}\n data-cratis-part='clear'\n data-disabled={disabled || undefined}\n aria-label={clearSelectionLabel}\n onClick={(event) =>\n onChange?.([] as T, {\n source: 'user',\n nativeEvent: event.nativeEvent,\n })\n }\n >\n <span aria-hidden='true'>{clearIcon}</span>\n </button>\n )}\n </span>\n );\n }\n\n if (filter) {\n return (\n <span\n {...pt?.root}\n className={rootClassName}\n data-cratis-part='root'\n data-invalid={effectiveInvalid || undefined}\n data-disabled={disabled || undefined}\n data-open={isOpen || undefined}\n data-selected={selectedKey !== null || undefined}\n style={{ ...pt?.root?.style, ...pt?.select?.style, ...style }}\n onBlur={onBlur}\n >\n <UNSAFE_PortalProvider getContainer={overlayEnvironment.getContainer}>\n <ComboBox\n onOpenChange={setIsOpen}\n value={selectedKey}\n onChange={selectOption}\n isDisabled={disabled}\n isInvalid={effectiveInvalid}\n name={name}\n aria-label={effectiveAriaLabel}\n aria-labelledby={effectiveAriaLabelledby}\n aria-describedby={effectiveAriaDescribedby}\n allowsEmptyCollection\n className='cratis-dropdown__combobox'\n >\n <ComboBoxCommitBridge handle={comboBox} />\n <Input\n {...pt?.filter}\n ref={attachExternalLabel}\n id={triggerId}\n placeholder={filterPlaceholder ?? placeholder}\n tabIndex={tabIndex}\n aria-invalid={effectiveInvalid || undefined}\n className={classNames(\n 'cratis-dropdown__filter',\n pt?.input?.className,\n pt?.filter?.className,\n )}\n style={{ ...pt?.input?.style, ...pt?.filter?.style }}\n data-cratis-part='filter'\n data-disabled={disabled || undefined}\n data-invalid={effectiveInvalid || undefined}\n data-open={isOpen || undefined}\n />\n <ComboBoxButton\n {...asReactAriaButtonProps(pt?.trigger)}\n className={classNames(\n 'cratis-dropdown__indicator',\n pt?.trigger?.className,\n )}\n data-cratis-part='trigger'\n data-disabled={disabled || undefined}\n data-invalid={effectiveInvalid || undefined}\n data-selected={selectedKey !== null || undefined}\n render={renderTriggerWithOpenState}\n aria-label={showOptionsLabel}\n >\n <span aria-hidden='true'>{expandIcon}</span>\n </ComboBoxButton>\n {showClear && selectedKey !== null && (\n <button\n {...pt?.clear}\n type='button'\n disabled={disabled}\n className={classNames(\n 'cratis-dropdown__clear',\n pt?.clear?.className,\n )}\n data-cratis-part='clear'\n data-disabled={disabled || undefined}\n aria-label={clearSelectionLabel}\n onClick={clearSelection}\n >\n <span aria-hidden='true'>{clearIcon}</span>\n </button>\n )}\n <ComboBoxPopover\n {...pt?.popover}\n className={classNames(\n 'cratis-dropdown__popover',\n pt?.popover?.className,\n panelClassName,\n )}\n style={{\n zIndex: resolvedPopoverZIndex,\n ...pt?.popover?.style,\n }}\n data-cratis-part='popover'\n data-open\n >\n <ComboBoxListBox\n {...asReactAriaListBoxProps<ResolvedOption>(pt?.listbox)}\n items={resolvedOptions}\n className={classNames(\n 'cratis-dropdown__listbox',\n pt?.listbox?.className,\n )}\n data-cratis-part='listbox'\n data-open\n >\n {(option) => (\n <ComboBoxListBoxItem\n {...asReactAriaListBoxItemProps<ResolvedOption>(\n pt?.option,\n )}\n id={option.key}\n textValue={option.label}\n isDisabled={option.disabled}\n className={classNames(\n 'cratis-dropdown__option',\n pt?.option?.className,\n )}\n data-cratis-part='option'\n data-disabled={option.disabled || undefined}\n data-selected={\n option.key === selectedKey || undefined\n }\n >\n {option.label}\n </ComboBoxListBoxItem>\n )}\n </ComboBoxListBox>\n </ComboBoxPopover>\n </ComboBox>\n </UNSAFE_PortalProvider>\n </span>\n );\n }\n\n return (\n <span\n {...pt?.root}\n className={rootClassName}\n data-cratis-part='root'\n data-invalid={effectiveInvalid || undefined}\n data-disabled={disabled || undefined}\n data-open={isOpen || undefined}\n data-selected={selectedKey !== null || undefined}\n style={{ ...pt?.root?.style, ...pt?.select?.style, ...style }}\n onBlur={onBlur}\n >\n <UNSAFE_PortalProvider getContainer={overlayEnvironment.getContainer}>\n <AriaSelect\n onOpenChange={setIsOpen}\n value={selectedKey}\n onChange={selectOption}\n isDisabled={disabled}\n isInvalid={effectiveInvalid}\n name={name}\n aria-label={effectiveAriaLabel}\n aria-labelledby={effectiveAriaLabelledby}\n aria-describedby={effectiveAriaDescribedby}\n className='cratis-dropdown__select'\n >\n <AriaButton\n {...asReactAriaButtonProps(pt?.trigger)}\n ref={applyTriggerState}\n id={triggerId}\n excludeFromTabOrder={tabIndex === -1}\n aria-invalid={effectiveInvalid || undefined}\n className={classNames(\n 'cratis-dropdown__trigger',\n pt?.input?.className,\n pt?.trigger?.className,\n )}\n style={{ ...pt?.input?.style, ...pt?.trigger?.style }}\n data-cratis-part='trigger'\n data-disabled={disabled || undefined}\n data-invalid={effectiveInvalid || undefined}\n data-selected={selectedKey !== null || undefined}\n render={renderTriggerWithOpenState}\n >\n <SelectValue\n {...pt?.value}\n className={classNames(\n 'cratis-dropdown__value',\n pt?.value?.className,\n )}\n data-cratis-part='value'\n data-disabled={disabled || undefined}\n data-invalid={effectiveInvalid || undefined}\n data-open={isOpen || undefined}\n data-selected={selectedKey !== null || undefined}\n >\n {selectedOption?.label ?? placeholder}\n </SelectValue>\n <span\n {...pt?.indicator}\n className={classNames(\n 'cratis-dropdown__indicator',\n pt?.indicator?.className,\n )}\n data-cratis-part='indicator'\n data-disabled={disabled || undefined}\n data-invalid={effectiveInvalid || undefined}\n data-open={isOpen || undefined}\n aria-hidden='true'\n >\n {expandIcon}\n </span>\n </AriaButton>\n {showClear && selectedKey !== null && (\n <button\n {...pt?.clear}\n type='button'\n disabled={disabled}\n className={classNames(\n 'cratis-dropdown__clear',\n pt?.clear?.className,\n )}\n data-cratis-part='clear'\n data-disabled={disabled || undefined}\n aria-label={clearSelectionLabel}\n onClick={clearSelection}\n >\n <span aria-hidden='true'>{clearIcon}</span>\n </button>\n )}\n <Popover\n {...pt?.popover}\n className={classNames(\n 'cratis-dropdown__popover',\n pt?.popover?.className,\n panelClassName,\n )}\n style={{\n zIndex: resolvedPopoverZIndex,\n ...pt?.popover?.style,\n }}\n data-cratis-part='popover'\n data-open\n >\n <ListBox\n {...asReactAriaListBoxProps<ResolvedOption>(pt?.listbox)}\n items={resolvedOptions}\n className={classNames(\n 'cratis-dropdown__listbox',\n pt?.listbox?.className,\n )}\n data-cratis-part='listbox'\n data-open\n >\n {(option) => (\n <ListBoxItem\n {...asReactAriaListBoxItemProps<ResolvedOption>(\n pt?.option,\n )}\n id={option.key}\n textValue={option.label}\n isDisabled={option.disabled}\n className={classNames(\n 'cratis-dropdown__option',\n pt?.option?.className,\n )}\n data-cratis-part='option'\n data-disabled={option.disabled || undefined}\n data-selected={\n option.key === selectedKey || undefined\n }\n >\n {option.label}\n </ListBoxItem>\n )}\n </ListBox>\n </Popover>\n </AriaSelect>\n </UNSAFE_PortalProvider>\n </span>\n );\n};\n\nDropdownImplementation.displayName = 'DropdownImplementation';\n"],"names":["_jsx","_jsxs","ComboBoxButton","ComboBoxPopover","ComboBoxListBox","ComboBoxListBoxItem","AriaSelect","AriaButton","Popover","ListBox","ListBoxItem"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toaster.d.ts","sourceRoot":"","sources":["../../../Notifications/Toaster.tsx"],"names":[],"mappings":"AAGA,OAAO,EAIH,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACtB,MAAM,OAAO,CAAC;AAcf,gEAAgE;AAChE,MAAM,MAAM,eAAe,GACrB,UAAU,GACV,YAAY,GACZ,WAAW,GACX,aAAa,GACb,eAAe,GACf,cAAc,CAAC;AAErB,kDAAkD;AAClD,MAAM,WAAW,kBAAkB;IAC/B,+BAA+B;IAC/B,MAAM,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IACxC,yBAAyB;IACzB,KAAK,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACpC,oCAAoC;IACpC,IAAI,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;IACvC,6BAA6B;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IACzC,mBAAmB;IACnB,KAAK,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IACvC,yBAAyB;IACzB,WAAW,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IAC7C,sBAAsB;IACtB,KAAK,CAAC,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAChD,oCAAoC;IACpC,MAAM,CAAC,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;CACpD;AAQD,oDAAoD;AACpD,MAAM,WAAW,YAAY;IACzB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4HAA4H;IAC5H,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iIAAiI;IACjI,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8BAA8B;IAC9B,EAAE,CAAC,EAAE,kBAAkB,CAAC;CAC3B;AAmID,+EAA+E;AAC/E,eAAO,MAAM,OAAO,yEAOjB,YAAY,uCAoCd,CAAC"}
1
+ {"version":3,"file":"Toaster.d.ts","sourceRoot":"","sources":["../../../Notifications/Toaster.tsx"],"names":[],"mappings":"AAGA,OAAO,EAIH,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACtB,MAAM,OAAO,CAAC;AAef,gEAAgE;AAChE,MAAM,MAAM,eAAe,GACrB,UAAU,GACV,YAAY,GACZ,WAAW,GACX,aAAa,GACb,eAAe,GACf,cAAc,CAAC;AAErB,kDAAkD;AAClD,MAAM,WAAW,kBAAkB;IAC/B,+BAA+B;IAC/B,MAAM,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IACxC,yBAAyB;IACzB,KAAK,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACpC,oCAAoC;IACpC,IAAI,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;IACvC,6BAA6B;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IACzC,mBAAmB;IACnB,KAAK,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IACvC,yBAAyB;IACzB,WAAW,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IAC7C,sBAAsB;IACtB,KAAK,CAAC,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAChD,oCAAoC;IACpC,MAAM,CAAC,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;CACpD;AAQD,oDAAoD;AACpD,MAAM,WAAW,YAAY;IACzB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4HAA4H;IAC5H,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iIAAiI;IACjI,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8BAA8B;IAC9B,EAAE,CAAC,EAAE,kBAAkB,CAAC;CAC3B;AAiID,+EAA+E;AAC/E,eAAO,MAAM,OAAO,yEAOjB,YAAY,uCAoCd,CAAC"}
@@ -4,6 +4,7 @@ import { createPortal } from 'react-dom';
4
4
  import { useCratisComponentsConfig } from '../configuration/CratisComponentsContext.js';
5
5
  import { useCratisIcon } from '../configuration/useCratisIcon.js';
6
6
  import { subscribeToToasts, getToastSnapshot, toast } from './toast.js';
7
+ import { classNames } from '../ClassNames/classNames.js';
7
8
 
8
9
  const severitySymbol = {
9
10
  normal: '●',
@@ -15,7 +16,6 @@ const severitySymbol = {
15
16
  contrast: '●',
16
17
  };
17
18
  const emptyToasts = [];
18
- const classNames = (...values) => values.filter(Boolean).join(' ');
19
19
  const ToastFrame = ({ item, timeout, dismissAriaLabel, pt }) => {
20
20
  const [paused, setPaused] = useState(false);
21
21
  const icon = useCratisIcon();
@@ -1 +1 @@
1
- {"version":3,"file":"Toaster.js","sources":["../../../Notifications/Toaster.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport {\n useEffect,\n useState,\n useSyncExternalStore,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useCratisComponentsConfig } from '../configuration/CratisComponentsContext';\nimport { useCratisIcon } from '../configuration/useCratisIcon';\nimport {\n getToastSnapshot,\n subscribeToToasts,\n toast,\n type ToastRecord,\n type ToastSeverity,\n} from './toast';\nimport type { ExactPartKeys } from '../types/ExactPartKeys';\nimport type { PartsOf } from '../types/parts';\n\n/** Supported viewport positions for the global toast region. */\nexport type ToasterPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\n/** Stable part attributes for {@link Toaster}. */\nexport interface ToasterPassThrough {\n /** Accessible toast region. */\n region?: HTMLAttributes<HTMLDivElement>;\n /** One toast article. */\n toast?: HTMLAttributes<HTMLElement>;\n /** Severity/custom icon wrapper. */\n icon?: HTMLAttributes<HTMLSpanElement>;\n /** Toast content wrapper. */\n content?: HTMLAttributes<HTMLDivElement>;\n /** Toast title. */\n title?: HTMLAttributes<HTMLDivElement>;\n /** Toast description. */\n description?: HTMLAttributes<HTMLDivElement>;\n /** Dismiss button. */\n close?: ButtonHTMLAttributes<HTMLButtonElement>;\n /** Optional toast action button. */\n action?: ButtonHTMLAttributes<HTMLButtonElement>;\n}\n\nconst toasterPartsMatchManifest: ExactPartKeys<\n ToasterPassThrough,\n PartsOf<'Toaster'>\n> = true;\nvoid toasterPartsMatchManifest;\n\n/** Props for the global accessible toast region. */\nexport interface ToasterProps {\n /** Viewport position. */\n position?: ToasterPosition;\n /** Maximum visible toast count. */\n limit?: number;\n /** Default timeout in milliseconds. */\n timeout?: number;\n /** Accessible label for dismiss buttons. Falls back to the provider's `notifications.dismiss` message, then `'Dismiss'`. */\n dismissAriaLabel?: string;\n /** Accessible name for the toast region. Falls back to the provider's `notifications.region` message, then `'Notifications'`. */\n regionAriaLabel?: string;\n /** Stable part attributes. */\n pt?: ToasterPassThrough;\n}\n\nconst severitySymbol: Record<ToastSeverity, string> = {\n normal: '●',\n success: '✓',\n info: 'ⓘ',\n warn: '⚠',\n error: '⨯',\n secondary: '●',\n contrast: '●',\n};\n\nconst emptyToasts: ToastRecord[] = [];\nconst classNames = (...values: Array<string | undefined>) =>\n values.filter(Boolean).join(' ');\n\ninterface ToastFrameProps {\n item: ToastRecord;\n timeout: number;\n dismissAriaLabel: string;\n pt?: ToasterPassThrough;\n}\n\nconst ToastFrame = ({ item, timeout, dismissAriaLabel, pt }: ToastFrameProps) => {\n const [paused, setPaused] = useState(false);\n const icon = useCratisIcon();\n\n useEffect(() => {\n if (paused || item.loading || item.duration === 0) return;\n const duration = item.duration ?? timeout;\n const timer = window.setTimeout(\n () => {\n item.onTimeout?.(item);\n toast.dismiss(item.id);\n },\n Math.max(duration, 5000),\n );\n return () => window.clearTimeout(timer);\n }, [item, paused, timeout]);\n\n const severity = item.severity ?? 'normal';\n const content = item.render ?? (\n <>\n {item.title && (\n <div\n {...pt?.title}\n className={classNames('cratis-toast__title', pt?.title?.className)}\n data-cratis-part='title'\n >\n {item.title}\n </div>\n )}\n {item.description && (\n <div\n {...pt?.description}\n className={classNames(\n 'cratis-toast__description',\n pt?.description?.className,\n )}\n data-cratis-part='description'\n >\n {item.description}\n </div>\n )}\n {item.action && (\n <button\n {...item.action}\n {...pt?.action}\n type='button'\n className={classNames(\n 'cratis-toast__action',\n item.action.className,\n pt?.action?.className,\n )}\n data-cratis-part='action'\n />\n )}\n </>\n );\n\n return (\n <article\n {...pt?.toast}\n className={classNames('cratis-toast', pt?.toast?.className)}\n data-cratis-part='toast'\n data-severity={severity}\n data-loading={item.loading || undefined}\n data-busy={item.loading || undefined}\n role={severity === 'error' ? 'alert' : 'status'}\n onMouseEnter={() => setPaused(true)}\n onMouseLeave={() => setPaused(false)}\n onFocusCapture={() => setPaused(true)}\n onBlurCapture={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget)) setPaused(false);\n }}\n >\n <span\n {...pt?.icon}\n className={classNames('cratis-toast__icon', pt?.icon?.className)}\n data-cratis-part='icon'\n aria-hidden='true'\n >\n {item.loading\n ? '◌'\n : (item.icon ?? severitySymbol[severity])}\n </span>\n <div\n {...pt?.content}\n className={classNames('cratis-toast__content', pt?.content?.className)}\n data-cratis-part='content'\n data-loading={item.loading || undefined}\n data-busy={item.loading || undefined}\n >\n {content}\n </div>\n {item.dismissible !== false && (\n <button\n {...pt?.close}\n type='button'\n className={classNames('cratis-toast__close', pt?.close?.className)}\n data-cratis-part='close'\n aria-label={pt?.close?.['aria-label'] ?? dismissAriaLabel}\n onClick={() => toast.dismiss(item.id)}\n >\n <span aria-hidden='true'>{icon('close', '×')}</span>\n </button>\n )}\n </article>\n );\n};\n\n/** App-wide accessible toast region backed by the Cratis-owned toast queue. */\nexport const Toaster = ({\n position = 'top-right',\n limit = 3,\n timeout = 6000,\n dismissAriaLabel,\n regionAriaLabel,\n pt,\n}: ToasterProps) => {\n const { messages } = useCratisComponentsConfig();\n const notificationsMessages = messages?.notifications;\n const resolvedDismissAriaLabel =\n dismissAriaLabel ?? notificationsMessages?.dismiss ?? 'Dismiss';\n const resolvedRegionAriaLabel =\n regionAriaLabel ?? notificationsMessages?.region ?? 'Notifications';\n const items = useSyncExternalStore(\n subscribeToToasts,\n getToastSnapshot,\n () => emptyToasts,\n );\n if (typeof document === 'undefined') return null;\n\n return createPortal(\n <div\n {...pt?.region}\n className={classNames('cratis-toaster', pt?.region?.className)}\n data-cratis-part='region'\n data-position={position}\n role='region'\n aria-label={resolvedRegionAriaLabel}\n aria-live='polite'\n >\n {items.slice(-limit).map((item) => (\n <ToastFrame\n key={item.id}\n item={item}\n timeout={timeout}\n dismissAriaLabel={resolvedDismissAriaLabel}\n pt={pt}\n />\n ))}\n </div>,\n document.body,\n );\n};\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"Toaster.js","sources":["../../../Notifications/Toaster.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport {\n useEffect,\n useState,\n useSyncExternalStore,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useCratisComponentsConfig } from '../configuration/CratisComponentsContext';\nimport { useCratisIcon } from '../configuration/useCratisIcon';\nimport {\n getToastSnapshot,\n subscribeToToasts,\n toast,\n type ToastRecord,\n type ToastSeverity,\n} from './toast';\nimport type { ExactPartKeys } from '../types/ExactPartKeys';\nimport type { PartsOf } from '../types/parts';\nimport { classNames } from '../ClassNames/classNames';\n\n/** Supported viewport positions for the global toast region. */\nexport type ToasterPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\n/** Stable part attributes for {@link Toaster}. */\nexport interface ToasterPassThrough {\n /** Accessible toast region. */\n region?: HTMLAttributes<HTMLDivElement>;\n /** One toast article. */\n toast?: HTMLAttributes<HTMLElement>;\n /** Severity/custom icon wrapper. */\n icon?: HTMLAttributes<HTMLSpanElement>;\n /** Toast content wrapper. */\n content?: HTMLAttributes<HTMLDivElement>;\n /** Toast title. */\n title?: HTMLAttributes<HTMLDivElement>;\n /** Toast description. */\n description?: HTMLAttributes<HTMLDivElement>;\n /** Dismiss button. */\n close?: ButtonHTMLAttributes<HTMLButtonElement>;\n /** Optional toast action button. */\n action?: ButtonHTMLAttributes<HTMLButtonElement>;\n}\n\nconst toasterPartsMatchManifest: ExactPartKeys<\n ToasterPassThrough,\n PartsOf<'Toaster'>\n> = true;\nvoid toasterPartsMatchManifest;\n\n/** Props for the global accessible toast region. */\nexport interface ToasterProps {\n /** Viewport position. */\n position?: ToasterPosition;\n /** Maximum visible toast count. */\n limit?: number;\n /** Default timeout in milliseconds. */\n timeout?: number;\n /** Accessible label for dismiss buttons. Falls back to the provider's `notifications.dismiss` message, then `'Dismiss'`. */\n dismissAriaLabel?: string;\n /** Accessible name for the toast region. Falls back to the provider's `notifications.region` message, then `'Notifications'`. */\n regionAriaLabel?: string;\n /** Stable part attributes. */\n pt?: ToasterPassThrough;\n}\n\nconst severitySymbol: Record<ToastSeverity, string> = {\n normal: '●',\n success: '✓',\n info: 'ⓘ',\n warn: '⚠',\n error: '⨯',\n secondary: '●',\n contrast: '●',\n};\n\nconst emptyToasts: ToastRecord[] = [];\n\ninterface ToastFrameProps {\n item: ToastRecord;\n timeout: number;\n dismissAriaLabel: string;\n pt?: ToasterPassThrough;\n}\n\nconst ToastFrame = ({ item, timeout, dismissAriaLabel, pt }: ToastFrameProps) => {\n const [paused, setPaused] = useState(false);\n const icon = useCratisIcon();\n\n useEffect(() => {\n if (paused || item.loading || item.duration === 0) return;\n const duration = item.duration ?? timeout;\n const timer = window.setTimeout(\n () => {\n item.onTimeout?.(item);\n toast.dismiss(item.id);\n },\n Math.max(duration, 5000),\n );\n return () => window.clearTimeout(timer);\n }, [item, paused, timeout]);\n\n const severity = item.severity ?? 'normal';\n const content = item.render ?? (\n <>\n {item.title && (\n <div\n {...pt?.title}\n className={classNames('cratis-toast__title', pt?.title?.className)}\n data-cratis-part='title'\n >\n {item.title}\n </div>\n )}\n {item.description && (\n <div\n {...pt?.description}\n className={classNames(\n 'cratis-toast__description',\n pt?.description?.className,\n )}\n data-cratis-part='description'\n >\n {item.description}\n </div>\n )}\n {item.action && (\n <button\n {...item.action}\n {...pt?.action}\n type='button'\n className={classNames(\n 'cratis-toast__action',\n item.action.className,\n pt?.action?.className,\n )}\n data-cratis-part='action'\n />\n )}\n </>\n );\n\n return (\n <article\n {...pt?.toast}\n className={classNames('cratis-toast', pt?.toast?.className)}\n data-cratis-part='toast'\n data-severity={severity}\n data-loading={item.loading || undefined}\n data-busy={item.loading || undefined}\n role={severity === 'error' ? 'alert' : 'status'}\n onMouseEnter={() => setPaused(true)}\n onMouseLeave={() => setPaused(false)}\n onFocusCapture={() => setPaused(true)}\n onBlurCapture={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget)) setPaused(false);\n }}\n >\n <span\n {...pt?.icon}\n className={classNames('cratis-toast__icon', pt?.icon?.className)}\n data-cratis-part='icon'\n aria-hidden='true'\n >\n {item.loading\n ? '◌'\n : (item.icon ?? severitySymbol[severity])}\n </span>\n <div\n {...pt?.content}\n className={classNames('cratis-toast__content', pt?.content?.className)}\n data-cratis-part='content'\n data-loading={item.loading || undefined}\n data-busy={item.loading || undefined}\n >\n {content}\n </div>\n {item.dismissible !== false && (\n <button\n {...pt?.close}\n type='button'\n className={classNames('cratis-toast__close', pt?.close?.className)}\n data-cratis-part='close'\n aria-label={pt?.close?.['aria-label'] ?? dismissAriaLabel}\n onClick={() => toast.dismiss(item.id)}\n >\n <span aria-hidden='true'>{icon('close', '×')}</span>\n </button>\n )}\n </article>\n );\n};\n\n/** App-wide accessible toast region backed by the Cratis-owned toast queue. */\nexport const Toaster = ({\n position = 'top-right',\n limit = 3,\n timeout = 6000,\n dismissAriaLabel,\n regionAriaLabel,\n pt,\n}: ToasterProps) => {\n const { messages } = useCratisComponentsConfig();\n const notificationsMessages = messages?.notifications;\n const resolvedDismissAriaLabel =\n dismissAriaLabel ?? notificationsMessages?.dismiss ?? 'Dismiss';\n const resolvedRegionAriaLabel =\n regionAriaLabel ?? notificationsMessages?.region ?? 'Notifications';\n const items = useSyncExternalStore(\n subscribeToToasts,\n getToastSnapshot,\n () => emptyToasts,\n );\n if (typeof document === 'undefined') return null;\n\n return createPortal(\n <div\n {...pt?.region}\n className={classNames('cratis-toaster', pt?.region?.className)}\n data-cratis-part='region'\n data-position={position}\n role='region'\n aria-label={resolvedRegionAriaLabel}\n aria-live='polite'\n >\n {items.slice(-limit).map((item) => (\n <ToastFrame\n key={item.id}\n item={item}\n timeout={timeout}\n dismissAriaLabel={resolvedDismissAriaLabel}\n pt={pt}\n />\n ))}\n </div>,\n document.body,\n );\n};\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
@@ -1,51 +1,8 @@
1
- import type { ItemId, LayoutResult, GroupingResult } from '../engine/types.js';
2
- import type { ViewMode } from './Toolbar.js';
3
- import type { PivotViewerColors } from '../types.js';
4
- export interface PivotCanvasProps<TItem extends object> {
5
- /** Original items array */
6
- items: TItem[];
7
- /** Layout positions */
8
- layout: LayoutResult;
9
- /** Grouping information */
10
- grouping: GroupingResult;
11
- /** Visible item IDs */
12
- visibleIds: Uint32Array;
13
- /** Card dimensions */
14
- cardWidth: number;
15
- cardHeight: number;
16
- /** Zoom level */
17
- zoomLevel: number;
18
- /** Pan offset */
19
- panX: number;
20
- panY: number;
21
- /** Viewport dimensions (visible area) */
22
- viewportWidth: number;
23
- viewportHeight: number;
24
- /** Selected item ID */
25
- selectedId: ItemId | null;
26
- /** Hovered group index */
27
- hoveredGroupIndex: number | null;
28
- /** Current view mode */
29
- viewMode: ViewMode;
30
- /** Is zooming animation in progress */
31
- isZooming?: boolean;
32
- /** Card renderer function - returns structured data for display */
33
- cardRenderer: (item: TItem) => {
34
- title: string;
35
- labels?: string[];
36
- values?: string[];
37
- };
38
- /** Public color overrides; changes trigger a Pixi color refresh. */
39
- colorOverrides?: Partial<PivotViewerColors>;
40
- /** ID resolver */
41
- resolveId: (item: TItem, index: number) => string | number;
42
- /** Click handler */
43
- onCardClick: (item: TItem, e: MouseEvent, id: number | string) => void;
44
- /** Pan handlers */
45
- onPanStart: (e: React.MouseEvent) => void;
46
- onPanMove: (e: React.MouseEvent) => void;
47
- onPanEnd: () => void;
48
- containerRef: React.RefObject<HTMLDivElement | null>;
49
- }
50
- export declare function PivotCanvas<TItem extends object>({ items, layout, grouping, visibleIds, cardWidth, cardHeight, zoomLevel, panX, panY, viewportWidth, viewportHeight, selectedId, hoveredGroupIndex, isZooming: _isZooming, resolveId: _resolveId, onCardClick, onPanStart, onPanMove, onPanEnd, viewMode, cardRenderer, colorOverrides, containerRef, }: PivotCanvasProps<TItem>): null;
1
+ import type { PivotCanvasProps } from './PivotCanvasProps.js';
2
+ export type { PivotCanvasProps } from './PivotCanvasProps.js';
3
+ /**
4
+ * Renders PivotViewer's cards and group backgrounds with Pixi into the parent viewport. The canvas
5
+ * overlays the scrollable viewport, which keeps native scrolling; this component renders no DOM.
6
+ */
7
+ export declare function PivotCanvas<TItem extends object>(props: PivotCanvasProps<TItem>): null;
51
8
  //# sourceMappingURL=PivotCanvas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PivotCanvas.d.ts","sourceRoot":"","sources":["../../../../PivotViewer/components/PivotCanvas.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAiB,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAU,CAAC;AA4BlD,MAAM,WAAW,gBAAgB,CAAC,KAAK,SAAS,MAAM;IAClD,2BAA2B;IAC3B,KAAK,EAAE,KAAK,EAAE,CAAC;IAEf,uBAAuB;IACvB,MAAM,EAAE,YAAY,CAAC;IAErB,2BAA2B;IAC3B,QAAQ,EAAE,cAAc,CAAC;IAEzB,uBAAuB;IACvB,UAAU,EAAE,WAAW,CAAC;IAExB,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IAEnB,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IAEb,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IAEvB,uBAAuB;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,0BAA0B;IAC1B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC,wBAAwB;IACxB,QAAQ,EAAE,QAAQ,CAAC;IAEnB,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,mEAAmE;IACnE,YAAY,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;QAC3B,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IAEF,oEAAoE;IACpE,cAAc,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE5C,kBAAkB;IAClB,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC;IAE3D,oBAAoB;IACpB,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAEvE,mBAAmB;IACnB,UAAU,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACzC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CACxD;AAYD,wBAAgB,WAAW,CAAC,KAAK,SAAS,MAAM,EAAE,EAC9C,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,aAAa,EACb,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,SAAS,EAAE,UAAkB,EAC7B,SAAS,EAAE,UAAU,EACrB,WAAW,EACX,UAAU,EACV,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,YAAY,GACf,EAAE,gBAAgB,CAAC,KAAK,CAAC,QA6uBzB"}
1
+ {"version":3,"file":"PivotCanvas.d.ts","sourceRoot":"","sources":["../../../../PivotViewer/components/PivotCanvas.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAoB,CAAC;AAS3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAoB,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,SAAS,MAAM,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,QA8D/E"}