@vuu-ui/vuu-ui-controls 2.1.19-beta.2 → 2.1.19-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (745) hide show
  1. package/cjs/calendar/Calendar.css.js +6 -0
  2. package/cjs/calendar/Calendar.css.js.map +1 -0
  3. package/cjs/calendar/Calendar.js +93 -0
  4. package/cjs/calendar/Calendar.js.map +1 -0
  5. package/cjs/calendar/internal/CalendarCarousel.css.js +6 -0
  6. package/cjs/calendar/internal/CalendarCarousel.css.js.map +1 -0
  7. package/cjs/calendar/internal/CalendarCarousel.js +75 -0
  8. package/cjs/calendar/internal/CalendarCarousel.js.map +1 -0
  9. package/cjs/calendar/internal/CalendarContext.js +19 -0
  10. package/cjs/calendar/internal/CalendarContext.js.map +1 -0
  11. package/cjs/calendar/internal/CalendarDay.css.js +6 -0
  12. package/cjs/calendar/internal/CalendarDay.css.js.map +1 -0
  13. package/cjs/calendar/internal/CalendarDay.js +86 -0
  14. package/cjs/calendar/internal/CalendarDay.js.map +1 -0
  15. package/cjs/calendar/internal/CalendarMonth.css.js +6 -0
  16. package/cjs/calendar/internal/CalendarMonth.css.js.map +1 -0
  17. package/cjs/calendar/internal/CalendarMonth.js +71 -0
  18. package/cjs/calendar/internal/CalendarMonth.js.map +1 -0
  19. package/cjs/calendar/internal/CalendarNavigation.css.js +6 -0
  20. package/cjs/calendar/internal/CalendarNavigation.css.js.map +1 -0
  21. package/cjs/calendar/internal/CalendarNavigation.js +236 -0
  22. package/cjs/calendar/internal/CalendarNavigation.js.map +1 -0
  23. package/cjs/calendar/internal/CalendarWeekHeader.css.js +6 -0
  24. package/cjs/calendar/internal/CalendarWeekHeader.css.js.map +1 -0
  25. package/cjs/calendar/internal/CalendarWeekHeader.js +43 -0
  26. package/cjs/calendar/internal/CalendarWeekHeader.js.map +1 -0
  27. package/cjs/calendar/internal/useFocusManagement.js +66 -0
  28. package/cjs/calendar/internal/useFocusManagement.js.map +1 -0
  29. package/cjs/calendar/internal/utils.js +64 -0
  30. package/cjs/calendar/internal/utils.js.map +1 -0
  31. package/cjs/calendar/useCalendar.js +163 -0
  32. package/cjs/calendar/useCalendar.js.map +1 -0
  33. package/cjs/calendar/useCalendarDay.js +80 -0
  34. package/cjs/calendar/useCalendarDay.js.map +1 -0
  35. package/cjs/calendar/useSelection.js +248 -0
  36. package/cjs/calendar/useSelection.js.map +1 -0
  37. package/cjs/column-picker/ColumnPicker.css.js +6 -0
  38. package/cjs/column-picker/ColumnPicker.css.js.map +1 -0
  39. package/cjs/column-picker/ColumnPicker.js +128 -0
  40. package/cjs/column-picker/ColumnPicker.js.map +1 -0
  41. package/cjs/column-picker/ColumnSearch.css.js +6 -0
  42. package/cjs/column-picker/ColumnSearch.css.js.map +1 -0
  43. package/cjs/column-picker/ColumnSearch.js +82 -0
  44. package/cjs/column-picker/ColumnSearch.js.map +1 -0
  45. package/cjs/common-hooks/selectionTypes.js +18 -0
  46. package/cjs/common-hooks/selectionTypes.js.map +1 -0
  47. package/cjs/common-hooks/use-resize-observer.js +123 -0
  48. package/cjs/common-hooks/use-resize-observer.js.map +1 -0
  49. package/cjs/common-hooks/useControlled.js +58 -0
  50. package/cjs/common-hooks/useControlled.js.map +1 -0
  51. package/cjs/context-panel-provider/ContextPanelProvider.js +99 -0
  52. package/cjs/context-panel-provider/ContextPanelProvider.js.map +1 -0
  53. package/cjs/cycle-state-button/CycleStateButton.js +50 -0
  54. package/cjs/cycle-state-button/CycleStateButton.js.map +1 -0
  55. package/cjs/date-input/DateInput.css.js +6 -0
  56. package/cjs/date-input/DateInput.css.js.map +1 -0
  57. package/cjs/date-input/DateInput.js +277 -0
  58. package/cjs/date-input/DateInput.js.map +1 -0
  59. package/cjs/date-picker/DatePicker.js +169 -0
  60. package/cjs/date-picker/DatePicker.js.map +1 -0
  61. package/cjs/date-picker/DatePickerContext.js +26 -0
  62. package/cjs/date-picker/DatePickerContext.js.map +1 -0
  63. package/cjs/date-picker/DatePickerPanel.css.js +6 -0
  64. package/cjs/date-picker/DatePickerPanel.css.js.map +1 -0
  65. package/cjs/date-picker/DatePickerPanel.js +146 -0
  66. package/cjs/date-picker/DatePickerPanel.js.map +1 -0
  67. package/cjs/drag-drop/DragDropProvider.js +145 -0
  68. package/cjs/drag-drop/DragDropProvider.js.map +1 -0
  69. package/cjs/drag-drop/DragDropState.js +36 -0
  70. package/cjs/drag-drop/DragDropState.js.map +1 -0
  71. package/cjs/drag-drop/Draggable.css.js +6 -0
  72. package/cjs/drag-drop/Draggable.css.js.map +1 -0
  73. package/cjs/drag-drop/Draggable.js +90 -0
  74. package/cjs/drag-drop/Draggable.js.map +1 -0
  75. package/cjs/drag-drop/dragDropTypes.js +8 -0
  76. package/cjs/drag-drop/dragDropTypes.js.map +1 -0
  77. package/cjs/drag-drop/drop-target-utils.js +245 -0
  78. package/cjs/drag-drop/drop-target-utils.js.map +1 -0
  79. package/cjs/drag-drop/useAutoScroll.js +71 -0
  80. package/cjs/drag-drop/useAutoScroll.js.map +1 -0
  81. package/cjs/drag-drop/useDragDisplacers.js +160 -0
  82. package/cjs/drag-drop/useDragDisplacers.js.map +1 -0
  83. package/cjs/drag-drop/useDragDrop.js +504 -0
  84. package/cjs/drag-drop/useDragDrop.js.map +1 -0
  85. package/cjs/drag-drop/useDragDropCopy.js +34 -0
  86. package/cjs/drag-drop/useDragDropCopy.js.map +1 -0
  87. package/cjs/drag-drop/useDragDropIndicator.js +251 -0
  88. package/cjs/drag-drop/useDragDropIndicator.js.map +1 -0
  89. package/cjs/drag-drop/useDragDropNaturalMovement.js +265 -0
  90. package/cjs/drag-drop/useDragDropNaturalMovement.js.map +1 -0
  91. package/cjs/drag-drop/useDropIndicator.js +27 -0
  92. package/cjs/drag-drop/useDropIndicator.js.map +1 -0
  93. package/cjs/drag-drop/useGlobalDragDrop.js +89 -0
  94. package/cjs/drag-drop/useGlobalDragDrop.js.map +1 -0
  95. package/cjs/editable/useEditableText.js +211 -0
  96. package/cjs/editable/useEditableText.js.map +1 -0
  97. package/cjs/editable-label/EditableLabel.css.js +6 -0
  98. package/cjs/editable-label/EditableLabel.css.js.map +1 -0
  99. package/cjs/editable-label/EditableLabel.js +143 -0
  100. package/cjs/editable-label/EditableLabel.js.map +1 -0
  101. package/cjs/expando-input/ExpandoInput.css.js +6 -0
  102. package/cjs/expando-input/ExpandoInput.css.js.map +1 -0
  103. package/cjs/expando-input/ExpandoInput.js +53 -0
  104. package/cjs/expando-input/ExpandoInput.js.map +1 -0
  105. package/cjs/hover-overlay/HoverOverlay.js +96 -0
  106. package/cjs/hover-overlay/HoverOverlay.js.map +1 -0
  107. package/cjs/icon-button/Icon.css.js +6 -0
  108. package/cjs/icon-button/Icon.css.js.map +1 -0
  109. package/cjs/icon-button/Icon.js +37 -0
  110. package/cjs/icon-button/Icon.js.map +1 -0
  111. package/cjs/icon-button/IconButton.css.js +6 -0
  112. package/cjs/icon-button/IconButton.css.js.map +1 -0
  113. package/cjs/icon-button/IconButton.js +26 -0
  114. package/cjs/icon-button/IconButton.js.map +1 -0
  115. package/cjs/icon-button/ToggleIconButton.css.js +6 -0
  116. package/cjs/icon-button/ToggleIconButton.css.js.map +1 -0
  117. package/cjs/icon-button/ToggleIconButton.js +39 -0
  118. package/cjs/icon-button/ToggleIconButton.js.map +1 -0
  119. package/cjs/index.js +170 -0
  120. package/cjs/index.js.map +1 -0
  121. package/cjs/instrument-picker/TablePicker.css.js +6 -0
  122. package/cjs/instrument-picker/TablePicker.css.js.map +1 -0
  123. package/cjs/instrument-picker/TablePicker.js +130 -0
  124. package/cjs/instrument-picker/TablePicker.js.map +1 -0
  125. package/cjs/instrument-picker/useTablePicker.js +150 -0
  126. package/cjs/instrument-picker/useTablePicker.js.map +1 -0
  127. package/cjs/measured-container/MeasuredContainer.css.js +6 -0
  128. package/cjs/measured-container/MeasuredContainer.css.js.map +1 -0
  129. package/cjs/measured-container/MeasuredContainer.js +72 -0
  130. package/cjs/measured-container/MeasuredContainer.js.map +1 -0
  131. package/cjs/measured-container/useMeasuredContainer.js +167 -0
  132. package/cjs/measured-container/useMeasuredContainer.js.map +1 -0
  133. package/cjs/modal-provider/ModalProvider.js +143 -0
  134. package/cjs/modal-provider/ModalProvider.js.map +1 -0
  135. package/cjs/overflow-container/OverflowContainer.css.js +6 -0
  136. package/cjs/overflow-container/OverflowContainer.css.js.map +1 -0
  137. package/cjs/overflow-container/OverflowContainer.js +143 -0
  138. package/cjs/overflow-container/OverflowContainer.js.map +1 -0
  139. package/cjs/overflow-container/overflow-utils.js +286 -0
  140. package/cjs/overflow-container/overflow-utils.js.map +1 -0
  141. package/cjs/overflow-container/useOverflowContainer.js +143 -0
  142. package/cjs/overflow-container/useOverflowContainer.js.map +1 -0
  143. package/cjs/price-ticker/PriceTicker.css.js +6 -0
  144. package/cjs/price-ticker/PriceTicker.css.js.map +1 -0
  145. package/cjs/price-ticker/PriceTicker.js +50 -0
  146. package/cjs/price-ticker/PriceTicker.js.map +1 -0
  147. package/cjs/prompt/Prompt.css.js +6 -0
  148. package/cjs/prompt/Prompt.css.js.map +1 -0
  149. package/cjs/prompt/Prompt.js +142 -0
  150. package/cjs/prompt/Prompt.js.map +1 -0
  151. package/cjs/sortable-list/SortableList.js +37 -0
  152. package/cjs/sortable-list/SortableList.js.map +1 -0
  153. package/cjs/split-button/SplitButton.css.js +6 -0
  154. package/cjs/split-button/SplitButton.css.js.map +1 -0
  155. package/cjs/split-button/SplitButton.js +84 -0
  156. package/cjs/split-button/SplitButton.js.map +1 -0
  157. package/cjs/split-button/SplitStateButton.css.js +6 -0
  158. package/cjs/split-button/SplitStateButton.css.js.map +1 -0
  159. package/cjs/split-button/SplitStateButton.js +31 -0
  160. package/cjs/split-button/SplitStateButton.js.map +1 -0
  161. package/cjs/split-button/useSplitButton.js +84 -0
  162. package/cjs/split-button/useSplitButton.js.map +1 -0
  163. package/cjs/table-search/SearchCell.css.js +6 -0
  164. package/cjs/table-search/SearchCell.css.js.map +1 -0
  165. package/cjs/table-search/SearchCell.js +32 -0
  166. package/cjs/table-search/SearchCell.js.map +1 -0
  167. package/cjs/table-search/TableSearch.css.js +6 -0
  168. package/cjs/table-search/TableSearch.css.js.map +1 -0
  169. package/cjs/table-search/TableSearch.js +89 -0
  170. package/cjs/table-search/TableSearch.js.map +1 -0
  171. package/cjs/table-search/useTableSearch.js +39 -0
  172. package/cjs/table-search/useTableSearch.js.map +1 -0
  173. package/cjs/tabs-next/TabBar.css.js +6 -0
  174. package/cjs/tabs-next/TabBar.css.js.map +1 -0
  175. package/cjs/tabs-next/TabBar.js +41 -0
  176. package/cjs/tabs-next/TabBar.js.map +1 -0
  177. package/cjs/tabs-next/TabListNext.css.js +6 -0
  178. package/cjs/tabs-next/TabListNext.css.js.map +1 -0
  179. package/cjs/tabs-next/TabListNext.js +124 -0
  180. package/cjs/tabs-next/TabListNext.js.map +1 -0
  181. package/cjs/tabs-next/TabNext.css.js +6 -0
  182. package/cjs/tabs-next/TabNext.css.js.map +1 -0
  183. package/cjs/tabs-next/TabNext.js +110 -0
  184. package/cjs/tabs-next/TabNext.js.map +1 -0
  185. package/cjs/tabs-next/TabNextAction.js +35 -0
  186. package/cjs/tabs-next/TabNextAction.js.map +1 -0
  187. package/cjs/tabs-next/TabNextContext.js +23 -0
  188. package/cjs/tabs-next/TabNextContext.js.map +1 -0
  189. package/cjs/tabs-next/TabNextPanel.css.js +6 -0
  190. package/cjs/tabs-next/TabNextPanel.css.js.map +1 -0
  191. package/cjs/tabs-next/TabNextPanel.js +77 -0
  192. package/cjs/tabs-next/TabNextPanel.js.map +1 -0
  193. package/cjs/tabs-next/TabNextTrigger.css.js +6 -0
  194. package/cjs/tabs-next/TabNextTrigger.css.js.map +1 -0
  195. package/cjs/tabs-next/TabNextTrigger.js +74 -0
  196. package/cjs/tabs-next/TabNextTrigger.js.map +1 -0
  197. package/cjs/tabs-next/TabOverflowList.css.js +6 -0
  198. package/cjs/tabs-next/TabOverflowList.css.js.map +1 -0
  199. package/cjs/tabs-next/TabOverflowList.js +130 -0
  200. package/cjs/tabs-next/TabOverflowList.js.map +1 -0
  201. package/cjs/tabs-next/TabsNext.js +174 -0
  202. package/cjs/tabs-next/TabsNext.js.map +1 -0
  203. package/cjs/tabs-next/TabsNextContext.js +33 -0
  204. package/cjs/tabs-next/TabsNextContext.js.map +1 -0
  205. package/cjs/tabs-next/hooks/useCollection.js +91 -0
  206. package/cjs/tabs-next/hooks/useCollection.js.map +1 -0
  207. package/cjs/tabs-next/hooks/useFocusOutside.js +24 -0
  208. package/cjs/tabs-next/hooks/useFocusOutside.js.map +1 -0
  209. package/cjs/tabs-next/hooks/useOverflow.js +138 -0
  210. package/cjs/tabs-next/hooks/useOverflow.js.map +1 -0
  211. package/cjs/tabstrip/Tab.css.js +6 -0
  212. package/cjs/tabstrip/Tab.css.js.map +1 -0
  213. package/cjs/tabstrip/Tab.js +153 -0
  214. package/cjs/tabstrip/Tab.js.map +1 -0
  215. package/cjs/tabstrip/TabMenu.css.js +6 -0
  216. package/cjs/tabstrip/TabMenu.css.js.map +1 -0
  217. package/cjs/tabstrip/TabMenu.js +72 -0
  218. package/cjs/tabstrip/TabMenu.js.map +1 -0
  219. package/cjs/tabstrip/TabMenuOptions.js +20 -0
  220. package/cjs/tabstrip/TabMenuOptions.js.map +1 -0
  221. package/cjs/tabstrip/Tabstrip.css.js +6 -0
  222. package/cjs/tabstrip/Tabstrip.css.js.map +1 -0
  223. package/cjs/tabstrip/Tabstrip.js +160 -0
  224. package/cjs/tabstrip/Tabstrip.js.map +1 -0
  225. package/cjs/tabstrip/tabstrip-dom-utils.js +19 -0
  226. package/cjs/tabstrip/tabstrip-dom-utils.js.map +1 -0
  227. package/cjs/tabstrip/useAnimatedSelectionThumb.js +85 -0
  228. package/cjs/tabstrip/useAnimatedSelectionThumb.js.map +1 -0
  229. package/cjs/tabstrip/useKeyboardNavigation.js +247 -0
  230. package/cjs/tabstrip/useKeyboardNavigation.js.map +1 -0
  231. package/cjs/tabstrip/useSelection.js +60 -0
  232. package/cjs/tabstrip/useSelection.js.map +1 -0
  233. package/cjs/tabstrip/useTabstrip.js +233 -0
  234. package/cjs/tabstrip/useTabstrip.js.map +1 -0
  235. package/cjs/time-input/MaskedInput.js +377 -0
  236. package/cjs/time-input/MaskedInput.js.map +1 -0
  237. package/cjs/time-input/TimeInput.css.js +6 -0
  238. package/cjs/time-input/TimeInput.css.js.map +1 -0
  239. package/cjs/time-input/TimeInput.js +56 -0
  240. package/cjs/time-input/TimeInput.js.map +1 -0
  241. package/cjs/time-input/useTimeInput.js +121 -0
  242. package/cjs/time-input/useTimeInput.js.map +1 -0
  243. package/cjs/toolbar/Toolbar.css.js +6 -0
  244. package/cjs/toolbar/Toolbar.css.js.map +1 -0
  245. package/cjs/toolbar/Toolbar.js +90 -0
  246. package/cjs/toolbar/Toolbar.js.map +1 -0
  247. package/cjs/toolbar/toolbar-dom-utils.js +18 -0
  248. package/cjs/toolbar/toolbar-dom-utils.js.map +1 -0
  249. package/cjs/toolbar/useKeyboardNavigation.js +305 -0
  250. package/cjs/toolbar/useKeyboardNavigation.js.map +1 -0
  251. package/cjs/toolbar/useSelection.js +93 -0
  252. package/cjs/toolbar/useSelection.js.map +1 -0
  253. package/cjs/toolbar/useToolbar.js +100 -0
  254. package/cjs/toolbar/useToolbar.js.map +1 -0
  255. package/cjs/utils/escapeRegExp.js +9 -0
  256. package/cjs/utils/escapeRegExp.js.map +1 -0
  257. package/cjs/utils/forwardCallbackProps.js +22 -0
  258. package/cjs/utils/forwardCallbackProps.js.map +1 -0
  259. package/cjs/utils/isOverflowElement.js +8 -0
  260. package/cjs/utils/isOverflowElement.js.map +1 -0
  261. package/cjs/utils/isPlainObject.js +6 -0
  262. package/cjs/utils/isPlainObject.js.map +1 -0
  263. package/cjs/vuu-date-picker/VuuDatePicker.js +122 -0
  264. package/cjs/vuu-date-picker/VuuDatePicker.js.map +1 -0
  265. package/cjs/vuu-input/VuuInput.css.js +6 -0
  266. package/cjs/vuu-input/VuuInput.css.js.map +1 -0
  267. package/cjs/vuu-input/VuuInput.js +102 -0
  268. package/cjs/vuu-input/VuuInput.js.map +1 -0
  269. package/cjs/vuu-time-picker/VuuTimePicker.css.js +6 -0
  270. package/cjs/vuu-time-picker/VuuTimePicker.css.js.map +1 -0
  271. package/cjs/vuu-time-picker/VuuTimePicker.js +37 -0
  272. package/cjs/vuu-time-picker/VuuTimePicker.js.map +1 -0
  273. package/cjs/vuu-typeahead-input/VuuTypeaheadInput.css.js +6 -0
  274. package/cjs/vuu-typeahead-input/VuuTypeaheadInput.css.js.map +1 -0
  275. package/cjs/vuu-typeahead-input/VuuTypeaheadInput.js +80 -0
  276. package/cjs/vuu-typeahead-input/VuuTypeaheadInput.js.map +1 -0
  277. package/cjs/vuu-typeahead-input/useVuuTypeaheadInput.js +176 -0
  278. package/cjs/vuu-typeahead-input/useVuuTypeaheadInput.js.map +1 -0
  279. package/esm/calendar/Calendar.css.js +4 -0
  280. package/esm/calendar/Calendar.css.js.map +1 -0
  281. package/esm/calendar/Calendar.js +91 -0
  282. package/esm/calendar/Calendar.js.map +1 -0
  283. package/esm/calendar/internal/CalendarCarousel.css.js +4 -0
  284. package/esm/calendar/internal/CalendarCarousel.css.js.map +1 -0
  285. package/esm/calendar/internal/CalendarCarousel.js +73 -0
  286. package/esm/calendar/internal/CalendarCarousel.js.map +1 -0
  287. package/esm/calendar/internal/CalendarContext.js +16 -0
  288. package/esm/calendar/internal/CalendarContext.js.map +1 -0
  289. package/esm/calendar/internal/CalendarDay.css.js +4 -0
  290. package/esm/calendar/internal/CalendarDay.css.js.map +1 -0
  291. package/{src → esm}/calendar/internal/CalendarDay.js +53 -33
  292. package/esm/calendar/internal/CalendarDay.js.map +1 -0
  293. package/esm/calendar/internal/CalendarMonth.css.js +4 -0
  294. package/esm/calendar/internal/CalendarMonth.css.js.map +1 -0
  295. package/esm/calendar/internal/CalendarMonth.js +69 -0
  296. package/esm/calendar/internal/CalendarMonth.js.map +1 -0
  297. package/esm/calendar/internal/CalendarNavigation.css.js +4 -0
  298. package/esm/calendar/internal/CalendarNavigation.css.js.map +1 -0
  299. package/esm/calendar/internal/CalendarNavigation.js +234 -0
  300. package/esm/calendar/internal/CalendarNavigation.js.map +1 -0
  301. package/esm/calendar/internal/CalendarWeekHeader.css.js +4 -0
  302. package/esm/calendar/internal/CalendarWeekHeader.css.js.map +1 -0
  303. package/esm/calendar/internal/CalendarWeekHeader.js +41 -0
  304. package/esm/calendar/internal/CalendarWeekHeader.js.map +1 -0
  305. package/esm/calendar/internal/useFocusManagement.js +64 -0
  306. package/esm/calendar/internal/useFocusManagement.js.map +1 -0
  307. package/esm/calendar/internal/utils.js +55 -0
  308. package/esm/calendar/internal/utils.js.map +1 -0
  309. package/esm/calendar/useCalendar.js +161 -0
  310. package/esm/calendar/useCalendar.js.map +1 -0
  311. package/esm/calendar/useCalendarDay.js +78 -0
  312. package/esm/calendar/useCalendarDay.js.map +1 -0
  313. package/esm/calendar/useSelection.js +243 -0
  314. package/esm/calendar/useSelection.js.map +1 -0
  315. package/esm/column-picker/ColumnPicker.css.js +4 -0
  316. package/esm/column-picker/ColumnPicker.css.js.map +1 -0
  317. package/esm/column-picker/ColumnPicker.js +126 -0
  318. package/esm/column-picker/ColumnPicker.js.map +1 -0
  319. package/esm/column-picker/ColumnSearch.css.js +4 -0
  320. package/esm/column-picker/ColumnSearch.css.js.map +1 -0
  321. package/esm/column-picker/ColumnSearch.js +80 -0
  322. package/esm/column-picker/ColumnSearch.js.map +1 -0
  323. package/esm/common-hooks/selectionTypes.js +10 -0
  324. package/esm/common-hooks/selectionTypes.js.map +1 -0
  325. package/esm/common-hooks/use-resize-observer.js +118 -0
  326. package/esm/common-hooks/use-resize-observer.js.map +1 -0
  327. package/esm/common-hooks/useControlled.js +56 -0
  328. package/esm/common-hooks/useControlled.js.map +1 -0
  329. package/esm/context-panel-provider/ContextPanelProvider.js +94 -0
  330. package/esm/context-panel-provider/ContextPanelProvider.js.map +1 -0
  331. package/esm/cycle-state-button/CycleStateButton.js +48 -0
  332. package/esm/cycle-state-button/CycleStateButton.js.map +1 -0
  333. package/esm/date-input/DateInput.css.js +4 -0
  334. package/esm/date-input/DateInput.css.js.map +1 -0
  335. package/esm/date-input/DateInput.js +275 -0
  336. package/esm/date-input/DateInput.js.map +1 -0
  337. package/esm/date-picker/DatePicker.js +167 -0
  338. package/esm/date-picker/DatePicker.js.map +1 -0
  339. package/esm/date-picker/DatePickerContext.js +23 -0
  340. package/esm/date-picker/DatePickerContext.js.map +1 -0
  341. package/esm/date-picker/DatePickerPanel.css.js +4 -0
  342. package/esm/date-picker/DatePickerPanel.css.js.map +1 -0
  343. package/esm/date-picker/DatePickerPanel.js +144 -0
  344. package/esm/date-picker/DatePickerPanel.js.map +1 -0
  345. package/esm/drag-drop/DragDropProvider.js +142 -0
  346. package/esm/drag-drop/DragDropProvider.js.map +1 -0
  347. package/esm/drag-drop/DragDropState.js +34 -0
  348. package/esm/drag-drop/DragDropState.js.map +1 -0
  349. package/esm/drag-drop/Draggable.css.js +4 -0
  350. package/esm/drag-drop/Draggable.css.js.map +1 -0
  351. package/esm/drag-drop/Draggable.js +85 -0
  352. package/esm/drag-drop/Draggable.js.map +1 -0
  353. package/{src → esm}/drag-drop/dragDropTypes.js +2 -0
  354. package/esm/drag-drop/dragDropTypes.js.map +1 -0
  355. package/esm/drag-drop/drop-target-utils.js +228 -0
  356. package/esm/drag-drop/drop-target-utils.js.map +1 -0
  357. package/esm/drag-drop/useAutoScroll.js +69 -0
  358. package/esm/drag-drop/useAutoScroll.js.map +1 -0
  359. package/esm/drag-drop/useDragDisplacers.js +158 -0
  360. package/esm/drag-drop/useDragDisplacers.js.map +1 -0
  361. package/esm/drag-drop/useDragDrop.js +502 -0
  362. package/esm/drag-drop/useDragDrop.js.map +1 -0
  363. package/esm/drag-drop/useDragDropCopy.js +31 -0
  364. package/esm/drag-drop/useDragDropCopy.js.map +1 -0
  365. package/esm/drag-drop/useDragDropIndicator.js +249 -0
  366. package/esm/drag-drop/useDragDropIndicator.js.map +1 -0
  367. package/esm/drag-drop/useDragDropNaturalMovement.js +263 -0
  368. package/esm/drag-drop/useDragDropNaturalMovement.js.map +1 -0
  369. package/esm/drag-drop/useDropIndicator.js +25 -0
  370. package/esm/drag-drop/useDropIndicator.js.map +1 -0
  371. package/esm/drag-drop/useGlobalDragDrop.js +87 -0
  372. package/esm/drag-drop/useGlobalDragDrop.js.map +1 -0
  373. package/esm/editable/useEditableText.js +209 -0
  374. package/esm/editable/useEditableText.js.map +1 -0
  375. package/esm/editable-label/EditableLabel.css.js +4 -0
  376. package/esm/editable-label/EditableLabel.css.js.map +1 -0
  377. package/esm/editable-label/EditableLabel.js +140 -0
  378. package/esm/editable-label/EditableLabel.js.map +1 -0
  379. package/esm/expando-input/ExpandoInput.css.js +4 -0
  380. package/esm/expando-input/ExpandoInput.css.js.map +1 -0
  381. package/esm/expando-input/ExpandoInput.js +51 -0
  382. package/esm/expando-input/ExpandoInput.js.map +1 -0
  383. package/esm/hover-overlay/HoverOverlay.js +94 -0
  384. package/esm/hover-overlay/HoverOverlay.js.map +1 -0
  385. package/esm/icon-button/Icon.css.js +4 -0
  386. package/esm/icon-button/Icon.css.js.map +1 -0
  387. package/esm/icon-button/Icon.js +35 -0
  388. package/esm/icon-button/Icon.js.map +1 -0
  389. package/esm/icon-button/IconButton.css.js +4 -0
  390. package/esm/icon-button/IconButton.css.js.map +1 -0
  391. package/esm/icon-button/IconButton.js +24 -0
  392. package/esm/icon-button/IconButton.js.map +1 -0
  393. package/esm/icon-button/ToggleIconButton.css.js +4 -0
  394. package/esm/icon-button/ToggleIconButton.css.js.map +1 -0
  395. package/esm/icon-button/ToggleIconButton.js +37 -0
  396. package/esm/icon-button/ToggleIconButton.js.map +1 -0
  397. package/esm/index.js +59 -0
  398. package/esm/index.js.map +1 -0
  399. package/esm/instrument-picker/TablePicker.css.js +4 -0
  400. package/esm/instrument-picker/TablePicker.css.js.map +1 -0
  401. package/esm/instrument-picker/TablePicker.js +128 -0
  402. package/esm/instrument-picker/TablePicker.js.map +1 -0
  403. package/esm/instrument-picker/useTablePicker.js +148 -0
  404. package/esm/instrument-picker/useTablePicker.js.map +1 -0
  405. package/esm/measured-container/MeasuredContainer.css.js +4 -0
  406. package/esm/measured-container/MeasuredContainer.css.js.map +1 -0
  407. package/esm/measured-container/MeasuredContainer.js +70 -0
  408. package/esm/measured-container/MeasuredContainer.js.map +1 -0
  409. package/esm/measured-container/useMeasuredContainer.js +164 -0
  410. package/esm/measured-container/useMeasuredContainer.js.map +1 -0
  411. package/esm/modal-provider/ModalProvider.js +140 -0
  412. package/esm/modal-provider/ModalProvider.js.map +1 -0
  413. package/esm/overflow-container/OverflowContainer.css.js +4 -0
  414. package/esm/overflow-container/OverflowContainer.css.js.map +1 -0
  415. package/esm/overflow-container/OverflowContainer.js +141 -0
  416. package/esm/overflow-container/OverflowContainer.js.map +1 -0
  417. package/esm/overflow-container/overflow-utils.js +272 -0
  418. package/esm/overflow-container/overflow-utils.js.map +1 -0
  419. package/esm/overflow-container/useOverflowContainer.js +141 -0
  420. package/esm/overflow-container/useOverflowContainer.js.map +1 -0
  421. package/esm/price-ticker/PriceTicker.css.js +4 -0
  422. package/esm/price-ticker/PriceTicker.css.js.map +1 -0
  423. package/esm/price-ticker/PriceTicker.js +48 -0
  424. package/esm/price-ticker/PriceTicker.js.map +1 -0
  425. package/esm/prompt/Prompt.css.js +4 -0
  426. package/esm/prompt/Prompt.css.js.map +1 -0
  427. package/esm/prompt/Prompt.js +140 -0
  428. package/esm/prompt/Prompt.js.map +1 -0
  429. package/esm/sortable-list/SortableList.js +34 -0
  430. package/esm/sortable-list/SortableList.js.map +1 -0
  431. package/esm/split-button/SplitButton.css.js +4 -0
  432. package/esm/split-button/SplitButton.css.js.map +1 -0
  433. package/esm/split-button/SplitButton.js +82 -0
  434. package/esm/split-button/SplitButton.js.map +1 -0
  435. package/esm/split-button/SplitStateButton.css.js +4 -0
  436. package/esm/split-button/SplitStateButton.css.js.map +1 -0
  437. package/esm/split-button/SplitStateButton.js +29 -0
  438. package/esm/split-button/SplitStateButton.js.map +1 -0
  439. package/esm/split-button/useSplitButton.js +82 -0
  440. package/esm/split-button/useSplitButton.js.map +1 -0
  441. package/esm/table-search/SearchCell.css.js +4 -0
  442. package/esm/table-search/SearchCell.css.js.map +1 -0
  443. package/esm/table-search/SearchCell.js +30 -0
  444. package/esm/table-search/SearchCell.js.map +1 -0
  445. package/esm/table-search/TableSearch.css.js +4 -0
  446. package/esm/table-search/TableSearch.css.js.map +1 -0
  447. package/esm/table-search/TableSearch.js +87 -0
  448. package/esm/table-search/TableSearch.js.map +1 -0
  449. package/esm/table-search/useTableSearch.js +37 -0
  450. package/esm/table-search/useTableSearch.js.map +1 -0
  451. package/esm/tabs-next/TabBar.css.js +4 -0
  452. package/esm/tabs-next/TabBar.css.js.map +1 -0
  453. package/esm/tabs-next/TabBar.js +39 -0
  454. package/esm/tabs-next/TabBar.js.map +1 -0
  455. package/esm/tabs-next/TabListNext.css.js +4 -0
  456. package/esm/tabs-next/TabListNext.css.js.map +1 -0
  457. package/esm/tabs-next/TabListNext.js +122 -0
  458. package/esm/tabs-next/TabListNext.js.map +1 -0
  459. package/esm/tabs-next/TabNext.css.js +4 -0
  460. package/esm/tabs-next/TabNext.css.js.map +1 -0
  461. package/esm/tabs-next/TabNext.js +108 -0
  462. package/esm/tabs-next/TabNext.js.map +1 -0
  463. package/esm/tabs-next/TabNextAction.js +33 -0
  464. package/esm/tabs-next/TabNextAction.js.map +1 -0
  465. package/esm/tabs-next/TabNextContext.js +20 -0
  466. package/esm/tabs-next/TabNextContext.js.map +1 -0
  467. package/esm/tabs-next/TabNextPanel.css.js +4 -0
  468. package/esm/tabs-next/TabNextPanel.css.js.map +1 -0
  469. package/esm/tabs-next/TabNextPanel.js +75 -0
  470. package/esm/tabs-next/TabNextPanel.js.map +1 -0
  471. package/esm/tabs-next/TabNextTrigger.css.js +4 -0
  472. package/esm/tabs-next/TabNextTrigger.css.js.map +1 -0
  473. package/esm/tabs-next/TabNextTrigger.js +72 -0
  474. package/esm/tabs-next/TabNextTrigger.js.map +1 -0
  475. package/esm/tabs-next/TabOverflowList.css.js +4 -0
  476. package/esm/tabs-next/TabOverflowList.css.js.map +1 -0
  477. package/esm/tabs-next/TabOverflowList.js +128 -0
  478. package/esm/tabs-next/TabOverflowList.js.map +1 -0
  479. package/esm/tabs-next/TabsNext.js +172 -0
  480. package/esm/tabs-next/TabsNext.js.map +1 -0
  481. package/esm/tabs-next/TabsNextContext.js +30 -0
  482. package/esm/tabs-next/TabsNextContext.js.map +1 -0
  483. package/esm/tabs-next/hooks/useCollection.js +89 -0
  484. package/esm/tabs-next/hooks/useCollection.js.map +1 -0
  485. package/esm/tabs-next/hooks/useFocusOutside.js +22 -0
  486. package/esm/tabs-next/hooks/useFocusOutside.js.map +1 -0
  487. package/esm/tabs-next/hooks/useOverflow.js +136 -0
  488. package/esm/tabs-next/hooks/useOverflow.js.map +1 -0
  489. package/esm/tabstrip/Tab.css.js +4 -0
  490. package/esm/tabstrip/Tab.css.js.map +1 -0
  491. package/esm/tabstrip/Tab.js +151 -0
  492. package/esm/tabstrip/Tab.js.map +1 -0
  493. package/esm/tabstrip/TabMenu.css.js +4 -0
  494. package/esm/tabstrip/TabMenu.css.js.map +1 -0
  495. package/esm/tabstrip/TabMenu.js +70 -0
  496. package/esm/tabstrip/TabMenu.js.map +1 -0
  497. package/esm/tabstrip/TabMenuOptions.js +16 -0
  498. package/esm/tabstrip/TabMenuOptions.js.map +1 -0
  499. package/esm/tabstrip/Tabstrip.css.js +4 -0
  500. package/esm/tabstrip/Tabstrip.css.js.map +1 -0
  501. package/esm/tabstrip/Tabstrip.js +158 -0
  502. package/esm/tabstrip/Tabstrip.js.map +1 -0
  503. package/esm/tabstrip/tabstrip-dom-utils.js +16 -0
  504. package/esm/tabstrip/tabstrip-dom-utils.js.map +1 -0
  505. package/esm/tabstrip/useAnimatedSelectionThumb.js +83 -0
  506. package/esm/tabstrip/useAnimatedSelectionThumb.js.map +1 -0
  507. package/esm/tabstrip/useKeyboardNavigation.js +245 -0
  508. package/esm/tabstrip/useKeyboardNavigation.js.map +1 -0
  509. package/esm/tabstrip/useSelection.js +58 -0
  510. package/esm/tabstrip/useSelection.js.map +1 -0
  511. package/esm/tabstrip/useTabstrip.js +231 -0
  512. package/esm/tabstrip/useTabstrip.js.map +1 -0
  513. package/esm/time-input/MaskedInput.js +375 -0
  514. package/esm/time-input/MaskedInput.js.map +1 -0
  515. package/esm/time-input/TimeInput.css.js +4 -0
  516. package/esm/time-input/TimeInput.css.js.map +1 -0
  517. package/esm/time-input/TimeInput.js +54 -0
  518. package/esm/time-input/TimeInput.js.map +1 -0
  519. package/esm/time-input/useTimeInput.js +119 -0
  520. package/esm/time-input/useTimeInput.js.map +1 -0
  521. package/esm/toolbar/Toolbar.css.js +4 -0
  522. package/esm/toolbar/Toolbar.css.js.map +1 -0
  523. package/esm/toolbar/Toolbar.js +88 -0
  524. package/esm/toolbar/Toolbar.js.map +1 -0
  525. package/esm/toolbar/toolbar-dom-utils.js +15 -0
  526. package/esm/toolbar/toolbar-dom-utils.js.map +1 -0
  527. package/esm/toolbar/useKeyboardNavigation.js +303 -0
  528. package/esm/toolbar/useKeyboardNavigation.js.map +1 -0
  529. package/esm/toolbar/useSelection.js +91 -0
  530. package/esm/toolbar/useSelection.js.map +1 -0
  531. package/esm/toolbar/useToolbar.js +98 -0
  532. package/esm/toolbar/useToolbar.js.map +1 -0
  533. package/{src → esm}/utils/escapeRegExp.js +3 -1
  534. package/esm/utils/escapeRegExp.js.map +1 -0
  535. package/esm/utils/forwardCallbackProps.js +20 -0
  536. package/esm/utils/forwardCallbackProps.js.map +1 -0
  537. package/esm/utils/isOverflowElement.js +6 -0
  538. package/esm/utils/isOverflowElement.js.map +1 -0
  539. package/esm/utils/isPlainObject.js +4 -0
  540. package/esm/utils/isPlainObject.js.map +1 -0
  541. package/esm/vuu-date-picker/VuuDatePicker.js +120 -0
  542. package/esm/vuu-date-picker/VuuDatePicker.js.map +1 -0
  543. package/esm/vuu-input/VuuInput.css.js +4 -0
  544. package/esm/vuu-input/VuuInput.css.js.map +1 -0
  545. package/esm/vuu-input/VuuInput.js +100 -0
  546. package/esm/vuu-input/VuuInput.js.map +1 -0
  547. package/esm/vuu-time-picker/VuuTimePicker.css.js +4 -0
  548. package/esm/vuu-time-picker/VuuTimePicker.css.js.map +1 -0
  549. package/esm/vuu-time-picker/VuuTimePicker.js +35 -0
  550. package/esm/vuu-time-picker/VuuTimePicker.js.map +1 -0
  551. package/esm/vuu-typeahead-input/VuuTypeaheadInput.css.js +4 -0
  552. package/esm/vuu-typeahead-input/VuuTypeaheadInput.css.js.map +1 -0
  553. package/esm/vuu-typeahead-input/VuuTypeaheadInput.js +78 -0
  554. package/esm/vuu-typeahead-input/VuuTypeaheadInput.js.map +1 -0
  555. package/esm/vuu-typeahead-input/useVuuTypeaheadInput.js +174 -0
  556. package/esm/vuu-typeahead-input/useVuuTypeaheadInput.js.map +1 -0
  557. package/package.json +17 -14
  558. package/types/calendar/useCalendar.d.ts +3 -3
  559. package/types/calendar/useSelection.d.ts +1 -1
  560. package/types/date-input/DateInput.d.ts +1 -1
  561. package/types/date-picker/DatePicker.d.ts +1 -1
  562. package/types/date-picker/DatePickerContext.d.ts +2 -2
  563. package/types/date-picker/DatePickerPanel.d.ts +1 -1
  564. package/types/instrument-picker/useTablePicker.d.ts +4 -4
  565. package/types/split-button/useSplitButton.d.ts +120 -120
  566. package/types/tabs-next/hooks/useOverflow.d.ts +1 -1
  567. package/types/tabstrip/Tab.d.ts +1 -1
  568. package/types/tabstrip/useTabstrip.d.ts +1 -1
  569. package/types/toolbar/useToolbar.d.ts +1 -1
  570. package/src/calendar/Calendar.css.js +0 -10
  571. package/src/calendar/Calendar.js +0 -70
  572. package/src/calendar/index.js +0 -4
  573. package/src/calendar/internal/CalendarCarousel.css.js +0 -19
  574. package/src/calendar/internal/CalendarCarousel.js +0 -73
  575. package/src/calendar/internal/CalendarContext.js +0 -9
  576. package/src/calendar/internal/CalendarDay.css.js +0 -116
  577. package/src/calendar/internal/CalendarMonth.css.js +0 -13
  578. package/src/calendar/internal/CalendarMonth.js +0 -43
  579. package/src/calendar/internal/CalendarNavigation.css.js +0 -24
  580. package/src/calendar/internal/CalendarNavigation.js +0 -185
  581. package/src/calendar/internal/CalendarWeekHeader.css.js +0 -23
  582. package/src/calendar/internal/CalendarWeekHeader.js +0 -31
  583. package/src/calendar/internal/useFocusManagement.js +0 -66
  584. package/src/calendar/internal/utils.js +0 -57
  585. package/src/calendar/useCalendar.js +0 -116
  586. package/src/calendar/useCalendarDay.js +0 -74
  587. package/src/calendar/useSelection.js +0 -202
  588. package/src/column-picker/ColumnPicker.css.js +0 -8
  589. package/src/column-picker/ColumnPicker.js +0 -108
  590. package/src/column-picker/ColumnSearch.css.js +0 -61
  591. package/src/column-picker/ColumnSearch.js +0 -66
  592. package/src/column-picker/index.js +0 -2
  593. package/src/column-picker/moving-window.js +0 -49
  594. package/src/common-hooks/index.js +0 -3
  595. package/src/common-hooks/selectionTypes.js +0 -8
  596. package/src/common-hooks/use-resize-observer.js +0 -122
  597. package/src/common-hooks/useControlled.js +0 -45
  598. package/src/context-panel-provider/ContextPanelProvider.js +0 -80
  599. package/src/cycle-state-button/CycleStateButton.js +0 -30
  600. package/src/cycle-state-button/index.js +0 -1
  601. package/src/date-input/DateInput.css.js +0 -195
  602. package/src/date-input/DateInput.js +0 -210
  603. package/src/date-input/index.js +0 -1
  604. package/src/date-picker/DatePicker.js +0 -137
  605. package/src/date-picker/DatePickerContext.js +0 -20
  606. package/src/date-picker/DatePickerPanel.css.js +0 -25
  607. package/src/date-picker/DatePickerPanel.js +0 -124
  608. package/src/date-picker/index.js +0 -1
  609. package/src/drag-drop/DragDropProvider.js +0 -123
  610. package/src/drag-drop/DragDropState.js +0 -25
  611. package/src/drag-drop/Draggable.css.js +0 -57
  612. package/src/drag-drop/Draggable.js +0 -77
  613. package/src/drag-drop/DropIndicator.css.js +0 -11
  614. package/src/drag-drop/DropIndicator.js +0 -28
  615. package/src/drag-drop/drop-target-utils.js +0 -199
  616. package/src/drag-drop/index.js +0 -6
  617. package/src/drag-drop/useAutoScroll.js +0 -53
  618. package/src/drag-drop/useDragDisplacers.js +0 -126
  619. package/src/drag-drop/useDragDrop.js +0 -435
  620. package/src/drag-drop/useDragDropCopy.js +0 -22
  621. package/src/drag-drop/useDragDropIndicator.js +0 -182
  622. package/src/drag-drop/useDragDropNaturalMovement.js +0 -205
  623. package/src/drag-drop/useDropIndicator.js +0 -21
  624. package/src/drag-drop/useGlobalDragDrop.js +0 -67
  625. package/src/drag-drop/useTransition.js +0 -11
  626. package/src/editable/index.js +0 -1
  627. package/src/editable/useEditableText.js +0 -199
  628. package/src/editable-label/EditableLabel.css.js +0 -81
  629. package/src/editable-label/EditableLabel.js +0 -125
  630. package/src/editable-label/index.js +0 -1
  631. package/src/expando-input/ExpandoInput.css.js +0 -67
  632. package/src/expando-input/ExpandoInput.js +0 -40
  633. package/src/expando-input/index.js +0 -1
  634. package/src/highlighter/Highlighter.css.js +0 -8
  635. package/src/highlighter/Highlighter.js +0 -27
  636. package/src/highlighter/index.js +0 -1
  637. package/src/hover-overlay/HoverOverlay.js +0 -92
  638. package/src/icon-button/Icon.css.js +0 -8
  639. package/src/icon-button/Icon.js +0 -26
  640. package/src/icon-button/IconButton.css.js +0 -10
  641. package/src/icon-button/IconButton.js +0 -28
  642. package/src/icon-button/ToggleIconButton.css.js +0 -47
  643. package/src/icon-button/ToggleIconButton.js +0 -26
  644. package/src/icon-button/index.js +0 -3
  645. package/src/index.js +0 -31
  646. package/src/instrument-picker/SearchCell.css.js +0 -17
  647. package/src/instrument-picker/SearchCell.js +0 -29
  648. package/src/instrument-picker/TablePicker.css.js +0 -23
  649. package/src/instrument-picker/TablePicker.js +0 -89
  650. package/src/instrument-picker/index.js +0 -1
  651. package/src/instrument-picker/moving-window.js +0 -49
  652. package/src/instrument-picker/useDataSource.js +0 -38
  653. package/src/instrument-picker/useTablePicker.js +0 -136
  654. package/src/measured-container/MeasuredContainer.css.js +0 -11
  655. package/src/measured-container/MeasuredContainer.js +0 -50
  656. package/src/measured-container/index.js +0 -2
  657. package/src/measured-container/useMeasuredContainer.js +0 -156
  658. package/src/modal-provider/ModalProvider.js +0 -147
  659. package/src/overflow-container/OverflowContainer.css.js +0 -135
  660. package/src/overflow-container/OverflowContainer.js +0 -87
  661. package/src/overflow-container/index.js +0 -2
  662. package/src/overflow-container/overflow-utils.js +0 -211
  663. package/src/overflow-container/useOverflowContainer.js +0 -108
  664. package/src/price-ticker/PriceTicker.css.js +0 -32
  665. package/src/price-ticker/PriceTicker.js +0 -51
  666. package/src/price-ticker/index.js +0 -1
  667. package/src/prompt/Prompt.css.js +0 -48
  668. package/src/prompt/Prompt.js +0 -112
  669. package/src/sortable-list/SortableList.js +0 -39
  670. package/src/split-button/SplitButton.css.js +0 -117
  671. package/src/split-button/SplitButton.js +0 -60
  672. package/src/split-button/SplitStateButton.css.js +0 -66
  673. package/src/split-button/SplitStateButton.js +0 -23
  674. package/src/split-button/index.js +0 -2
  675. package/src/split-button/useSplitButton.js +0 -61
  676. package/src/table-search/SearchCell.css.js +0 -20
  677. package/src/table-search/SearchCell.js +0 -26
  678. package/src/table-search/TableSearch.css.js +0 -27
  679. package/src/table-search/TableSearch.js +0 -81
  680. package/src/table-search/index.js +0 -1
  681. package/src/table-search/moving-window.js +0 -49
  682. package/src/table-search/useTableSearch.js +0 -30
  683. package/src/tabs-next/TabBar.css.js +0 -26
  684. package/src/tabs-next/TabBar.js +0 -27
  685. package/src/tabs-next/TabListNext.css.js +0 -36
  686. package/src/tabs-next/TabListNext.js +0 -94
  687. package/src/tabs-next/TabNext.css.js +0 -76
  688. package/src/tabs-next/TabNext.js +0 -91
  689. package/src/tabs-next/TabNextAction.js +0 -26
  690. package/src/tabs-next/TabNextContext.js +0 -14
  691. package/src/tabs-next/TabNextPanel.css.js +0 -17
  692. package/src/tabs-next/TabNextPanel.js +0 -69
  693. package/src/tabs-next/TabNextTrigger.css.js +0 -22
  694. package/src/tabs-next/TabNextTrigger.js +0 -66
  695. package/src/tabs-next/TabOverflowList.css.js +0 -77
  696. package/src/tabs-next/TabOverflowList.js +0 -115
  697. package/src/tabs-next/TabsNext.js +0 -149
  698. package/src/tabs-next/TabsNextContext.js +0 -28
  699. package/src/tabs-next/hooks/useCollection.js +0 -80
  700. package/src/tabs-next/hooks/useFocusOutside.js +0 -23
  701. package/src/tabs-next/hooks/useOverflow.js +0 -118
  702. package/src/tabs-next/index.js +0 -7
  703. package/src/tabstrip/Tab.css.js +0 -148
  704. package/src/tabstrip/Tab.js +0 -107
  705. package/src/tabstrip/TabMenu.css.js +0 -8
  706. package/src/tabstrip/TabMenu.js +0 -48
  707. package/src/tabstrip/TabMenuOptions.js +0 -14
  708. package/src/tabstrip/TabsTypes.js +0 -0
  709. package/src/tabstrip/Tabstrip.css.js +0 -121
  710. package/src/tabstrip/Tabstrip.js +0 -106
  711. package/src/tabstrip/ThemeTabstrip.css.js +0 -20
  712. package/src/tabstrip/index.js +0 -4
  713. package/src/tabstrip/tabstrip-dom-utils.js +0 -11
  714. package/src/tabstrip/useAnimatedSelectionThumb.js +0 -68
  715. package/src/tabstrip/useKeyboardNavigation.js +0 -191
  716. package/src/tabstrip/useSelection.js +0 -50
  717. package/src/tabstrip/useTabstrip.js +0 -181
  718. package/src/time-input/MaskedInput.js +0 -285
  719. package/src/time-input/TimeInput.css.js +0 -39
  720. package/src/time-input/TimeInput.js +0 -37
  721. package/src/time-input/useTimeInput.js +0 -82
  722. package/src/toolbar/Toolbar.css.js +0 -46
  723. package/src/toolbar/Toolbar.js +0 -62
  724. package/src/toolbar/index.js +0 -1
  725. package/src/toolbar/toolbar-dom-utils.js +0 -11
  726. package/src/toolbar/useKeyboardNavigation.js +0 -240
  727. package/src/toolbar/useSelection.js +0 -82
  728. package/src/toolbar/useToolbar.js +0 -73
  729. package/src/utils/deprecated-types.js +0 -0
  730. package/src/utils/forwardCallbackProps.js +0 -15
  731. package/src/utils/index.js +0 -5
  732. package/src/utils/isOverflowElement.js +0 -2
  733. package/src/utils/isPlainObject.js +0 -2
  734. package/src/vuu-date-picker/VuuDatePicker.js +0 -92
  735. package/src/vuu-date-picker/index.js +0 -1
  736. package/src/vuu-input/VuuInput.css.js +0 -13
  737. package/src/vuu-input/VuuInput.js +0 -85
  738. package/src/vuu-input/index.js +0 -1
  739. package/src/vuu-time-picker/TimeRangePicker.js +0 -0
  740. package/src/vuu-time-picker/VuuTimePicker.css.js +0 -14
  741. package/src/vuu-time-picker/VuuTimePicker.js +0 -26
  742. package/src/vuu-typeahead-input/VuuTypeaheadInput.css.js +0 -49
  743. package/src/vuu-typeahead-input/VuuTypeaheadInput.js +0 -46
  744. package/src/vuu-typeahead-input/index.js +0 -1
  745. package/src/vuu-typeahead-input/useVuuTypeaheadInput.js +0 -140
@@ -0,0 +1,375 @@
1
+ import { EventEmitter, updateTimeString, zeroTimeUnit, incrementTimeUnitValue, decrementTimeUnitValue, zeroTime, isValidTimeString, createSyntheticEvent } from '@vuu-ui/vuu-utils';
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __typeError = (msg) => {
5
+ throw TypeError(msg);
6
+ };
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
9
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
10
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
11
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
12
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
13
+ var _controlled, _input, _isFocused, _isIncrementalChange, _selectionStart, _selectionEnd, _value, _unitSelected, _halfUnitSelected;
14
+ const NullSelection = { end: null, start: null };
15
+ const FullSelection = { end: 0, start: 8 };
16
+ const CursorAtEnd = { end: 8, start: 8 };
17
+ class MaskedInput extends EventEmitter {
18
+ constructor(defaultValue, inputEl = null) {
19
+ super();
20
+ __privateAdd(this, _controlled, false);
21
+ __privateAdd(this, _input, null);
22
+ __privateAdd(this, _isFocused, false);
23
+ __privateAdd(this, _isIncrementalChange, false);
24
+ __privateAdd(this, _selectionStart, -1);
25
+ __privateAdd(this, _selectionEnd, -1);
26
+ __privateAdd(this, _value);
27
+ __privateAdd(this, _unitSelected);
28
+ __privateAdd(this, _halfUnitSelected);
29
+ /**
30
+ * The change event is fired programatically. This will only be handled
31
+ * by a native event handler ( not a React handler). We handle this event
32
+ * and convert to a React (Synthetic) event.
33
+ */
34
+ __publicField(this, "emitSyntheticChangeEvent", (e) => {
35
+ const syntheticEvent = createSyntheticEvent(
36
+ e
37
+ );
38
+ this.emit("change", syntheticEvent);
39
+ });
40
+ __publicField(this, "focus", () => {
41
+ if (__privateGet(this, _input)) {
42
+ __privateSet(this, _isFocused, true);
43
+ requestAnimationFrame(() => {
44
+ this.select("hours");
45
+ });
46
+ }
47
+ });
48
+ __publicField(this, "blur", () => {
49
+ this.removeSelection();
50
+ __privateSet(this, _isFocused, false);
51
+ });
52
+ if (inputEl) {
53
+ this.input = inputEl;
54
+ }
55
+ __privateSet(this, _value, defaultValue ?? zeroTime);
56
+ }
57
+ set input(el) {
58
+ if (__privateGet(this, _input)) {
59
+ throw Error(
60
+ "MaskedInput cannot be reused, create a new instance for a new input"
61
+ );
62
+ }
63
+ __privateSet(this, _input, el);
64
+ el.addEventListener("change", this.emitSyntheticChangeEvent);
65
+ }
66
+ get cursorPos() {
67
+ return this.selectionStart;
68
+ }
69
+ set cursorPos(value) {
70
+ this.selectionStart = value;
71
+ this.selectionEnd = value;
72
+ if (__privateGet(this, _input)) {
73
+ __privateGet(this, _input).setSelectionRange(value, value);
74
+ }
75
+ }
76
+ get isFocused() {
77
+ return __privateGet(this, _isFocused);
78
+ }
79
+ get selectionStart() {
80
+ return __privateGet(this, _selectionStart);
81
+ }
82
+ set selectionStart(value) {
83
+ __privateSet(this, _selectionStart, value);
84
+ }
85
+ get selectionEnd() {
86
+ return __privateGet(this, _selectionEnd);
87
+ }
88
+ set selectionEnd(value) {
89
+ __privateSet(this, _selectionEnd, value);
90
+ }
91
+ setValue(value) {
92
+ if (!__privateGet(this, _controlled)) {
93
+ __privateSet(this, _isIncrementalChange, false);
94
+ __privateSet(this, _value, value);
95
+ }
96
+ if (__privateGet(this, _input)) {
97
+ __privateGet(this, _input).value = value;
98
+ __privateGet(this, _input).dispatchEvent(
99
+ new Event("change", {
100
+ bubbles: true,
101
+ composed: true
102
+ })
103
+ );
104
+ }
105
+ }
106
+ setUnitValue(unit, value) {
107
+ const newTimeString = updateTimeString(__privateGet(this, _value), unit, value);
108
+ this.setValue(newTimeString);
109
+ }
110
+ getUnitValue(unit) {
111
+ switch (unit) {
112
+ case "hours":
113
+ return __privateGet(this, _value).slice(0, 2);
114
+ case "minutes":
115
+ return __privateGet(this, _value).slice(3, 5);
116
+ case "seconds":
117
+ return __privateGet(this, _value).slice(6, 8);
118
+ default:
119
+ throw Error(`[MaskedInout] invalue unit ${unit}`);
120
+ }
121
+ }
122
+ get value() {
123
+ return __privateGet(this, _value);
124
+ }
125
+ /**
126
+ * Setting the value this way invokes 'controlled' mode
127
+ */
128
+ set value(value) {
129
+ __privateSet(this, _controlled, true);
130
+ __privateSet(this, _value, value);
131
+ if (this.isFocused) {
132
+ const isIncremental = __privateGet(this, _isIncrementalChange);
133
+ __privateSet(this, _isIncrementalChange, false);
134
+ requestAnimationFrame(() => {
135
+ if (isIncremental) {
136
+ this.restoreSelection();
137
+ } else {
138
+ this.advanceSelection();
139
+ }
140
+ });
141
+ }
142
+ }
143
+ clear(unit) {
144
+ if (__privateGet(this, _input)) {
145
+ let newValue = __privateGet(this, _value);
146
+ if (unit === "hours") {
147
+ newValue = zeroTimeUnit.concat(__privateGet(this, _value).slice(2));
148
+ } else if (unit === "minutes") {
149
+ newValue = __privateGet(this, _value).slice(0, 3).concat(zeroTimeUnit).concat(__privateGet(this, _value).slice(5));
150
+ } else if (unit === "seconds") {
151
+ newValue = __privateGet(this, _value).slice(0, 6).concat(zeroTimeUnit);
152
+ }
153
+ if (newValue !== __privateGet(this, _value)) {
154
+ this.setValue(newValue);
155
+ }
156
+ }
157
+ }
158
+ select(unit, halfUnit = false) {
159
+ if (__privateGet(this, _input)) {
160
+ const offset = halfUnit ? 1 : 0;
161
+ if (unit === "hours") {
162
+ this.selectionStart = __privateGet(this, _input).selectionStart = 0 + offset;
163
+ this.selectionEnd = __privateGet(this, _input).selectionEnd = 2;
164
+ } else if (unit === "minutes") {
165
+ this.selectionStart = __privateGet(this, _input).selectionStart = 3 + offset;
166
+ this.selectionEnd = __privateGet(this, _input).selectionEnd = 5;
167
+ } else if (unit === "seconds") {
168
+ this.selectionStart = __privateGet(this, _input).selectionStart = 6 + offset;
169
+ this.selectionEnd = __privateGet(this, _input).selectionEnd = 8;
170
+ }
171
+ __privateGet(this, _input).setSelectionRange(this.selectionStart, this.selectionEnd);
172
+ if (halfUnit) {
173
+ __privateSet(this, _halfUnitSelected, unit);
174
+ __privateSet(this, _unitSelected, void 0);
175
+ } else {
176
+ __privateSet(this, _halfUnitSelected, void 0);
177
+ __privateSet(this, _unitSelected, unit);
178
+ }
179
+ }
180
+ }
181
+ removeSelection() {
182
+ __privateSet(this, _selectionStart, this.selectionEnd = 8);
183
+ __privateSet(this, _unitSelected, void 0);
184
+ __privateSet(this, _halfUnitSelected, void 0);
185
+ }
186
+ restoreSelection() {
187
+ if (__privateGet(this, _unitSelected)) {
188
+ this.select(__privateGet(this, _unitSelected));
189
+ }
190
+ }
191
+ advanceSelection() {
192
+ if (__privateGet(this, _unitSelected)) {
193
+ this.select(__privateGet(this, _unitSelected), true);
194
+ } else if (__privateGet(this, _halfUnitSelected) === "hours") {
195
+ this.select("minutes");
196
+ } else if (__privateGet(this, _halfUnitSelected) === "minutes") {
197
+ this.select("seconds");
198
+ } else if (__privateGet(this, _halfUnitSelected) === "seconds") {
199
+ this.select("seconds");
200
+ } else {
201
+ throw Error("unreachable code, in theory");
202
+ }
203
+ }
204
+ moveFocus(direction) {
205
+ if (direction === "right") {
206
+ if (__privateGet(this, _unitSelected) === "hours" || __privateGet(this, _halfUnitSelected) === "hours") {
207
+ this.select("minutes");
208
+ } else if (__privateGet(this, _unitSelected) === "minutes" || __privateGet(this, _halfUnitSelected) === "minutes") {
209
+ this.select("seconds");
210
+ } else if (__privateGet(this, _unitSelected) === "seconds" || __privateGet(this, _halfUnitSelected) === "seconds") {
211
+ this.select("seconds");
212
+ }
213
+ } else {
214
+ if (__privateGet(this, _unitSelected) === "seconds" || __privateGet(this, _halfUnitSelected) === "seconds") {
215
+ this.select("minutes");
216
+ } else if (__privateGet(this, _unitSelected) === "minutes" || __privateGet(this, _halfUnitSelected) === "minutes") {
217
+ this.select("hours");
218
+ } else if (__privateGet(this, _unitSelected) === "hours" || __privateGet(this, _halfUnitSelected) === "hours") {
219
+ this.select("hours");
220
+ } else {
221
+ const selection = this.getSelection();
222
+ if (selection === CursorAtEnd) {
223
+ this.select("seconds");
224
+ }
225
+ }
226
+ }
227
+ }
228
+ pasteValue(value) {
229
+ __privateSet(this, _halfUnitSelected, void 0);
230
+ __privateSet(this, _unitSelected, void 0);
231
+ __privateSet(this, _value, value);
232
+ }
233
+ getUnitAtCursorPos(cursorPos = this.cursorPos) {
234
+ if (cursorPos >= 0 && cursorPos < 3) {
235
+ return "hours";
236
+ } else if (cursorPos < 6) {
237
+ return "minutes";
238
+ } else if (cursorPos <= 8) {
239
+ return "seconds";
240
+ } else {
241
+ throw Error(
242
+ `[MaskedInput] getUnitAtCursorPos invalid cursor position ${cursorPos}`
243
+ );
244
+ }
245
+ }
246
+ incrementValue() {
247
+ if (__privateGet(this, _input)) {
248
+ __privateSet(this, _isIncrementalChange, true);
249
+ const unit = this.getUnitAtCursorPos();
250
+ const unitValue = this.getUnitValue(unit);
251
+ const newUnitValue = incrementTimeUnitValue(unit, unitValue);
252
+ this.setUnitValue(unit, newUnitValue);
253
+ this.select(unit);
254
+ }
255
+ }
256
+ decrementValue() {
257
+ if (__privateGet(this, _input)) {
258
+ __privateSet(this, _isIncrementalChange, true);
259
+ const unit = this.getUnitAtCursorPos();
260
+ const unitValue = this.getUnitValue(unit);
261
+ const newUnitValue = decrementTimeUnitValue(unit, unitValue);
262
+ this.setUnitValue(unit, newUnitValue);
263
+ this.select(unit);
264
+ }
265
+ }
266
+ backspace() {
267
+ if (__privateGet(this, _input)) {
268
+ const { cursorPos } = this;
269
+ if (__privateGet(this, _unitSelected) === "seconds") {
270
+ this.clear("seconds");
271
+ this.select("minutes");
272
+ } else if (__privateGet(this, _unitSelected) === "minutes") {
273
+ this.clear("minutes");
274
+ this.select("hours");
275
+ } else if (__privateGet(this, _unitSelected) === "hours") {
276
+ this.clear("hours");
277
+ this.select("hours");
278
+ } else {
279
+ if (cursorPos > 0) {
280
+ const offset = this.selectionStart === 6 || this.selectionStart === 3 ? 2 : 1;
281
+ const newValue = __privateGet(this, _value).slice(0, cursorPos - offset).concat(zeroTime.slice(cursorPos - offset, cursorPos)).concat(__privateGet(this, _value).slice(cursorPos));
282
+ this.selectionStart -= offset;
283
+ this.selectionEnd -= offset;
284
+ this.setValue(newValue);
285
+ requestAnimationFrame(() => {
286
+ __privateGet(this, _input)?.setSelectionRange(
287
+ __privateGet(this, _selectionStart),
288
+ this.selectionEnd
289
+ );
290
+ });
291
+ }
292
+ }
293
+ }
294
+ }
295
+ update(key) {
296
+ if (__privateGet(this, _input)) {
297
+ const { cursorPos } = this;
298
+ if (cursorPos < 8) {
299
+ const originalValue = __privateGet(this, _value);
300
+ const newValue = __privateGet(this, _value).split("").toSpliced(cursorPos, 1, key).join("");
301
+ this.setValue(newValue);
302
+ if (!isValidTimeString(newValue)) {
303
+ if (__privateGet(this, _unitSelected)) {
304
+ this.select(__privateGet(this, _unitSelected));
305
+ __privateGet(this, _input).classList.add("invalid");
306
+ }
307
+ } else {
308
+ __privateGet(this, _input).classList.remove("invalid");
309
+ if (__privateGet(this, _controlled) && newValue === originalValue) {
310
+ this.advanceSelection();
311
+ } else if (!__privateGet(this, _controlled)) {
312
+ this.advanceSelection();
313
+ }
314
+ }
315
+ }
316
+ }
317
+ }
318
+ getSelection() {
319
+ if (__privateGet(this, _input)) {
320
+ const { selectionEnd, selectionStart } = __privateGet(this, _input);
321
+ if (selectionEnd === null || selectionStart === null) {
322
+ return NullSelection;
323
+ } else if (selectionStart === 0 && selectionEnd === 8) {
324
+ return FullSelection;
325
+ } else if (selectionStart === 8 && selectionEnd === 8) {
326
+ return CursorAtEnd;
327
+ } else {
328
+ return {
329
+ end: selectionEnd,
330
+ start: selectionStart
331
+ };
332
+ }
333
+ } else {
334
+ throw Error(`[MasketInput] selection referenced, but no input`);
335
+ }
336
+ }
337
+ click() {
338
+ if (__privateGet(this, _input)) {
339
+ __privateSet(this, _isFocused, true);
340
+ const selection = this.getSelection();
341
+ if (selection === NullSelection) {
342
+ this.select("hours");
343
+ } else if (selection === FullSelection) ; else {
344
+ const cursorPos = __privateGet(this, _input).selectionStart ?? 0;
345
+ this.select(this.getUnitAtCursorPos(cursorPos));
346
+ }
347
+ }
348
+ }
349
+ doubleClick() {
350
+ if (__privateGet(this, _input)) {
351
+ const { selectionStart, selectionEnd } = __privateGet(this, _input);
352
+ if (selectionStart === null || selectionEnd === null) ; else {
353
+ if (selectionStart < 3) {
354
+ this.select("hours");
355
+ } else if (selectionStart < 6) {
356
+ this.select("minutes");
357
+ } else if (selectionStart <= 8) {
358
+ this.select("seconds");
359
+ }
360
+ }
361
+ }
362
+ }
363
+ }
364
+ _controlled = new WeakMap();
365
+ _input = new WeakMap();
366
+ _isFocused = new WeakMap();
367
+ _isIncrementalChange = new WeakMap();
368
+ _selectionStart = new WeakMap();
369
+ _selectionEnd = new WeakMap();
370
+ _value = new WeakMap();
371
+ _unitSelected = new WeakMap();
372
+ _halfUnitSelected = new WeakMap();
373
+
374
+ export { MaskedInput };
375
+ //# sourceMappingURL=MaskedInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaskedInput.js","sources":["../../../../packages/vuu-ui-controls/src/time-input/MaskedInput.ts"],"sourcesContent":["import {\n createSyntheticEvent,\n decrementTimeUnitValue,\n EventEmitter,\n Hours,\n incrementTimeUnitValue,\n isValidTimeString,\n Minutes,\n Seconds,\n TimeString,\n TimeUnit,\n TimeUnitValue,\n updateTimeString,\n zeroTime,\n zeroTimeUnit,\n} from \"@vuu-ui/vuu-utils\";\nimport { ChangeEventHandler } from \"react\";\n\nexport type Digit = \"0\" | \"1\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"7\" | \"8\" | \"9\";\n\ntype NullSelection = {\n end: null;\n start: null;\n};\ntype Selection =\n | {\n end: number;\n start: number;\n }\n | NullSelection;\n\nconst NullSelection: NullSelection = { end: null, start: null };\nconst FullSelection: Selection = { end: 0, start: 8 };\nconst CursorAtEnd: Selection = { end: 8, start: 8 };\n\nexport type MaskedInputEvents = {\n change: ChangeEventHandler<HTMLInputElement>;\n};\n\nexport class MaskedInput extends EventEmitter<MaskedInputEvents> {\n #controlled = false;\n #input: HTMLInputElement | null = null;\n #isFocused = false;\n #isIncrementalChange = false;\n #selectionStart = -1;\n #selectionEnd = -1;\n #value;\n #unitSelected?: TimeUnit;\n #halfUnitSelected?: TimeUnit;\n\n constructor(\n defaultValue: TimeString | undefined,\n inputEl: HTMLInputElement | null = null,\n ) {\n super();\n if (inputEl) {\n this.input = inputEl;\n }\n this.#value = defaultValue ?? zeroTime;\n }\n\n set input(el: HTMLInputElement) {\n if (this.#input) {\n throw Error(\n \"MaskedInput cannot be reused, create a new instance for a new input\",\n );\n }\n this.#input = el;\n el.addEventListener(\"change\", this.emitSyntheticChangeEvent);\n }\n\n /**\n * The change event is fired programatically. This will only be handled\n * by a native event handler ( not a React handler). We handle this event\n * and convert to a React (Synthetic) event.\n */\n private emitSyntheticChangeEvent = (e: Event) => {\n const syntheticEvent = createSyntheticEvent(\n e,\n ) as React.ChangeEvent<HTMLInputElement>;\n\n this.emit(\"change\", syntheticEvent);\n };\n\n get cursorPos() {\n return this.selectionStart;\n }\n set cursorPos(value: number) {\n this.selectionStart = value;\n this.selectionEnd = value;\n if (this.#input) {\n this.#input.setSelectionRange(value, value);\n }\n }\n\n get isFocused() {\n return this.#isFocused;\n }\n\n get selectionStart() {\n return this.#selectionStart;\n }\n set selectionStart(value: number) {\n this.#selectionStart = value;\n }\n\n get selectionEnd() {\n return this.#selectionEnd;\n }\n set selectionEnd(value: number) {\n this.#selectionEnd = value;\n }\n\n private setValue(value: TimeString) {\n if (!this.#controlled) {\n this.#isIncrementalChange = false;\n this.#value = value;\n }\n\n if (this.#input) {\n // HM this updateds the input value, even if we are controlled.\n // Thats not right, but if we don't update it, the event will\n // not carry thwe right value. I don;t thibnk we can simulate\n // the correct behaviour\n this.#input.value = value;\n // this triggers the native change event, which we convert\n // // to synthetic event and emit in input setter above\n this.#input.dispatchEvent(\n new Event(\"change\", {\n bubbles: true,\n composed: true,\n }),\n );\n }\n }\n\n private setUnitValue(unit: TimeUnit, value: Hours | Minutes | Seconds) {\n const newTimeString = updateTimeString(this.#value, unit, value);\n this.setValue(newTimeString);\n }\n\n private getUnitValue<T extends TimeUnit>(unit: T): TimeUnitValue<T> {\n switch (unit) {\n case \"hours\":\n return this.#value.slice(0, 2) as TimeUnitValue<T>;\n case \"minutes\":\n return this.#value.slice(3, 5) as TimeUnitValue<T>;\n case \"seconds\":\n return this.#value.slice(6, 8) as TimeUnitValue<T>;\n default:\n throw Error(`[MaskedInout] invalue unit ${unit}`);\n }\n }\n\n get value() {\n return this.#value;\n }\n\n /**\n * Setting the value this way invokes 'controlled' mode\n */\n set value(value: TimeString) {\n this.#controlled = true;\n this.#value = value;\n if (this.isFocused) {\n const isIncremental = this.#isIncrementalChange;\n this.#isIncrementalChange = false;\n\n requestAnimationFrame(() => {\n if (isIncremental) {\n this.restoreSelection();\n } else {\n this.advanceSelection();\n }\n });\n }\n }\n\n clear(unit: TimeUnit) {\n if (this.#input) {\n let newValue = this.#value;\n if (unit === \"hours\") {\n newValue = zeroTimeUnit.concat(this.#value.slice(2)) as TimeString;\n } else if (unit === \"minutes\") {\n newValue = this.#value\n .slice(0, 3)\n .concat(zeroTimeUnit)\n .concat(this.#value.slice(5)) as TimeString;\n } else if (unit === \"seconds\") {\n newValue = this.#value.slice(0, 6).concat(zeroTimeUnit) as TimeString;\n }\n if (newValue !== this.#value) {\n this.setValue(newValue);\n }\n }\n }\n\n select(unit: TimeUnit, halfUnit = false) {\n if (this.#input) {\n const offset = halfUnit ? 1 : 0;\n if (unit === \"hours\") {\n this.selectionStart = this.#input.selectionStart = 0 + offset;\n this.selectionEnd = this.#input.selectionEnd = 2;\n } else if (unit === \"minutes\") {\n this.selectionStart = this.#input.selectionStart = 3 + offset;\n this.selectionEnd = this.#input.selectionEnd = 5;\n } else if (unit === \"seconds\") {\n this.selectionStart = this.#input.selectionStart = 6 + offset;\n this.selectionEnd = this.#input.selectionEnd = 8;\n }\n this.#input.setSelectionRange(this.selectionStart, this.selectionEnd);\n if (halfUnit) {\n this.#halfUnitSelected = unit;\n this.#unitSelected = undefined;\n } else {\n this.#halfUnitSelected = undefined;\n this.#unitSelected = unit;\n }\n }\n }\n\n removeSelection() {\n this.#selectionStart = this.selectionEnd = 8;\n this.#unitSelected = undefined;\n this.#halfUnitSelected = undefined;\n }\n\n restoreSelection() {\n if (this.#unitSelected) {\n this.select(this.#unitSelected);\n }\n }\n\n advanceSelection() {\n if (this.#unitSelected) {\n this.select(this.#unitSelected, true);\n } else if (this.#halfUnitSelected === \"hours\") {\n this.select(\"minutes\");\n } else if (this.#halfUnitSelected === \"minutes\") {\n this.select(\"seconds\");\n } else if (this.#halfUnitSelected === \"seconds\") {\n this.select(\"seconds\");\n } else {\n throw Error(\"unreachable code, in theory\");\n }\n }\n\n moveFocus(direction: \"left\" | \"right\") {\n if (direction === \"right\") {\n if (\n this.#unitSelected === \"hours\" ||\n this.#halfUnitSelected === \"hours\"\n ) {\n this.select(\"minutes\");\n } else if (\n this.#unitSelected === \"minutes\" ||\n this.#halfUnitSelected === \"minutes\"\n ) {\n this.select(\"seconds\");\n } else if (\n this.#unitSelected === \"seconds\" ||\n this.#halfUnitSelected === \"seconds\"\n ) {\n // Already at the rightmost field, stay at seconds\n this.select(\"seconds\");\n }\n } else {\n if (\n this.#unitSelected === \"seconds\" ||\n this.#halfUnitSelected === \"seconds\"\n ) {\n this.select(\"minutes\");\n } else if (\n this.#unitSelected === \"minutes\" ||\n this.#halfUnitSelected === \"minutes\"\n ) {\n this.select(\"hours\");\n } else if (\n this.#unitSelected === \"hours\" ||\n this.#halfUnitSelected === \"hours\"\n ) {\n // Already at the leftmost field, stay at hours\n this.select(\"hours\");\n } else {\n const selection = this.getSelection();\n if (selection === CursorAtEnd) {\n this.select(\"seconds\");\n }\n }\n }\n }\n\n pasteValue(value: TimeString) {\n this.#halfUnitSelected = undefined;\n this.#unitSelected = undefined;\n this.#value = value;\n }\n\n private getUnitAtCursorPos(cursorPos = this.cursorPos): TimeUnit {\n if (cursorPos >= 0 && cursorPos < 3) {\n return \"hours\";\n } else if (cursorPos < 6) {\n return \"minutes\";\n } else if (cursorPos <= 8) {\n return \"seconds\";\n } else {\n throw Error(\n `[MaskedInput] getUnitAtCursorPos invalid cursor position ${cursorPos}`,\n );\n }\n }\n\n incrementValue() {\n if (this.#input) {\n this.#isIncrementalChange = true;\n const unit = this.getUnitAtCursorPos();\n const unitValue = this.getUnitValue(unit);\n const newUnitValue = incrementTimeUnitValue(unit, unitValue);\n this.setUnitValue(unit, newUnitValue);\n this.select(unit);\n }\n }\n\n decrementValue() {\n if (this.#input) {\n this.#isIncrementalChange = true;\n const unit = this.getUnitAtCursorPos();\n const unitValue = this.getUnitValue(unit);\n const newUnitValue = decrementTimeUnitValue(unit, unitValue);\n this.setUnitValue(unit, newUnitValue);\n this.select(unit);\n }\n }\n\n backspace() {\n if (this.#input) {\n const { cursorPos } = this;\n\n if (this.#unitSelected === \"seconds\") {\n this.clear(\"seconds\");\n this.select(\"minutes\");\n } else if (this.#unitSelected === \"minutes\") {\n this.clear(\"minutes\");\n this.select(\"hours\");\n } else if (this.#unitSelected === \"hours\") {\n this.clear(\"hours\");\n this.select(\"hours\");\n } else {\n if (cursorPos > 0) {\n const offset =\n this.selectionStart === 6 || this.selectionStart === 3 ? 2 : 1;\n const newValue = this.#value\n .slice(0, cursorPos - offset)\n .concat(zeroTime.slice(cursorPos - offset, cursorPos))\n .concat(this.#value.slice(cursorPos)) as TimeString;\n this.selectionStart -= offset;\n this.selectionEnd -= offset;\n this.setValue(newValue);\n\n requestAnimationFrame(() => {\n this.#input?.setSelectionRange(\n this.#selectionStart,\n this.selectionEnd,\n );\n });\n }\n }\n }\n }\n\n update(key: Digit) {\n if (this.#input) {\n const { cursorPos } = this;\n if (cursorPos < 8) {\n const originalValue = this.#value;\n const newValue = this.#value\n .split(\"\")\n .toSpliced(cursorPos, 1, key)\n .join(\"\") as TimeString;\n\n this.setValue(newValue);\n\n if (!isValidTimeString(newValue)) {\n if (this.#unitSelected) {\n this.select(this.#unitSelected);\n this.#input.classList.add(\"invalid\");\n }\n } else {\n this.#input.classList.remove(\"invalid\");\n\n if (this.#controlled && newValue === originalValue) {\n // Special case - user has overtyped a digit with same digit,\n // value has not changed, so will not be set, which would normally\n // trigger advance in controlled mode. Advance so next digit\n // typed will be in correct position\n this.advanceSelection();\n } else if (!this.#controlled) {\n this.advanceSelection();\n }\n }\n }\n }\n }\n\n private getSelection(): Selection {\n if (this.#input) {\n const { selectionEnd, selectionStart } = this.#input;\n if (selectionEnd === null || selectionStart === null) {\n return NullSelection;\n } else if (selectionStart === 0 && selectionEnd === 8) {\n return FullSelection;\n } else if (selectionStart === 8 && selectionEnd === 8) {\n return CursorAtEnd;\n } else {\n return {\n end: selectionEnd,\n start: selectionStart,\n };\n }\n } else {\n throw Error(`[MasketInput] selection referenced, but no input`);\n }\n }\n\n click() {\n if (this.#input) {\n this.#isFocused = true;\n const selection = this.getSelection();\n if (selection === NullSelection) {\n this.select(\"hours\");\n } else if (selection === FullSelection) {\n // do nothing\n } else {\n const cursorPos = this.#input.selectionStart ?? 0;\n this.select(this.getUnitAtCursorPos(cursorPos));\n }\n }\n }\n doubleClick() {\n if (this.#input) {\n const { selectionStart, selectionEnd } = this.#input;\n if (selectionStart === null || selectionEnd === null) {\n // do nothing\n } else {\n if (selectionStart < 3) {\n this.select(\"hours\");\n } else if (selectionStart < 6) {\n this.select(\"minutes\");\n } else if (selectionStart <= 8) {\n this.select(\"seconds\");\n }\n }\n }\n // }\n }\n\n focus = () => {\n if (this.#input) {\n this.#isFocused = true;\n\n requestAnimationFrame(() => {\n this.select(\"hours\");\n });\n }\n };\n\n blur = () => {\n this.removeSelection();\n this.#isFocused = false;\n };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ var timeInputCss = ".salt-density-high .vuuTimeInput {\n --time-input-width: 60px;\n}\n.salt-density-medium .vuuTimeInput {\n --time-input-width: 70px;\n}\n.salt-density-low .vuuTimeInput {\n --time-input-width: 80px;\n}\n.salt-density-touch .vuuTimeInput {\n --time-input-width: 90px;\n}\n\n.vuuTimeInput {\n background: var(--vuuTimeInput-background, inherit);\n border-width: 1px;\n font-family: var(--salt-typography-fontFamily);\n width: var(--vuuTimeInput-width, var(--time-input-width));\n\n &:focus::-webkit-input-placeholder {\n color: transparent;\n }\n\n &:focus {\n outline: var(--vuuTimeInput-outline, var(--salt-focused-outline));\n }\n\n}\n\n.invalid {\n border-color: red;\n}\n\n";
2
+
3
+ export { timeInputCss as default };
4
+ //# sourceMappingURL=TimeInput.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeInput.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,54 @@
1
+ import { forwardRef, createElement } from 'react';
2
+ import { useForkRef } from '@salt-ds/core';
3
+ import { useComponentCssInjection } from '@salt-ds/styles';
4
+ import { useWindow } from '@salt-ds/window';
5
+ import cx from 'clsx';
6
+ import { useTimeInput } from './useTimeInput.js';
7
+ import timeInputCss from './TimeInput.css.js';
8
+
9
+ const classBase = "vuuTimeInput";
10
+ const TimeInput = forwardRef(
11
+ function TimeInput2({
12
+ className,
13
+ date,
14
+ defaultValue,
15
+ onChange,
16
+ onCommit,
17
+ placeholder = "hh:mm:ss",
18
+ value,
19
+ ...htmlAttributes
20
+ }, ref) {
21
+ const targetWindow = useWindow();
22
+ useComponentCssInjection({
23
+ testId: "vuu-time-input",
24
+ css: timeInputCss,
25
+ window: targetWindow
26
+ });
27
+ const { inputRef, eventHandlers } = useTimeInput({
28
+ date,
29
+ defaultValue,
30
+ onChange,
31
+ onCommit,
32
+ value
33
+ });
34
+ return /* @__PURE__ */ createElement(
35
+ "input",
36
+ {
37
+ ...htmlAttributes,
38
+ ...eventHandlers,
39
+ "aria-placeholder": placeholder,
40
+ className: cx(classBase, className),
41
+ defaultValue,
42
+ key: defaultValue,
43
+ placeholder,
44
+ readOnly: true,
45
+ ref: useForkRef(ref, inputRef),
46
+ spellCheck: "false",
47
+ value
48
+ }
49
+ );
50
+ }
51
+ );
52
+
53
+ export { TimeInput };
54
+ //# sourceMappingURL=TimeInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeInput.js","sources":["../../../../packages/vuu-ui-controls/src/time-input/TimeInput.tsx"],"sourcesContent":["import { useForkRef } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport cx from \"clsx\";\nimport { forwardRef, HTMLAttributes } from \"react\";\nimport { TimeInputHookProps, useTimeInput } from \"./useTimeInput\";\n\nimport timeInputCss from \"./TimeInput.css\";\n\nconst classBase = \"vuuTimeInput\";\n\nexport interface TimeInputProps\n extends TimeInputHookProps,\n Omit<\n HTMLAttributes<HTMLInputElement>,\n \"defaultValue\" | \"onChange\" | \"value\"\n >,\n Partial<Pick<HTMLInputElement, \"placeholder\">> {}\n\nexport const TimeInput = forwardRef<HTMLInputElement, TimeInputProps>(\n function TimeInput(\n {\n className,\n date,\n defaultValue,\n onChange,\n onCommit,\n placeholder = \"hh:mm:ss\",\n value,\n ...htmlAttributes\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-time-input\",\n css: timeInputCss,\n window: targetWindow,\n });\n\n const { inputRef, eventHandlers } = useTimeInput({\n date,\n defaultValue,\n onChange,\n onCommit,\n value,\n });\n\n return (\n <input\n {...htmlAttributes}\n {...eventHandlers}\n aria-placeholder={placeholder}\n className={cx(classBase, className)}\n defaultValue={defaultValue}\n key={defaultValue}\n placeholder={placeholder}\n readOnly\n ref={useForkRef(ref, inputRef)}\n spellCheck=\"false\"\n value={value}\n />\n );\n },\n);\n"],"names":["TimeInput"],"mappings":";;;;;;;;AASA,MAAM,SAAY,GAAA,cAAA;AAUX,MAAM,SAAY,GAAA,UAAA;AAAA,EACvB,SAASA,UACP,CAAA;AAAA,IACE,SAAA;AAAA,IACA,IAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAc,GAAA,UAAA;AAAA,IACd,KAAA;AAAA,IACA,GAAG;AAAA,KAEL,GACA,EAAA;AACA,IAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,gBAAA;AAAA,MACR,GAAK,EAAA,YAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAA,MAAM,EAAE,QAAA,EAAU,aAAc,EAAA,GAAI,YAAa,CAAA;AAAA,MAC/C,IAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IACE,uBAAA,aAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACE,GAAG,cAAA;AAAA,QACH,GAAG,aAAA;AAAA,QACJ,kBAAkB,EAAA,WAAA;AAAA,QAClB,SAAA,EAAW,EAAG,CAAA,SAAA,EAAW,SAAS,CAAA;AAAA,QAClC,YAAA;AAAA,QACA,GAAK,EAAA,YAAA;AAAA,QACL,WAAA;AAAA,QACA,QAAQ,EAAA,IAAA;AAAA,QACR,GAAA,EAAK,UAAW,CAAA,GAAA,EAAK,QAAQ,CAAA;AAAA,QAC7B,UAAW,EAAA,OAAA;AAAA,QACX;AAAA;AAAA,KACF;AAAA;AAGN;;;;"}
@@ -0,0 +1,119 @@
1
+ import { isValidTimeString } from '@vuu-ui/vuu-utils';
2
+ import { useRef, useMemo, useCallback } from 'react';
3
+ import { MaskedInput } from './MaskedInput.js';
4
+
5
+ const isDigit = (char) => char.length === 1 && /[0-9]/.test(char);
6
+ const useTimeInput = ({
7
+ defaultValue,
8
+ onChange,
9
+ onCommit,
10
+ value
11
+ }) => {
12
+ const mousedDownRef = useRef(false);
13
+ const maskedInputRef = useRef(void 0);
14
+ useMemo(() => {
15
+ if (maskedInputRef.current === void 0) {
16
+ maskedInputRef.current = new MaskedInput(defaultValue, null);
17
+ maskedInputRef.current.on(
18
+ "change",
19
+ (e) => {
20
+ onChange?.(e);
21
+ }
22
+ );
23
+ }
24
+ if (value && value !== maskedInputRef.current.value) {
25
+ maskedInputRef.current.value = value;
26
+ }
27
+ }, [defaultValue, onChange, value]);
28
+ const setInputEl = useCallback((el) => {
29
+ if (el && maskedInputRef.current) {
30
+ maskedInputRef.current.input = el;
31
+ }
32
+ }, []);
33
+ const back = useRef(false);
34
+ const commitValue = useCallback(
35
+ (evt, value2) => {
36
+ if (isValidTimeString(value2)) {
37
+ onCommit(evt, value2, "text-input");
38
+ } else if (value2 === "hh:mm:ss") {
39
+ console.log("no value set");
40
+ } else {
41
+ console.log(`value is not valid`);
42
+ }
43
+ },
44
+ [onCommit]
45
+ );
46
+ const handleKeyDown = useCallback(
47
+ (e) => {
48
+ const { current: maskedInput } = maskedInputRef;
49
+ if (maskedInput) {
50
+ if (e.key === "Backspace") {
51
+ maskedInput.backspace();
52
+ back.current = true;
53
+ } else if (isDigit(e.key)) {
54
+ maskedInput.update(e.key);
55
+ } else if (e.key === "ArrowLeft") {
56
+ maskedInput.moveFocus("left");
57
+ } else if (e.key === "ArrowRight") {
58
+ maskedInput.moveFocus("right");
59
+ } else if (e.key === "ArrowUp") {
60
+ maskedInput.incrementValue();
61
+ } else if (e.key === "ArrowDown") {
62
+ maskedInput.decrementValue();
63
+ } else if (e.key === "v" && e.metaKey) {
64
+ return;
65
+ } else if (e.key === "Tab") {
66
+ return;
67
+ } else if (e.key === "Enter") {
68
+ commitValue(e, maskedInput.value);
69
+ }
70
+ }
71
+ e.preventDefault();
72
+ },
73
+ [commitValue]
74
+ );
75
+ const handleDoubleClick = useCallback(() => {
76
+ maskedInputRef.current?.doubleClick();
77
+ }, []);
78
+ const handlePaste = useCallback(
79
+ (e) => {
80
+ const value2 = e.clipboardData.getData("text");
81
+ if (isValidTimeString(value2)) {
82
+ maskedInputRef.current?.pasteValue(value2);
83
+ }
84
+ },
85
+ []
86
+ );
87
+ const handleFocus = useCallback(() => {
88
+ if (mousedDownRef.current) {
89
+ mousedDownRef.current = false;
90
+ } else {
91
+ maskedInputRef.current?.focus();
92
+ }
93
+ }, []);
94
+ const handleMouseDown = useCallback(() => {
95
+ mousedDownRef.current = true;
96
+ }, []);
97
+ const handleMouseUp = useCallback(
98
+ (e) => {
99
+ e.preventDefault();
100
+ maskedInputRef.current?.click();
101
+ },
102
+ []
103
+ );
104
+ return {
105
+ inputRef: setInputEl,
106
+ eventHandlers: {
107
+ onBlur: maskedInputRef.current?.blur,
108
+ onDoubleClick: handleDoubleClick,
109
+ onFocus: handleFocus,
110
+ onKeyDown: handleKeyDown,
111
+ onMouseDown: handleMouseDown,
112
+ onMouseUp: handleMouseUp,
113
+ onPaste: handlePaste
114
+ }
115
+ };
116
+ };
117
+
118
+ export { useTimeInput };
119
+ //# sourceMappingURL=useTimeInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTimeInput.js","sources":["../../../../packages/vuu-ui-controls/src/time-input/useTimeInput.ts"],"sourcesContent":["import {\n type CommitHandler,\n DateStringISO,\n isValidTimeString,\n type TimeString,\n} from \"@vuu-ui/vuu-utils\";\nimport {\n ChangeEvent,\n ChangeEventHandler,\n ClipboardEventHandler,\n FocusEventHandler,\n KeyboardEventHandler,\n MouseEventHandler,\n RefCallback,\n useCallback,\n useMemo,\n useRef,\n} from \"react\";\nimport { Digit, MaskedInput } from \"./MaskedInput\";\n\nconst isDigit = (char: string): char is Digit =>\n char.length === 1 && /[0-9]/.test(char);\n\nexport interface TimeInputHookProps {\n date?: Date | DateStringISO;\n defaultValue?: TimeString;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n onCommit: CommitHandler<HTMLInputElement, TimeString>;\n value?: TimeString;\n}\n\nexport const useTimeInput = ({\n defaultValue,\n onChange,\n onCommit,\n value,\n}: TimeInputHookProps) => {\n const mousedDownRef = useRef(false);\n const maskedInputRef = useRef<MaskedInput | undefined>(undefined);\n useMemo(() => {\n if (maskedInputRef.current === undefined) {\n maskedInputRef.current = new MaskedInput(defaultValue, null);\n maskedInputRef.current.on(\n \"change\",\n (e: ChangeEvent<HTMLInputElement>) => {\n onChange?.(e);\n },\n );\n }\n\n if (value && value !== maskedInputRef.current.value) {\n maskedInputRef.current.value = value;\n }\n }, [defaultValue, onChange, value]);\n\n const setInputEl = useCallback<RefCallback<HTMLInputElement>>((el) => {\n if (el && maskedInputRef.current) {\n maskedInputRef.current.input = el;\n }\n }, []);\n const back = useRef(false);\n\n const commitValue = useCallback<CommitHandler<HTMLInputElement, string>>(\n (evt, value) => {\n if (isValidTimeString(value)) {\n onCommit(evt, value, \"text-input\");\n } else if (value === \"hh:mm:ss\") {\n console.log(\"no value set\");\n } else {\n console.log(`value is not valid`);\n }\n },\n [onCommit],\n );\n\n const handleKeyDown = useCallback<KeyboardEventHandler<HTMLInputElement>>(\n (e) => {\n const { current: maskedInput } = maskedInputRef;\n if (maskedInput) {\n if (e.key === \"Backspace\") {\n maskedInput.backspace();\n back.current = true;\n } else if (isDigit(e.key)) {\n maskedInput.update(e.key);\n } else if (e.key === \"ArrowLeft\") {\n maskedInput.moveFocus(\"left\");\n } else if (e.key === \"ArrowRight\") {\n maskedInput.moveFocus(\"right\");\n } else if (e.key === \"ArrowUp\") {\n maskedInput.incrementValue();\n } else if (e.key === \"ArrowDown\") {\n maskedInput.decrementValue();\n } else if (e.key === \"v\" && e.metaKey) {\n // keyboard paste, do not prevent default\n return;\n } else if (e.key === \"Tab\") {\n return;\n } else if (e.key === \"Enter\") {\n commitValue(e, maskedInput.value);\n }\n }\n e.preventDefault();\n },\n [commitValue],\n );\n\n const handleDoubleClick = useCallback(() => {\n maskedInputRef.current?.doubleClick();\n }, []);\n\n const handlePaste = useCallback<ClipboardEventHandler<HTMLInputElement>>(\n (e) => {\n const value = e.clipboardData.getData(\"text\");\n if (isValidTimeString(value)) {\n maskedInputRef.current?.pasteValue(value);\n }\n },\n [],\n );\n\n const handleFocus = useCallback<FocusEventHandler<HTMLInputElement>>(() => {\n // If keboard has been used, how do we detect SHIFT + TAB\n if (mousedDownRef.current) {\n mousedDownRef.current = false;\n } else {\n maskedInputRef.current?.focus();\n }\n }, []);\n\n const handleMouseDown = useCallback<MouseEventHandler>(() => {\n mousedDownRef.current = true;\n }, []);\n\n const handleMouseUp = useCallback<MouseEventHandler<HTMLInputElement>>(\n (e) => {\n e.preventDefault();\n maskedInputRef.current?.click();\n },\n [],\n );\n\n return {\n inputRef: setInputEl,\n eventHandlers: {\n onBlur: maskedInputRef.current?.blur,\n onDoubleClick: handleDoubleClick,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onMouseDown: handleMouseDown,\n onMouseUp: handleMouseUp,\n onPaste: handlePaste,\n },\n };\n};\n"],"names":["value"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ var toolbarCss = ".vuuToolbar {\n --toolbar-height: var(--vuuToolbar-height, 36px);\n --toolbar-item-height: var(--vuuToolbarItem-height, 100%);\n --vuuOverflowContainer-background: var(--vuuToolbar-background);\n --vuuOverflowContainer-borderColor: var(--vuuToolbar-borderColor);\n --vuuOverflowContainer-borderStyle: var(--vuuToolbar-borderStyle);\n --vuuOverflowContainer-borderWidth: var(--vuuToolbar-borderWidth);\n height: var(--toolbar-height);\n}\n\n.vuuToolbar-alignCenter {\n --vuuOverflowContainer-justifyContent: center;\n}\n\n.vuuToolbar-alignEnd {\n --vuuOverflowContainer-justifyContent: flex-end;\n}\n\n/* .vuuToolbarItem {\n height: var(--toolbar-item-height);\n} */\n\n.vuuToolbar-withSeparators .vuuOverflowContainer-item:not(:first-child):before {\n content: '';\n position: absolute;\n left: calc(-1 * var(--overflow-item-gap));\n /* top: calc((var(--toolbar-height) - var(--toolbar-item-height)) /2); */\n top: 0px;\n width: 1px;\n height: var(--toolbar-item-height);\n background-color: var(--salt-separable-primary-borderColor);\n}\n\n\n.vuuToolbarItem.vuuFocusVisible {\n outline-color: var(--vuuToolbarItem-outlineColor, var(--salt-focused-outlineColor));\n outline-style: dashed;\n outline-width: 1px;\n outline-offset: 0px;\n }\n\n\n .vuuToolbarItem:focus,\n .vuuToolbarItem:focus-visible {\n\n outline-color: var(--vuuToolbarItem-outlineColor, var(--vuu-color-purple-10));\n outline-style: dashed;\n outline-width: 1px;\n outline-offset: 0px;\n\n}\n\n\n ";
2
+
3
+ export { toolbarCss as default };
4
+ //# sourceMappingURL=Toolbar.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toolbar.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}