@vritti/quantum-ui 0.3.12 → 0.3.15

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 (508) hide show
  1. package/dist/ActivePoints.js.map +1 -1
  2. package/dist/ActiveShapeUtils.js.map +1 -1
  3. package/dist/Alert.js +1 -1
  4. package/dist/Alert.js.map +1 -1
  5. package/dist/AreaChart.js.map +1 -1
  6. package/dist/Avatar.js +1 -1
  7. package/dist/Avatar.js.map +1 -1
  8. package/dist/Badge2.js +2 -2
  9. package/dist/BarChart.js.map +1 -1
  10. package/dist/BillingCycleSelector.js +37 -0
  11. package/dist/BillingCycleSelector.js.map +1 -0
  12. package/dist/Breadcrumb.js +1 -1
  13. package/dist/Breadcrumb.js.map +1 -1
  14. package/dist/Button.js +1 -1
  15. package/dist/Button.js.map +1 -1
  16. package/dist/Button2.js +2 -2
  17. package/dist/CardSkeleton.js.map +1 -1
  18. package/dist/CartesianChart.js.map +1 -1
  19. package/dist/CategoryFilter.js +6 -4
  20. package/dist/CategoryFilter.js.map +1 -1
  21. package/dist/Chart.js +53 -55
  22. package/dist/Chart.js.map +1 -1
  23. package/dist/Checkbox.js.map +1 -1
  24. package/dist/Checkbox2.js +4 -4
  25. package/dist/CheckboxGroup.js.map +1 -1
  26. package/dist/Collapsible.js.map +1 -1
  27. package/dist/Combination.js +1129 -0
  28. package/dist/Combination.js.map +1 -0
  29. package/dist/CompanySelector.js +20 -0
  30. package/dist/CompanySelector.js.map +1 -0
  31. package/dist/ConfirmHost.js.map +1 -1
  32. package/dist/CopyField.js +71 -0
  33. package/dist/CopyField.js.map +1 -0
  34. package/dist/CountrySelector.js +37 -0
  35. package/dist/CountrySelector.js.map +1 -0
  36. package/dist/CurrencyField.js +1 -0
  37. package/dist/CurrencyField.js.map +1 -1
  38. package/dist/CustomerSelector.js +2 -2
  39. package/dist/CustomerSelector.js.map +1 -1
  40. package/dist/DangerZoneSkeleton.js +21 -3
  41. package/dist/DangerZoneSkeleton.js.map +1 -1
  42. package/dist/DatePicker.js +3 -3
  43. package/dist/DatePicker.js.map +1 -1
  44. package/dist/DateTimePicker.js +2 -2
  45. package/dist/DetailSectionSkeleton.js.map +1 -1
  46. package/dist/Dialog.js.map +1 -1
  47. package/dist/DropdownMenu.js.map +1 -1
  48. package/dist/ErrorBarContext.js.map +1 -1
  49. package/dist/FeaturePermissionSelector.js +37 -0
  50. package/dist/FeaturePermissionSelector.js.map +1 -0
  51. package/dist/Form.js.map +1 -1
  52. package/dist/FormSection.js +4 -4
  53. package/dist/FormSection.js.map +1 -1
  54. package/dist/HierarchyGraph.js +5 -10621
  55. package/dist/HierarchyGraph.js.map +1 -1
  56. package/dist/ISOCountrySelect.js +283 -0
  57. package/dist/ISOCountrySelect.js.map +1 -0
  58. package/dist/IconSelect.js +3 -2
  59. package/dist/IconSelect.js.map +1 -1
  60. package/dist/InventoryItemSelector.js +2 -2
  61. package/dist/InventoryItemSelector.js.map +1 -1
  62. package/dist/Kbd.js +1 -1
  63. package/dist/Kbd.js.map +1 -1
  64. package/dist/Label.js +1 -1
  65. package/dist/LayoutModeContext.js.map +1 -1
  66. package/dist/LegalEntitySelector.js +37 -0
  67. package/dist/LegalEntitySelector.js.map +1 -0
  68. package/dist/LineChart.js.map +1 -1
  69. package/dist/LocationSelector.js +2 -2
  70. package/dist/LocationSelector.js.map +1 -1
  71. package/dist/LotSelector.js +2 -2
  72. package/dist/LotSelector.js.map +1 -1
  73. package/dist/OTPField.js.map +1 -1
  74. package/dist/PageContent.js.map +1 -1
  75. package/dist/PageHeaderSkeleton.js +21 -10
  76. package/dist/PageHeaderSkeleton.js.map +1 -1
  77. package/dist/PasswordField.js.map +1 -1
  78. package/dist/PermissionGate.js +49 -5
  79. package/dist/PermissionGate.js.map +1 -1
  80. package/dist/PersonSelector.js +20 -0
  81. package/dist/PersonSelector.js.map +1 -0
  82. package/dist/PhoneField.js.map +1 -1
  83. package/dist/PieChart.js.map +1 -1
  84. package/dist/PolarChart.js.map +1 -1
  85. package/dist/PurchaseOrderSelector.js +2 -2
  86. package/dist/PurchaseOrderSelector.js.map +1 -1
  87. package/dist/QuantSelector.js +2 -2
  88. package/dist/QuantSelector.js.map +1 -1
  89. package/dist/RadarChart.js.map +1 -1
  90. package/dist/RadialChart.js.map +1 -1
  91. package/dist/RadioGroup.js +6 -6
  92. package/dist/RadioGroup.js.map +1 -1
  93. package/dist/RoleSelector.js +20 -0
  94. package/dist/RoleSelector.js.map +1 -0
  95. package/dist/Select.js +4 -1
  96. package/dist/Select.js.map +1 -1
  97. package/dist/SelectFilter.js.map +1 -1
  98. package/dist/Separator.js.map +1 -1
  99. package/dist/SerialSelector.js +2 -2
  100. package/dist/SerialSelector.js.map +1 -1
  101. package/dist/Sidebar.js +2 -2
  102. package/dist/Sidebar.js.map +1 -1
  103. package/dist/SingleSelect.js +2 -2
  104. package/dist/SingleSelect.js.map +1 -1
  105. package/dist/SiteGroupSelector.js +37 -0
  106. package/dist/SiteGroupSelector.js.map +1 -0
  107. package/dist/SiteSelector.js +37 -0
  108. package/dist/SiteSelector.js.map +1 -0
  109. package/dist/Sonner.js +1 -1
  110. package/dist/Sonner.js.map +1 -1
  111. package/dist/Sortable.js +4 -4417
  112. package/dist/Sortable.js.map +1 -1
  113. package/dist/StepProgressIndicator.js.map +1 -1
  114. package/dist/SupplierItemSelector.js +2 -2
  115. package/dist/SupplierItemSelector.js.map +1 -1
  116. package/dist/SupplierSelector.js +2 -2
  117. package/dist/SupplierSelector.js.map +1 -1
  118. package/dist/Switch.js +3 -3
  119. package/dist/Switch.js.map +1 -1
  120. package/dist/TabsSkeleton.js +101 -49
  121. package/dist/TabsSkeleton.js.map +1 -1
  122. package/dist/TaxClassSelector.js +20 -0
  123. package/dist/TaxClassSelector.js.map +1 -0
  124. package/dist/TextField.js.map +1 -1
  125. package/dist/ThemeContext.js.map +1 -1
  126. package/dist/ThemeToggle.js.map +1 -1
  127. package/dist/Toggle.js +1 -1
  128. package/dist/Toggle.js.map +1 -1
  129. package/dist/Tooltip.js.map +1 -1
  130. package/dist/Typography.js.map +1 -1
  131. package/dist/UomSelector.js +2 -2
  132. package/dist/UomSelector.js.map +1 -1
  133. package/dist/UploadFile.js.map +1 -1
  134. package/dist/assets/quantum-ui.css +44 -13
  135. package/dist/calendar2.js +1 -1
  136. package/dist/collapsible2.js +1 -1
  137. package/dist/components/CompanySelector.js +2 -0
  138. package/dist/components/CompanySelector.js.map +1 -0
  139. package/dist/components/CopyField.js +2 -0
  140. package/dist/components/CopyField.js.map +1 -0
  141. package/dist/components/FormattedDate.js +2 -2
  142. package/dist/components/HierarchyGraph.js +2 -1
  143. package/dist/components/HierarchyGraph.js.map +1 -1
  144. package/dist/components/PermissionGate.js +1 -1
  145. package/dist/components/PersonSelector.js +2 -0
  146. package/dist/components/PersonSelector.js.map +1 -0
  147. package/dist/components/ScanBarcodeButton.js.map +1 -1
  148. package/dist/components/TreeView.js +7 -7
  149. package/dist/components/TreeView.js.map +1 -1
  150. package/dist/copy.js +18 -0
  151. package/dist/copy.js.map +1 -0
  152. package/dist/core.esm.js +4025 -0
  153. package/dist/core.esm.js.map +1 -0
  154. package/dist/dropdown-menu.js +10 -10
  155. package/dist/field.js +1 -1
  156. package/dist/getClassNameFromUnknown.js.map +1 -1
  157. package/dist/getRadiusAndStrokeWidthFromDot.js.map +1 -1
  158. package/dist/getZIndexFromUnknown.js.map +1 -1
  159. package/dist/graphicalItemSelectors.js.map +1 -1
  160. package/dist/image-component.js.map +1 -1
  161. package/dist/index.js +16 -3
  162. package/dist/index.js.map +1 -1
  163. package/dist/index10.js +102 -1499
  164. package/dist/index10.js.map +1 -1
  165. package/dist/index11.js +1499 -37
  166. package/dist/index11.js.map +1 -1
  167. package/dist/index12.js +29 -477
  168. package/dist/index12.js.map +1 -1
  169. package/dist/index13.js +427 -231
  170. package/dist/index13.js.map +1 -1
  171. package/dist/index14.js +215 -1074
  172. package/dist/index14.js.map +1 -1
  173. package/dist/index15.js +1140 -14
  174. package/dist/index15.js.map +1 -1
  175. package/dist/index16.js +13 -19
  176. package/dist/index16.js.map +1 -1
  177. package/dist/index17.js +24 -172
  178. package/dist/index17.js.map +1 -1
  179. package/dist/index18.js +168 -175
  180. package/dist/index18.js.map +1 -1
  181. package/dist/index19.js +173 -201
  182. package/dist/index19.js.map +1 -1
  183. package/dist/index20.js +203 -69
  184. package/dist/index20.js.map +1 -1
  185. package/dist/index21.js +70 -211
  186. package/dist/index21.js.map +1 -1
  187. package/dist/index22.js +207 -117
  188. package/dist/index22.js.map +1 -1
  189. package/dist/index23.js +123 -71
  190. package/dist/index23.js.map +1 -1
  191. package/dist/index24.js +74 -11
  192. package/dist/index24.js.map +1 -1
  193. package/dist/index25.js +13 -1134
  194. package/dist/index25.js.map +1 -1
  195. package/dist/index26.js +1120 -219
  196. package/dist/index26.js.map +1 -1
  197. package/dist/index27.js +202 -2506
  198. package/dist/index27.js.map +1 -1
  199. package/dist/index28.js +2527 -23
  200. package/dist/index28.js.map +1 -1
  201. package/dist/index29.js +32 -4
  202. package/dist/index29.js.map +1 -1
  203. package/dist/index3.js +11543 -267
  204. package/dist/index3.js.map +1 -1
  205. package/dist/index30.js +3 -1124
  206. package/dist/index30.js.map +1 -1
  207. package/dist/index31.js +1 -1
  208. package/dist/index32.js +7 -7
  209. package/dist/index34.js +1 -1
  210. package/dist/index37.js +1 -1
  211. package/dist/index38.js +23 -43
  212. package/dist/index38.js.map +1 -1
  213. package/dist/index4.js +272 -132
  214. package/dist/index4.js.map +1 -1
  215. package/dist/index5.js +138 -388
  216. package/dist/index5.js.map +1 -1
  217. package/dist/index6.js +386 -7
  218. package/dist/index6.js.map +1 -1
  219. package/dist/index7.js +13 -92
  220. package/dist/index7.js.map +1 -1
  221. package/dist/index8.js +92 -43
  222. package/dist/index8.js.map +1 -1
  223. package/dist/index9.js +42 -102
  224. package/dist/index9.js.map +1 -1
  225. package/dist/lib/components/Alert/Alert.d.ts.map +1 -1
  226. package/dist/lib/components/Avatar/Avatar.d.ts.map +1 -1
  227. package/dist/lib/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  228. package/dist/lib/components/Button/Button.d.ts.map +1 -1
  229. package/dist/lib/components/Card/CardSkeleton.d.ts.map +1 -1
  230. package/dist/lib/components/Checkbox/Checkbox.d.ts.map +1 -1
  231. package/dist/lib/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -1
  232. package/dist/lib/components/Collapsible/Collapsible.d.ts.map +1 -1
  233. package/dist/lib/components/CompanySelector/CompanySelector.d.ts +4 -0
  234. package/dist/lib/components/CompanySelector/CompanySelector.d.ts.map +1 -0
  235. package/dist/lib/components/CompanySelector/index.d.ts +2 -0
  236. package/dist/lib/components/CompanySelector/index.d.ts.map +1 -0
  237. package/dist/lib/components/ConfirmHost/ConfirmHost.d.ts.map +1 -1
  238. package/dist/lib/components/CopyField/CopyField.d.ts +10 -0
  239. package/dist/lib/components/CopyField/CopyField.d.ts.map +1 -0
  240. package/dist/lib/components/CopyField/index.d.ts +2 -0
  241. package/dist/lib/components/CopyField/index.d.ts.map +1 -0
  242. package/dist/lib/components/CurrencyField/CurrencyField.d.ts.map +1 -1
  243. package/dist/lib/components/DangerZone/DangerZone.d.ts +3 -1
  244. package/dist/lib/components/DangerZone/DangerZone.d.ts.map +1 -1
  245. package/dist/lib/components/DataTable/CompactTableSkeleton.d.ts.map +1 -1
  246. package/dist/lib/components/DataTable/DataTable.d.ts.map +1 -1
  247. package/dist/lib/components/DataTable/cells/cells.d.ts.map +1 -1
  248. package/dist/lib/components/DataTable/components/DataTableSelectionBar.d.ts.map +1 -1
  249. package/dist/lib/components/DataTable/components/RowActions.d.ts.map +1 -1
  250. package/dist/lib/components/DataTable/hooks/useDataTable.d.ts.map +1 -1
  251. package/dist/lib/components/DataTable/store/store.d.ts.map +1 -1
  252. package/dist/lib/components/DataTable/types.d.ts.map +1 -1
  253. package/dist/lib/components/DatePicker/DatePicker.d.ts +2 -2
  254. package/dist/lib/components/DatePicker/DatePicker.d.ts.map +1 -1
  255. package/dist/lib/components/DetailField/DetailField.d.ts.map +1 -1
  256. package/dist/lib/components/DetailField/DetailHeader.d.ts.map +1 -1
  257. package/dist/lib/components/DetailField/DetailSectionSkeleton.d.ts.map +1 -1
  258. package/dist/lib/components/Dialog/Dialog.d.ts.map +1 -1
  259. package/dist/lib/components/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  260. package/dist/lib/components/DropdownMenu/types.d.ts.map +1 -1
  261. package/dist/lib/components/Editor/editor-ui/color-picker.d.ts.map +1 -1
  262. package/dist/lib/components/Editor/editor-ui/image-component.d.ts.map +1 -1
  263. package/dist/lib/components/Editor/nodes/autocomplete-node.d.ts.map +1 -1
  264. package/dist/lib/components/Editor/plugins/actions/max-length-plugin.d.ts.map +1 -1
  265. package/dist/lib/components/Editor/plugins/embeds/auto-embed-plugin.d.ts.map +1 -1
  266. package/dist/lib/components/Editor/plugins/embeds/youtube-plugin.d.ts.map +1 -1
  267. package/dist/lib/components/Editor/plugins/emojis-plugin.d.ts.map +1 -1
  268. package/dist/lib/components/Editor/plugins/floating-link-editor-plugin.d.ts.map +1 -1
  269. package/dist/lib/components/Editor/plugins/floating-text-format-plugin.d.ts.map +1 -1
  270. package/dist/lib/components/Editor/plugins/images-plugin.d.ts.map +1 -1
  271. package/dist/lib/components/Editor/plugins/keywords-plugin.d.ts.map +1 -1
  272. package/dist/lib/components/Editor/plugins/layout-plugin.d.ts.map +1 -1
  273. package/dist/lib/components/Editor/plugins/list-max-indent-level-plugin.d.ts.map +1 -1
  274. package/dist/lib/components/Editor/plugins/mentions-plugin.d.ts.map +1 -1
  275. package/dist/lib/components/Editor/plugins/picker/component-picker-option.d.ts.map +1 -1
  276. package/dist/lib/components/Editor/plugins/tab-focus-plugin.d.ts.map +1 -1
  277. package/dist/lib/components/Editor/plugins/table-plugin.d.ts.map +1 -1
  278. package/dist/lib/components/Editor/plugins/toolbar/clear-formatting-toolbar-plugin.d.ts.map +1 -1
  279. package/dist/lib/components/Editor/plugins/typing-pref-plugin.d.ts.map +1 -1
  280. package/dist/lib/components/Editor/shared/invariant.d.ts.map +1 -1
  281. package/dist/lib/components/Editor/shared/react-patches.d.ts.map +1 -1
  282. package/dist/lib/components/Editor/shared/react-test-utils.d.ts.map +1 -1
  283. package/dist/lib/components/Editor/shared/simple-diff-with-cursor.d.ts.map +1 -1
  284. package/dist/lib/components/Editor/shared/use-layout-effect.d.ts.map +1 -1
  285. package/dist/lib/components/Editor/transformers/markdown-table-transformer.d.ts.map +1 -1
  286. package/dist/lib/components/Editor/utils/collapsible.d.ts.map +1 -1
  287. package/dist/lib/components/Editor/utils/doc-serialization.d.ts.map +1 -1
  288. package/dist/lib/components/Editor/utils/emoji-list.d.ts.map +1 -1
  289. package/dist/lib/components/Editor/utils/get-dom-range-rect.d.ts.map +1 -1
  290. package/dist/lib/components/Editor/utils/get-selected-node.d.ts.map +1 -1
  291. package/dist/lib/components/Editor/utils/guard.d.ts.map +1 -1
  292. package/dist/lib/components/Editor/utils/set-floating-elem-position-for-link-editor.d.ts.map +1 -1
  293. package/dist/lib/components/Editor/utils/set-floating-elem-position.d.ts.map +1 -1
  294. package/dist/lib/components/Editor/utils/swipe.d.ts.map +1 -1
  295. package/dist/lib/components/Editor/utils/url.d.ts.map +1 -1
  296. package/dist/lib/components/Form/Form.d.ts.map +1 -1
  297. package/dist/lib/components/OTPField/OTPField.d.ts.map +1 -1
  298. package/dist/lib/components/PageContent/PageContent.d.ts.map +1 -1
  299. package/dist/lib/components/PageHeader/PageHeader.d.ts.map +1 -1
  300. package/dist/lib/components/PasswordField/PasswordField.d.ts.map +1 -1
  301. package/dist/lib/components/PermissionGate/PermissionGate.d.ts +15 -4
  302. package/dist/lib/components/PermissionGate/PermissionGate.d.ts.map +1 -1
  303. package/dist/lib/components/PermissionGate/index.d.ts +1 -1
  304. package/dist/lib/components/PermissionGate/index.d.ts.map +1 -1
  305. package/dist/lib/components/PersonSelector/PersonSelector.d.ts +4 -0
  306. package/dist/lib/components/PersonSelector/PersonSelector.d.ts.map +1 -0
  307. package/dist/lib/components/PersonSelector/index.d.ts +2 -0
  308. package/dist/lib/components/PersonSelector/index.d.ts.map +1 -0
  309. package/dist/lib/components/PhoneField/PhoneField.d.ts.map +1 -1
  310. package/dist/lib/components/RadioGroup/RadioGroup.d.ts.map +1 -1
  311. package/dist/lib/components/ScanBarcodeButton/ScanBarcodeButton.d.ts.map +1 -1
  312. package/dist/lib/components/Select/SelectFilter.d.ts.map +1 -1
  313. package/dist/lib/components/Select/components/MultiSelect/MultiSelect.d.ts.map +1 -1
  314. package/dist/lib/components/Select/components/MultiSelect/MultiSelectFilter.d.ts.map +1 -1
  315. package/dist/lib/components/Select/components/SingleSelect/SingleSelect.d.ts.map +1 -1
  316. package/dist/lib/components/Select/components/SingleSelect/SingleSelectFilter.d.ts.map +1 -1
  317. package/dist/lib/components/Select/hooks/useSelect.d.ts.map +1 -1
  318. package/dist/lib/components/Select/hooks/useSingleSelect.d.ts.map +1 -1
  319. package/dist/lib/components/Select/types.d.ts +1 -1
  320. package/dist/lib/components/Select/types.d.ts.map +1 -1
  321. package/dist/lib/components/Separator/Separator.d.ts.map +1 -1
  322. package/dist/lib/components/Sidebar/Sidebar.d.ts.map +1 -1
  323. package/dist/lib/components/Sonner/Sonner.d.ts.map +1 -1
  324. package/dist/lib/components/Sonner/toast.d.ts.map +1 -1
  325. package/dist/lib/components/StepProgressIndicator/StepProgressIndicator.d.ts.map +1 -1
  326. package/dist/lib/components/Switch/Switch.d.ts.map +1 -1
  327. package/dist/lib/components/Tabs/Tabs.d.ts +2 -0
  328. package/dist/lib/components/Tabs/Tabs.d.ts.map +1 -1
  329. package/dist/lib/components/Tabs/TabsSkeleton.d.ts.map +1 -1
  330. package/dist/lib/components/TextField/TextField.d.ts.map +1 -1
  331. package/dist/lib/components/ThemeToggle/ThemeToggle.d.ts.map +1 -1
  332. package/dist/lib/components/Toggle/Toggle.d.ts.map +1 -1
  333. package/dist/lib/components/Tooltip/Tooltip.d.ts.map +1 -1
  334. package/dist/lib/components/TreeView/TreeView.d.ts.map +1 -1
  335. package/dist/lib/components/Typography/Typography.d.ts.map +1 -1
  336. package/dist/lib/components/UploadFile/UploadFile.d.ts.map +1 -1
  337. package/dist/lib/components/index.d.ts +3 -0
  338. package/dist/lib/components/index.d.ts.map +1 -1
  339. package/dist/lib/config/index.d.ts.map +1 -1
  340. package/dist/lib/context/LayoutModeContext.d.ts.map +1 -1
  341. package/dist/lib/context/ThemeContext.d.ts.map +1 -1
  342. package/dist/lib/hooks/useBUCurrency.d.ts.map +1 -1
  343. package/dist/lib/hooks/useBUTimezone.d.ts.map +1 -1
  344. package/dist/lib/hooks/useBarcodeScanner.d.ts.map +1 -1
  345. package/dist/lib/hooks/useFormatters.d.ts.map +1 -1
  346. package/dist/lib/hooks/useSSE.d.ts.map +1 -1
  347. package/dist/lib/hooks/useTheme.d.ts.map +1 -1
  348. package/dist/lib/index.d.ts.map +1 -1
  349. package/dist/lib/selects/billing-cycle/BillingCycleFilter.d.ts +12 -0
  350. package/dist/lib/selects/billing-cycle/BillingCycleFilter.d.ts.map +1 -0
  351. package/dist/lib/selects/billing-cycle/BillingCycleSelector.d.ts +4 -0
  352. package/dist/lib/selects/billing-cycle/BillingCycleSelector.d.ts.map +1 -0
  353. package/dist/lib/selects/billing-cycle/index.d.ts +3 -0
  354. package/dist/lib/selects/billing-cycle/index.d.ts.map +1 -0
  355. package/dist/lib/selects/category/CategoryFilter.d.ts.map +1 -1
  356. package/dist/lib/selects/category/CategorySelector.d.ts.map +1 -1
  357. package/dist/lib/selects/cost-category/CostCategorySelector.d.ts.map +1 -1
  358. package/dist/lib/selects/country/CountryFilter.d.ts +12 -0
  359. package/dist/lib/selects/country/CountryFilter.d.ts.map +1 -0
  360. package/dist/lib/selects/country/CountrySelector.d.ts +4 -0
  361. package/dist/lib/selects/country/CountrySelector.d.ts.map +1 -0
  362. package/dist/lib/selects/country/index.d.ts +3 -0
  363. package/dist/lib/selects/country/index.d.ts.map +1 -0
  364. package/dist/lib/selects/feature-permission/FeaturePermissionFilter.d.ts +12 -0
  365. package/dist/lib/selects/feature-permission/FeaturePermissionFilter.d.ts.map +1 -0
  366. package/dist/lib/selects/feature-permission/FeaturePermissionSelector.d.ts +4 -0
  367. package/dist/lib/selects/feature-permission/FeaturePermissionSelector.d.ts.map +1 -0
  368. package/dist/lib/selects/feature-permission/index.d.ts +3 -0
  369. package/dist/lib/selects/feature-permission/index.d.ts.map +1 -0
  370. package/dist/lib/selects/icon/IconSelect.d.ts.map +1 -1
  371. package/dist/lib/selects/index.d.ts +9 -0
  372. package/dist/lib/selects/index.d.ts.map +1 -1
  373. package/dist/lib/selects/inventory-item/InventoryItemSelector.d.ts +2 -2
  374. package/dist/lib/selects/inventory-item/InventoryItemSelector.d.ts.map +1 -1
  375. package/dist/lib/selects/iso-country/ISOCountrySelect.d.ts +15 -0
  376. package/dist/lib/selects/iso-country/ISOCountrySelect.d.ts.map +1 -0
  377. package/dist/lib/selects/iso-country/index.d.ts +3 -0
  378. package/dist/lib/selects/iso-country/index.d.ts.map +1 -0
  379. package/dist/lib/selects/iso-country/iso-countries.d.ts +7 -0
  380. package/dist/lib/selects/iso-country/iso-countries.d.ts.map +1 -0
  381. package/dist/lib/selects/legal-entity/LegalEntityFilter.d.ts +12 -0
  382. package/dist/lib/selects/legal-entity/LegalEntityFilter.d.ts.map +1 -0
  383. package/dist/lib/selects/legal-entity/LegalEntitySelector.d.ts +4 -0
  384. package/dist/lib/selects/legal-entity/LegalEntitySelector.d.ts.map +1 -0
  385. package/dist/lib/selects/legal-entity/index.d.ts +3 -0
  386. package/dist/lib/selects/legal-entity/index.d.ts.map +1 -0
  387. package/dist/lib/selects/location/LocationSelector.d.ts.map +1 -1
  388. package/dist/lib/selects/purchase-order/PurchaseOrderSelector.d.ts.map +1 -1
  389. package/dist/lib/selects/purchase-order-item/PurchaseOrderItemSelector.d.ts.map +1 -1
  390. package/dist/lib/selects/role/RoleSelector.d.ts +4 -0
  391. package/dist/lib/selects/role/RoleSelector.d.ts.map +1 -0
  392. package/dist/lib/selects/role/index.d.ts +2 -0
  393. package/dist/lib/selects/role/index.d.ts.map +1 -0
  394. package/dist/lib/selects/serial/SerialSelector.d.ts.map +1 -1
  395. package/dist/lib/selects/site/SiteFilter.d.ts +12 -0
  396. package/dist/lib/selects/site/SiteFilter.d.ts.map +1 -0
  397. package/dist/lib/selects/site/SiteSelector.d.ts +4 -0
  398. package/dist/lib/selects/site/SiteSelector.d.ts.map +1 -0
  399. package/dist/lib/selects/site/index.d.ts +3 -0
  400. package/dist/lib/selects/site/index.d.ts.map +1 -0
  401. package/dist/lib/selects/site-group/SiteGroupFilter.d.ts +12 -0
  402. package/dist/lib/selects/site-group/SiteGroupFilter.d.ts.map +1 -0
  403. package/dist/lib/selects/site-group/SiteGroupSelector.d.ts +4 -0
  404. package/dist/lib/selects/site-group/SiteGroupSelector.d.ts.map +1 -0
  405. package/dist/lib/selects/site-group/index.d.ts +3 -0
  406. package/dist/lib/selects/site-group/index.d.ts.map +1 -0
  407. package/dist/lib/selects/supplier/SupplierSelector.d.ts.map +1 -1
  408. package/dist/lib/selects/supplier-item/SupplierItemFilter.d.ts.map +1 -1
  409. package/dist/lib/selects/supplier-item/SupplierItemSelector.d.ts.map +1 -1
  410. package/dist/lib/selects/tax-class/TaxClassSelector.d.ts +4 -0
  411. package/dist/lib/selects/tax-class/TaxClassSelector.d.ts.map +1 -0
  412. package/dist/lib/selects/tax-class/index.d.ts +2 -0
  413. package/dist/lib/selects/tax-class/index.d.ts.map +1 -0
  414. package/dist/lib/theme/index.d.ts.map +1 -1
  415. package/dist/lib/types/catalog-resolver.d.ts +50 -17
  416. package/dist/lib/types/catalog-resolver.d.ts.map +1 -1
  417. package/dist/lib/utils/axios.d.ts.map +1 -1
  418. package/dist/lib/utils/cn.d.ts +3 -0
  419. package/dist/lib/utils/cn.d.ts.map +1 -0
  420. package/dist/lib/utils/dagre.d.ts +2 -0
  421. package/dist/lib/utils/dagre.d.ts.map +1 -0
  422. package/dist/lib/utils/dnd-kit/core.d.ts +2 -0
  423. package/dist/lib/utils/dnd-kit/core.d.ts.map +1 -0
  424. package/dist/lib/utils/dnd-kit/sortable.d.ts +2 -0
  425. package/dist/lib/utils/dnd-kit/sortable.d.ts.map +1 -0
  426. package/dist/lib/utils/dnd-kit/utilities.d.ts +2 -0
  427. package/dist/lib/utils/dnd-kit/utilities.d.ts.map +1 -0
  428. package/dist/lib/utils/formHelpers.d.ts.map +1 -1
  429. package/dist/lib/utils/format.d.ts.map +1 -1
  430. package/dist/lib/utils/permission-deps.d.ts +9 -0
  431. package/dist/lib/utils/permission-deps.d.ts.map +1 -0
  432. package/dist/lib/utils/react-flow.d.ts +2 -0
  433. package/dist/lib/utils/react-flow.d.ts.map +1 -0
  434. package/dist/lib/utils/zod.d.ts +9 -0
  435. package/dist/lib/utils/zod.d.ts.map +1 -1
  436. package/dist/polarScaleSelectors.js.map +1 -1
  437. package/dist/popover.js +1 -1
  438. package/dist/select2.js +1 -1
  439. package/dist/selects/billing-cycle.js +2 -0
  440. package/dist/selects/billing-cycle.js.map +1 -0
  441. package/dist/selects/cost-category.js +2 -2
  442. package/dist/selects/cost-category.js.map +1 -1
  443. package/dist/selects/country.js +2 -0
  444. package/dist/selects/country.js.map +1 -0
  445. package/dist/selects/feature-permission.js +2 -0
  446. package/dist/selects/feature-permission.js.map +1 -0
  447. package/dist/selects/iso-country.js +2 -0
  448. package/dist/selects/iso-country.js.map +1 -0
  449. package/dist/selects/legal-entity.js +2 -0
  450. package/dist/selects/legal-entity.js.map +1 -0
  451. package/dist/selects/purchase-order-item.js +1 -1
  452. package/dist/selects/purchase-order-item.js.map +1 -1
  453. package/dist/selects/role.js +2 -0
  454. package/dist/selects/role.js.map +1 -0
  455. package/dist/selects/site-group.js +2 -0
  456. package/dist/selects/site-group.js.map +1 -0
  457. package/dist/selects/site.js +2 -0
  458. package/dist/selects/site.js.map +1 -0
  459. package/dist/selects/tax-class.js +2 -0
  460. package/dist/selects/tax-class.js.map +1 -0
  461. package/dist/selects/tax-group.js +2 -2
  462. package/dist/selects/tax-group.js.map +1 -1
  463. package/dist/separator2.js +1 -1
  464. package/dist/sortable.esm.js +780 -0
  465. package/dist/sortable.esm.js.map +1 -0
  466. package/dist/theme/index.js.map +1 -1
  467. package/dist/toast.js +2 -26
  468. package/dist/toast.js.map +1 -1
  469. package/dist/tooltip2.js +1 -1
  470. package/dist/tooltipContext.js.map +1 -1
  471. package/dist/types/catalog-resolver.js +5 -2
  472. package/dist/types/catalog-resolver.js.map +1 -1
  473. package/dist/useBUTimezone.js.map +1 -1
  474. package/dist/useDataTable.js +58 -60
  475. package/dist/useDataTable.js.map +1 -1
  476. package/dist/useFormatters.js.map +1 -1
  477. package/dist/useTheme.js.map +1 -1
  478. package/dist/useTimer.js +2 -2
  479. package/dist/useTimer.js.map +1 -1
  480. package/dist/utilities.esm.js +333 -0
  481. package/dist/utilities.esm.js.map +1 -0
  482. package/dist/utils/axios.js +1 -1
  483. package/dist/utils/axios.js.map +1 -1
  484. package/dist/utils/cn.js +6 -0
  485. package/dist/utils/cn.js.map +1 -0
  486. package/dist/utils/currency.js +2 -2
  487. package/dist/utils/dagre.js +4 -0
  488. package/dist/utils/dagre.js.map +1 -0
  489. package/dist/utils/dnd-kit/core.js +2 -0
  490. package/dist/utils/dnd-kit/core.js.map +1 -0
  491. package/dist/utils/dnd-kit/sortable.js +2 -0
  492. package/dist/utils/dnd-kit/sortable.js.map +1 -0
  493. package/dist/utils/dnd-kit/utilities.js +2 -0
  494. package/dist/utils/dnd-kit/utilities.js.map +1 -0
  495. package/dist/utils/format.js +2 -2
  496. package/dist/utils/format.js.map +1 -1
  497. package/dist/utils/hotkeys.js +1 -1
  498. package/dist/utils/money.js +1 -1
  499. package/dist/utils/permission-deps.js +64 -0
  500. package/dist/utils/permission-deps.js.map +1 -0
  501. package/dist/utils/react-flow.js +2 -0
  502. package/dist/utils/react-flow.js.map +1 -0
  503. package/dist/utils/timezone.js +1 -1
  504. package/dist/utils/zod.js +11 -1
  505. package/dist/utils/zod.js.map +1 -1
  506. package/dist/youtube.js +15 -29
  507. package/dist/youtube.js.map +1 -1
  508. package/package.json +77 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useFormatters.js","sources":["../lib/hooks/useBUCurrency.ts","../lib/hooks/useFormatters.ts"],"sourcesContent":["import { useLocation } from 'react-router-dom';\nimport { resolveCurrency } from '../utils/currency';\n\n// Returns the currency code (ISO 4217) resolved for the current route.\n// Subscribes to route changes so consumers re-render when the active BU changes.\n// Resolution order: host's configured `currency.resolveCurrency` → user currency → null.\nexport function useBUCurrency(): string | null {\n // Subscribe to URL changes so we re-resolve when the BU slug in the path changes.\n useLocation();\n return resolveCurrency();\n}\n","import { useMemo } from 'react';\nimport {\n type CurrencyAmount,\n type FormattedValue,\n formatCurrency,\n formatDate,\n formatDateTime,\n formatNumber,\n formatString,\n} from '../utils/format';\nimport { getLocale } from '../utils/locale';\nimport { useBUCurrency } from './useBUCurrency';\nimport { useBUTimezone } from './useBUTimezone';\nimport { useLocale } from './useLocale';\n\n// Formatters with locale / BU currency / BU timezone pre-bound to current context. Use this\n// inside any cell callback or component where you need consistent number/currency/date output\n// without threading the context yourself.\n//\n// Example:\n// const fmt = useFormatters();\n// const { primary, secondary } = fmt.currency(po.totalAmount, { exchangeRate: po.exchangeRate });\n//\n// The returned object is stable across renders unless locale / BU currency / BU timezone change,\n// so it's safe to put in `useMemo` dependency arrays for column definitions.\nexport interface Formatters {\n string: (value: React.ReactNode) => FormattedValue;\n number: (value: number | string | null | undefined, options?: { fractionDigits?: number }) => FormattedValue;\n currency: (value: CurrencyAmount | null | undefined, options?: { exchangeRate?: number | null }) => FormattedValue;\n date: (value: string | null | undefined) => FormattedValue;\n dateTime: (value: string | null | undefined, options?: { timeZone?: string }) => FormattedValue;\n}\n\nexport function useFormatters(): Formatters {\n const locale = useLocale();\n const buTimeZone = useBUTimezone();\n const buCurrency = useBUCurrency();\n const localeTag = getLocale() ?? 'en-US';\n\n return useMemo<Formatters>(\n () => ({\n string: formatString,\n number: (value, options) => formatNumber(value, { localeTag, fractionDigits: options?.fractionDigits }),\n currency: (value, options) => formatCurrency(value, { buCurrency, exchangeRate: options?.exchangeRate ?? null }),\n date: (value) => formatDate(value, { locale }),\n dateTime: (value, options) => formatDateTime(value, { locale, buTimeZone, timeZoneOverride: options?.timeZone }),\n }),\n [locale, buTimeZone, buCurrency, localeTag],\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAMO,SAAS,aAAA,GAA+B;AAE7C,EAAA,WAAA,EAAY;AACZ,EAAA,OAAO,eAAA,EAAgB;AACzB;;ACuBO,SAAS,aAAA,GAA4B;AAC1C,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,MAAM,aAAa,aAAA,EAAc;AACjC,EAAA,MAAM,aAAa,aAAA,EAAc;AACjC,EAAA,MAAM,SAAA,GAAY,WAAU,IAAK,OAAA;AAEjC,EAAA,OAAO,OAAA;AAAA,IACL,OAAO;AAAA,MACL,MAAA,EAAQ,YAAA;AAAA,MACR,MAAA,EAAQ,CAAC,KAAA,EAAO,OAAA,KAAY,YAAA,CAAa,KAAA,EAAO,EAAE,SAAA,EAAW,cAAA,EAAgB,OAAA,EAAS,cAAA,EAAgB,CAAA;AAAA,MACtG,QAAA,EAAU,CAAC,KAAA,EAAO,OAAA,KAAY,cAAA,CAAe,KAAA,EAAO,EAAE,UAAA,EAAY,YAAA,EAAc,OAAA,EAAS,YAAA,IAAgB,IAAA,EAAM,CAAA;AAAA,MAC/G,MAAM,CAAC,KAAA,KAAU,WAAW,KAAA,EAAO,EAAE,QAAQ,CAAA;AAAA,MAC7C,QAAA,EAAU,CAAC,KAAA,EAAO,OAAA,KAAY,cAAA,CAAe,KAAA,EAAO,EAAE,MAAA,EAAQ,UAAA,EAAY,gBAAA,EAAkB,OAAA,EAAS,QAAA,EAAU;AAAA,KACjH,CAAA;AAAA,IACA,CAAC,MAAA,EAAQ,UAAA,EAAY,UAAA,EAAY,SAAS;AAAA,GAC5C;AACF;;;;"}
1
+ {"version":3,"file":"useFormatters.js","sources":["../lib/hooks/useBUCurrency.ts","../lib/hooks/useFormatters.ts"],"sourcesContent":["import { useLocation } from 'react-router-dom';\nimport { resolveCurrency } from '../utils/currency';\n\n// Returns the currency code (ISO 4217) resolved for the current route, re-resolving on route change (host resolver → user currency → null).\nexport function useBUCurrency(): string | null {\n // Subscribe to URL changes so we re-resolve when the BU slug in the path changes.\n useLocation();\n return resolveCurrency();\n}\n","import { useMemo } from 'react';\nimport {\n type CurrencyAmount,\n type FormattedValue,\n formatCurrency,\n formatDate,\n formatDateTime,\n formatNumber,\n formatString,\n} from '../utils/format';\nimport { getLocale } from '../utils/locale';\nimport { useBUCurrency } from './useBUCurrency';\nimport { useBUTimezone } from './useBUTimezone';\nimport { useLocale } from './useLocale';\n\nexport interface Formatters {\n string: (value: React.ReactNode) => FormattedValue;\n number: (value: number | string | null | undefined, options?: { fractionDigits?: number }) => FormattedValue;\n currency: (value: CurrencyAmount | null | undefined, options?: { exchangeRate?: number | null }) => FormattedValue;\n date: (value: string | null | undefined) => FormattedValue;\n dateTime: (value: string | null | undefined, options?: { timeZone?: string }) => FormattedValue;\n}\n\nexport function useFormatters(): Formatters {\n const locale = useLocale();\n const buTimeZone = useBUTimezone();\n const buCurrency = useBUCurrency();\n const localeTag = getLocale() ?? 'en-US';\n\n return useMemo<Formatters>(\n () => ({\n string: formatString,\n number: (value, options) => formatNumber(value, { localeTag, fractionDigits: options?.fractionDigits }),\n currency: (value, options) => formatCurrency(value, { buCurrency, exchangeRate: options?.exchangeRate ?? null }),\n date: (value) => formatDate(value, { locale }),\n dateTime: (value, options) => formatDateTime(value, { locale, buTimeZone, timeZoneOverride: options?.timeZone }),\n }),\n [locale, buTimeZone, buCurrency, localeTag],\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAIO,SAAS,aAAA,GAA+B;AAE7C,EAAA,WAAA,EAAY;AACZ,EAAA,OAAO,eAAA,EAAgB;AACzB;;ACeO,SAAS,aAAA,GAA4B;AAC1C,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,MAAM,aAAa,aAAA,EAAc;AACjC,EAAA,MAAM,aAAa,aAAA,EAAc;AACjC,EAAA,MAAM,SAAA,GAAY,WAAU,IAAK,OAAA;AAEjC,EAAA,OAAO,OAAA;AAAA,IACL,OAAO;AAAA,MACL,MAAA,EAAQ,YAAA;AAAA,MACR,MAAA,EAAQ,CAAC,KAAA,EAAO,OAAA,KAAY,YAAA,CAAa,KAAA,EAAO,EAAE,SAAA,EAAW,cAAA,EAAgB,OAAA,EAAS,cAAA,EAAgB,CAAA;AAAA,MACtG,QAAA,EAAU,CAAC,KAAA,EAAO,OAAA,KAAY,cAAA,CAAe,KAAA,EAAO,EAAE,UAAA,EAAY,YAAA,EAAc,OAAA,EAAS,YAAA,IAAgB,IAAA,EAAM,CAAA;AAAA,MAC/G,MAAM,CAAC,KAAA,KAAU,WAAW,KAAA,EAAO,EAAE,QAAQ,CAAA;AAAA,MAC7C,QAAA,EAAU,CAAC,KAAA,EAAO,OAAA,KAAY,cAAA,CAAe,KAAA,EAAO,EAAE,MAAA,EAAQ,UAAA,EAAY,gBAAA,EAAkB,OAAA,EAAS,QAAA,EAAU;AAAA,KACjH,CAAA;AAAA,IACA,CAAC,MAAA,EAAQ,UAAA,EAAY,UAAA,EAAY,SAAS;AAAA,GAC5C;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTheme.js","sources":["../lib/hooks/useTheme.ts"],"sourcesContent":["import { useContext } from 'react';\nimport { ThemeContext } from '../context/ThemeContext';\n\n// Re-export types from context for backward compatibility\nexport type { ThemeMode } from '../context/ThemeContext';\n\n/**\n * Return type for the useTheme hook\n */\nexport interface UseThemeReturn {\n /** Current theme mode ('light' or 'dark') */\n theme: 'light' | 'dark';\n /** Function to toggle between light and dark themes */\n toggleTheme: () => void;\n /** Function to set a specific theme */\n setTheme: (theme: 'light' | 'dark') => void;\n}\n\n/**\n * Hook for accessing theme state from the ThemeProvider context.\n *\n * Features:\n * - Access to centralized theme state\n * - Theme persistence handled by ThemeProvider\n * - System preference detection handled by ThemeProvider\n * - Automatic 'dark' class management on document root\n *\n * @throws Error if used outside of ThemeProvider\n * @returns Object containing current theme and functions to change it\n *\n * @example\n * ```tsx\n * // First, wrap your app with ThemeProvider\n * import { ThemeProvider } from '@vritti/quantum-ui';\n *\n * function App() {\n * return (\n * <ThemeProvider>\n * <MyComponent />\n * </ThemeProvider>\n * );\n * }\n *\n * // Then use the hook in any component\n * function MyComponent() {\n * const { theme, toggleTheme, setTheme } = useTheme();\n *\n * return (\n * <div>\n * <p>Current theme: {theme}</p>\n * <button onClick={toggleTheme}>Toggle theme</button>\n * <button onClick={() => setTheme('dark')}>Set dark</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useTheme(): UseThemeReturn {\n const context = useContext(ThemeContext);\n\n if (!context) {\n throw new Error(\n 'useTheme must be used within a ThemeProvider. ' +\n 'Wrap your application with <ThemeProvider> to use the useTheme hook.',\n );\n }\n\n return context;\n}\n"],"names":[],"mappings":";;;AAyDO,SAAS,QAAA,GAA2B;AACzC,EAAA,MAAM,OAAA,GAAU,WAAW,YAAY,CAAA;AAEvC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KAEF;AAAA,EACF;AAEA,EAAA,OAAO,OAAA;AACT;;;;"}
1
+ {"version":3,"file":"useTheme.js","sources":["../lib/hooks/useTheme.ts"],"sourcesContent":["import { useContext } from 'react';\nimport { ThemeContext } from '../context/ThemeContext';\n\nexport type { ThemeMode } from '../context/ThemeContext';\n\nexport interface UseThemeReturn {\n theme: 'light' | 'dark';\n toggleTheme: () => void;\n setTheme: (theme: 'light' | 'dark') => void;\n}\n\n// Hook for accessing theme state from the ThemeProvider context.\nexport function useTheme(): UseThemeReturn {\n const context = useContext(ThemeContext);\n\n if (!context) {\n throw new Error(\n 'useTheme must be used within a ThemeProvider. ' +\n 'Wrap your application with <ThemeProvider> to use the useTheme hook.',\n );\n }\n\n return context;\n}\n"],"names":[],"mappings":";;;AAYO,SAAS,QAAA,GAA2B;AACzC,EAAA,MAAM,OAAA,GAAU,WAAW,YAAY,CAAA;AAEvC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KAEF;AAAA,EACF;AAEA,EAAA,OAAO,OAAA;AACT;;;;"}
package/dist/useTimer.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { useState, useEffect, useRef, useCallback, useMemo } from 'react';
2
- import { w as we } from './index3.js';
2
+ import { w as we } from './index4.js';
3
3
  import { useParams } from 'react-router-dom';
4
4
  import { parseSlug } from './utils/slug.js';
5
- import { g as getConfig } from './index7.js';
5
+ import { g as getConfig } from './index8.js';
6
6
 
7
7
  const DEFAULT_MIN_LENGTH = 3;
8
8
  const DEFAULT_MAX_INTERVAL_MS = 50;
@@ -1 +1 @@
1
- {"version":3,"file":"useTimer.js","sources":["../lib/hooks/useBarcodeScanner.ts","../lib/hooks/useSlugParams.ts","../lib/hooks/useSSE.ts","../lib/hooks/useTimer.ts"],"sourcesContent":["import type { UseMutationResult } from '@tanstack/react-query';\nimport { useEffect, useRef, useState } from 'react';\nimport { useHotkeys } from '../utils/hotkeys';\n\nconst DEFAULT_MIN_LENGTH = 3;\nconst DEFAULT_MAX_INTERVAL_MS = 50;\nconst MAX_SCAN_DURATION_MS = 500;\n\nexport interface UseBarcodeScannerOptions<TData, TError, TVariables> {\n mutation: UseMutationResult<TData, TError, TVariables>;\n toVariables: (code: string) => TVariables;\n enabled?: boolean;\n toggleShortcut?: string;\n exitShortcut?: string;\n minLength?: number;\n maxIntervalMs?: number;\n}\n\nexport interface UseBarcodeScannerResult {\n isActive: boolean;\n // True while a scanned code is being submitted (mirrors the supplied mutation's pending state).\n isPending: boolean;\n enable: () => void;\n disable: () => void;\n toggle: () => void;\n toggleShortcut: string;\n exitShortcut: string;\n}\n\nexport function useBarcodeScanner<TData, TError, TVariables>({\n mutation,\n toVariables,\n enabled = true,\n toggleShortcut = 'alt+s',\n exitShortcut = 'escape',\n minLength = DEFAULT_MIN_LENGTH,\n maxIntervalMs = DEFAULT_MAX_INTERVAL_MS,\n}: UseBarcodeScannerOptions<TData, TError, TVariables>): UseBarcodeScannerResult {\n const [isActive, setIsActive] = useState(false);\n\n const enable = () => setIsActive(true);\n const disable = () => setIsActive(false);\n const toggle = () => setIsActive((v) => !v);\n\n // Auto-disable when the gating condition turns false\n useEffect(() => {\n if (!enabled) setIsActive(false);\n }, [enabled]);\n\n // Cross-platform toggle shortcut\n useHotkeys(toggleShortcut, toggle, { enabled: enabled });\n // Escape exits only when active\n useHotkeys(exitShortcut, disable, { enabled: isActive });\n\n // Keyboard-wedge burst detector\n const bufferRef = useRef('');\n const lastKeyTimeRef = useRef(0);\n const scanStartTimeRef = useRef(0);\n const mutateRef = useRef(mutation.mutate);\n mutateRef.current = mutation.mutate;\n const toVariablesRef = useRef(toVariables);\n toVariablesRef.current = toVariables;\n\n useEffect(() => {\n if (!isActive || !enabled) return;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const target = event.target as Element | null;\n if (\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target?.hasAttribute('contenteditable')\n )\n return;\n\n const now = Date.now();\n const gap = now - lastKeyTimeRef.current;\n\n if (event.key === 'Enter') {\n const elapsed = now - scanStartTimeRef.current;\n const code = bufferRef.current;\n bufferRef.current = '';\n lastKeyTimeRef.current = 0;\n scanStartTimeRef.current = 0;\n if (code.length >= minLength && elapsed <= MAX_SCAN_DURATION_MS) {\n event.preventDefault();\n mutateRef.current(toVariablesRef.current(code));\n }\n return;\n }\n\n if (event.key.length !== 1) return;\n\n if (gap > maxIntervalMs && bufferRef.current.length > 0) {\n bufferRef.current = '';\n scanStartTimeRef.current = 0;\n }\n\n if (bufferRef.current.length === 0) scanStartTimeRef.current = now;\n\n bufferRef.current += event.key;\n lastKeyTimeRef.current = now;\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n bufferRef.current = '';\n lastKeyTimeRef.current = 0;\n scanStartTimeRef.current = 0;\n };\n }, [isActive, enabled, minLength, maxIntervalMs]);\n\n return {\n isActive,\n isPending: mutation.isPending,\n enable,\n disable,\n toggle,\n toggleShortcut,\n exitShortcut,\n };\n}\n","import { useParams } from 'react-router-dom';\nimport { parseSlug } from '../utils/slug';\n\nexport interface SlugParam {\n slug: string;\n name: string;\n id: string;\n}\n\ntype SlugParamMap<T extends string[]> = { [K in T[number]]: SlugParam };\n\nfunction parseParam(value: string | undefined): SlugParam {\n const v = value ?? '';\n const parsed = parseSlug(v);\n return { slug: v, name: parsed?.slug ?? '', id: parsed?.id ?? v };\n}\n\n// Single param — returns SlugParam directly for clean destructuring\nexport function useSlugParams<T extends string>(param: T): SlugParam;\n// Multiple params — returns { paramA: SlugParam; paramB: SlugParam }\nexport function useSlugParams<T extends string[]>(...params: T): SlugParamMap<T>;\nexport function useSlugParams(...params: string[]): SlugParam | SlugParamMap<string[]> {\n const routeParams = useParams();\n\n if (params.length === 1) {\n return parseParam(routeParams[params[0]]);\n }\n\n const result: Record<string, SlugParam> = {};\n for (const param of params) {\n result[param] = parseParam(routeParams[param]);\n }\n return result;\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { getConfig } from '../config';\n\n/**\n * Options for the useSSE hook\n *\n * @typeParam EventMap - Maps SSE event names to their parsed JSON data types\n */\nexport interface UseSSEOptions<EventMap extends Record<string, unknown> = Record<string, unknown>> {\n /** API path resolved against quantum-ui baseURL (e.g. '/cloud-api/events/whatsapp') */\n path: string;\n /** SSE event names to listen for via addEventListener */\n events: (keyof EventMap & string)[];\n /** Whether to connect. Set false to disconnect and reset state. @default true */\n enabled?: boolean;\n /** Whether to auto-reconnect when the server closes the connection. @default true */\n autoReconnect?: boolean;\n /** Whether to send cookies with the request. @default true */\n withCredentials?: boolean;\n /** Called when the EventSource connection encounters an error */\n onError?: (event: Event) => void;\n /** Called when the EventSource connection opens */\n onOpen?: () => void;\n}\n\n/**\n * Return type for the useSSE hook\n *\n * @typeParam EventMap - Maps SSE event names to their parsed JSON data types\n */\nexport interface UseSSEReturn<EventMap extends Record<string, unknown>> {\n /** The SSE event name of the last received event */\n eventType: keyof EventMap | null;\n /** The parsed JSON data of the last received event */\n data: EventMap[keyof EventMap] | null;\n /** UPPER_CASE enum of event names for comparison (e.g. eventTypes.VERIFIED === 'verified') */\n eventTypes: { [K in keyof EventMap as Uppercase<K & string>]: K };\n /** Whether the EventSource connection is currently open */\n isConnected: boolean;\n /** Human-readable error message if the connection failed */\n error: string | null;\n /** Manually close the connection */\n disconnect: () => void;\n}\n\n/**\n * Generic Server-Sent Events hook that returns the last event as `eventType` + `data`.\n *\n * Registers a `addEventListener` for each name in `events`, parses `event.data`\n * as JSON, and stores the latest event type and data in state.\n *\n * @typeParam EventMap - Maps SSE event names to their data shapes\n *\n * @example\n * ```tsx\n * type VerificationEvents = {\n * initiated: { verificationCode: string; instructions: string };\n * verified: { phone: string };\n * error: { message: string };\n * expired: { message: string };\n * };\n *\n * const { eventType, data, eventTypes, disconnect } = useSSE<VerificationEvents>({\n * path: '/cloud-api/onboarding/mobile-verification/events/whatsapp',\n * events: ['initiated', 'verified', 'error', 'expired'],\n * });\n *\n * if (!eventType) return <Spinner />;\n * if (eventType === eventTypes.VERIFIED) handleSuccess((data as VerificationEvents['verified']).phone);\n * if (eventType === eventTypes.INITIATED) return <QRCode value={(data as VerificationEvents['initiated']).verificationCode} />;\n * ```\n */\nexport function useSSE<EventMap extends Record<string, unknown> = Record<string, unknown>>(\n options: UseSSEOptions<EventMap>,\n): UseSSEReturn<EventMap> {\n const { path, events: eventNames = [], enabled = true, withCredentials = true } = options;\n\n const eventSourceRef = useRef<EventSource | null>(null);\n const [eventType, setEventType] = useState<keyof EventMap | null>(null);\n const [data, setData] = useState<EventMap[keyof EventMap] | null>(null);\n const [isConnected, setIsConnected] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n // Store options in a ref for stable access inside event handlers\n const optionsRef = useRef(options);\n optionsRef.current = options;\n\n // Stable serialized key for the events array\n const eventsKey = eventNames.join(',');\n\n const disconnect = useCallback(() => {\n if (eventSourceRef.current) {\n eventSourceRef.current.close();\n eventSourceRef.current = null;\n setIsConnected(false);\n }\n }, []);\n\n useEffect(() => {\n if (!enabled) {\n disconnect();\n setEventType(null);\n setData(null);\n return;\n }\n\n // Build full URL from quantum-ui config\n const config = getConfig();\n const sseUrl = `${config.axios.baseURL}${path}`;\n\n const eventSource = new EventSource(sseUrl, { withCredentials });\n eventSourceRef.current = eventSource;\n\n eventSource.onopen = () => {\n setIsConnected(true);\n setError(null);\n optionsRef.current.onOpen?.();\n };\n\n eventSource.onerror = (event) => {\n setIsConnected(false);\n\n // When autoReconnect is false, close on any error to prevent browser reconnect\n if (!optionsRef.current.autoReconnect && optionsRef.current.autoReconnect !== undefined) {\n eventSource.close();\n eventSourceRef.current = null;\n return;\n }\n\n if (eventSource.readyState === EventSource.CLOSED) {\n setError('Connection lost.');\n optionsRef.current.onError?.(event);\n }\n };\n\n // Register one addEventListener per event name\n const handlers: { name: string; handler: EventListener }[] = [];\n const names = eventsKey.split(',').filter(Boolean);\n\n for (const name of names) {\n const handler = (event: Event) => {\n try {\n const parsed = JSON.parse((event as MessageEvent).data as string);\n setEventType(name as keyof EventMap);\n setData(parsed);\n } catch (e) {\n console.error(`Failed to parse SSE event '${name}':`, e);\n }\n };\n\n eventSource.addEventListener(name, handler);\n handlers.push({ name, handler });\n }\n\n return () => {\n for (const { name, handler } of handlers) {\n eventSource.removeEventListener(name, handler);\n }\n disconnect();\n };\n }, [enabled, path, eventsKey, withCredentials, disconnect]);\n\n // Build UPPER_CASE enum from event names: { INITIATED: 'initiated', VERIFIED: 'verified', ... }\n type EventTypesMap = { [K in keyof EventMap as Uppercase<K & string>]: K };\n const eventTypes = useMemo(() => {\n const map = {} as EventTypesMap;\n for (const name of eventsKey.split(',').filter(Boolean)) {\n (map as Record<string, string>)[name.toUpperCase()] = name;\n }\n return map;\n }, [eventsKey]);\n\n return { eventType, data, eventTypes, isConnected, error, disconnect };\n}\n","import { useEffect, useState } from 'react';\n\nexport interface TimerHandle {\n timer: number;\n startTimer: (seconds?: number) => void;\n}\n\n// Generic countdown timer — decrements every second until 0\nexport function useTimer(initial = 0): TimerHandle {\n const [timer, setTimer] = useState(initial);\n\n useEffect(() => {\n if (timer > 0) {\n const t = setTimeout(() => setTimer(timer - 1), 1000);\n return () => clearTimeout(t);\n }\n }, [timer]);\n\n return { timer, startTimer: (seconds = 45) => setTimer(seconds) };\n}\n"],"names":["useHotkeys"],"mappings":"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"}
1
+ {"version":3,"file":"useTimer.js","sources":["../lib/hooks/useBarcodeScanner.ts","../lib/hooks/useSlugParams.ts","../lib/hooks/useSSE.ts","../lib/hooks/useTimer.ts"],"sourcesContent":["import type { UseMutationResult } from '@tanstack/react-query';\nimport { useEffect, useRef, useState } from 'react';\nimport { useHotkeys } from '../utils/hotkeys';\n\nconst DEFAULT_MIN_LENGTH = 3;\nconst DEFAULT_MAX_INTERVAL_MS = 50;\nconst MAX_SCAN_DURATION_MS = 500;\n\nexport interface UseBarcodeScannerOptions<TData, TError, TVariables> {\n mutation: UseMutationResult<TData, TError, TVariables>;\n toVariables: (code: string) => TVariables;\n enabled?: boolean;\n toggleShortcut?: string;\n exitShortcut?: string;\n minLength?: number;\n maxIntervalMs?: number;\n}\n\nexport interface UseBarcodeScannerResult {\n isActive: boolean;\n isPending: boolean;\n enable: () => void;\n disable: () => void;\n toggle: () => void;\n toggleShortcut: string;\n exitShortcut: string;\n}\n\nexport function useBarcodeScanner<TData, TError, TVariables>({\n mutation,\n toVariables,\n enabled = true,\n toggleShortcut = 'alt+s',\n exitShortcut = 'escape',\n minLength = DEFAULT_MIN_LENGTH,\n maxIntervalMs = DEFAULT_MAX_INTERVAL_MS,\n}: UseBarcodeScannerOptions<TData, TError, TVariables>): UseBarcodeScannerResult {\n const [isActive, setIsActive] = useState(false);\n\n const enable = () => setIsActive(true);\n const disable = () => setIsActive(false);\n const toggle = () => setIsActive((v) => !v);\n\n // Auto-disable when the gating condition turns false\n useEffect(() => {\n if (!enabled) setIsActive(false);\n }, [enabled]);\n\n // Cross-platform toggle shortcut\n useHotkeys(toggleShortcut, toggle, { enabled: enabled });\n // Escape exits only when active\n useHotkeys(exitShortcut, disable, { enabled: isActive });\n\n // Keyboard-wedge burst detector\n const bufferRef = useRef('');\n const lastKeyTimeRef = useRef(0);\n const scanStartTimeRef = useRef(0);\n const mutateRef = useRef(mutation.mutate);\n mutateRef.current = mutation.mutate;\n const toVariablesRef = useRef(toVariables);\n toVariablesRef.current = toVariables;\n\n useEffect(() => {\n if (!isActive || !enabled) return;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const target = event.target as Element | null;\n if (\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target?.hasAttribute('contenteditable')\n )\n return;\n\n const now = Date.now();\n const gap = now - lastKeyTimeRef.current;\n\n if (event.key === 'Enter') {\n const elapsed = now - scanStartTimeRef.current;\n const code = bufferRef.current;\n bufferRef.current = '';\n lastKeyTimeRef.current = 0;\n scanStartTimeRef.current = 0;\n if (code.length >= minLength && elapsed <= MAX_SCAN_DURATION_MS) {\n event.preventDefault();\n mutateRef.current(toVariablesRef.current(code));\n }\n return;\n }\n\n if (event.key.length !== 1) return;\n\n if (gap > maxIntervalMs && bufferRef.current.length > 0) {\n bufferRef.current = '';\n scanStartTimeRef.current = 0;\n }\n\n if (bufferRef.current.length === 0) scanStartTimeRef.current = now;\n\n bufferRef.current += event.key;\n lastKeyTimeRef.current = now;\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n bufferRef.current = '';\n lastKeyTimeRef.current = 0;\n scanStartTimeRef.current = 0;\n };\n }, [isActive, enabled, minLength, maxIntervalMs]);\n\n return {\n isActive,\n isPending: mutation.isPending,\n enable,\n disable,\n toggle,\n toggleShortcut,\n exitShortcut,\n };\n}\n","import { useParams } from 'react-router-dom';\nimport { parseSlug } from '../utils/slug';\n\nexport interface SlugParam {\n slug: string;\n name: string;\n id: string;\n}\n\ntype SlugParamMap<T extends string[]> = { [K in T[number]]: SlugParam };\n\nfunction parseParam(value: string | undefined): SlugParam {\n const v = value ?? '';\n const parsed = parseSlug(v);\n return { slug: v, name: parsed?.slug ?? '', id: parsed?.id ?? v };\n}\n\n// Single param — returns SlugParam directly for clean destructuring\nexport function useSlugParams<T extends string>(param: T): SlugParam;\n// Multiple params — returns { paramA: SlugParam; paramB: SlugParam }\nexport function useSlugParams<T extends string[]>(...params: T): SlugParamMap<T>;\nexport function useSlugParams(...params: string[]): SlugParam | SlugParamMap<string[]> {\n const routeParams = useParams();\n\n if (params.length === 1) {\n return parseParam(routeParams[params[0]]);\n }\n\n const result: Record<string, SlugParam> = {};\n for (const param of params) {\n result[param] = parseParam(routeParams[param]);\n }\n return result;\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { getConfig } from '../config';\n\nexport interface UseSSEOptions<EventMap extends Record<string, unknown> = Record<string, unknown>> {\n path: string;\n events: (keyof EventMap & string)[];\n enabled?: boolean;\n autoReconnect?: boolean;\n withCredentials?: boolean;\n onError?: (event: Event) => void;\n onOpen?: () => void;\n}\n\nexport interface UseSSEReturn<EventMap extends Record<string, unknown>> {\n eventType: keyof EventMap | null;\n data: EventMap[keyof EventMap] | null;\n eventTypes: { [K in keyof EventMap as Uppercase<K & string>]: K };\n isConnected: boolean;\n error: string | null;\n disconnect: () => void;\n}\n\n// Generic Server-Sent Events hook that returns the last event as `eventType` + `data`.\nexport function useSSE<EventMap extends Record<string, unknown> = Record<string, unknown>>(\n options: UseSSEOptions<EventMap>,\n): UseSSEReturn<EventMap> {\n const { path, events: eventNames = [], enabled = true, withCredentials = true } = options;\n\n const eventSourceRef = useRef<EventSource | null>(null);\n const [eventType, setEventType] = useState<keyof EventMap | null>(null);\n const [data, setData] = useState<EventMap[keyof EventMap] | null>(null);\n const [isConnected, setIsConnected] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n // Store options in a ref for stable access inside event handlers\n const optionsRef = useRef(options);\n optionsRef.current = options;\n\n // Stable serialized key for the events array\n const eventsKey = eventNames.join(',');\n\n const disconnect = useCallback(() => {\n if (eventSourceRef.current) {\n eventSourceRef.current.close();\n eventSourceRef.current = null;\n setIsConnected(false);\n }\n }, []);\n\n useEffect(() => {\n if (!enabled) {\n disconnect();\n setEventType(null);\n setData(null);\n return;\n }\n\n // Build full URL from quantum-ui config\n const config = getConfig();\n const sseUrl = `${config.axios.baseURL}${path}`;\n\n const eventSource = new EventSource(sseUrl, { withCredentials });\n eventSourceRef.current = eventSource;\n\n eventSource.onopen = () => {\n setIsConnected(true);\n setError(null);\n optionsRef.current.onOpen?.();\n };\n\n eventSource.onerror = (event) => {\n setIsConnected(false);\n\n // When autoReconnect is false, close on any error to prevent browser reconnect\n if (!optionsRef.current.autoReconnect && optionsRef.current.autoReconnect !== undefined) {\n eventSource.close();\n eventSourceRef.current = null;\n return;\n }\n\n if (eventSource.readyState === EventSource.CLOSED) {\n setError('Connection lost.');\n optionsRef.current.onError?.(event);\n }\n };\n\n // Register one addEventListener per event name\n const handlers: { name: string; handler: EventListener }[] = [];\n const names = eventsKey.split(',').filter(Boolean);\n\n for (const name of names) {\n const handler = (event: Event) => {\n try {\n const parsed = JSON.parse((event as MessageEvent).data as string);\n setEventType(name as keyof EventMap);\n setData(parsed);\n } catch (e) {\n console.error(`Failed to parse SSE event '${name}':`, e);\n }\n };\n\n eventSource.addEventListener(name, handler);\n handlers.push({ name, handler });\n }\n\n return () => {\n for (const { name, handler } of handlers) {\n eventSource.removeEventListener(name, handler);\n }\n disconnect();\n };\n }, [enabled, path, eventsKey, withCredentials, disconnect]);\n\n // Build UPPER_CASE enum from event names: { INITIATED: 'initiated', VERIFIED: 'verified', ... }\n type EventTypesMap = { [K in keyof EventMap as Uppercase<K & string>]: K };\n const eventTypes = useMemo(() => {\n const map = {} as EventTypesMap;\n for (const name of eventsKey.split(',').filter(Boolean)) {\n (map as Record<string, string>)[name.toUpperCase()] = name;\n }\n return map;\n }, [eventsKey]);\n\n return { eventType, data, eventTypes, isConnected, error, disconnect };\n}\n","import { useEffect, useState } from 'react';\n\nexport interface TimerHandle {\n timer: number;\n startTimer: (seconds?: number) => void;\n}\n\n// Generic countdown timer — decrements every second until 0\nexport function useTimer(initial = 0): TimerHandle {\n const [timer, setTimer] = useState(initial);\n\n useEffect(() => {\n if (timer > 0) {\n const t = setTimeout(() => setTimer(timer - 1), 1000);\n return () => clearTimeout(t);\n }\n }, [timer]);\n\n return { timer, startTimer: (seconds = 45) => setTimer(seconds) };\n}\n"],"names":["useHotkeys"],"mappings":"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"}
@@ -0,0 +1,333 @@
1
+ import { useLayoutEffect, useEffect, useMemo, useRef, useCallback } from 'react';
2
+
3
+ function useCombinedRefs() {
4
+ for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
5
+ refs[_key] = arguments[_key];
6
+ }
7
+
8
+ return useMemo(() => node => {
9
+ refs.forEach(ref => ref(node));
10
+ }, // eslint-disable-next-line react-hooks/exhaustive-deps
11
+ refs);
12
+ }
13
+
14
+ // https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js
15
+ const canUseDOM = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';
16
+
17
+ function isWindow(element) {
18
+ const elementString = Object.prototype.toString.call(element);
19
+ return elementString === '[object Window]' || // In Electron context the Window object serializes to [object global]
20
+ elementString === '[object global]';
21
+ }
22
+
23
+ function isNode(node) {
24
+ return 'nodeType' in node;
25
+ }
26
+
27
+ function getWindow(target) {
28
+ var _target$ownerDocument, _target$ownerDocument2;
29
+
30
+ if (!target) {
31
+ return window;
32
+ }
33
+
34
+ if (isWindow(target)) {
35
+ return target;
36
+ }
37
+
38
+ if (!isNode(target)) {
39
+ return window;
40
+ }
41
+
42
+ return (_target$ownerDocument = (_target$ownerDocument2 = target.ownerDocument) == null ? void 0 : _target$ownerDocument2.defaultView) != null ? _target$ownerDocument : window;
43
+ }
44
+
45
+ function isDocument(node) {
46
+ const {
47
+ Document
48
+ } = getWindow(node);
49
+ return node instanceof Document;
50
+ }
51
+
52
+ function isHTMLElement(node) {
53
+ if (isWindow(node)) {
54
+ return false;
55
+ }
56
+
57
+ return node instanceof getWindow(node).HTMLElement;
58
+ }
59
+
60
+ function isSVGElement(node) {
61
+ return node instanceof getWindow(node).SVGElement;
62
+ }
63
+
64
+ function getOwnerDocument(target) {
65
+ if (!target) {
66
+ return document;
67
+ }
68
+
69
+ if (isWindow(target)) {
70
+ return target.document;
71
+ }
72
+
73
+ if (!isNode(target)) {
74
+ return document;
75
+ }
76
+
77
+ if (isDocument(target)) {
78
+ return target;
79
+ }
80
+
81
+ if (isHTMLElement(target) || isSVGElement(target)) {
82
+ return target.ownerDocument;
83
+ }
84
+
85
+ return document;
86
+ }
87
+
88
+ /**
89
+ * A hook that resolves to useEffect on the server and useLayoutEffect on the client
90
+ * @param callback {function} Callback function that is invoked when the dependencies of the hook change
91
+ */
92
+
93
+ const useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;
94
+
95
+ function useEvent(handler) {
96
+ const handlerRef = useRef(handler);
97
+ useIsomorphicLayoutEffect(() => {
98
+ handlerRef.current = handler;
99
+ });
100
+ return useCallback(function () {
101
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
102
+ args[_key] = arguments[_key];
103
+ }
104
+
105
+ return handlerRef.current == null ? void 0 : handlerRef.current(...args);
106
+ }, []);
107
+ }
108
+
109
+ function useInterval() {
110
+ const intervalRef = useRef(null);
111
+ const set = useCallback((listener, duration) => {
112
+ intervalRef.current = setInterval(listener, duration);
113
+ }, []);
114
+ const clear = useCallback(() => {
115
+ if (intervalRef.current !== null) {
116
+ clearInterval(intervalRef.current);
117
+ intervalRef.current = null;
118
+ }
119
+ }, []);
120
+ return [set, clear];
121
+ }
122
+
123
+ function useLatestValue(value, dependencies) {
124
+ if (dependencies === void 0) {
125
+ dependencies = [value];
126
+ }
127
+
128
+ const valueRef = useRef(value);
129
+ useIsomorphicLayoutEffect(() => {
130
+ if (valueRef.current !== value) {
131
+ valueRef.current = value;
132
+ }
133
+ }, dependencies);
134
+ return valueRef;
135
+ }
136
+
137
+ function useLazyMemo(callback, dependencies) {
138
+ const valueRef = useRef();
139
+ return useMemo(() => {
140
+ const newValue = callback(valueRef.current);
141
+ valueRef.current = newValue;
142
+ return newValue;
143
+ }, // eslint-disable-next-line react-hooks/exhaustive-deps
144
+ [...dependencies]);
145
+ }
146
+
147
+ function useNodeRef(onChange) {
148
+ const onChangeHandler = useEvent(onChange);
149
+ const node = useRef(null);
150
+ const setNodeRef = useCallback(element => {
151
+ if (element !== node.current) {
152
+ onChangeHandler == null ? void 0 : onChangeHandler(element, node.current);
153
+ }
154
+
155
+ node.current = element;
156
+ }, //eslint-disable-next-line
157
+ []);
158
+ return [node, setNodeRef];
159
+ }
160
+
161
+ function usePrevious(value) {
162
+ const ref = useRef();
163
+ useEffect(() => {
164
+ ref.current = value;
165
+ }, [value]);
166
+ return ref.current;
167
+ }
168
+
169
+ let ids = {};
170
+ function useUniqueId(prefix, value) {
171
+ return useMemo(() => {
172
+ if (value) {
173
+ return value;
174
+ }
175
+
176
+ const id = ids[prefix] == null ? 0 : ids[prefix] + 1;
177
+ ids[prefix] = id;
178
+ return prefix + "-" + id;
179
+ }, [prefix, value]);
180
+ }
181
+
182
+ function createAdjustmentFn(modifier) {
183
+ return function (object) {
184
+ for (var _len = arguments.length, adjustments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
185
+ adjustments[_key - 1] = arguments[_key];
186
+ }
187
+
188
+ return adjustments.reduce((accumulator, adjustment) => {
189
+ const entries = Object.entries(adjustment);
190
+
191
+ for (const [key, valueAdjustment] of entries) {
192
+ const value = accumulator[key];
193
+
194
+ if (value != null) {
195
+ accumulator[key] = value + modifier * valueAdjustment;
196
+ }
197
+ }
198
+
199
+ return accumulator;
200
+ }, { ...object
201
+ });
202
+ };
203
+ }
204
+
205
+ const add = /*#__PURE__*/createAdjustmentFn(1);
206
+ const subtract = /*#__PURE__*/createAdjustmentFn(-1);
207
+
208
+ function hasViewportRelativeCoordinates(event) {
209
+ return 'clientX' in event && 'clientY' in event;
210
+ }
211
+
212
+ function isKeyboardEvent(event) {
213
+ if (!event) {
214
+ return false;
215
+ }
216
+
217
+ const {
218
+ KeyboardEvent
219
+ } = getWindow(event.target);
220
+ return KeyboardEvent && event instanceof KeyboardEvent;
221
+ }
222
+
223
+ function isTouchEvent(event) {
224
+ if (!event) {
225
+ return false;
226
+ }
227
+
228
+ const {
229
+ TouchEvent
230
+ } = getWindow(event.target);
231
+ return TouchEvent && event instanceof TouchEvent;
232
+ }
233
+
234
+ /**
235
+ * Returns the normalized x and y coordinates for mouse and touch events.
236
+ */
237
+
238
+ function getEventCoordinates(event) {
239
+ if (isTouchEvent(event)) {
240
+ if (event.touches && event.touches.length) {
241
+ const {
242
+ clientX: x,
243
+ clientY: y
244
+ } = event.touches[0];
245
+ return {
246
+ x,
247
+ y
248
+ };
249
+ } else if (event.changedTouches && event.changedTouches.length) {
250
+ const {
251
+ clientX: x,
252
+ clientY: y
253
+ } = event.changedTouches[0];
254
+ return {
255
+ x,
256
+ y
257
+ };
258
+ }
259
+ }
260
+
261
+ if (hasViewportRelativeCoordinates(event)) {
262
+ return {
263
+ x: event.clientX,
264
+ y: event.clientY
265
+ };
266
+ }
267
+
268
+ return null;
269
+ }
270
+
271
+ const CSS = /*#__PURE__*/Object.freeze({
272
+ Translate: {
273
+ toString(transform) {
274
+ if (!transform) {
275
+ return;
276
+ }
277
+
278
+ const {
279
+ x,
280
+ y
281
+ } = transform;
282
+ return "translate3d(" + (x ? Math.round(x) : 0) + "px, " + (y ? Math.round(y) : 0) + "px, 0)";
283
+ }
284
+
285
+ },
286
+ Scale: {
287
+ toString(transform) {
288
+ if (!transform) {
289
+ return;
290
+ }
291
+
292
+ const {
293
+ scaleX,
294
+ scaleY
295
+ } = transform;
296
+ return "scaleX(" + scaleX + ") scaleY(" + scaleY + ")";
297
+ }
298
+
299
+ },
300
+ Transform: {
301
+ toString(transform) {
302
+ if (!transform) {
303
+ return;
304
+ }
305
+
306
+ return [CSS.Translate.toString(transform), CSS.Scale.toString(transform)].join(' ');
307
+ }
308
+
309
+ },
310
+ Transition: {
311
+ toString(_ref) {
312
+ let {
313
+ property,
314
+ duration,
315
+ easing
316
+ } = _ref;
317
+ return property + " " + duration + "ms " + easing;
318
+ }
319
+
320
+ }
321
+ });
322
+
323
+ const SELECTOR = 'a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]';
324
+ function findFirstFocusableNode(element) {
325
+ if (element.matches(SELECTOR)) {
326
+ return element;
327
+ }
328
+
329
+ return element.querySelector(SELECTOR);
330
+ }
331
+
332
+ export { CSS as C, add as a, getOwnerDocument as b, canUseDOM as c, getWindow as d, isHTMLElement as e, findFirstFocusableNode as f, getEventCoordinates as g, hasViewportRelativeCoordinates as h, isDocument as i, isKeyboardEvent as j, isNode as k, isSVGElement as l, isTouchEvent as m, isWindow as n, useEvent as o, useInterval as p, useIsomorphicLayoutEffect as q, useLatestValue as r, subtract as s, useLazyMemo as t, useCombinedRefs as u, useNodeRef as v, usePrevious as w, useUniqueId as x };
333
+ //# sourceMappingURL=utilities.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.esm.js","sources":["../node_modules/.pnpm/@dnd-kit+utilities@3.2.2_react@19.2.3/node_modules/@dnd-kit/utilities/dist/utilities.esm.js"],"sourcesContent":["import { useMemo, useLayoutEffect, useEffect, useRef, useCallback } from 'react';\n\nfunction useCombinedRefs() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n\n return useMemo(() => node => {\n refs.forEach(ref => ref(node));\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n refs);\n}\n\n// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nconst canUseDOM = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';\n\nfunction isWindow(element) {\n const elementString = Object.prototype.toString.call(element);\n return elementString === '[object Window]' || // In Electron context the Window object serializes to [object global]\n elementString === '[object global]';\n}\n\nfunction isNode(node) {\n return 'nodeType' in node;\n}\n\nfunction getWindow(target) {\n var _target$ownerDocument, _target$ownerDocument2;\n\n if (!target) {\n return window;\n }\n\n if (isWindow(target)) {\n return target;\n }\n\n if (!isNode(target)) {\n return window;\n }\n\n return (_target$ownerDocument = (_target$ownerDocument2 = target.ownerDocument) == null ? void 0 : _target$ownerDocument2.defaultView) != null ? _target$ownerDocument : window;\n}\n\nfunction isDocument(node) {\n const {\n Document\n } = getWindow(node);\n return node instanceof Document;\n}\n\nfunction isHTMLElement(node) {\n if (isWindow(node)) {\n return false;\n }\n\n return node instanceof getWindow(node).HTMLElement;\n}\n\nfunction isSVGElement(node) {\n return node instanceof getWindow(node).SVGElement;\n}\n\nfunction getOwnerDocument(target) {\n if (!target) {\n return document;\n }\n\n if (isWindow(target)) {\n return target.document;\n }\n\n if (!isNode(target)) {\n return document;\n }\n\n if (isDocument(target)) {\n return target;\n }\n\n if (isHTMLElement(target) || isSVGElement(target)) {\n return target.ownerDocument;\n }\n\n return document;\n}\n\n/**\r\n * A hook that resolves to useEffect on the server and useLayoutEffect on the client\r\n * @param callback {function} Callback function that is invoked when the dependencies of the hook change\r\n */\n\nconst useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;\n\nfunction useEvent(handler) {\n const handlerRef = useRef(handler);\n useIsomorphicLayoutEffect(() => {\n handlerRef.current = handler;\n });\n return useCallback(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return handlerRef.current == null ? void 0 : handlerRef.current(...args);\n }, []);\n}\n\nfunction useInterval() {\n const intervalRef = useRef(null);\n const set = useCallback((listener, duration) => {\n intervalRef.current = setInterval(listener, duration);\n }, []);\n const clear = useCallback(() => {\n if (intervalRef.current !== null) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n }, []);\n return [set, clear];\n}\n\nfunction useLatestValue(value, dependencies) {\n if (dependencies === void 0) {\n dependencies = [value];\n }\n\n const valueRef = useRef(value);\n useIsomorphicLayoutEffect(() => {\n if (valueRef.current !== value) {\n valueRef.current = value;\n }\n }, dependencies);\n return valueRef;\n}\n\nfunction useLazyMemo(callback, dependencies) {\n const valueRef = useRef();\n return useMemo(() => {\n const newValue = callback(valueRef.current);\n valueRef.current = newValue;\n return newValue;\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [...dependencies]);\n}\n\nfunction useNodeRef(onChange) {\n const onChangeHandler = useEvent(onChange);\n const node = useRef(null);\n const setNodeRef = useCallback(element => {\n if (element !== node.current) {\n onChangeHandler == null ? void 0 : onChangeHandler(element, node.current);\n }\n\n node.current = element;\n }, //eslint-disable-next-line\n []);\n return [node, setNodeRef];\n}\n\nfunction usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nlet ids = {};\nfunction useUniqueId(prefix, value) {\n return useMemo(() => {\n if (value) {\n return value;\n }\n\n const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n ids[prefix] = id;\n return prefix + \"-\" + id;\n }, [prefix, value]);\n}\n\nfunction createAdjustmentFn(modifier) {\n return function (object) {\n for (var _len = arguments.length, adjustments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n adjustments[_key - 1] = arguments[_key];\n }\n\n return adjustments.reduce((accumulator, adjustment) => {\n const entries = Object.entries(adjustment);\n\n for (const [key, valueAdjustment] of entries) {\n const value = accumulator[key];\n\n if (value != null) {\n accumulator[key] = value + modifier * valueAdjustment;\n }\n }\n\n return accumulator;\n }, { ...object\n });\n };\n}\n\nconst add = /*#__PURE__*/createAdjustmentFn(1);\nconst subtract = /*#__PURE__*/createAdjustmentFn(-1);\n\nfunction hasViewportRelativeCoordinates(event) {\n return 'clientX' in event && 'clientY' in event;\n}\n\nfunction isKeyboardEvent(event) {\n if (!event) {\n return false;\n }\n\n const {\n KeyboardEvent\n } = getWindow(event.target);\n return KeyboardEvent && event instanceof KeyboardEvent;\n}\n\nfunction isTouchEvent(event) {\n if (!event) {\n return false;\n }\n\n const {\n TouchEvent\n } = getWindow(event.target);\n return TouchEvent && event instanceof TouchEvent;\n}\n\n/**\r\n * Returns the normalized x and y coordinates for mouse and touch events.\r\n */\n\nfunction getEventCoordinates(event) {\n if (isTouchEvent(event)) {\n if (event.touches && event.touches.length) {\n const {\n clientX: x,\n clientY: y\n } = event.touches[0];\n return {\n x,\n y\n };\n } else if (event.changedTouches && event.changedTouches.length) {\n const {\n clientX: x,\n clientY: y\n } = event.changedTouches[0];\n return {\n x,\n y\n };\n }\n }\n\n if (hasViewportRelativeCoordinates(event)) {\n return {\n x: event.clientX,\n y: event.clientY\n };\n }\n\n return null;\n}\n\nconst CSS = /*#__PURE__*/Object.freeze({\n Translate: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n const {\n x,\n y\n } = transform;\n return \"translate3d(\" + (x ? Math.round(x) : 0) + \"px, \" + (y ? Math.round(y) : 0) + \"px, 0)\";\n }\n\n },\n Scale: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n const {\n scaleX,\n scaleY\n } = transform;\n return \"scaleX(\" + scaleX + \") scaleY(\" + scaleY + \")\";\n }\n\n },\n Transform: {\n toString(transform) {\n if (!transform) {\n return;\n }\n\n return [CSS.Translate.toString(transform), CSS.Scale.toString(transform)].join(' ');\n }\n\n },\n Transition: {\n toString(_ref) {\n let {\n property,\n duration,\n easing\n } = _ref;\n return property + \" \" + duration + \"ms \" + easing;\n }\n\n }\n});\n\nconst SELECTOR = 'a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]';\nfunction findFirstFocusableNode(element) {\n if (element.matches(SELECTOR)) {\n return element;\n }\n\n return element.querySelector(SELECTOR);\n}\n\nexport { CSS, add, canUseDOM, findFirstFocusableNode, getEventCoordinates, getOwnerDocument, getWindow, hasViewportRelativeCoordinates, isDocument, isHTMLElement, isKeyboardEvent, isNode, isSVGElement, isTouchEvent, isWindow, subtract, useCombinedRefs, useEvent, useInterval, useIsomorphicLayoutEffect, useLatestValue, useLazyMemo, useNodeRef, usePrevious, useUniqueId };\n//# sourceMappingURL=utilities.esm.js.map\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,5 +1,5 @@
1
1
  import { t as toast, g as generateToastId } from '../toast.js';
2
- import { g as getConfig } from '../index7.js';
2
+ import { g as getConfig } from '../index8.js';
3
3
 
4
4
  /**
5
5
  * Create a bound version of a function with a specified `this` context