tempest-react-sdk 0.21.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1887) hide show
  1. package/README.md +67 -64
  2. package/dist/access/Can.cjs +2 -0
  3. package/dist/access/Can.cjs.map +1 -0
  4. package/dist/access/Can.js +10 -0
  5. package/dist/access/Can.js.map +1 -0
  6. package/dist/access/access-control-context.cjs +2 -0
  7. package/dist/access/access-control-context.cjs.map +1 -0
  8. package/dist/access/access-control-context.js +14 -0
  9. package/dist/access/access-control-context.js.map +1 -0
  10. package/dist/access/create-role-access-control.cjs +2 -0
  11. package/dist/access/create-role-access-control.cjs.map +1 -0
  12. package/dist/access/create-role-access-control.js +19 -0
  13. package/dist/access/create-role-access-control.js.map +1 -0
  14. package/dist/access/permissions-from-token.cjs +2 -0
  15. package/dist/access/permissions-from-token.cjs.map +1 -0
  16. package/dist/access/permissions-from-token.js +21 -0
  17. package/dist/access/permissions-from-token.js.map +1 -0
  18. package/dist/access/use-can.cjs +2 -0
  19. package/dist/access/use-can.cjs.map +1 -0
  20. package/dist/access/use-can.js +34 -0
  21. package/dist/access/use-can.js.map +1 -0
  22. package/dist/app/AppProviders.cjs +2 -0
  23. package/dist/app/AppProviders.cjs.map +1 -0
  24. package/dist/app/AppProviders.js +13 -0
  25. package/dist/app/AppProviders.js.map +1 -0
  26. package/dist/audio/audio-player.cjs +2 -0
  27. package/dist/audio/audio-player.cjs.map +1 -0
  28. package/dist/audio/audio-player.js +39 -0
  29. package/dist/audio/audio-player.js.map +1 -0
  30. package/dist/audio/use-audio.cjs +2 -0
  31. package/dist/audio/use-audio.cjs.map +1 -0
  32. package/dist/audio/use-audio.js +18 -0
  33. package/dist/audio/use-audio.js.map +1 -0
  34. package/dist/auth/AuthGuard.cjs +2 -0
  35. package/dist/auth/AuthGuard.cjs.map +1 -0
  36. package/dist/auth/AuthGuard.js +8 -0
  37. package/dist/auth/AuthGuard.js.map +1 -0
  38. package/dist/auth/create-auth-store.cjs +2 -0
  39. package/dist/auth/create-auth-store.cjs.map +1 -0
  40. package/dist/auth/create-auth-store.js +30 -0
  41. package/dist/auth/create-auth-store.js.map +1 -0
  42. package/dist/auth/create-tempest-auth.cjs +2 -0
  43. package/dist/auth/create-tempest-auth.cjs.map +1 -0
  44. package/dist/auth/create-tempest-auth.js +70 -0
  45. package/dist/auth/create-tempest-auth.js.map +1 -0
  46. package/dist/auth/jwt.cjs +2 -0
  47. package/dist/auth/jwt.cjs.map +1 -0
  48. package/dist/auth/jwt.js +33 -0
  49. package/dist/auth/jwt.js.map +1 -0
  50. package/dist/auth/lazy-with-retry.cjs +2 -0
  51. package/dist/auth/lazy-with-retry.cjs.map +1 -0
  52. package/dist/auth/lazy-with-retry.js +18 -0
  53. package/dist/auth/lazy-with-retry.js.map +1 -0
  54. package/dist/auth/refresh-queue.cjs +2 -0
  55. package/dist/auth/refresh-queue.cjs.map +1 -0
  56. package/dist/auth/refresh-queue.js +14 -0
  57. package/dist/auth/refresh-queue.js.map +1 -0
  58. package/dist/br/BrazilMap.cjs +2 -0
  59. package/dist/br/BrazilMap.cjs.map +1 -0
  60. package/dist/br/BrazilMap.js +195 -0
  61. package/dist/br/BrazilMap.js.map +1 -0
  62. package/dist/br/BrazilMap.module.css.cjs +2 -0
  63. package/dist/br/BrazilMap.module.css.cjs.map +1 -0
  64. package/dist/br/BrazilMap.module.css.js +28 -0
  65. package/dist/br/BrazilMap.module.css.js.map +1 -0
  66. package/dist/br/BrazilStateCitySelect.cjs +2 -0
  67. package/dist/br/BrazilStateCitySelect.cjs.map +1 -0
  68. package/dist/br/BrazilStateCitySelect.js +69 -0
  69. package/dist/br/BrazilStateCitySelect.js.map +1 -0
  70. package/dist/br/BrazilStateMap.cjs +2 -0
  71. package/dist/br/BrazilStateMap.cjs.map +1 -0
  72. package/dist/br/BrazilStateMap.js +181 -0
  73. package/dist/br/BrazilStateMap.js.map +1 -0
  74. package/dist/br/MapLegend.cjs +2 -0
  75. package/dist/br/MapLegend.cjs.map +1 -0
  76. package/dist/br/MapLegend.js +39 -0
  77. package/dist/br/MapLegend.js.map +1 -0
  78. package/dist/br/MapLegend.module.css.cjs +2 -0
  79. package/dist/br/MapLegend.module.css.cjs.map +1 -0
  80. package/dist/br/MapLegend.module.css.js +22 -0
  81. package/dist/br/MapLegend.module.css.js.map +1 -0
  82. package/dist/br/MapMarkers.cjs +2 -0
  83. package/dist/br/MapMarkers.cjs.map +1 -0
  84. package/dist/br/MapMarkers.js +31 -0
  85. package/dist/br/MapMarkers.js.map +1 -0
  86. package/dist/br/MapTooltip.cjs +2 -0
  87. package/dist/br/MapTooltip.cjs.map +1 -0
  88. package/dist/br/MapTooltip.js +19 -0
  89. package/dist/br/MapTooltip.js.map +1 -0
  90. package/dist/br/MunicipalitySearch.cjs +2 -0
  91. package/dist/br/MunicipalitySearch.cjs.map +1 -0
  92. package/dist/br/MunicipalitySearch.js +75 -0
  93. package/dist/br/MunicipalitySearch.js.map +1 -0
  94. package/dist/br/MunicipalitySearch.module.css.cjs +2 -0
  95. package/dist/br/MunicipalitySearch.module.css.cjs.map +1 -0
  96. package/dist/br/MunicipalitySearch.module.css.js +14 -0
  97. package/dist/br/MunicipalitySearch.module.css.js.map +1 -0
  98. package/dist/br/br-geo.cjs +2 -0
  99. package/dist/br/br-geo.cjs.map +1 -0
  100. package/dist/br/br-geo.js +6 -0
  101. package/dist/br/br-geo.js.map +1 -0
  102. package/dist/br/data/br-centroids.json.cjs +2 -0
  103. package/dist/br/data/br-centroids.json.cjs.map +1 -0
  104. package/dist/br/data/br-centroids.json.js +10 -0
  105. package/dist/br/data/br-centroids.json.js.map +1 -0
  106. package/dist/br/data/br-locations.json.cjs +2 -0
  107. package/dist/br/data/br-locations.json.cjs.map +1 -0
  108. package/dist/br/data/br-locations.json.js +8 -0
  109. package/dist/br/data/br-locations.json.js.map +1 -0
  110. package/dist/br/data/br-uf-geo.json.cjs +2 -0
  111. package/dist/br/data/br-uf-geo.json.cjs.map +1 -0
  112. package/dist/br/data/br-uf-geo.json.js +10 -0
  113. package/dist/br/data/br-uf-geo.json.js.map +1 -0
  114. package/dist/br/data/mun/AC.json.cjs +2 -0
  115. package/dist/br/data/mun/AC.json.cjs.map +1 -0
  116. package/dist/br/data/mun/AC.json.js +12 -0
  117. package/dist/br/data/mun/AC.json.js.map +1 -0
  118. package/dist/br/data/mun/AL.json.cjs +2 -0
  119. package/dist/br/data/mun/AL.json.cjs.map +1 -0
  120. package/dist/br/data/mun/AL.json.js +12 -0
  121. package/dist/br/data/mun/AL.json.js.map +1 -0
  122. package/dist/br/data/mun/AM.json.cjs +2 -0
  123. package/dist/br/data/mun/AM.json.cjs.map +1 -0
  124. package/dist/br/data/mun/AM.json.js +12 -0
  125. package/dist/br/data/mun/AM.json.js.map +1 -0
  126. package/dist/br/data/mun/AP.json.cjs +2 -0
  127. package/dist/br/data/mun/AP.json.cjs.map +1 -0
  128. package/dist/br/data/mun/AP.json.js +12 -0
  129. package/dist/br/data/mun/AP.json.js.map +1 -0
  130. package/dist/br/data/mun/BA.json.cjs +2 -0
  131. package/dist/br/data/mun/BA.json.cjs.map +1 -0
  132. package/dist/br/data/mun/BA.json.js +12 -0
  133. package/dist/br/data/mun/BA.json.js.map +1 -0
  134. package/dist/br/data/mun/CE.json.cjs +2 -0
  135. package/dist/br/data/mun/CE.json.cjs.map +1 -0
  136. package/dist/br/data/mun/CE.json.js +12 -0
  137. package/dist/br/data/mun/CE.json.js.map +1 -0
  138. package/dist/br/data/mun/DF.json.cjs +2 -0
  139. package/dist/br/data/mun/DF.json.cjs.map +1 -0
  140. package/dist/br/data/mun/DF.json.js +12 -0
  141. package/dist/br/data/mun/DF.json.js.map +1 -0
  142. package/dist/br/data/mun/ES.json.cjs +2 -0
  143. package/dist/br/data/mun/ES.json.cjs.map +1 -0
  144. package/dist/br/data/mun/ES.json.js +12 -0
  145. package/dist/br/data/mun/ES.json.js.map +1 -0
  146. package/dist/br/data/mun/GO.json.cjs +2 -0
  147. package/dist/br/data/mun/GO.json.cjs.map +1 -0
  148. package/dist/br/data/mun/GO.json.js +12 -0
  149. package/dist/br/data/mun/GO.json.js.map +1 -0
  150. package/dist/br/data/mun/MA.json.cjs +2 -0
  151. package/dist/br/data/mun/MA.json.cjs.map +1 -0
  152. package/dist/br/data/mun/MA.json.js +12 -0
  153. package/dist/br/data/mun/MA.json.js.map +1 -0
  154. package/dist/br/data/mun/MG.json.cjs +2 -0
  155. package/dist/br/data/mun/MG.json.cjs.map +1 -0
  156. package/dist/br/data/mun/MG.json.js +12 -0
  157. package/dist/br/data/mun/MG.json.js.map +1 -0
  158. package/dist/br/data/mun/MS.json.cjs +2 -0
  159. package/dist/br/data/mun/MS.json.cjs.map +1 -0
  160. package/dist/br/data/mun/MS.json.js +12 -0
  161. package/dist/br/data/mun/MS.json.js.map +1 -0
  162. package/dist/br/data/mun/MT.json.cjs +2 -0
  163. package/dist/br/data/mun/MT.json.cjs.map +1 -0
  164. package/dist/br/data/mun/MT.json.js +12 -0
  165. package/dist/br/data/mun/MT.json.js.map +1 -0
  166. package/dist/br/data/mun/PA.json.cjs +2 -0
  167. package/dist/br/data/mun/PA.json.cjs.map +1 -0
  168. package/dist/br/data/mun/PA.json.js +12 -0
  169. package/dist/br/data/mun/PA.json.js.map +1 -0
  170. package/dist/br/data/mun/PB.json.cjs +2 -0
  171. package/dist/br/data/mun/PB.json.cjs.map +1 -0
  172. package/dist/br/data/mun/PB.json.js +12 -0
  173. package/dist/br/data/mun/PB.json.js.map +1 -0
  174. package/dist/br/data/mun/PE.json.cjs +2 -0
  175. package/dist/br/data/mun/PE.json.cjs.map +1 -0
  176. package/dist/br/data/mun/PE.json.js +12 -0
  177. package/dist/br/data/mun/PE.json.js.map +1 -0
  178. package/dist/br/data/mun/PI.json.cjs +2 -0
  179. package/dist/br/data/mun/PI.json.cjs.map +1 -0
  180. package/dist/br/data/mun/PI.json.js +12 -0
  181. package/dist/br/data/mun/PI.json.js.map +1 -0
  182. package/dist/br/data/mun/PR.json.cjs +2 -0
  183. package/dist/br/data/mun/PR.json.cjs.map +1 -0
  184. package/dist/br/data/mun/PR.json.js +12 -0
  185. package/dist/br/data/mun/PR.json.js.map +1 -0
  186. package/dist/br/data/mun/RJ.json.cjs +2 -0
  187. package/dist/br/data/mun/RJ.json.cjs.map +1 -0
  188. package/dist/br/data/mun/RJ.json.js +12 -0
  189. package/dist/br/data/mun/RJ.json.js.map +1 -0
  190. package/dist/br/data/mun/RN.json.cjs +2 -0
  191. package/dist/br/data/mun/RN.json.cjs.map +1 -0
  192. package/dist/br/data/mun/RN.json.js +12 -0
  193. package/dist/br/data/mun/RN.json.js.map +1 -0
  194. package/dist/br/data/mun/RO.json.cjs +2 -0
  195. package/dist/br/data/mun/RO.json.cjs.map +1 -0
  196. package/dist/br/data/mun/RO.json.js +12 -0
  197. package/dist/br/data/mun/RO.json.js.map +1 -0
  198. package/dist/br/data/mun/RR.json.cjs +2 -0
  199. package/dist/br/data/mun/RR.json.cjs.map +1 -0
  200. package/dist/br/data/mun/RR.json.js +12 -0
  201. package/dist/br/data/mun/RR.json.js.map +1 -0
  202. package/dist/br/data/mun/RS.json.cjs +2 -0
  203. package/dist/br/data/mun/RS.json.cjs.map +1 -0
  204. package/dist/br/data/mun/RS.json.js +12 -0
  205. package/dist/br/data/mun/RS.json.js.map +1 -0
  206. package/dist/br/data/mun/SC.json.cjs +2 -0
  207. package/dist/br/data/mun/SC.json.cjs.map +1 -0
  208. package/dist/br/data/mun/SC.json.js +12 -0
  209. package/dist/br/data/mun/SC.json.js.map +1 -0
  210. package/dist/br/data/mun/SE.json.cjs +2 -0
  211. package/dist/br/data/mun/SE.json.cjs.map +1 -0
  212. package/dist/br/data/mun/SE.json.js +12 -0
  213. package/dist/br/data/mun/SE.json.js.map +1 -0
  214. package/dist/br/data/mun/SP.json.cjs +2 -0
  215. package/dist/br/data/mun/SP.json.cjs.map +1 -0
  216. package/dist/br/data/mun/SP.json.js +12 -0
  217. package/dist/br/data/mun/SP.json.js.map +1 -0
  218. package/dist/br/data/mun/TO.json.cjs +2 -0
  219. package/dist/br/data/mun/TO.json.cjs.map +1 -0
  220. package/dist/br/data/mun/TO.json.js +12 -0
  221. package/dist/br/data/mun/TO.json.js.map +1 -0
  222. package/dist/br/geocode.cjs +2 -0
  223. package/dist/br/geocode.cjs.map +1 -0
  224. package/dist/br/geocode.js +89 -0
  225. package/dist/br/geocode.js.map +1 -0
  226. package/dist/br/locations.cjs +2 -0
  227. package/dist/br/locations.cjs.map +1 -0
  228. package/dist/br/locations.js +80 -0
  229. package/dist/br/locations.js.map +1 -0
  230. package/dist/br/regions.cjs +2 -0
  231. package/dist/br/regions.cjs.map +1 -0
  232. package/dist/br/regions.js +18 -0
  233. package/dist/br/regions.js.map +1 -0
  234. package/dist/br/scales.cjs +2 -0
  235. package/dist/br/scales.cjs.map +1 -0
  236. package/dist/br/scales.js +65 -0
  237. package/dist/br/scales.js.map +1 -0
  238. package/dist/br/state-geo.cjs +2 -0
  239. package/dist/br/state-geo.cjs.map +1 -0
  240. package/dist/br/state-geo.js +39 -0
  241. package/dist/br/state-geo.js.map +1 -0
  242. package/dist/br/svg-utils.cjs +2 -0
  243. package/dist/br/svg-utils.cjs.map +1 -0
  244. package/dist/br/svg-utils.js +46 -0
  245. package/dist/br/svg-utils.js.map +1 -0
  246. package/dist/br/use-map-hover.cjs +2 -0
  247. package/dist/br/use-map-hover.cjs.map +1 -0
  248. package/dist/br/use-map-hover.js +15 -0
  249. package/dist/br/use-map-hover.js.map +1 -0
  250. package/dist/br/use-map-zoom.cjs +2 -0
  251. package/dist/br/use-map-zoom.cjs.map +1 -0
  252. package/dist/br/use-map-zoom.js +48 -0
  253. package/dist/br/use-map-zoom.js.map +1 -0
  254. package/dist/br.cjs +1 -1
  255. package/dist/br.cjs.map +1 -1
  256. package/dist/br.js +46 -945
  257. package/dist/br.js.map +1 -1
  258. package/dist/charts/AreaChart.cjs +2 -0
  259. package/dist/charts/AreaChart.cjs.map +1 -0
  260. package/dist/charts/AreaChart.js +47 -0
  261. package/dist/charts/AreaChart.js.map +1 -0
  262. package/dist/charts/BarChart.cjs +2 -0
  263. package/dist/charts/BarChart.cjs.map +1 -0
  264. package/dist/charts/BarChart.js +41 -0
  265. package/dist/charts/BarChart.js.map +1 -0
  266. package/dist/charts/LineChart.cjs +2 -0
  267. package/dist/charts/LineChart.cjs.map +1 -0
  268. package/dist/charts/LineChart.js +41 -0
  269. package/dist/charts/LineChart.js.map +1 -0
  270. package/dist/charts/PieChart.cjs +2 -0
  271. package/dist/charts/PieChart.cjs.map +1 -0
  272. package/dist/charts/PieChart.js +39 -0
  273. package/dist/charts/PieChart.js.map +1 -0
  274. package/dist/charts/RadarChart.cjs +2 -0
  275. package/dist/charts/RadarChart.cjs.map +1 -0
  276. package/dist/charts/RadarChart.js +43 -0
  277. package/dist/charts/RadarChart.js.map +1 -0
  278. package/dist/charts/palette.cjs +2 -0
  279. package/dist/charts/palette.cjs.map +1 -0
  280. package/dist/charts/palette.js +18 -0
  281. package/dist/charts/palette.js.map +1 -0
  282. package/dist/charts/types.cjs +2 -0
  283. package/dist/charts/types.cjs.map +1 -0
  284. package/dist/charts/types.js +8 -0
  285. package/dist/charts/types.js.map +1 -0
  286. package/dist/charts.cjs +1 -1
  287. package/dist/charts.cjs.map +1 -1
  288. package/dist/charts.js +12 -193
  289. package/dist/charts.js.map +1 -1
  290. package/dist/components/Accordion/Accordion.cjs +2 -0
  291. package/dist/components/Accordion/Accordion.cjs.map +1 -0
  292. package/dist/components/Accordion/Accordion.js +78 -0
  293. package/dist/components/Accordion/Accordion.js.map +1 -0
  294. package/dist/components/Accordion/Accordion.module.css.cjs +2 -0
  295. package/dist/components/Accordion/Accordion.module.css.cjs.map +1 -0
  296. package/dist/components/Accordion/Accordion.module.css.js +20 -0
  297. package/dist/components/Accordion/Accordion.module.css.js.map +1 -0
  298. package/dist/components/Alert/Alert.cjs +2 -0
  299. package/dist/components/Alert/Alert.cjs.map +1 -0
  300. package/dist/components/Alert/Alert.js +63 -0
  301. package/dist/components/Alert/Alert.js.map +1 -0
  302. package/dist/components/Alert/Alert.module.css.cjs +2 -0
  303. package/dist/components/Alert/Alert.module.css.cjs.map +1 -0
  304. package/dist/components/Alert/Alert.module.css.js +32 -0
  305. package/dist/components/Alert/Alert.module.css.js.map +1 -0
  306. package/dist/components/AppBar/AppBar.cjs +2 -0
  307. package/dist/components/AppBar/AppBar.cjs.map +1 -0
  308. package/dist/components/AppBar/AppBar.js +59 -0
  309. package/dist/components/AppBar/AppBar.js.map +1 -0
  310. package/dist/components/AppBar/AppBar.module.css.cjs +2 -0
  311. package/dist/components/AppBar/AppBar.module.css.cjs.map +1 -0
  312. package/dist/components/AppBar/AppBar.module.css.js +32 -0
  313. package/dist/components/AppBar/AppBar.module.css.js.map +1 -0
  314. package/dist/components/AppShell/AppShell.cjs +2 -0
  315. package/dist/components/AppShell/AppShell.cjs.map +1 -0
  316. package/dist/components/AppShell/AppShell.js +29 -0
  317. package/dist/components/AppShell/AppShell.js.map +1 -0
  318. package/dist/components/AppShell/AppShell.module.css.cjs +2 -0
  319. package/dist/components/AppShell/AppShell.module.css.cjs.map +1 -0
  320. package/dist/components/AppShell/AppShell.module.css.js +20 -0
  321. package/dist/components/AppShell/AppShell.module.css.js.map +1 -0
  322. package/dist/components/AspectRatio/AspectRatio.cjs +2 -0
  323. package/dist/components/AspectRatio/AspectRatio.cjs.map +1 -0
  324. package/dist/components/AspectRatio/AspectRatio.js +17 -0
  325. package/dist/components/AspectRatio/AspectRatio.js.map +1 -0
  326. package/dist/components/AspectRatio/AspectRatio.module.css.cjs +2 -0
  327. package/dist/components/AspectRatio/AspectRatio.module.css.cjs.map +1 -0
  328. package/dist/components/AspectRatio/AspectRatio.module.css.js +8 -0
  329. package/dist/components/AspectRatio/AspectRatio.module.css.js.map +1 -0
  330. package/dist/components/Avatar/Avatar.cjs +2 -0
  331. package/dist/components/Avatar/Avatar.cjs.map +1 -0
  332. package/dist/components/Avatar/Avatar.js +47 -0
  333. package/dist/components/Avatar/Avatar.js.map +1 -0
  334. package/dist/components/Avatar/Avatar.module.css.cjs +2 -0
  335. package/dist/components/Avatar/Avatar.module.css.cjs.map +1 -0
  336. package/dist/components/Avatar/Avatar.module.css.js +30 -0
  337. package/dist/components/Avatar/Avatar.module.css.js.map +1 -0
  338. package/dist/components/Badge/Badge.cjs +2 -0
  339. package/dist/components/Badge/Badge.cjs.map +1 -0
  340. package/dist/components/Badge/Badge.js +37 -0
  341. package/dist/components/Badge/Badge.js.map +1 -0
  342. package/dist/components/Badge/Badge.module.css.cjs +2 -0
  343. package/dist/components/Badge/Badge.module.css.cjs.map +1 -0
  344. package/dist/components/Badge/Badge.module.css.js +34 -0
  345. package/dist/components/Badge/Badge.module.css.js.map +1 -0
  346. package/dist/components/Banner/Banner.cjs +2 -0
  347. package/dist/components/Banner/Banner.cjs.map +1 -0
  348. package/dist/components/Banner/Banner.js +41 -0
  349. package/dist/components/Banner/Banner.js.map +1 -0
  350. package/dist/components/Banner/Banner.module.css.cjs +2 -0
  351. package/dist/components/Banner/Banner.module.css.cjs.map +1 -0
  352. package/dist/components/Banner/Banner.module.css.js +28 -0
  353. package/dist/components/Banner/Banner.module.css.js.map +1 -0
  354. package/dist/components/BottomNavigation/BottomNavigation.cjs +2 -0
  355. package/dist/components/BottomNavigation/BottomNavigation.cjs.map +1 -0
  356. package/dist/components/BottomNavigation/BottomNavigation.js +37 -0
  357. package/dist/components/BottomNavigation/BottomNavigation.js.map +1 -0
  358. package/dist/components/BottomNavigation/BottomNavigation.module.css.cjs +2 -0
  359. package/dist/components/BottomNavigation/BottomNavigation.module.css.cjs.map +1 -0
  360. package/dist/components/BottomNavigation/BottomNavigation.module.css.js +20 -0
  361. package/dist/components/BottomNavigation/BottomNavigation.module.css.js.map +1 -0
  362. package/dist/components/BottomSheet/BottomSheet.cjs +2 -0
  363. package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -0
  364. package/dist/components/BottomSheet/BottomSheet.js +60 -0
  365. package/dist/components/BottomSheet/BottomSheet.js.map +1 -0
  366. package/dist/components/BottomSheet/BottomSheet.module.css.cjs +2 -0
  367. package/dist/components/BottomSheet/BottomSheet.module.css.cjs.map +1 -0
  368. package/dist/components/BottomSheet/BottomSheet.module.css.js +20 -0
  369. package/dist/components/BottomSheet/BottomSheet.module.css.js.map +1 -0
  370. package/dist/components/Breadcrumbs/Breadcrumbs.cjs +2 -0
  371. package/dist/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -0
  372. package/dist/components/Breadcrumbs/Breadcrumbs.js +34 -0
  373. package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -0
  374. package/dist/components/Breadcrumbs/Breadcrumbs.module.css.cjs +2 -0
  375. package/dist/components/Breadcrumbs/Breadcrumbs.module.css.cjs.map +1 -0
  376. package/dist/components/Breadcrumbs/Breadcrumbs.module.css.js +16 -0
  377. package/dist/components/Breadcrumbs/Breadcrumbs.module.css.js.map +1 -0
  378. package/dist/components/Button/Button.cjs +2 -0
  379. package/dist/components/Button/Button.cjs.map +1 -0
  380. package/dist/components/Button/Button.js +68 -0
  381. package/dist/components/Button/Button.js.map +1 -0
  382. package/dist/components/Button/Button.module.css.cjs +2 -0
  383. package/dist/components/Button/Button.module.css.cjs.map +1 -0
  384. package/dist/components/Button/Button.module.css.js +50 -0
  385. package/dist/components/Button/Button.module.css.js.map +1 -0
  386. package/dist/components/Calendar/Calendar.cjs +2 -0
  387. package/dist/components/Calendar/Calendar.cjs.map +1 -0
  388. package/dist/components/Calendar/Calendar.js +156 -0
  389. package/dist/components/Calendar/Calendar.js.map +1 -0
  390. package/dist/components/Calendar/Calendar.module.css.cjs +2 -0
  391. package/dist/components/Calendar/Calendar.module.css.cjs.map +1 -0
  392. package/dist/components/Calendar/Calendar.module.css.js +28 -0
  393. package/dist/components/Calendar/Calendar.module.css.js.map +1 -0
  394. package/dist/components/Card/Card.cjs +2 -0
  395. package/dist/components/Card/Card.cjs.map +1 -0
  396. package/dist/components/Card/Card.js +45 -0
  397. package/dist/components/Card/Card.js.map +1 -0
  398. package/dist/components/Card/Card.module.css.cjs +2 -0
  399. package/dist/components/Card/Card.module.css.cjs.map +1 -0
  400. package/dist/components/Card/Card.module.css.js +28 -0
  401. package/dist/components/Card/Card.module.css.js.map +1 -0
  402. package/dist/components/Carousel/Carousel.cjs +2 -0
  403. package/dist/components/Carousel/Carousel.cjs.map +1 -0
  404. package/dist/components/Carousel/Carousel.js +97 -0
  405. package/dist/components/Carousel/Carousel.js.map +1 -0
  406. package/dist/components/Carousel/Carousel.module.css.cjs +2 -0
  407. package/dist/components/Carousel/Carousel.module.css.cjs.map +1 -0
  408. package/dist/components/Carousel/Carousel.module.css.js +26 -0
  409. package/dist/components/Carousel/Carousel.module.css.js.map +1 -0
  410. package/dist/components/Center/Center.cjs +2 -0
  411. package/dist/components/Center/Center.cjs.map +1 -0
  412. package/dist/components/Center/Center.js +23 -0
  413. package/dist/components/Center/Center.js.map +1 -0
  414. package/dist/components/Center/Center.module.css.cjs +2 -0
  415. package/dist/components/Center/Center.module.css.cjs.map +1 -0
  416. package/dist/components/Center/Center.module.css.js +14 -0
  417. package/dist/components/Center/Center.module.css.js.map +1 -0
  418. package/dist/components/Checkbox/Checkbox.cjs +2 -0
  419. package/dist/components/Checkbox/Checkbox.cjs.map +1 -0
  420. package/dist/components/Checkbox/Checkbox.js +49 -0
  421. package/dist/components/Checkbox/Checkbox.js.map +1 -0
  422. package/dist/components/Checkbox/Checkbox.module.css.cjs +2 -0
  423. package/dist/components/Checkbox/Checkbox.module.css.cjs.map +1 -0
  424. package/dist/components/Checkbox/Checkbox.module.css.js +20 -0
  425. package/dist/components/Checkbox/Checkbox.module.css.js.map +1 -0
  426. package/dist/components/ChipInput/ChipInput.cjs +2 -0
  427. package/dist/components/ChipInput/ChipInput.cjs.map +1 -0
  428. package/dist/components/ChipInput/ChipInput.js +79 -0
  429. package/dist/components/ChipInput/ChipInput.js.map +1 -0
  430. package/dist/components/ChipInput/ChipInput.module.css.cjs +2 -0
  431. package/dist/components/ChipInput/ChipInput.module.css.cjs.map +1 -0
  432. package/dist/components/ChipInput/ChipInput.module.css.js +24 -0
  433. package/dist/components/ChipInput/ChipInput.module.css.js.map +1 -0
  434. package/dist/components/ClickOutside/ClickOutside.cjs +2 -0
  435. package/dist/components/ClickOutside/ClickOutside.cjs.map +1 -0
  436. package/dist/components/ClickOutside/ClickOutside.js +20 -0
  437. package/dist/components/ClickOutside/ClickOutside.js.map +1 -0
  438. package/dist/components/Collapsible/Collapsible.cjs +2 -0
  439. package/dist/components/Collapsible/Collapsible.cjs.map +1 -0
  440. package/dist/components/Collapsible/Collapsible.js +47 -0
  441. package/dist/components/Collapsible/Collapsible.js.map +1 -0
  442. package/dist/components/Collapsible/Collapsible.module.css.cjs +2 -0
  443. package/dist/components/Collapsible/Collapsible.module.css.cjs.map +1 -0
  444. package/dist/components/Collapsible/Collapsible.module.css.js +12 -0
  445. package/dist/components/Collapsible/Collapsible.module.css.js.map +1 -0
  446. package/dist/components/Combobox/Combobox.cjs +2 -0
  447. package/dist/components/Combobox/Combobox.cjs.map +1 -0
  448. package/dist/components/Combobox/Combobox.js +103 -0
  449. package/dist/components/Combobox/Combobox.js.map +1 -0
  450. package/dist/components/Combobox/Combobox.module.css.cjs +2 -0
  451. package/dist/components/Combobox/Combobox.module.css.cjs.map +1 -0
  452. package/dist/components/Combobox/Combobox.module.css.js +32 -0
  453. package/dist/components/Combobox/Combobox.module.css.js.map +1 -0
  454. package/dist/components/Command/Command.cjs +2 -0
  455. package/dist/components/Command/Command.cjs.map +1 -0
  456. package/dist/components/Command/Command.js +143 -0
  457. package/dist/components/Command/Command.js.map +1 -0
  458. package/dist/components/Command/Command.module.css.cjs +2 -0
  459. package/dist/components/Command/Command.module.css.cjs.map +1 -0
  460. package/dist/components/Command/Command.module.css.js +34 -0
  461. package/dist/components/Command/Command.module.css.js.map +1 -0
  462. package/dist/components/ConditionalWrapper/ConditionalWrapper.cjs +2 -0
  463. package/dist/components/ConditionalWrapper/ConditionalWrapper.cjs.map +1 -0
  464. package/dist/components/ConditionalWrapper/ConditionalWrapper.js +12 -0
  465. package/dist/components/ConditionalWrapper/ConditionalWrapper.js.map +1 -0
  466. package/dist/components/ConfirmDialog/ConfirmDialog.cjs +2 -0
  467. package/dist/components/ConfirmDialog/ConfirmDialog.cjs.map +1 -0
  468. package/dist/components/ConfirmDialog/ConfirmDialog.js +35 -0
  469. package/dist/components/ConfirmDialog/ConfirmDialog.js.map +1 -0
  470. package/dist/components/ContextMenu/ContextMenu.cjs +2 -0
  471. package/dist/components/ContextMenu/ContextMenu.cjs.map +1 -0
  472. package/dist/components/ContextMenu/ContextMenu.js +86 -0
  473. package/dist/components/ContextMenu/ContextMenu.js.map +1 -0
  474. package/dist/components/ContextMenu/ContextMenu.module.css.cjs +2 -0
  475. package/dist/components/ContextMenu/ContextMenu.module.css.cjs.map +1 -0
  476. package/dist/components/ContextMenu/ContextMenu.module.css.js +18 -0
  477. package/dist/components/ContextMenu/ContextMenu.module.css.js.map +1 -0
  478. package/dist/components/CopyButton/CopyButton.cjs +2 -0
  479. package/dist/components/CopyButton/CopyButton.cjs.map +1 -0
  480. package/dist/components/CopyButton/CopyButton.js +43 -0
  481. package/dist/components/CopyButton/CopyButton.js.map +1 -0
  482. package/dist/components/CopyButton/CopyButton.module.css.cjs +2 -0
  483. package/dist/components/CopyButton/CopyButton.module.css.cjs.map +1 -0
  484. package/dist/components/CopyButton/CopyButton.module.css.js +10 -0
  485. package/dist/components/CopyButton/CopyButton.module.css.js.map +1 -0
  486. package/dist/components/DataList/DataList.cjs +2 -0
  487. package/dist/components/DataList/DataList.cjs.map +1 -0
  488. package/dist/components/DataList/DataList.js +17 -0
  489. package/dist/components/DataList/DataList.js.map +1 -0
  490. package/dist/components/DataList/DataList.module.css.cjs +2 -0
  491. package/dist/components/DataList/DataList.module.css.cjs.map +1 -0
  492. package/dist/components/DataList/DataList.module.css.js +10 -0
  493. package/dist/components/DataList/DataList.module.css.js.map +1 -0
  494. package/dist/components/DataTable/DataTable.cjs +2 -0
  495. package/dist/components/DataTable/DataTable.cjs.map +1 -0
  496. package/dist/components/DataTable/DataTable.js +111 -0
  497. package/dist/components/DataTable/DataTable.js.map +1 -0
  498. package/dist/components/DataTable/DataTable.module.css.cjs +2 -0
  499. package/dist/components/DataTable/DataTable.module.css.cjs.map +1 -0
  500. package/dist/components/DataTable/DataTable.module.css.js +14 -0
  501. package/dist/components/DataTable/DataTable.module.css.js.map +1 -0
  502. package/dist/components/DatePicker/DatePicker.cjs +2 -0
  503. package/dist/components/DatePicker/DatePicker.cjs.map +1 -0
  504. package/dist/components/DatePicker/DatePicker.js +19 -0
  505. package/dist/components/DatePicker/DatePicker.js.map +1 -0
  506. package/dist/components/DateRangePicker/DateRangePicker.cjs +2 -0
  507. package/dist/components/DateRangePicker/DateRangePicker.cjs.map +1 -0
  508. package/dist/components/DateRangePicker/DateRangePicker.js +152 -0
  509. package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -0
  510. package/dist/components/DateRangePicker/DateRangePicker.module.css.cjs +2 -0
  511. package/dist/components/DateRangePicker/DateRangePicker.module.css.cjs.map +1 -0
  512. package/dist/components/DateRangePicker/DateRangePicker.module.css.js +40 -0
  513. package/dist/components/DateRangePicker/DateRangePicker.module.css.js.map +1 -0
  514. package/dist/components/DescriptionList/DescriptionList.cjs +2 -0
  515. package/dist/components/DescriptionList/DescriptionList.cjs.map +1 -0
  516. package/dist/components/DescriptionList/DescriptionList.js +14 -0
  517. package/dist/components/DescriptionList/DescriptionList.js.map +1 -0
  518. package/dist/components/DescriptionList/DescriptionList.module.css.cjs +2 -0
  519. package/dist/components/DescriptionList/DescriptionList.module.css.cjs.map +1 -0
  520. package/dist/components/DescriptionList/DescriptionList.module.css.js +12 -0
  521. package/dist/components/DescriptionList/DescriptionList.module.css.js.map +1 -0
  522. package/dist/components/Divider/Divider.cjs +2 -0
  523. package/dist/components/Divider/Divider.cjs.map +1 -0
  524. package/dist/components/Divider/Divider.js +57 -0
  525. package/dist/components/Divider/Divider.js.map +1 -0
  526. package/dist/components/Divider/Divider.module.css.cjs +2 -0
  527. package/dist/components/Divider/Divider.module.css.cjs.map +1 -0
  528. package/dist/components/Divider/Divider.module.css.js +20 -0
  529. package/dist/components/Divider/Divider.module.css.js.map +1 -0
  530. package/dist/components/Drawer/Drawer.cjs +2 -0
  531. package/dist/components/Drawer/Drawer.cjs.map +1 -0
  532. package/dist/components/Drawer/Drawer.js +96 -0
  533. package/dist/components/Drawer/Drawer.js.map +1 -0
  534. package/dist/components/Drawer/Drawer.module.css.cjs +2 -0
  535. package/dist/components/Drawer/Drawer.module.css.cjs.map +1 -0
  536. package/dist/components/Drawer/Drawer.module.css.js +42 -0
  537. package/dist/components/Drawer/Drawer.module.css.js.map +1 -0
  538. package/dist/components/DropdownMenu/DropdownMenu.cjs +2 -0
  539. package/dist/components/DropdownMenu/DropdownMenu.cjs.map +1 -0
  540. package/dist/components/DropdownMenu/DropdownMenu.js +109 -0
  541. package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -0
  542. package/dist/components/DropdownMenu/DropdownMenu.module.css.cjs +2 -0
  543. package/dist/components/DropdownMenu/DropdownMenu.module.css.cjs.map +1 -0
  544. package/dist/components/DropdownMenu/DropdownMenu.module.css.js +28 -0
  545. package/dist/components/DropdownMenu/DropdownMenu.module.css.js.map +1 -0
  546. package/dist/components/Dropzone/Dropzone.cjs +2 -0
  547. package/dist/components/Dropzone/Dropzone.cjs.map +1 -0
  548. package/dist/components/Dropzone/Dropzone.js +80 -0
  549. package/dist/components/Dropzone/Dropzone.js.map +1 -0
  550. package/dist/components/Dropzone/Dropzone.module.css.cjs +2 -0
  551. package/dist/components/Dropzone/Dropzone.module.css.cjs.map +1 -0
  552. package/dist/components/Dropzone/Dropzone.module.css.js +16 -0
  553. package/dist/components/Dropzone/Dropzone.module.css.js.map +1 -0
  554. package/dist/components/EmptyState/EmptyState.cjs +2 -0
  555. package/dist/components/EmptyState/EmptyState.cjs.map +1 -0
  556. package/dist/components/EmptyState/EmptyState.js +15 -0
  557. package/dist/components/EmptyState/EmptyState.js.map +1 -0
  558. package/dist/components/EmptyState/EmptyState.module.css.cjs +2 -0
  559. package/dist/components/EmptyState/EmptyState.module.css.cjs.map +1 -0
  560. package/dist/components/EmptyState/EmptyState.module.css.js +16 -0
  561. package/dist/components/EmptyState/EmptyState.module.css.js.map +1 -0
  562. package/dist/components/ErrorState/ErrorState.cjs +2 -0
  563. package/dist/components/ErrorState/ErrorState.cjs.map +1 -0
  564. package/dist/components/ErrorState/ErrorState.js +35 -0
  565. package/dist/components/ErrorState/ErrorState.js.map +1 -0
  566. package/dist/components/ErrorState/ErrorState.module.css.cjs +2 -0
  567. package/dist/components/ErrorState/ErrorState.module.css.cjs.map +1 -0
  568. package/dist/components/ErrorState/ErrorState.module.css.js +16 -0
  569. package/dist/components/ErrorState/ErrorState.module.css.js.map +1 -0
  570. package/dist/components/ErrorText/ErrorText.cjs +2 -0
  571. package/dist/components/ErrorText/ErrorText.cjs.map +1 -0
  572. package/dist/components/ErrorText/ErrorText.js +10 -0
  573. package/dist/components/ErrorText/ErrorText.js.map +1 -0
  574. package/dist/components/ErrorText/ErrorText.module.css.cjs +2 -0
  575. package/dist/components/ErrorText/ErrorText.module.css.cjs.map +1 -0
  576. package/dist/components/ErrorText/ErrorText.module.css.js +8 -0
  577. package/dist/components/ErrorText/ErrorText.module.css.js.map +1 -0
  578. package/dist/components/FileUpload/FileUpload.cjs +2 -0
  579. package/dist/components/FileUpload/FileUpload.cjs.map +1 -0
  580. package/dist/components/FileUpload/FileUpload.js +127 -0
  581. package/dist/components/FileUpload/FileUpload.js.map +1 -0
  582. package/dist/components/FileUpload/FileUpload.module.css.cjs +2 -0
  583. package/dist/components/FileUpload/FileUpload.module.css.cjs.map +1 -0
  584. package/dist/components/FileUpload/FileUpload.module.css.js +32 -0
  585. package/dist/components/FileUpload/FileUpload.module.css.js.map +1 -0
  586. package/dist/components/FloatingActionButton/FloatingActionButton.cjs +2 -0
  587. package/dist/components/FloatingActionButton/FloatingActionButton.cjs.map +1 -0
  588. package/dist/components/FloatingActionButton/FloatingActionButton.js +39 -0
  589. package/dist/components/FloatingActionButton/FloatingActionButton.js.map +1 -0
  590. package/dist/components/FloatingActionButton/FloatingActionButton.module.css.cjs +2 -0
  591. package/dist/components/FloatingActionButton/FloatingActionButton.module.css.cjs.map +1 -0
  592. package/dist/components/FloatingActionButton/FloatingActionButton.module.css.js +32 -0
  593. package/dist/components/FloatingActionButton/FloatingActionButton.module.css.js.map +1 -0
  594. package/dist/components/For/For.cjs +2 -0
  595. package/dist/components/For/For.cjs.map +1 -0
  596. package/dist/components/For/For.js +9 -0
  597. package/dist/components/For/For.js.map +1 -0
  598. package/dist/components/Form/Form.cjs +2 -0
  599. package/dist/components/Form/Form.cjs.map +1 -0
  600. package/dist/components/Form/Form.js +72 -0
  601. package/dist/components/Form/Form.js.map +1 -0
  602. package/dist/components/Form/Form.module.css.cjs +2 -0
  603. package/dist/components/Form/Form.module.css.cjs.map +1 -0
  604. package/dist/components/Form/Form.module.css.js +36 -0
  605. package/dist/components/Form/Form.module.css.js.map +1 -0
  606. package/dist/components/HoverCard/HoverCard.cjs +2 -0
  607. package/dist/components/HoverCard/HoverCard.cjs.map +1 -0
  608. package/dist/components/HoverCard/HoverCard.js +48 -0
  609. package/dist/components/HoverCard/HoverCard.js.map +1 -0
  610. package/dist/components/HoverCard/HoverCard.module.css.cjs +2 -0
  611. package/dist/components/HoverCard/HoverCard.module.css.cjs.map +1 -0
  612. package/dist/components/HoverCard/HoverCard.module.css.js +22 -0
  613. package/dist/components/HoverCard/HoverCard.module.css.js.map +1 -0
  614. package/dist/components/Image/Image.cjs +2 -0
  615. package/dist/components/Image/Image.cjs.map +1 -0
  616. package/dist/components/Image/Image.js +32 -0
  617. package/dist/components/Image/Image.js.map +1 -0
  618. package/dist/components/Image/Image.module.css.cjs +2 -0
  619. package/dist/components/Image/Image.module.css.cjs.map +1 -0
  620. package/dist/components/Image/Image.module.css.js +8 -0
  621. package/dist/components/Image/Image.module.css.js.map +1 -0
  622. package/dist/components/Input/Input.cjs +2 -0
  623. package/dist/components/Input/Input.cjs.map +1 -0
  624. package/dist/components/Input/Input.js +52 -0
  625. package/dist/components/Input/Input.js.map +1 -0
  626. package/dist/components/Input/Input.module.css.cjs +2 -0
  627. package/dist/components/Input/Input.module.css.cjs.map +1 -0
  628. package/dist/components/Input/Input.module.css.js +36 -0
  629. package/dist/components/Input/Input.module.css.js.map +1 -0
  630. package/dist/components/InstallBanner/InstallBanner.cjs +2 -0
  631. package/dist/components/InstallBanner/InstallBanner.cjs.map +1 -0
  632. package/dist/components/InstallBanner/InstallBanner.js +66 -0
  633. package/dist/components/InstallBanner/InstallBanner.js.map +1 -0
  634. package/dist/components/InstallBanner/InstallBanner.module.css.cjs +2 -0
  635. package/dist/components/InstallBanner/InstallBanner.module.css.cjs.map +1 -0
  636. package/dist/components/InstallBanner/InstallBanner.module.css.js +18 -0
  637. package/dist/components/InstallBanner/InstallBanner.module.css.js.map +1 -0
  638. package/dist/components/InstallButton/InstallButton.cjs +2 -0
  639. package/dist/components/InstallButton/InstallButton.cjs.map +1 -0
  640. package/dist/components/InstallButton/InstallButton.js +20 -0
  641. package/dist/components/InstallButton/InstallButton.js.map +1 -0
  642. package/dist/components/Kbd/Kbd.cjs +2 -0
  643. package/dist/components/Kbd/Kbd.cjs.map +1 -0
  644. package/dist/components/Kbd/Kbd.js +10 -0
  645. package/dist/components/Kbd/Kbd.js.map +1 -0
  646. package/dist/components/Kbd/Kbd.module.css.cjs +2 -0
  647. package/dist/components/Kbd/Kbd.module.css.cjs.map +1 -0
  648. package/dist/components/Kbd/Kbd.module.css.js +14 -0
  649. package/dist/components/Kbd/Kbd.module.css.js.map +1 -0
  650. package/dist/components/Label/Label.cjs +2 -0
  651. package/dist/components/Label/Label.cjs.map +1 -0
  652. package/dist/components/Label/Label.js +14 -0
  653. package/dist/components/Label/Label.js.map +1 -0
  654. package/dist/components/Label/Label.module.css.cjs +2 -0
  655. package/dist/components/Label/Label.module.css.cjs.map +1 -0
  656. package/dist/components/Label/Label.module.css.js +10 -0
  657. package/dist/components/Label/Label.module.css.js.map +1 -0
  658. package/dist/components/Layout/Layout.cjs +2 -0
  659. package/dist/components/Layout/Layout.cjs.map +1 -0
  660. package/dist/components/Layout/Layout.js +72 -0
  661. package/dist/components/Layout/Layout.js.map +1 -0
  662. package/dist/components/Layout/Layout.module.css.cjs +2 -0
  663. package/dist/components/Layout/Layout.module.css.cjs.map +1 -0
  664. package/dist/components/Layout/Layout.module.css.js +44 -0
  665. package/dist/components/Layout/Layout.module.css.js.map +1 -0
  666. package/dist/components/ListTile/ListTile.cjs +2 -0
  667. package/dist/components/ListTile/ListTile.cjs.map +1 -0
  668. package/dist/components/ListTile/ListTile.js +42 -0
  669. package/dist/components/ListTile/ListTile.js.map +1 -0
  670. package/dist/components/ListTile/ListTile.module.css.cjs +2 -0
  671. package/dist/components/ListTile/ListTile.module.css.cjs.map +1 -0
  672. package/dist/components/ListTile/ListTile.module.css.js +24 -0
  673. package/dist/components/ListTile/ListTile.module.css.js.map +1 -0
  674. package/dist/components/Menubar/Menubar.cjs +2 -0
  675. package/dist/components/Menubar/Menubar.cjs.map +1 -0
  676. package/dist/components/Menubar/Menubar.js +84 -0
  677. package/dist/components/Menubar/Menubar.js.map +1 -0
  678. package/dist/components/Menubar/Menubar.module.css.cjs +2 -0
  679. package/dist/components/Menubar/Menubar.module.css.cjs.map +1 -0
  680. package/dist/components/Menubar/Menubar.module.css.js +24 -0
  681. package/dist/components/Menubar/Menubar.module.css.js.map +1 -0
  682. package/dist/components/Modal/Modal.cjs +2 -0
  683. package/dist/components/Modal/Modal.cjs.map +1 -0
  684. package/dist/components/Modal/Modal.js +97 -0
  685. package/dist/components/Modal/Modal.js.map +1 -0
  686. package/dist/components/Modal/Modal.module.css.cjs +2 -0
  687. package/dist/components/Modal/Modal.module.css.cjs.map +1 -0
  688. package/dist/components/Modal/Modal.module.css.js +40 -0
  689. package/dist/components/Modal/Modal.module.css.js.map +1 -0
  690. package/dist/components/ModalsManager/ModalsManager.cjs +2 -0
  691. package/dist/components/ModalsManager/ModalsManager.cjs.map +1 -0
  692. package/dist/components/ModalsManager/ModalsManager.js +88 -0
  693. package/dist/components/ModalsManager/ModalsManager.js.map +1 -0
  694. package/dist/components/ModalsManager/ModalsManager.module.css.cjs +2 -0
  695. package/dist/components/ModalsManager/ModalsManager.module.css.cjs.map +1 -0
  696. package/dist/components/ModalsManager/ModalsManager.module.css.js +8 -0
  697. package/dist/components/ModalsManager/ModalsManager.module.css.js.map +1 -0
  698. package/dist/components/Money/Money.cjs +2 -0
  699. package/dist/components/Money/Money.cjs.map +1 -0
  700. package/dist/components/Money/Money.js +12 -0
  701. package/dist/components/Money/Money.js.map +1 -0
  702. package/dist/components/MultiSelect/MultiSelect.cjs +2 -0
  703. package/dist/components/MultiSelect/MultiSelect.cjs.map +1 -0
  704. package/dist/components/MultiSelect/MultiSelect.js +155 -0
  705. package/dist/components/MultiSelect/MultiSelect.js.map +1 -0
  706. package/dist/components/MultiSelect/MultiSelect.module.css.cjs +2 -0
  707. package/dist/components/MultiSelect/MultiSelect.module.css.cjs.map +1 -0
  708. package/dist/components/MultiSelect/MultiSelect.module.css.js +38 -0
  709. package/dist/components/MultiSelect/MultiSelect.module.css.js.map +1 -0
  710. package/dist/components/NProgress/NProgress.cjs +2 -0
  711. package/dist/components/NProgress/NProgress.cjs.map +1 -0
  712. package/dist/components/NProgress/NProgress.js +66 -0
  713. package/dist/components/NProgress/NProgress.js.map +1 -0
  714. package/dist/components/NProgress/NProgress.module.css.cjs +2 -0
  715. package/dist/components/NProgress/NProgress.module.css.cjs.map +1 -0
  716. package/dist/components/NProgress/NProgress.module.css.js +8 -0
  717. package/dist/components/NProgress/NProgress.module.css.js.map +1 -0
  718. package/dist/components/Navbar/Navbar.cjs +2 -0
  719. package/dist/components/Navbar/Navbar.cjs.map +1 -0
  720. package/dist/components/Navbar/Navbar.js +36 -0
  721. package/dist/components/Navbar/Navbar.js.map +1 -0
  722. package/dist/components/Navbar/Navbar.module.css.cjs +2 -0
  723. package/dist/components/Navbar/Navbar.module.css.cjs.map +1 -0
  724. package/dist/components/Navbar/Navbar.module.css.js +24 -0
  725. package/dist/components/Navbar/Navbar.module.css.js.map +1 -0
  726. package/dist/components/NavigationMenu/NavigationMenu.cjs +2 -0
  727. package/dist/components/NavigationMenu/NavigationMenu.cjs.map +1 -0
  728. package/dist/components/NavigationMenu/NavigationMenu.js +78 -0
  729. package/dist/components/NavigationMenu/NavigationMenu.js.map +1 -0
  730. package/dist/components/NavigationMenu/NavigationMenu.module.css.cjs +2 -0
  731. package/dist/components/NavigationMenu/NavigationMenu.module.css.cjs.map +1 -0
  732. package/dist/components/NavigationMenu/NavigationMenu.module.css.js +20 -0
  733. package/dist/components/NavigationMenu/NavigationMenu.module.css.js.map +1 -0
  734. package/dist/components/NavigationRail/NavigationRail.cjs +2 -0
  735. package/dist/components/NavigationRail/NavigationRail.cjs.map +1 -0
  736. package/dist/components/NavigationRail/NavigationRail.js +42 -0
  737. package/dist/components/NavigationRail/NavigationRail.js.map +1 -0
  738. package/dist/components/NavigationRail/NavigationRail.module.css.cjs +2 -0
  739. package/dist/components/NavigationRail/NavigationRail.module.css.cjs.map +1 -0
  740. package/dist/components/NavigationRail/NavigationRail.module.css.js +26 -0
  741. package/dist/components/NavigationRail/NavigationRail.module.css.js.map +1 -0
  742. package/dist/components/OfflineIndicator/OfflineIndicator.cjs +2 -0
  743. package/dist/components/OfflineIndicator/OfflineIndicator.cjs.map +1 -0
  744. package/dist/components/OfflineIndicator/OfflineIndicator.js +50 -0
  745. package/dist/components/OfflineIndicator/OfflineIndicator.js.map +1 -0
  746. package/dist/components/OfflineIndicator/OfflineIndicator.module.css.cjs +2 -0
  747. package/dist/components/OfflineIndicator/OfflineIndicator.module.css.cjs.map +1 -0
  748. package/dist/components/OfflineIndicator/OfflineIndicator.module.css.js +18 -0
  749. package/dist/components/OfflineIndicator/OfflineIndicator.module.css.js.map +1 -0
  750. package/dist/components/Page/Page.cjs +2 -0
  751. package/dist/components/Page/Page.cjs.map +1 -0
  752. package/dist/components/Page/Page.js +34 -0
  753. package/dist/components/Page/Page.js.map +1 -0
  754. package/dist/components/Page/Page.module.css.cjs +2 -0
  755. package/dist/components/Page/Page.module.css.cjs.map +1 -0
  756. package/dist/components/Page/Page.module.css.js +28 -0
  757. package/dist/components/Page/Page.module.css.js.map +1 -0
  758. package/dist/components/Pagination/Pagination.cjs +2 -0
  759. package/dist/components/Pagination/Pagination.cjs.map +1 -0
  760. package/dist/components/Pagination/Pagination.js +97 -0
  761. package/dist/components/Pagination/Pagination.js.map +1 -0
  762. package/dist/components/Pagination/Pagination.module.css.cjs +2 -0
  763. package/dist/components/Pagination/Pagination.module.css.cjs.map +1 -0
  764. package/dist/components/Pagination/Pagination.module.css.js +22 -0
  765. package/dist/components/Pagination/Pagination.module.css.js.map +1 -0
  766. package/dist/components/PasswordInput/PasswordInput.cjs +2 -0
  767. package/dist/components/PasswordInput/PasswordInput.cjs.map +1 -0
  768. package/dist/components/PasswordInput/PasswordInput.js +76 -0
  769. package/dist/components/PasswordInput/PasswordInput.js.map +1 -0
  770. package/dist/components/PasswordInput/PasswordInput.module.css.cjs +2 -0
  771. package/dist/components/PasswordInput/PasswordInput.module.css.cjs.map +1 -0
  772. package/dist/components/PasswordInput/PasswordInput.module.css.js +44 -0
  773. package/dist/components/PasswordInput/PasswordInput.module.css.js.map +1 -0
  774. package/dist/components/PinInput/PinInput.cjs +2 -0
  775. package/dist/components/PinInput/PinInput.cjs.map +1 -0
  776. package/dist/components/PinInput/PinInput.js +86 -0
  777. package/dist/components/PinInput/PinInput.js.map +1 -0
  778. package/dist/components/PinInput/PinInput.module.css.cjs +2 -0
  779. package/dist/components/PinInput/PinInput.module.css.cjs.map +1 -0
  780. package/dist/components/PinInput/PinInput.module.css.js +26 -0
  781. package/dist/components/PinInput/PinInput.module.css.js.map +1 -0
  782. package/dist/components/Popover/Popover.cjs +2 -0
  783. package/dist/components/Popover/Popover.cjs.map +1 -0
  784. package/dist/components/Popover/Popover.js +60 -0
  785. package/dist/components/Popover/Popover.js.map +1 -0
  786. package/dist/components/Popover/Popover.module.css.cjs +2 -0
  787. package/dist/components/Popover/Popover.module.css.cjs.map +1 -0
  788. package/dist/components/Popover/Popover.module.css.js +20 -0
  789. package/dist/components/Popover/Popover.module.css.js.map +1 -0
  790. package/dist/components/Portal/Portal.cjs +2 -0
  791. package/dist/components/Portal/Portal.cjs.map +1 -0
  792. package/dist/components/Portal/Portal.js +10 -0
  793. package/dist/components/Portal/Portal.js.map +1 -0
  794. package/dist/components/Progress/Progress.cjs +2 -0
  795. package/dist/components/Progress/Progress.cjs.map +1 -0
  796. package/dist/components/Progress/Progress.js +48 -0
  797. package/dist/components/Progress/Progress.js.map +1 -0
  798. package/dist/components/Progress/Progress.module.css.cjs +2 -0
  799. package/dist/components/Progress/Progress.module.css.cjs.map +1 -0
  800. package/dist/components/Progress/Progress.module.css.js +24 -0
  801. package/dist/components/Progress/Progress.module.css.js.map +1 -0
  802. package/dist/components/Radio/Radio.cjs +2 -0
  803. package/dist/components/Radio/Radio.cjs.map +1 -0
  804. package/dist/components/Radio/Radio.js +82 -0
  805. package/dist/components/Radio/Radio.js.map +1 -0
  806. package/dist/components/Radio/Radio.module.css.cjs +2 -0
  807. package/dist/components/Radio/Radio.module.css.cjs.map +1 -0
  808. package/dist/components/Radio/Radio.module.css.js +24 -0
  809. package/dist/components/Radio/Radio.module.css.js.map +1 -0
  810. package/dist/components/RangeSlider/RangeSlider.cjs +2 -0
  811. package/dist/components/RangeSlider/RangeSlider.cjs.map +1 -0
  812. package/dist/components/RangeSlider/RangeSlider.js +79 -0
  813. package/dist/components/RangeSlider/RangeSlider.js.map +1 -0
  814. package/dist/components/RangeSlider/RangeSlider.module.css.cjs +2 -0
  815. package/dist/components/RangeSlider/RangeSlider.module.css.cjs.map +1 -0
  816. package/dist/components/RangeSlider/RangeSlider.module.css.js +22 -0
  817. package/dist/components/RangeSlider/RangeSlider.module.css.js.map +1 -0
  818. package/dist/components/RatingStars/RatingStars.cjs +2 -0
  819. package/dist/components/RatingStars/RatingStars.cjs.map +1 -0
  820. package/dist/components/RatingStars/RatingStars.js +71 -0
  821. package/dist/components/RatingStars/RatingStars.js.map +1 -0
  822. package/dist/components/RatingStars/RatingStars.module.css.cjs +2 -0
  823. package/dist/components/RatingStars/RatingStars.module.css.cjs.map +1 -0
  824. package/dist/components/RatingStars/RatingStars.module.css.js +22 -0
  825. package/dist/components/RatingStars/RatingStars.module.css.js.map +1 -0
  826. package/dist/components/RefreshIndicator/RefreshIndicator.cjs +2 -0
  827. package/dist/components/RefreshIndicator/RefreshIndicator.cjs.map +1 -0
  828. package/dist/components/RefreshIndicator/RefreshIndicator.js +90 -0
  829. package/dist/components/RefreshIndicator/RefreshIndicator.js.map +1 -0
  830. package/dist/components/RefreshIndicator/RefreshIndicator.module.css.cjs +2 -0
  831. package/dist/components/RefreshIndicator/RefreshIndicator.module.css.cjs.map +1 -0
  832. package/dist/components/RefreshIndicator/RefreshIndicator.module.css.js +14 -0
  833. package/dist/components/RefreshIndicator/RefreshIndicator.module.css.js.map +1 -0
  834. package/dist/components/RelativeTime/RelativeTime.cjs +2 -0
  835. package/dist/components/RelativeTime/RelativeTime.cjs.map +1 -0
  836. package/dist/components/RelativeTime/RelativeTime.js +10 -0
  837. package/dist/components/RelativeTime/RelativeTime.js.map +1 -0
  838. package/dist/components/Resizable/Resizable.cjs +2 -0
  839. package/dist/components/Resizable/Resizable.cjs.map +1 -0
  840. package/dist/components/Resizable/Resizable.js +89 -0
  841. package/dist/components/Resizable/Resizable.js.map +1 -0
  842. package/dist/components/Resizable/Resizable.module.css.cjs +2 -0
  843. package/dist/components/Resizable/Resizable.module.css.cjs.map +1 -0
  844. package/dist/components/Resizable/Resizable.module.css.js +18 -0
  845. package/dist/components/Resizable/Resizable.module.css.js.map +1 -0
  846. package/dist/components/Responsive/Responsive.cjs +2 -0
  847. package/dist/components/Responsive/Responsive.cjs.map +1 -0
  848. package/dist/components/Responsive/Responsive.js +17 -0
  849. package/dist/components/Responsive/Responsive.js.map +1 -0
  850. package/dist/components/SafeArea/SafeArea.cjs +2 -0
  851. package/dist/components/SafeArea/SafeArea.cjs.map +1 -0
  852. package/dist/components/SafeArea/SafeArea.js +33 -0
  853. package/dist/components/SafeArea/SafeArea.js.map +1 -0
  854. package/dist/components/SafeArea/SafeArea.module.css.cjs +2 -0
  855. package/dist/components/SafeArea/SafeArea.module.css.cjs.map +1 -0
  856. package/dist/components/SafeArea/SafeArea.module.css.js +18 -0
  857. package/dist/components/SafeArea/SafeArea.module.css.js.map +1 -0
  858. package/dist/components/ScrollArea/ScrollArea.cjs +2 -0
  859. package/dist/components/ScrollArea/ScrollArea.cjs.map +1 -0
  860. package/dist/components/ScrollArea/ScrollArea.js +17 -0
  861. package/dist/components/ScrollArea/ScrollArea.js.map +1 -0
  862. package/dist/components/ScrollArea/ScrollArea.module.css.cjs +2 -0
  863. package/dist/components/ScrollArea/ScrollArea.module.css.cjs.map +1 -0
  864. package/dist/components/ScrollArea/ScrollArea.module.css.js +8 -0
  865. package/dist/components/ScrollArea/ScrollArea.module.css.js.map +1 -0
  866. package/dist/components/SearchBar/SearchBar.cjs +2 -0
  867. package/dist/components/SearchBar/SearchBar.cjs.map +1 -0
  868. package/dist/components/SearchBar/SearchBar.js +55 -0
  869. package/dist/components/SearchBar/SearchBar.js.map +1 -0
  870. package/dist/components/SearchBar/SearchBar.module.css.cjs +2 -0
  871. package/dist/components/SearchBar/SearchBar.module.css.cjs.map +1 -0
  872. package/dist/components/SearchBar/SearchBar.module.css.js +14 -0
  873. package/dist/components/SearchBar/SearchBar.module.css.js.map +1 -0
  874. package/dist/components/SegmentedControl/SegmentedControl.cjs +2 -0
  875. package/dist/components/SegmentedControl/SegmentedControl.cjs.map +1 -0
  876. package/dist/components/SegmentedControl/SegmentedControl.js +46 -0
  877. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -0
  878. package/dist/components/SegmentedControl/SegmentedControl.module.css.cjs +2 -0
  879. package/dist/components/SegmentedControl/SegmentedControl.module.css.cjs.map +1 -0
  880. package/dist/components/SegmentedControl/SegmentedControl.module.css.js +24 -0
  881. package/dist/components/SegmentedControl/SegmentedControl.module.css.js.map +1 -0
  882. package/dist/components/Select/Select.cjs +2 -0
  883. package/dist/components/Select/Select.cjs.map +1 -0
  884. package/dist/components/Select/Select.js +61 -0
  885. package/dist/components/Select/Select.js.map +1 -0
  886. package/dist/components/Select/Select.module.css.cjs +2 -0
  887. package/dist/components/Select/Select.module.css.cjs.map +1 -0
  888. package/dist/components/Select/Select.module.css.js +24 -0
  889. package/dist/components/Select/Select.module.css.js.map +1 -0
  890. package/dist/components/Sidebar/Sidebar.cjs +2 -0
  891. package/dist/components/Sidebar/Sidebar.cjs.map +1 -0
  892. package/dist/components/Sidebar/Sidebar.js +54 -0
  893. package/dist/components/Sidebar/Sidebar.js.map +1 -0
  894. package/dist/components/Sidebar/Sidebar.module.css.cjs +2 -0
  895. package/dist/components/Sidebar/Sidebar.module.css.cjs.map +1 -0
  896. package/dist/components/Sidebar/Sidebar.module.css.js +26 -0
  897. package/dist/components/Sidebar/Sidebar.module.css.js.map +1 -0
  898. package/dist/components/Skeleton/Skeleton.cjs +2 -0
  899. package/dist/components/Skeleton/Skeleton.cjs.map +1 -0
  900. package/dist/components/Skeleton/Skeleton.js +22 -0
  901. package/dist/components/Skeleton/Skeleton.js.map +1 -0
  902. package/dist/components/Skeleton/Skeleton.module.css.cjs +2 -0
  903. package/dist/components/Skeleton/Skeleton.module.css.cjs.map +1 -0
  904. package/dist/components/Skeleton/Skeleton.module.css.js +12 -0
  905. package/dist/components/Skeleton/Skeleton.module.css.js.map +1 -0
  906. package/dist/components/Slider/Slider.cjs +2 -0
  907. package/dist/components/Slider/Slider.cjs.map +1 -0
  908. package/dist/components/Slider/Slider.js +56 -0
  909. package/dist/components/Slider/Slider.js.map +1 -0
  910. package/dist/components/Slider/Slider.module.css.cjs +2 -0
  911. package/dist/components/Slider/Slider.module.css.cjs.map +1 -0
  912. package/dist/components/Slider/Slider.module.css.js +22 -0
  913. package/dist/components/Slider/Slider.module.css.js.map +1 -0
  914. package/dist/components/Spacer/Spacer.cjs +2 -0
  915. package/dist/components/Spacer/Spacer.cjs.map +1 -0
  916. package/dist/components/Spacer/Spacer.js +10 -0
  917. package/dist/components/Spacer/Spacer.js.map +1 -0
  918. package/dist/components/Spacer/Spacer.module.css.cjs +2 -0
  919. package/dist/components/Spacer/Spacer.module.css.cjs.map +1 -0
  920. package/dist/components/Spacer/Spacer.module.css.js +14 -0
  921. package/dist/components/Spacer/Spacer.module.css.js.map +1 -0
  922. package/dist/components/Spinner/Spinner.cjs +2 -0
  923. package/dist/components/Spinner/Spinner.cjs.map +1 -0
  924. package/dist/components/Spinner/Spinner.js +36 -0
  925. package/dist/components/Spinner/Spinner.js.map +1 -0
  926. package/dist/components/Spinner/Spinner.module.css.cjs +2 -0
  927. package/dist/components/Spinner/Spinner.module.css.cjs.map +1 -0
  928. package/dist/components/Spinner/Spinner.module.css.js +26 -0
  929. package/dist/components/Spinner/Spinner.module.css.js.map +1 -0
  930. package/dist/components/Stat/Stat.cjs +2 -0
  931. package/dist/components/Stat/Stat.cjs.map +1 -0
  932. package/dist/components/Stat/Stat.js +38 -0
  933. package/dist/components/Stat/Stat.js.map +1 -0
  934. package/dist/components/Stat/Stat.module.css.cjs +2 -0
  935. package/dist/components/Stat/Stat.module.css.cjs.map +1 -0
  936. package/dist/components/Stat/Stat.module.css.js +28 -0
  937. package/dist/components/Stat/Stat.module.css.js.map +1 -0
  938. package/dist/components/Stepper/Stepper.cjs +2 -0
  939. package/dist/components/Stepper/Stepper.cjs.map +1 -0
  940. package/dist/components/Stepper/Stepper.js +43 -0
  941. package/dist/components/Stepper/Stepper.js.map +1 -0
  942. package/dist/components/Stepper/Stepper.module.css.cjs +2 -0
  943. package/dist/components/Stepper/Stepper.module.css.cjs.map +1 -0
  944. package/dist/components/Stepper/Stepper.module.css.js +22 -0
  945. package/dist/components/Stepper/Stepper.module.css.js.map +1 -0
  946. package/dist/components/StepperInput/StepperInput.cjs +2 -0
  947. package/dist/components/StepperInput/StepperInput.cjs.map +1 -0
  948. package/dist/components/StepperInput/StepperInput.js +56 -0
  949. package/dist/components/StepperInput/StepperInput.js.map +1 -0
  950. package/dist/components/StepperInput/StepperInput.module.css.cjs +2 -0
  951. package/dist/components/StepperInput/StepperInput.module.css.cjs.map +1 -0
  952. package/dist/components/StepperInput/StepperInput.module.css.js +24 -0
  953. package/dist/components/StepperInput/StepperInput.module.css.js.map +1 -0
  954. package/dist/components/Switch/Switch.cjs +2 -0
  955. package/dist/components/Switch/Switch.cjs.map +1 -0
  956. package/dist/components/Switch/Switch.js +25 -0
  957. package/dist/components/Switch/Switch.js.map +1 -0
  958. package/dist/components/Switch/Switch.module.css.cjs +2 -0
  959. package/dist/components/Switch/Switch.module.css.cjs.map +1 -0
  960. package/dist/components/Switch/Switch.module.css.js +18 -0
  961. package/dist/components/Switch/Switch.module.css.js.map +1 -0
  962. package/dist/components/SyncStatusBadge/SyncStatusBadge.cjs +2 -0
  963. package/dist/components/SyncStatusBadge/SyncStatusBadge.cjs.map +1 -0
  964. package/dist/components/SyncStatusBadge/SyncStatusBadge.js +62 -0
  965. package/dist/components/SyncStatusBadge/SyncStatusBadge.js.map +1 -0
  966. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.css.cjs +2 -0
  967. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.css.cjs.map +1 -0
  968. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.css.js +28 -0
  969. package/dist/components/SyncStatusBadge/SyncStatusBadge.module.css.js.map +1 -0
  970. package/dist/components/Table/Table.cjs +2 -0
  971. package/dist/components/Table/Table.cjs.map +1 -0
  972. package/dist/components/Table/Table.js +67 -0
  973. package/dist/components/Table/Table.js.map +1 -0
  974. package/dist/components/Table/Table.module.css.cjs +2 -0
  975. package/dist/components/Table/Table.module.css.cjs.map +1 -0
  976. package/dist/components/Table/Table.module.css.js +34 -0
  977. package/dist/components/Table/Table.module.css.js.map +1 -0
  978. package/dist/components/Tabs/Tabs.cjs +2 -0
  979. package/dist/components/Tabs/Tabs.cjs.map +1 -0
  980. package/dist/components/Tabs/Tabs.js +51 -0
  981. package/dist/components/Tabs/Tabs.js.map +1 -0
  982. package/dist/components/Tabs/Tabs.module.css.cjs +2 -0
  983. package/dist/components/Tabs/Tabs.module.css.cjs.map +1 -0
  984. package/dist/components/Tabs/Tabs.module.css.js +16 -0
  985. package/dist/components/Tabs/Tabs.module.css.js.map +1 -0
  986. package/dist/components/Tag/Tag.cjs +2 -0
  987. package/dist/components/Tag/Tag.cjs.map +1 -0
  988. package/dist/components/Tag/Tag.js +30 -0
  989. package/dist/components/Tag/Tag.js.map +1 -0
  990. package/dist/components/Tag/Tag.module.css.cjs +2 -0
  991. package/dist/components/Tag/Tag.module.css.cjs.map +1 -0
  992. package/dist/components/Tag/Tag.module.css.js +30 -0
  993. package/dist/components/Tag/Tag.module.css.js.map +1 -0
  994. package/dist/components/Textarea/Textarea.cjs +2 -0
  995. package/dist/components/Textarea/Textarea.cjs.map +1 -0
  996. package/dist/components/Textarea/Textarea.js +29 -0
  997. package/dist/components/Textarea/Textarea.js.map +1 -0
  998. package/dist/components/Textarea/Textarea.module.css.cjs +2 -0
  999. package/dist/components/Textarea/Textarea.module.css.cjs.map +1 -0
  1000. package/dist/components/Textarea/Textarea.module.css.js +20 -0
  1001. package/dist/components/Textarea/Textarea.module.css.js.map +1 -0
  1002. package/dist/components/TimePicker/TimePicker.cjs +2 -0
  1003. package/dist/components/TimePicker/TimePicker.cjs.map +1 -0
  1004. package/dist/components/TimePicker/TimePicker.js +107 -0
  1005. package/dist/components/TimePicker/TimePicker.js.map +1 -0
  1006. package/dist/components/TimePicker/TimePicker.module.css.cjs +2 -0
  1007. package/dist/components/TimePicker/TimePicker.module.css.cjs.map +1 -0
  1008. package/dist/components/TimePicker/TimePicker.module.css.js +24 -0
  1009. package/dist/components/TimePicker/TimePicker.module.css.js.map +1 -0
  1010. package/dist/components/Timeline/Timeline.cjs +2 -0
  1011. package/dist/components/Timeline/Timeline.cjs.map +1 -0
  1012. package/dist/components/Timeline/Timeline.js +35 -0
  1013. package/dist/components/Timeline/Timeline.js.map +1 -0
  1014. package/dist/components/Timeline/Timeline.module.css.cjs +2 -0
  1015. package/dist/components/Timeline/Timeline.module.css.cjs.map +1 -0
  1016. package/dist/components/Timeline/Timeline.module.css.js +36 -0
  1017. package/dist/components/Timeline/Timeline.module.css.js.map +1 -0
  1018. package/dist/components/Toast/Toast.module.css.cjs +2 -0
  1019. package/dist/components/Toast/Toast.module.css.cjs.map +1 -0
  1020. package/dist/components/Toast/Toast.module.css.js +38 -0
  1021. package/dist/components/Toast/Toast.module.css.js.map +1 -0
  1022. package/dist/components/Toast/ToastProvider.cjs +2 -0
  1023. package/dist/components/Toast/ToastProvider.cjs.map +1 -0
  1024. package/dist/components/Toast/ToastProvider.js +114 -0
  1025. package/dist/components/Toast/ToastProvider.js.map +1 -0
  1026. package/dist/components/Toggle/Toggle.cjs +2 -0
  1027. package/dist/components/Toggle/Toggle.cjs.map +1 -0
  1028. package/dist/components/Toggle/Toggle.js +49 -0
  1029. package/dist/components/Toggle/Toggle.js.map +1 -0
  1030. package/dist/components/Toggle/Toggle.module.css.cjs +2 -0
  1031. package/dist/components/Toggle/Toggle.module.css.cjs.map +1 -0
  1032. package/dist/components/Toggle/Toggle.module.css.js +18 -0
  1033. package/dist/components/Toggle/Toggle.module.css.js.map +1 -0
  1034. package/dist/components/ToggleGroup/ToggleGroup.cjs +2 -0
  1035. package/dist/components/ToggleGroup/ToggleGroup.cjs.map +1 -0
  1036. package/dist/components/ToggleGroup/ToggleGroup.js +74 -0
  1037. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -0
  1038. package/dist/components/ToggleGroup/ToggleGroup.module.css.cjs +2 -0
  1039. package/dist/components/ToggleGroup/ToggleGroup.module.css.cjs.map +1 -0
  1040. package/dist/components/ToggleGroup/ToggleGroup.module.css.js +12 -0
  1041. package/dist/components/ToggleGroup/ToggleGroup.module.css.js.map +1 -0
  1042. package/dist/components/Tooltip/Tooltip.cjs +2 -0
  1043. package/dist/components/Tooltip/Tooltip.cjs.map +1 -0
  1044. package/dist/components/Tooltip/Tooltip.js +43 -0
  1045. package/dist/components/Tooltip/Tooltip.js.map +1 -0
  1046. package/dist/components/Tooltip/Tooltip.module.css.cjs +2 -0
  1047. package/dist/components/Tooltip/Tooltip.module.css.cjs.map +1 -0
  1048. package/dist/components/Tooltip/Tooltip.module.css.js +20 -0
  1049. package/dist/components/Tooltip/Tooltip.module.css.js.map +1 -0
  1050. package/dist/components/TruncateText/TruncateText.cjs +2 -0
  1051. package/dist/components/TruncateText/TruncateText.cjs.map +1 -0
  1052. package/dist/components/TruncateText/TruncateText.js +20 -0
  1053. package/dist/components/TruncateText/TruncateText.js.map +1 -0
  1054. package/dist/components/TruncateText/TruncateText.module.css.cjs +2 -0
  1055. package/dist/components/TruncateText/TruncateText.module.css.cjs.map +1 -0
  1056. package/dist/components/TruncateText/TruncateText.module.css.js +8 -0
  1057. package/dist/components/TruncateText/TruncateText.module.css.js.map +1 -0
  1058. package/dist/components/UpdatePrompt/UpdatePrompt.cjs +2 -0
  1059. package/dist/components/UpdatePrompt/UpdatePrompt.cjs.map +1 -0
  1060. package/dist/components/UpdatePrompt/UpdatePrompt.js +43 -0
  1061. package/dist/components/UpdatePrompt/UpdatePrompt.js.map +1 -0
  1062. package/dist/components/UpdatePrompt/UpdatePrompt.module.css.cjs +2 -0
  1063. package/dist/components/UpdatePrompt/UpdatePrompt.module.css.cjs.map +1 -0
  1064. package/dist/components/UpdatePrompt/UpdatePrompt.module.css.js +20 -0
  1065. package/dist/components/UpdatePrompt/UpdatePrompt.module.css.js.map +1 -0
  1066. package/dist/components/VirtualList/VirtualList.cjs +2 -0
  1067. package/dist/components/VirtualList/VirtualList.cjs.map +1 -0
  1068. package/dist/components/VirtualList/VirtualList.js +50 -0
  1069. package/dist/components/VirtualList/VirtualList.js.map +1 -0
  1070. package/dist/components/VirtualList/VirtualList.module.css.cjs +2 -0
  1071. package/dist/components/VirtualList/VirtualList.module.css.cjs.map +1 -0
  1072. package/dist/components/VirtualList/VirtualList.module.css.js +12 -0
  1073. package/dist/components/VirtualList/VirtualList.module.css.js.map +1 -0
  1074. package/dist/components/VisuallyHidden/VisuallyHidden.cjs +2 -0
  1075. package/dist/components/VisuallyHidden/VisuallyHidden.cjs.map +1 -0
  1076. package/dist/components/VisuallyHidden/VisuallyHidden.js +15 -0
  1077. package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -0
  1078. package/dist/components/VisuallyHidden/VisuallyHidden.module.css.cjs +2 -0
  1079. package/dist/components/VisuallyHidden/VisuallyHidden.module.css.cjs.map +1 -0
  1080. package/dist/components/VisuallyHidden/VisuallyHidden.module.css.js +8 -0
  1081. package/dist/components/VisuallyHidden/VisuallyHidden.module.css.js.map +1 -0
  1082. package/dist/data/create-data-provider.cjs +2 -0
  1083. package/dist/data/create-data-provider.cjs.map +1 -0
  1084. package/dist/data/create-data-provider.js +46 -0
  1085. package/dist/data/create-data-provider.js.map +1 -0
  1086. package/dist/data/data-provider-context.cjs +2 -0
  1087. package/dist/data/data-provider-context.cjs.map +1 -0
  1088. package/dist/data/data-provider-context.js +17 -0
  1089. package/dist/data/data-provider-context.js.map +1 -0
  1090. package/dist/data/use-resource.cjs +2 -0
  1091. package/dist/data/use-resource.cjs.map +1 -0
  1092. package/dist/data/use-resource.js +66 -0
  1093. package/dist/data/use-resource.js.map +1 -0
  1094. package/dist/editor/RichTextEditor.cjs +2 -0
  1095. package/dist/editor/RichTextEditor.cjs.map +1 -0
  1096. package/dist/editor/RichTextEditor.js +183 -0
  1097. package/dist/editor/RichTextEditor.js.map +1 -0
  1098. package/dist/editor/RichTextEditor.module.css.cjs +2 -0
  1099. package/dist/editor/RichTextEditor.module.css.cjs.map +1 -0
  1100. package/dist/editor/RichTextEditor.module.css.js +18 -0
  1101. package/dist/editor/RichTextEditor.module.css.js.map +1 -0
  1102. package/dist/editor.cjs +1 -1
  1103. package/dist/editor.cjs.map +1 -1
  1104. package/dist/editor.js +2 -187
  1105. package/dist/editor.js.map +1 -1
  1106. package/dist/error-boundary/ErrorBoundary.cjs +2 -0
  1107. package/dist/error-boundary/ErrorBoundary.cjs.map +1 -0
  1108. package/dist/error-boundary/ErrorBoundary.js +32 -0
  1109. package/dist/error-boundary/ErrorBoundary.js.map +1 -0
  1110. package/dist/error-boundary/use-error-handler.cjs +2 -0
  1111. package/dist/error-boundary/use-error-handler.cjs.map +1 -0
  1112. package/dist/error-boundary/use-error-handler.js +13 -0
  1113. package/dist/error-boundary/use-error-handler.js.map +1 -0
  1114. package/dist/feature-flags/FeatureFlagsProvider.cjs +2 -0
  1115. package/dist/feature-flags/FeatureFlagsProvider.cjs.map +1 -0
  1116. package/dist/feature-flags/FeatureFlagsProvider.js +29 -0
  1117. package/dist/feature-flags/FeatureFlagsProvider.js.map +1 -0
  1118. package/dist/feature-flags/growthbook-adapter.cjs +2 -0
  1119. package/dist/feature-flags/growthbook-adapter.cjs.map +1 -0
  1120. package/dist/feature-flags/growthbook-adapter.js +27 -0
  1121. package/dist/feature-flags/growthbook-adapter.js.map +1 -0
  1122. package/dist/feature-flags/in-memory-adapter.cjs +2 -0
  1123. package/dist/feature-flags/in-memory-adapter.cjs.map +1 -0
  1124. package/dist/feature-flags/in-memory-adapter.js +24 -0
  1125. package/dist/feature-flags/in-memory-adapter.js.map +1 -0
  1126. package/dist/feature-flags/launchdarkly-adapter.cjs +2 -0
  1127. package/dist/feature-flags/launchdarkly-adapter.cjs.map +1 -0
  1128. package/dist/feature-flags/launchdarkly-adapter.js +21 -0
  1129. package/dist/feature-flags/launchdarkly-adapter.js.map +1 -0
  1130. package/dist/forms/FormField.cjs +2 -0
  1131. package/dist/forms/FormField.cjs.map +1 -0
  1132. package/dist/forms/FormField.js +37 -0
  1133. package/dist/forms/FormField.js.map +1 -0
  1134. package/dist/forms/br-validators.cjs +2 -0
  1135. package/dist/forms/br-validators.cjs.map +1 -0
  1136. package/dist/forms/br-validators.js +44 -0
  1137. package/dist/forms/br-validators.js.map +1 -0
  1138. package/dist/forms/masked-inputs.cjs +2 -0
  1139. package/dist/forms/masked-inputs.cjs.map +1 -0
  1140. package/dist/forms/masked-inputs.js +48 -0
  1141. package/dist/forms/masked-inputs.js.map +1 -0
  1142. package/dist/forms/use-viacep.cjs +2 -0
  1143. package/dist/forms/use-viacep.cjs.map +1 -0
  1144. package/dist/forms/use-viacep.js +24 -0
  1145. package/dist/forms/use-viacep.js.map +1 -0
  1146. package/dist/forms/use-zod-form.cjs +2 -0
  1147. package/dist/forms/use-zod-form.cjs.map +1 -0
  1148. package/dist/forms/use-zod-form.js +12 -0
  1149. package/dist/forms/use-zod-form.js.map +1 -0
  1150. package/dist/forms/validate-form.cjs +2 -0
  1151. package/dist/forms/validate-form.cjs.map +1 -0
  1152. package/dist/forms/validate-form.js +15 -0
  1153. package/dist/forms/validate-form.js.map +1 -0
  1154. package/dist/forms/zod-resolver.cjs +2 -0
  1155. package/dist/forms/zod-resolver.cjs.map +1 -0
  1156. package/dist/forms/zod-resolver.js +17 -0
  1157. package/dist/forms/zod-resolver.js.map +1 -0
  1158. package/dist/geo/TrajectoryMap.cjs +2 -0
  1159. package/dist/geo/TrajectoryMap.cjs.map +1 -0
  1160. package/dist/geo/TrajectoryMap.js +216 -0
  1161. package/dist/geo/TrajectoryMap.js.map +1 -0
  1162. package/dist/geo/TrajectoryMap.module.css.cjs +2 -0
  1163. package/dist/geo/TrajectoryMap.module.css.cjs.map +1 -0
  1164. package/dist/geo/TrajectoryMap.module.css.js +30 -0
  1165. package/dist/geo/TrajectoryMap.module.css.js.map +1 -0
  1166. package/dist/geo/bounds.cjs +2 -0
  1167. package/dist/geo/bounds.cjs.map +1 -0
  1168. package/dist/geo/bounds.js +28 -0
  1169. package/dist/geo/bounds.js.map +1 -0
  1170. package/dist/geo/create-position-tracker.cjs +2 -0
  1171. package/dist/geo/create-position-tracker.cjs.map +1 -0
  1172. package/dist/geo/create-position-tracker.js +65 -0
  1173. package/dist/geo/create-position-tracker.js.map +1 -0
  1174. package/dist/geo/distance.cjs +2 -0
  1175. package/dist/geo/distance.cjs.map +1 -0
  1176. package/dist/geo/distance.js +26 -0
  1177. package/dist/geo/distance.js.map +1 -0
  1178. package/dist/geo/estimate.cjs +2 -0
  1179. package/dist/geo/estimate.cjs.map +1 -0
  1180. package/dist/geo/estimate.js +35 -0
  1181. package/dist/geo/estimate.js.map +1 -0
  1182. package/dist/geo/leaflet-map.cjs +2 -0
  1183. package/dist/geo/leaflet-map.cjs.map +1 -0
  1184. package/dist/geo/leaflet-map.js +51 -0
  1185. package/dist/geo/leaflet-map.js.map +1 -0
  1186. package/dist/geo/projection.cjs +2 -0
  1187. package/dist/geo/projection.cjs.map +1 -0
  1188. package/dist/geo/projection.js +36 -0
  1189. package/dist/geo/projection.js.map +1 -0
  1190. package/dist/geo/routing.cjs +2 -0
  1191. package/dist/geo/routing.cjs.map +1 -0
  1192. package/dist/geo/routing.js +29 -0
  1193. package/dist/geo/routing.js.map +1 -0
  1194. package/dist/geo/types.cjs +2 -0
  1195. package/dist/geo/types.cjs.map +1 -0
  1196. package/dist/geo/types.js +25 -0
  1197. package/dist/geo/types.js.map +1 -0
  1198. package/dist/geo/use-position-tracker.cjs +2 -0
  1199. package/dist/geo/use-position-tracker.cjs.map +1 -0
  1200. package/dist/geo/use-position-tracker.js +35 -0
  1201. package/dist/geo/use-position-tracker.js.map +1 -0
  1202. package/dist/hooks/pwa-env.cjs +2 -0
  1203. package/dist/hooks/pwa-env.cjs.map +1 -0
  1204. package/dist/hooks/pwa-env.js +31 -0
  1205. package/dist/hooks/pwa-env.js.map +1 -0
  1206. package/dist/hooks/use-async.cjs +2 -0
  1207. package/dist/hooks/use-async.cjs.map +1 -0
  1208. package/dist/hooks/use-async.js +38 -0
  1209. package/dist/hooks/use-async.js.map +1 -0
  1210. package/dist/hooks/use-before-install-prompt.cjs +2 -0
  1211. package/dist/hooks/use-before-install-prompt.cjs.map +1 -0
  1212. package/dist/hooks/use-before-install-prompt.js +38 -0
  1213. package/dist/hooks/use-before-install-prompt.js.map +1 -0
  1214. package/dist/hooks/use-breakpoint.cjs +2 -0
  1215. package/dist/hooks/use-breakpoint.cjs.map +1 -0
  1216. package/dist/hooks/use-breakpoint.js +40 -0
  1217. package/dist/hooks/use-breakpoint.js.map +1 -0
  1218. package/dist/hooks/use-click-outside.cjs +2 -0
  1219. package/dist/hooks/use-click-outside.cjs.map +1 -0
  1220. package/dist/hooks/use-click-outside.js +18 -0
  1221. package/dist/hooks/use-click-outside.js.map +1 -0
  1222. package/dist/hooks/use-client-filter.cjs +2 -0
  1223. package/dist/hooks/use-client-filter.cjs.map +1 -0
  1224. package/dist/hooks/use-client-filter.js +16 -0
  1225. package/dist/hooks/use-client-filter.js.map +1 -0
  1226. package/dist/hooks/use-clipboard.cjs +2 -0
  1227. package/dist/hooks/use-clipboard.cjs.map +1 -0
  1228. package/dist/hooks/use-clipboard.js +29 -0
  1229. package/dist/hooks/use-clipboard.js.map +1 -0
  1230. package/dist/hooks/use-counter.cjs +2 -0
  1231. package/dist/hooks/use-counter.cjs.map +1 -0
  1232. package/dist/hooks/use-counter.js +27 -0
  1233. package/dist/hooks/use-counter.js.map +1 -0
  1234. package/dist/hooks/use-debounce.cjs +2 -0
  1235. package/dist/hooks/use-debounce.cjs.map +1 -0
  1236. package/dist/hooks/use-debounce.js +12 -0
  1237. package/dist/hooks/use-debounce.js.map +1 -0
  1238. package/dist/hooks/use-deep-memo.cjs +2 -0
  1239. package/dist/hooks/use-deep-memo.cjs.map +1 -0
  1240. package/dist/hooks/use-deep-memo.js +19 -0
  1241. package/dist/hooks/use-deep-memo.js.map +1 -0
  1242. package/dist/hooks/use-disclosure.cjs +2 -0
  1243. package/dist/hooks/use-disclosure.cjs.map +1 -0
  1244. package/dist/hooks/use-disclosure.js +12 -0
  1245. package/dist/hooks/use-disclosure.js.map +1 -0
  1246. package/dist/hooks/use-document-title.cjs +2 -0
  1247. package/dist/hooks/use-document-title.cjs.map +1 -0
  1248. package/dist/hooks/use-document-title.js +14 -0
  1249. package/dist/hooks/use-document-title.js.map +1 -0
  1250. package/dist/hooks/use-document-visibility.cjs +2 -0
  1251. package/dist/hooks/use-document-visibility.cjs.map +1 -0
  1252. package/dist/hooks/use-document-visibility.js +15 -0
  1253. package/dist/hooks/use-document-visibility.js.map +1 -0
  1254. package/dist/hooks/use-event-listener.cjs +2 -0
  1255. package/dist/hooks/use-event-listener.cjs.map +1 -0
  1256. package/dist/hooks/use-event-listener.js +14 -0
  1257. package/dist/hooks/use-event-listener.js.map +1 -0
  1258. package/dist/hooks/use-favicon.cjs +2 -0
  1259. package/dist/hooks/use-favicon.cjs.map +1 -0
  1260. package/dist/hooks/use-favicon.js +12 -0
  1261. package/dist/hooks/use-favicon.js.map +1 -0
  1262. package/dist/hooks/use-focus-trap.cjs +2 -0
  1263. package/dist/hooks/use-focus-trap.cjs.map +1 -0
  1264. package/dist/hooks/use-focus-trap.js +43 -0
  1265. package/dist/hooks/use-focus-trap.js.map +1 -0
  1266. package/dist/hooks/use-geolocation.cjs +2 -0
  1267. package/dist/hooks/use-geolocation.cjs.map +1 -0
  1268. package/dist/hooks/use-geolocation.js +44 -0
  1269. package/dist/hooks/use-geolocation.js.map +1 -0
  1270. package/dist/hooks/use-hover.cjs +2 -0
  1271. package/dist/hooks/use-hover.cjs.map +1 -0
  1272. package/dist/hooks/use-hover.js +16 -0
  1273. package/dist/hooks/use-hover.js.map +1 -0
  1274. package/dist/hooks/use-idle.cjs +2 -0
  1275. package/dist/hooks/use-idle.cjs.map +1 -0
  1276. package/dist/hooks/use-idle.js +30 -0
  1277. package/dist/hooks/use-idle.js.map +1 -0
  1278. package/dist/hooks/use-install-prompt.cjs +2 -0
  1279. package/dist/hooks/use-install-prompt.cjs.map +1 -0
  1280. package/dist/hooks/use-install-prompt.js +69 -0
  1281. package/dist/hooks/use-install-prompt.js.map +1 -0
  1282. package/dist/hooks/use-intersection-observer.cjs +2 -0
  1283. package/dist/hooks/use-intersection-observer.cjs.map +1 -0
  1284. package/dist/hooks/use-intersection-observer.js +19 -0
  1285. package/dist/hooks/use-intersection-observer.js.map +1 -0
  1286. package/dist/hooks/use-interval.cjs +2 -0
  1287. package/dist/hooks/use-interval.cjs.map +1 -0
  1288. package/dist/hooks/use-interval.js +13 -0
  1289. package/dist/hooks/use-interval.js.map +1 -0
  1290. package/dist/hooks/use-is-first-render.cjs +2 -0
  1291. package/dist/hooks/use-is-first-render.cjs.map +1 -0
  1292. package/dist/hooks/use-is-first-render.js +9 -0
  1293. package/dist/hooks/use-is-first-render.js.map +1 -0
  1294. package/dist/hooks/use-keyboard-shortcut.cjs +2 -0
  1295. package/dist/hooks/use-keyboard-shortcut.cjs.map +1 -0
  1296. package/dist/hooks/use-keyboard-shortcut.js +38 -0
  1297. package/dist/hooks/use-keyboard-shortcut.js.map +1 -0
  1298. package/dist/hooks/use-list-state.cjs +2 -0
  1299. package/dist/hooks/use-list-state.cjs.map +1 -0
  1300. package/dist/hooks/use-list-state.js +40 -0
  1301. package/dist/hooks/use-list-state.js.map +1 -0
  1302. package/dist/hooks/use-local-storage.cjs +2 -0
  1303. package/dist/hooks/use-local-storage.cjs.map +1 -0
  1304. package/dist/hooks/use-local-storage.js +55 -0
  1305. package/dist/hooks/use-local-storage.js.map +1 -0
  1306. package/dist/hooks/use-long-press-handlers.cjs +2 -0
  1307. package/dist/hooks/use-long-press-handlers.cjs.map +1 -0
  1308. package/dist/hooks/use-long-press-handlers.js +31 -0
  1309. package/dist/hooks/use-long-press-handlers.js.map +1 -0
  1310. package/dist/hooks/use-long-press.cjs +2 -0
  1311. package/dist/hooks/use-long-press.cjs.map +1 -0
  1312. package/dist/hooks/use-long-press.js +27 -0
  1313. package/dist/hooks/use-long-press.js.map +1 -0
  1314. package/dist/hooks/use-map.cjs +2 -0
  1315. package/dist/hooks/use-map.cjs.map +1 -0
  1316. package/dist/hooks/use-map.js +33 -0
  1317. package/dist/hooks/use-map.js.map +1 -0
  1318. package/dist/hooks/use-media-query.cjs +2 -0
  1319. package/dist/hooks/use-media-query.cjs.map +1 -0
  1320. package/dist/hooks/use-media-query.js +13 -0
  1321. package/dist/hooks/use-media-query.js.map +1 -0
  1322. package/dist/hooks/use-object-url.cjs +2 -0
  1323. package/dist/hooks/use-object-url.cjs.map +1 -0
  1324. package/dist/hooks/use-object-url.js +16 -0
  1325. package/dist/hooks/use-object-url.js.map +1 -0
  1326. package/dist/hooks/use-online.cjs +2 -0
  1327. package/dist/hooks/use-online.cjs.map +1 -0
  1328. package/dist/hooks/use-online.js +47 -0
  1329. package/dist/hooks/use-online.js.map +1 -0
  1330. package/dist/hooks/use-pagination.cjs +2 -0
  1331. package/dist/hooks/use-pagination.cjs.map +1 -0
  1332. package/dist/hooks/use-pagination.js +9 -0
  1333. package/dist/hooks/use-pagination.js.map +1 -0
  1334. package/dist/hooks/use-previous.cjs +2 -0
  1335. package/dist/hooks/use-previous.cjs.map +1 -0
  1336. package/dist/hooks/use-previous.js +11 -0
  1337. package/dist/hooks/use-previous.js.map +1 -0
  1338. package/dist/hooks/use-queue.cjs +2 -0
  1339. package/dist/hooks/use-queue.cjs.map +1 -0
  1340. package/dist/hooks/use-queue.js +48 -0
  1341. package/dist/hooks/use-queue.js.map +1 -0
  1342. package/dist/hooks/use-resize-observer.cjs +2 -0
  1343. package/dist/hooks/use-resize-observer.cjs.map +1 -0
  1344. package/dist/hooks/use-resize-observer.js +19 -0
  1345. package/dist/hooks/use-resize-observer.js.map +1 -0
  1346. package/dist/hooks/use-scroll-lock.cjs +2 -0
  1347. package/dist/hooks/use-scroll-lock.cjs.map +1 -0
  1348. package/dist/hooks/use-scroll-lock.js +14 -0
  1349. package/dist/hooks/use-scroll-lock.js.map +1 -0
  1350. package/dist/hooks/use-service-worker-update.cjs +2 -0
  1351. package/dist/hooks/use-service-worker-update.cjs.map +1 -0
  1352. package/dist/hooks/use-service-worker-update.js +34 -0
  1353. package/dist/hooks/use-service-worker-update.js.map +1 -0
  1354. package/dist/hooks/use-set.cjs +2 -0
  1355. package/dist/hooks/use-set.cjs.map +1 -0
  1356. package/dist/hooks/use-set.js +39 -0
  1357. package/dist/hooks/use-set.js.map +1 -0
  1358. package/dist/hooks/use-stable-callback.cjs +2 -0
  1359. package/dist/hooks/use-stable-callback.cjs.map +1 -0
  1360. package/dist/hooks/use-stable-callback.js +9 -0
  1361. package/dist/hooks/use-stable-callback.js.map +1 -0
  1362. package/dist/hooks/use-storage-estimate.cjs +2 -0
  1363. package/dist/hooks/use-storage-estimate.cjs.map +1 -0
  1364. package/dist/hooks/use-storage-estimate.js +54 -0
  1365. package/dist/hooks/use-storage-estimate.js.map +1 -0
  1366. package/dist/hooks/use-throttle.cjs +2 -0
  1367. package/dist/hooks/use-throttle.cjs.map +1 -0
  1368. package/dist/hooks/use-throttle.js +16 -0
  1369. package/dist/hooks/use-throttle.js.map +1 -0
  1370. package/dist/hooks/use-timeout.cjs +2 -0
  1371. package/dist/hooks/use-timeout.cjs.map +1 -0
  1372. package/dist/hooks/use-timeout.js +13 -0
  1373. package/dist/hooks/use-timeout.js.map +1 -0
  1374. package/dist/hooks/use-toggle.cjs +2 -0
  1375. package/dist/hooks/use-toggle.cjs.map +1 -0
  1376. package/dist/hooks/use-toggle.js +9 -0
  1377. package/dist/hooks/use-toggle.js.map +1 -0
  1378. package/dist/hooks/use-window-size.cjs +2 -0
  1379. package/dist/hooks/use-window-size.cjs.map +1 -0
  1380. package/dist/hooks/use-window-size.js +15 -0
  1381. package/dist/hooks/use-window-size.js.map +1 -0
  1382. package/dist/http/api-client.cjs +2 -0
  1383. package/dist/http/api-client.cjs.map +1 -0
  1384. package/dist/http/api-client.js +81 -0
  1385. package/dist/http/api-client.js.map +1 -0
  1386. package/dist/http/errors.cjs +2 -0
  1387. package/dist/http/errors.cjs.map +1 -0
  1388. package/dist/http/errors.js +39 -0
  1389. package/dist/http/errors.js.map +1 -0
  1390. package/dist/http/idempotency.cjs +2 -0
  1391. package/dist/http/idempotency.cjs.map +1 -0
  1392. package/dist/http/idempotency.js +10 -0
  1393. package/dist/http/idempotency.js.map +1 -0
  1394. package/dist/http/parse-response.cjs +6 -0
  1395. package/dist/http/parse-response.cjs.map +1 -0
  1396. package/dist/http/parse-response.js +20 -0
  1397. package/dist/http/parse-response.js.map +1 -0
  1398. package/dist/http/retry.cjs +2 -0
  1399. package/dist/http/retry.cjs.map +1 -0
  1400. package/dist/http/retry.js +44 -0
  1401. package/dist/http/retry.js.map +1 -0
  1402. package/dist/http/upload-with-progress.cjs +2 -0
  1403. package/dist/http/upload-with-progress.cjs.map +1 -0
  1404. package/dist/http/upload-with-progress.js +91 -0
  1405. package/dist/http/upload-with-progress.js.map +1 -0
  1406. package/dist/http/use-poll.cjs +2 -0
  1407. package/dist/http/use-poll.cjs.map +1 -0
  1408. package/dist/http/use-poll.js +41 -0
  1409. package/dist/http/use-poll.js.map +1 -0
  1410. package/dist/i18n/I18nProvider.cjs +2 -0
  1411. package/dist/i18n/I18nProvider.cjs.map +1 -0
  1412. package/dist/i18n/I18nProvider.js +52 -0
  1413. package/dist/i18n/I18nProvider.js.map +1 -0
  1414. package/dist/i18n/create-i18n.cjs +2 -0
  1415. package/dist/i18n/create-i18n.cjs.map +1 -0
  1416. package/dist/i18n/create-i18n.js +50 -0
  1417. package/dist/i18n/create-i18n.js.map +1 -0
  1418. package/dist/logger/logger.cjs +2 -0
  1419. package/dist/logger/logger.cjs.map +1 -0
  1420. package/dist/logger/logger.js +41 -0
  1421. package/dist/logger/logger.js.map +1 -0
  1422. package/dist/oauth/GoogleSignIn.cjs +2 -0
  1423. package/dist/oauth/GoogleSignIn.cjs.map +1 -0
  1424. package/dist/oauth/GoogleSignIn.js +50 -0
  1425. package/dist/oauth/GoogleSignIn.js.map +1 -0
  1426. package/dist/oauth/use-oauth-callback.cjs +2 -0
  1427. package/dist/oauth/use-oauth-callback.cjs.map +1 -0
  1428. package/dist/oauth/use-oauth-callback.js +21 -0
  1429. package/dist/oauth/use-oauth-callback.js.map +1 -0
  1430. package/dist/offline/conflict.cjs +2 -0
  1431. package/dist/offline/conflict.cjs.map +1 -0
  1432. package/dist/offline/conflict.js +17 -0
  1433. package/dist/offline/conflict.js.map +1 -0
  1434. package/dist/offline/create-offline-store.cjs +2 -0
  1435. package/dist/offline/create-offline-store.cjs.map +1 -0
  1436. package/dist/offline/create-offline-store.js +46 -0
  1437. package/dist/offline/create-offline-store.js.map +1 -0
  1438. package/dist/offline/create-offline-sync.cjs +2 -0
  1439. package/dist/offline/create-offline-sync.cjs.map +1 -0
  1440. package/dist/offline/create-offline-sync.js +146 -0
  1441. package/dist/offline/create-offline-sync.js.map +1 -0
  1442. package/dist/offline/use-offline-sync.cjs +2 -0
  1443. package/dist/offline/use-offline-sync.cjs.map +1 -0
  1444. package/dist/offline/use-offline-sync.js +42 -0
  1445. package/dist/offline/use-offline-sync.js.map +1 -0
  1446. package/dist/push/use-push-subscription.cjs +2 -0
  1447. package/dist/push/use-push-subscription.cjs.map +1 -0
  1448. package/dist/push/use-push-subscription.js +68 -0
  1449. package/dist/push/use-push-subscription.js.map +1 -0
  1450. package/dist/push/utils.cjs +2 -0
  1451. package/dist/push/utils.cjs.map +1 -0
  1452. package/dist/push/utils.js +14 -0
  1453. package/dist/push/utils.js.map +1 -0
  1454. package/dist/push/web-push-client.cjs +2 -0
  1455. package/dist/push/web-push-client.cjs.map +1 -0
  1456. package/dist/push/web-push-client.js +83 -0
  1457. package/dist/push/web-push-client.js.map +1 -0
  1458. package/dist/query/QueryProvider.cjs +2 -0
  1459. package/dist/query/QueryProvider.cjs.map +1 -0
  1460. package/dist/query/QueryProvider.js +28 -0
  1461. package/dist/query/QueryProvider.js.map +1 -0
  1462. package/dist/query/constants.cjs +2 -0
  1463. package/dist/query/constants.cjs.map +1 -0
  1464. package/dist/query/constants.js +21 -0
  1465. package/dist/query/constants.js.map +1 -0
  1466. package/dist/query/create-query-keys.cjs +2 -0
  1467. package/dist/query/create-query-keys.cjs.map +1 -0
  1468. package/dist/query/create-query-keys.js +10 -0
  1469. package/dist/query/create-query-keys.js.map +1 -0
  1470. package/dist/query/offline-persistence.cjs +2 -0
  1471. package/dist/query/offline-persistence.cjs.map +1 -0
  1472. package/dist/query/offline-persistence.js +40 -0
  1473. package/dist/query/offline-persistence.js.map +1 -0
  1474. package/dist/query/optimistic.cjs +2 -0
  1475. package/dist/query/optimistic.cjs.map +1 -0
  1476. package/dist/query/optimistic.js +19 -0
  1477. package/dist/query/optimistic.js.map +1 -0
  1478. package/dist/query/pagination.cjs +2 -0
  1479. package/dist/query/pagination.cjs.map +1 -0
  1480. package/dist/query/pagination.js +19 -0
  1481. package/dist/query/pagination.js.map +1 -0
  1482. package/dist/query/use-cursor-query.cjs +2 -0
  1483. package/dist/query/use-cursor-query.cjs.map +1 -0
  1484. package/dist/query/use-cursor-query.js +28 -0
  1485. package/dist/query/use-cursor-query.js.map +1 -0
  1486. package/dist/query/use-offline-mutation.cjs +2 -0
  1487. package/dist/query/use-offline-mutation.cjs.map +1 -0
  1488. package/dist/query/use-offline-mutation.js +30 -0
  1489. package/dist/query/use-offline-mutation.js.map +1 -0
  1490. package/dist/query/use-paginated-query.cjs +2 -0
  1491. package/dist/query/use-paginated-query.cjs.map +1 -0
  1492. package/dist/query/use-paginated-query.js +44 -0
  1493. package/dist/query/use-paginated-query.js.map +1 -0
  1494. package/dist/router/AppRouter.cjs +2 -0
  1495. package/dist/router/AppRouter.cjs.map +1 -0
  1496. package/dist/router/AppRouter.js +60 -0
  1497. package/dist/router/AppRouter.js.map +1 -0
  1498. package/dist/router/RouteGuard.cjs +2 -0
  1499. package/dist/router/RouteGuard.cjs.map +1 -0
  1500. package/dist/router/RouteGuard.js +9 -0
  1501. package/dist/router/RouteGuard.js.map +1 -0
  1502. package/dist/share/share-or-download.cjs +2 -0
  1503. package/dist/share/share-or-download.cjs.map +1 -0
  1504. package/dist/share/share-or-download.js +11 -0
  1505. package/dist/share/share-or-download.js.map +1 -0
  1506. package/dist/share/share.cjs +2 -0
  1507. package/dist/share/share.cjs.map +1 -0
  1508. package/dist/share/share.js +19 -0
  1509. package/dist/share/share.js.map +1 -0
  1510. package/dist/sse/create-event-stream.cjs +2 -0
  1511. package/dist/sse/create-event-stream.cjs.map +1 -0
  1512. package/dist/sse/create-event-stream.js +76 -0
  1513. package/dist/sse/create-event-stream.js.map +1 -0
  1514. package/dist/sse/use-event-stream.cjs +2 -0
  1515. package/dist/sse/use-event-stream.cjs.map +1 -0
  1516. package/dist/sse/use-event-stream.js +29 -0
  1517. package/dist/sse/use-event-stream.js.map +1 -0
  1518. package/dist/store/create-selectors.cjs +2 -0
  1519. package/dist/store/create-selectors.cjs.map +1 -0
  1520. package/dist/store/create-selectors.js +11 -0
  1521. package/dist/store/create-selectors.js.map +1 -0
  1522. package/dist/store/create-store.cjs +2 -0
  1523. package/dist/store/create-store.cjs.map +1 -0
  1524. package/dist/store/create-store.js +20 -0
  1525. package/dist/store/create-store.js.map +1 -0
  1526. package/dist/styles.css +1 -1
  1527. package/dist/sw/background-sync.cjs +2 -0
  1528. package/dist/sw/background-sync.cjs.map +1 -0
  1529. package/dist/sw/background-sync.js +106 -0
  1530. package/dist/sw/background-sync.js.map +1 -0
  1531. package/dist/sw/cache-inspect.cjs +2 -0
  1532. package/dist/sw/cache-inspect.cjs.map +1 -0
  1533. package/dist/sw/cache-inspect.js +47 -0
  1534. package/dist/sw/cache-inspect.js.map +1 -0
  1535. package/dist/sw/cache.cjs +2 -0
  1536. package/dist/sw/cache.cjs.map +1 -0
  1537. package/dist/sw/cache.js +176 -0
  1538. package/dist/sw/cache.js.map +1 -0
  1539. package/dist/sw/create-push-handler.cjs +2 -0
  1540. package/dist/sw/create-push-handler.cjs.map +1 -0
  1541. package/dist/sw/create-push-handler.js +64 -0
  1542. package/dist/sw/create-push-handler.js.map +1 -0
  1543. package/dist/sw/periodic-sync.cjs +2 -0
  1544. package/dist/sw/periodic-sync.cjs.map +1 -0
  1545. package/dist/sw/periodic-sync.js +18 -0
  1546. package/dist/sw/periodic-sync.js.map +1 -0
  1547. package/dist/sw/register-service-worker.cjs +2 -0
  1548. package/dist/sw/register-service-worker.cjs.map +1 -0
  1549. package/dist/sw/register-service-worker.js +50 -0
  1550. package/dist/sw/register-service-worker.js.map +1 -0
  1551. package/dist/sw.cjs +1 -1
  1552. package/dist/sw.cjs.map +1 -1
  1553. package/dist/sw.d.ts +125 -0
  1554. package/dist/sw.js +19 -358
  1555. package/dist/sw.js.map +1 -1
  1556. package/dist/telemetry/TelemetryProvider.cjs +2 -0
  1557. package/dist/telemetry/TelemetryProvider.cjs.map +1 -0
  1558. package/dist/telemetry/TelemetryProvider.js +18 -0
  1559. package/dist/telemetry/TelemetryProvider.js.map +1 -0
  1560. package/dist/telemetry/console-adapter.cjs +2 -0
  1561. package/dist/telemetry/console-adapter.cjs.map +1 -0
  1562. package/dist/telemetry/console-adapter.js +15 -0
  1563. package/dist/telemetry/console-adapter.js.map +1 -0
  1564. package/dist/telemetry/posthog-adapter.cjs +2 -0
  1565. package/dist/telemetry/posthog-adapter.cjs.map +1 -0
  1566. package/dist/telemetry/posthog-adapter.js +43 -0
  1567. package/dist/telemetry/posthog-adapter.js.map +1 -0
  1568. package/dist/telemetry/sentry-adapter.cjs +2 -0
  1569. package/dist/telemetry/sentry-adapter.cjs.map +1 -0
  1570. package/dist/telemetry/sentry-adapter.js +39 -0
  1571. package/dist/telemetry/sentry-adapter.js.map +1 -0
  1572. package/dist/tempest-react-sdk.cjs +1 -14
  1573. package/dist/tempest-react-sdk.cjs.map +1 -1
  1574. package/dist/tempest-react-sdk.d.ts +1059 -8
  1575. package/dist/tempest-react-sdk.js +638 -9306
  1576. package/dist/tempest-react-sdk.js.map +1 -1
  1577. package/dist/testing/create-mock-handlers.cjs +2 -0
  1578. package/dist/testing/create-mock-handlers.cjs.map +1 -0
  1579. package/dist/testing/create-mock-handlers.js +14 -0
  1580. package/dist/testing/create-mock-handlers.js.map +1 -0
  1581. package/dist/testing.cjs +1 -1
  1582. package/dist/testing.cjs.map +1 -1
  1583. package/dist/testing.js +1 -10
  1584. package/dist/testing.js.map +1 -1
  1585. package/dist/theme/ThemeProvider.cjs +2 -0
  1586. package/dist/theme/ThemeProvider.cjs.map +1 -0
  1587. package/dist/theme/ThemeProvider.js +78 -0
  1588. package/dist/theme/ThemeProvider.js.map +1 -0
  1589. package/dist/theme/initial-theme.cjs +11 -0
  1590. package/dist/theme/initial-theme.cjs.map +1 -0
  1591. package/dist/theme/initial-theme.js +31 -0
  1592. package/dist/theme/initial-theme.js.map +1 -0
  1593. package/dist/utils/arrays.cjs +2 -0
  1594. package/dist/utils/arrays.cjs.map +1 -0
  1595. package/dist/utils/arrays.js +40 -0
  1596. package/dist/utils/arrays.js.map +1 -0
  1597. package/dist/utils/cn.cjs +2 -0
  1598. package/dist/utils/cn.cjs.map +1 -0
  1599. package/dist/utils/cn.js +19 -0
  1600. package/dist/utils/cn.js.map +1 -0
  1601. package/dist/utils/format.cjs +2 -0
  1602. package/dist/utils/format.cjs.map +1 -0
  1603. package/dist/utils/format.js +40 -0
  1604. package/dist/utils/format.js.map +1 -0
  1605. package/dist/utils/functions.cjs +2 -0
  1606. package/dist/utils/functions.cjs.map +1 -0
  1607. package/dist/utils/functions.js +49 -0
  1608. package/dist/utils/functions.js.map +1 -0
  1609. package/dist/utils/guards.cjs +2 -0
  1610. package/dist/utils/guards.cjs.map +1 -0
  1611. package/dist/utils/guards.js +25 -0
  1612. package/dist/utils/guards.js.map +1 -0
  1613. package/dist/utils/ids.cjs +2 -0
  1614. package/dist/utils/ids.cjs.map +1 -0
  1615. package/dist/utils/ids.js +14 -0
  1616. package/dist/utils/ids.js.map +1 -0
  1617. package/dist/utils/numbers.cjs +2 -0
  1618. package/dist/utils/numbers.cjs.map +1 -0
  1619. package/dist/utils/numbers.js +27 -0
  1620. package/dist/utils/numbers.js.map +1 -0
  1621. package/dist/utils/objects.cjs +2 -0
  1622. package/dist/utils/objects.cjs.map +1 -0
  1623. package/dist/utils/objects.js +37 -0
  1624. package/dist/utils/objects.js.map +1 -0
  1625. package/dist/utils/promises.cjs +2 -0
  1626. package/dist/utils/promises.cjs.map +1 -0
  1627. package/dist/utils/promises.js +24 -0
  1628. package/dist/utils/promises.js.map +1 -0
  1629. package/dist/utils/relative-time.cjs +2 -0
  1630. package/dist/utils/relative-time.cjs.map +1 -0
  1631. package/dist/utils/relative-time.js +67 -0
  1632. package/dist/utils/relative-time.js.map +1 -0
  1633. package/dist/utils/storage.cjs +2 -0
  1634. package/dist/utils/storage.cjs.map +1 -0
  1635. package/dist/utils/storage.js +29 -0
  1636. package/dist/utils/storage.js.map +1 -0
  1637. package/dist/utils/strings.cjs +2 -0
  1638. package/dist/utils/strings.cjs.map +1 -0
  1639. package/dist/utils/strings.js +33 -0
  1640. package/dist/utils/strings.js.map +1 -0
  1641. package/dist/utils/xlsx.cjs +2 -0
  1642. package/dist/utils/xlsx.cjs.map +1 -0
  1643. package/dist/utils/xlsx.js +41 -0
  1644. package/dist/utils/xlsx.js.map +1 -0
  1645. package/dist/vision/core/canvas.cjs +2 -0
  1646. package/dist/vision/core/canvas.cjs.map +1 -0
  1647. package/dist/vision/core/canvas.js +41 -0
  1648. package/dist/vision/core/canvas.js.map +1 -0
  1649. package/dist/vision/core/exceptions.cjs +2 -0
  1650. package/dist/vision/core/exceptions.cjs.map +1 -0
  1651. package/dist/vision/core/exceptions.js +24 -0
  1652. package/dist/vision/core/exceptions.js.map +1 -0
  1653. package/dist/vision/core/providers.cjs +2 -0
  1654. package/dist/vision/core/providers.cjs.map +1 -0
  1655. package/dist/vision/core/providers.js +9 -0
  1656. package/dist/vision/core/providers.js.map +1 -0
  1657. package/dist/vision/core/session.cjs +2 -0
  1658. package/dist/vision/core/session.cjs.map +1 -0
  1659. package/dist/vision/core/session.js +71 -0
  1660. package/dist/vision/core/session.js.map +1 -0
  1661. package/dist/vision/index.cjs +2 -0
  1662. package/dist/vision/index.cjs.map +1 -0
  1663. package/dist/vision/index.js +5 -0
  1664. package/dist/vision/index.js.map +1 -0
  1665. package/dist/vision/io/image.cjs +2 -0
  1666. package/dist/vision/io/image.cjs.map +1 -0
  1667. package/dist/vision/io/image.js +75 -0
  1668. package/dist/vision/io/image.js.map +1 -0
  1669. package/dist/vision/labels.cjs +2 -0
  1670. package/dist/vision/labels.cjs.map +1 -0
  1671. package/dist/vision/labels.js +125 -0
  1672. package/dist/vision/labels.js.map +1 -0
  1673. package/dist/vision/luminance.cjs +2 -0
  1674. package/dist/vision/luminance.cjs.map +1 -0
  1675. package/dist/vision/luminance.js +45 -0
  1676. package/dist/vision/luminance.js.map +1 -0
  1677. package/dist/vision/postprocess/classification.cjs +2 -0
  1678. package/dist/vision/postprocess/classification.cjs.map +1 -0
  1679. package/dist/vision/postprocess/classification.js +32 -0
  1680. package/dist/vision/postprocess/classification.js.map +1 -0
  1681. package/dist/vision/postprocess/detection.cjs +2 -0
  1682. package/dist/vision/postprocess/detection.cjs.map +1 -0
  1683. package/dist/vision/postprocess/detection.js +153 -0
  1684. package/dist/vision/postprocess/detection.js.map +1 -0
  1685. package/dist/vision/postprocess/segmentation.cjs +2 -0
  1686. package/dist/vision/postprocess/segmentation.cjs.map +1 -0
  1687. package/dist/vision/postprocess/segmentation.js +109 -0
  1688. package/dist/vision/postprocess/segmentation.js.map +1 -0
  1689. package/dist/vision/preprocess/image.cjs +2 -0
  1690. package/dist/vision/preprocess/image.cjs.map +1 -0
  1691. package/dist/vision/preprocess/image.js +93 -0
  1692. package/dist/vision/preprocess/image.js.map +1 -0
  1693. package/dist/vision/results.cjs +2 -0
  1694. package/dist/vision/results.cjs.map +1 -0
  1695. package/dist/vision/results.js +213 -0
  1696. package/dist/vision/results.js.map +1 -0
  1697. package/dist/vision/tasks/base.cjs +2 -0
  1698. package/dist/vision/tasks/base.cjs.map +1 -0
  1699. package/dist/vision/tasks/base.js +14 -0
  1700. package/dist/vision/tasks/base.js.map +1 -0
  1701. package/dist/vision/tasks/classifier.cjs +2 -0
  1702. package/dist/vision/tasks/classifier.cjs.map +1 -0
  1703. package/dist/vision/tasks/classifier.js +106 -0
  1704. package/dist/vision/tasks/classifier.js.map +1 -0
  1705. package/dist/vision/tasks/detector.cjs +2 -0
  1706. package/dist/vision/tasks/detector.cjs.map +1 -0
  1707. package/dist/vision/tasks/detector.js +147 -0
  1708. package/dist/vision/tasks/detector.js.map +1 -0
  1709. package/dist/vision/tasks/segmenter.cjs +2 -0
  1710. package/dist/vision/tasks/segmenter.cjs.map +1 -0
  1711. package/dist/vision/tasks/segmenter.js +189 -0
  1712. package/dist/vision/tasks/segmenter.js.map +1 -0
  1713. package/dist/vision/types.cjs +2 -0
  1714. package/dist/vision/types.cjs.map +1 -0
  1715. package/dist/vision/types.js +100 -0
  1716. package/dist/vision/types.js.map +1 -0
  1717. package/dist/vision/use-camera-stream.cjs +2 -0
  1718. package/dist/vision/use-camera-stream.cjs.map +1 -0
  1719. package/dist/vision/use-camera-stream.js +89 -0
  1720. package/dist/vision/use-camera-stream.js.map +1 -0
  1721. package/dist/vision/use-live-luminance.cjs +2 -0
  1722. package/dist/vision/use-live-luminance.cjs.map +1 -0
  1723. package/dist/vision/use-live-luminance.js +23 -0
  1724. package/dist/vision/use-live-luminance.js.map +1 -0
  1725. package/dist/vision.cjs +1 -1
  1726. package/dist/vision.cjs.map +1 -1
  1727. package/dist/vision.js +70 -1558
  1728. package/dist/vision.js.map +1 -1
  1729. package/dist/vite/create-vite-config.cjs +2 -0
  1730. package/dist/vite/create-vite-config.cjs.map +1 -0
  1731. package/dist/vite/create-vite-config.js +46 -0
  1732. package/dist/vite/create-vite-config.js.map +1 -0
  1733. package/dist/vite/tempest-pwa-dev-sw.cjs +3 -0
  1734. package/dist/vite/tempest-pwa-dev-sw.cjs.map +1 -0
  1735. package/dist/vite/tempest-pwa-dev-sw.js +50 -0
  1736. package/dist/vite/tempest-pwa-dev-sw.js.map +1 -0
  1737. package/dist/vite/tempest-pwa-icons.cjs +2 -0
  1738. package/dist/vite/tempest-pwa-icons.cjs.map +1 -0
  1739. package/dist/vite/tempest-pwa-icons.js +137 -0
  1740. package/dist/vite/tempest-pwa-icons.js.map +1 -0
  1741. package/dist/vite/tempest-pwa-manifest.cjs +3 -0
  1742. package/dist/vite/tempest-pwa-manifest.cjs.map +1 -0
  1743. package/dist/vite/tempest-pwa-manifest.js +43 -0
  1744. package/dist/vite/tempest-pwa-manifest.js.map +1 -0
  1745. package/dist/vite.cjs +1 -3
  1746. package/dist/vite.cjs.map +1 -1
  1747. package/dist/vite.js +8 -262
  1748. package/dist/vite.js.map +1 -1
  1749. package/dist/ws/create-web-socket.cjs +2 -0
  1750. package/dist/ws/create-web-socket.cjs.map +1 -0
  1751. package/dist/ws/create-web-socket.js +83 -0
  1752. package/dist/ws/create-web-socket.js.map +1 -0
  1753. package/dist/ws/use-web-socket.cjs +2 -0
  1754. package/dist/ws/use-web-socket.cjs.map +1 -0
  1755. package/dist/ws/use-web-socket.js +32 -0
  1756. package/dist/ws/use-web-socket.js.map +1 -0
  1757. package/package.json +7 -2
  1758. package/template-pwa/src/main.tsx +11 -20
  1759. package/template-pwa/src/pwa.tsx +42 -0
  1760. package/dist/AC-Brw7ZrEs.cjs +0 -2
  1761. package/dist/AC-Brw7ZrEs.cjs.map +0 -1
  1762. package/dist/AC-DLl3Z4oj.js +0 -12
  1763. package/dist/AC-DLl3Z4oj.js.map +0 -1
  1764. package/dist/AL-DPGoZjht.cjs +0 -2
  1765. package/dist/AL-DPGoZjht.cjs.map +0 -1
  1766. package/dist/AL-gswGaWlj.js +0 -12
  1767. package/dist/AL-gswGaWlj.js.map +0 -1
  1768. package/dist/AM-QN1eL4Tn.js +0 -12
  1769. package/dist/AM-QN1eL4Tn.js.map +0 -1
  1770. package/dist/AM-VqNWvsI-.cjs +0 -2
  1771. package/dist/AM-VqNWvsI-.cjs.map +0 -1
  1772. package/dist/AP-CPvBa_FK.cjs +0 -2
  1773. package/dist/AP-CPvBa_FK.cjs.map +0 -1
  1774. package/dist/AP-CRAbh1js.js +0 -12
  1775. package/dist/AP-CRAbh1js.js.map +0 -1
  1776. package/dist/BA-CKy_HnnV.js +0 -12
  1777. package/dist/BA-CKy_HnnV.js.map +0 -1
  1778. package/dist/BA-DoMQ6slK.cjs +0 -2
  1779. package/dist/BA-DoMQ6slK.cjs.map +0 -1
  1780. package/dist/CE-Ca-XMDFW.js +0 -12
  1781. package/dist/CE-Ca-XMDFW.js.map +0 -1
  1782. package/dist/CE-as-pGPQa.cjs +0 -2
  1783. package/dist/CE-as-pGPQa.cjs.map +0 -1
  1784. package/dist/DF-8kzFoovF.js +0 -12
  1785. package/dist/DF-8kzFoovF.js.map +0 -1
  1786. package/dist/DF-Wr8WNxSX.cjs +0 -2
  1787. package/dist/DF-Wr8WNxSX.cjs.map +0 -1
  1788. package/dist/ES-B4uWNG6s.js +0 -12
  1789. package/dist/ES-B4uWNG6s.js.map +0 -1
  1790. package/dist/ES-wKVjD_TM.cjs +0 -2
  1791. package/dist/ES-wKVjD_TM.cjs.map +0 -1
  1792. package/dist/GO-D4m4rOqy.cjs +0 -2
  1793. package/dist/GO-D4m4rOqy.cjs.map +0 -1
  1794. package/dist/GO-DuaAgIfo.js +0 -12
  1795. package/dist/GO-DuaAgIfo.js.map +0 -1
  1796. package/dist/MA-BmaUZZKe.cjs +0 -2
  1797. package/dist/MA-BmaUZZKe.cjs.map +0 -1
  1798. package/dist/MA-wOyPxG_M.js +0 -12
  1799. package/dist/MA-wOyPxG_M.js.map +0 -1
  1800. package/dist/MG-BYsqJd-S.js +0 -12
  1801. package/dist/MG-BYsqJd-S.js.map +0 -1
  1802. package/dist/MG-BchdfJXp.cjs +0 -2
  1803. package/dist/MG-BchdfJXp.cjs.map +0 -1
  1804. package/dist/MS-DZkgtN_7.js +0 -12
  1805. package/dist/MS-DZkgtN_7.js.map +0 -1
  1806. package/dist/MS-Dz9lDw37.cjs +0 -2
  1807. package/dist/MS-Dz9lDw37.cjs.map +0 -1
  1808. package/dist/MT-BkVchoah.cjs +0 -2
  1809. package/dist/MT-BkVchoah.cjs.map +0 -1
  1810. package/dist/MT-GmMwFWw2.js +0 -12
  1811. package/dist/MT-GmMwFWw2.js.map +0 -1
  1812. package/dist/PA-C2FpT6Ew.cjs +0 -2
  1813. package/dist/PA-C2FpT6Ew.cjs.map +0 -1
  1814. package/dist/PA-DgyDzDFi.js +0 -12
  1815. package/dist/PA-DgyDzDFi.js.map +0 -1
  1816. package/dist/PB-BGkzbQup.cjs +0 -2
  1817. package/dist/PB-BGkzbQup.cjs.map +0 -1
  1818. package/dist/PB-D-6NE6KM.js +0 -12
  1819. package/dist/PB-D-6NE6KM.js.map +0 -1
  1820. package/dist/PE-D8V7gWY-.cjs +0 -2
  1821. package/dist/PE-D8V7gWY-.cjs.map +0 -1
  1822. package/dist/PE-vqm-t7Nh.js +0 -12
  1823. package/dist/PE-vqm-t7Nh.js.map +0 -1
  1824. package/dist/PI-CILuGJlW.js +0 -12
  1825. package/dist/PI-CILuGJlW.js.map +0 -1
  1826. package/dist/PI-dJYCbXQM.cjs +0 -2
  1827. package/dist/PI-dJYCbXQM.cjs.map +0 -1
  1828. package/dist/PR-DN8AV__r.js +0 -12
  1829. package/dist/PR-DN8AV__r.js.map +0 -1
  1830. package/dist/PR-P17oBdNH.cjs +0 -2
  1831. package/dist/PR-P17oBdNH.cjs.map +0 -1
  1832. package/dist/RJ-Bccz05Em.js +0 -12
  1833. package/dist/RJ-Bccz05Em.js.map +0 -1
  1834. package/dist/RJ-Budqx7QP.cjs +0 -2
  1835. package/dist/RJ-Budqx7QP.cjs.map +0 -1
  1836. package/dist/RN-DLcJBxo3.cjs +0 -2
  1837. package/dist/RN-DLcJBxo3.cjs.map +0 -1
  1838. package/dist/RN-DTqFP-Nm.js +0 -12
  1839. package/dist/RN-DTqFP-Nm.js.map +0 -1
  1840. package/dist/RO-BCC54UTU.js +0 -12
  1841. package/dist/RO-BCC54UTU.js.map +0 -1
  1842. package/dist/RO-B_IDyci4.cjs +0 -2
  1843. package/dist/RO-B_IDyci4.cjs.map +0 -1
  1844. package/dist/RR-CDGUEyla.cjs +0 -2
  1845. package/dist/RR-CDGUEyla.cjs.map +0 -1
  1846. package/dist/RR-OCnI_XpU.js +0 -12
  1847. package/dist/RR-OCnI_XpU.js.map +0 -1
  1848. package/dist/RS-DiBeY_u5.cjs +0 -2
  1849. package/dist/RS-DiBeY_u5.cjs.map +0 -1
  1850. package/dist/RS-Dy7gBbbH.js +0 -12
  1851. package/dist/RS-Dy7gBbbH.js.map +0 -1
  1852. package/dist/SC-CEMoj8g2.cjs +0 -2
  1853. package/dist/SC-CEMoj8g2.cjs.map +0 -1
  1854. package/dist/SC-trCqQDXz.js +0 -12
  1855. package/dist/SC-trCqQDXz.js.map +0 -1
  1856. package/dist/SE-DAfFbZcK.cjs +0 -2
  1857. package/dist/SE-DAfFbZcK.cjs.map +0 -1
  1858. package/dist/SE-DBdfSrGk.js +0 -12
  1859. package/dist/SE-DBdfSrGk.js.map +0 -1
  1860. package/dist/SP-Cse4d68i.cjs +0 -2
  1861. package/dist/SP-Cse4d68i.cjs.map +0 -1
  1862. package/dist/SP-qPZjJDOT.js +0 -12
  1863. package/dist/SP-qPZjJDOT.js.map +0 -1
  1864. package/dist/TO-CZtMDVug.js +0 -12
  1865. package/dist/TO-CZtMDVug.js.map +0 -1
  1866. package/dist/TO-Dwi5zIyF.cjs +0 -2
  1867. package/dist/TO-Dwi5zIyF.cjs.map +0 -1
  1868. package/dist/br-centroids--O7-1KXz.cjs +0 -2
  1869. package/dist/br-centroids--O7-1KXz.cjs.map +0 -1
  1870. package/dist/br-centroids-IHN7PIzD.js +0 -10
  1871. package/dist/br-centroids-IHN7PIzD.js.map +0 -1
  1872. package/dist/br-geo-BYynYOwK.cjs +0 -2
  1873. package/dist/br-geo-BYynYOwK.cjs.map +0 -1
  1874. package/dist/br-geo-DFRuvjuU.js +0 -8
  1875. package/dist/br-geo-DFRuvjuU.js.map +0 -1
  1876. package/dist/cn-C0Sxc9eb.js +0 -19
  1877. package/dist/cn-C0Sxc9eb.js.map +0 -1
  1878. package/dist/cn-CNScIEB4.cjs +0 -2
  1879. package/dist/cn-CNScIEB4.cjs.map +0 -1
  1880. package/dist/leaflet-map-BHBcL_7k.js +0 -51
  1881. package/dist/leaflet-map-BHBcL_7k.js.map +0 -1
  1882. package/dist/leaflet-map-BzYV9czG.cjs +0 -2
  1883. package/dist/leaflet-map-BzYV9czG.cjs.map +0 -1
  1884. package/dist/projection-CILVBdpd.cjs +0 -2
  1885. package/dist/projection-CILVBdpd.cjs.map +0 -1
  1886. package/dist/projection-Wnqr_svy.js +0 -215
  1887. package/dist/projection-Wnqr_svy.js.map +0 -1
@@ -0,0 +1,50 @@
1
+ import { jsx as f } from "react/jsx-runtime";
2
+ function v({
3
+ component: r,
4
+ onSuccess: n,
5
+ onError: o,
6
+ locale: i,
7
+ theme: g,
8
+ text: l,
9
+ shape: d,
10
+ size: t,
11
+ disableOneTap: a,
12
+ width: c,
13
+ className: u,
14
+ style: m
15
+ }) {
16
+ return /* @__PURE__ */ f("div", { className: u, style: m, children: r({
17
+ onSuccess: (e) => {
18
+ if (!e.credential) {
19
+ o?.({
20
+ provider: "google",
21
+ message: "Google returned no credential",
22
+ raw: e
23
+ });
24
+ return;
25
+ }
26
+ return n({
27
+ idToken: e.credential,
28
+ provider: "google",
29
+ raw: e
30
+ });
31
+ },
32
+ onError: () => {
33
+ o?.({
34
+ provider: "google",
35
+ message: "Google login failed"
36
+ });
37
+ },
38
+ locale: i,
39
+ theme: g,
40
+ text: l,
41
+ shape: d,
42
+ size: t,
43
+ useOneTap: !a,
44
+ width: c
45
+ }) });
46
+ }
47
+ export {
48
+ v as GoogleSignIn
49
+ };
50
+ //# sourceMappingURL=GoogleSignIn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoogleSignIn.js","sources":["../../src/oauth/GoogleSignIn.tsx"],"sourcesContent":["import type { CSSProperties, ReactNode } from \"react\";\nimport type { OAuthCredential, OAuthError } from \"./types\";\n\nexport type GoogleSignInTheme = \"filled_blue\" | \"filled_black\" | \"outline\";\nexport type GoogleSignInText = \"signin_with\" | \"signup_with\" | \"continue_with\" | \"signin\";\nexport type GoogleSignInShape = \"rectangular\" | \"pill\" | \"circle\" | \"square\";\nexport type GoogleSignInSize = \"large\" | \"medium\" | \"small\";\n\nexport interface GoogleSignInProps {\n /**\n * `GoogleLogin` component from `@react-oauth/google`. The caller imports\n * it and passes it through so the SDK doesn't take `@react-oauth/google`\n * as a peer dep.\n */\n component: (props: Record<string, unknown>) => ReactNode;\n /** Fired with the validated credential on success. */\n onSuccess: (credential: OAuthCredential) => void | Promise<void>;\n /** Fired with a normalised error on failure. */\n onError?: (error: OAuthError) => void;\n /** Optional locale override (e.g. `\"pt-BR\"`). Falls back to browser locale. */\n locale?: string;\n /** Visual theme — passed through to `<GoogleLogin>`. */\n theme?: GoogleSignInTheme;\n /** Button text variant. */\n text?: GoogleSignInText;\n /** Button shape. */\n shape?: GoogleSignInShape;\n /** Button size. */\n size?: GoogleSignInSize;\n /** Disable Google's \"One Tap\" auto-prompt. Default `false`. */\n disableOneTap?: boolean;\n /** Optional `width` override (px) — Google's button is fixed-width. */\n width?: number;\n /** Optional className applied to the wrapper. */\n className?: string;\n /** Optional inline style applied to the wrapper. */\n style?: CSSProperties;\n}\n\n/**\n * Thin wrapper over `@react-oauth/google`'s `<GoogleLogin>` that:\n *\n * 1. Normalises the success payload into [[OAuthCredential]] (`idToken`,\n * `provider: \"google\"`, `raw`).\n * 2. Normalises errors into [[OAuthError]].\n * 3. Lets you pass `GoogleLogin` via the `component` prop, so the SDK does\n * not declare `@react-oauth/google` as a peer dep — apps that don't use\n * Google never pay for it.\n *\n * @example\n * import { GoogleLogin, GoogleOAuthProvider } from \"@react-oauth/google\";\n * import { GoogleSignIn } from \"tempest-react-sdk\";\n *\n * <GoogleOAuthProvider clientId={import.meta.env.VITE_GOOGLE_CLIENT_ID}>\n * <GoogleSignIn\n * component={GoogleLogin}\n * onSuccess={async ({ idToken }) => {\n * await api.post(\"/auth/google\", { body: { id_token: idToken } });\n * }}\n * onError={(err) => toast.error(err.message)}\n * />\n * </GoogleOAuthProvider>\n */\nexport function GoogleSignIn({\n component: Component,\n onSuccess,\n onError,\n locale,\n theme,\n text,\n shape,\n size,\n disableOneTap,\n width,\n className,\n style,\n}: GoogleSignInProps) {\n return (\n <div className={className} style={style}>\n {Component({\n onSuccess: (response: { credential?: string }) => {\n if (!response.credential) {\n onError?.({\n provider: \"google\",\n message: \"Google returned no credential\",\n raw: response,\n });\n return;\n }\n return onSuccess({\n idToken: response.credential,\n provider: \"google\",\n raw: response,\n });\n },\n onError: () => {\n onError?.({\n provider: \"google\",\n message: \"Google login failed\",\n });\n },\n locale,\n theme,\n text,\n shape,\n size,\n useOneTap: !disableOneTap,\n width,\n })}\n </div>\n );\n}\n"],"names":["GoogleSignIn","Component","onSuccess","onError","locale","theme","text","shape","size","disableOneTap","width","className","style","jsx","response"],"mappings":";AA+DO,SAASA,EAAa;AAAA,EACzB,WAAWC;AAAA,EACX,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,eAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AACJ,GAAsB;AAClB,SACI,gBAAAC,EAAC,OAAA,EAAI,WAAAF,GAAsB,OAAAC,GACtB,UAAAX,EAAU;AAAA,IACP,WAAW,CAACa,MAAsC;AAC9C,UAAI,CAACA,EAAS,YAAY;AACtB,QAAAX,IAAU;AAAA,UACN,UAAU;AAAA,UACV,SAAS;AAAA,UACT,KAAKW;AAAA,QAAA,CACR;AACD;AAAA,MACJ;AACA,aAAOZ,EAAU;AAAA,QACb,SAASY,EAAS;AAAA,QAClB,UAAU;AAAA,QACV,KAAKA;AAAA,MAAA,CACR;AAAA,IACL;AAAA,IACA,SAAS,MAAM;AACX,MAAAX,IAAU;AAAA,QACN,UAAU;AAAA,QACV,SAAS;AAAA,MAAA,CACZ;AAAA,IACL;AAAA,IACA,QAAAC;AAAA,IACA,OAAAC;AAAA,IACA,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,MAAAC;AAAA,IACA,WAAW,CAACC;AAAA,IACZ,OAAAC;AAAA,EAAA,CACH,GACL;AAER;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react");function g(l){const{exchange:n,onSuccess:u,onError:s}=l,[f,i]=t.useState(null),[d,S]=t.useState(null),[c,a]=t.useState("pending"),o=t.useRef(!1);return t.useEffect(()=>{if(o.current)return;o.current=!0;let r=!1;return n().then(e=>{if(!r)return i(e),a("success"),u?.(e)}).catch(e=>{r||(S(e),a("error"),s?.(e))}),()=>{r=!0}},[n,u,s]),{loading:c==="pending",data:f,error:d,status:c}}exports.useOAuthCallback=g;
2
+ //# sourceMappingURL=use-oauth-callback.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-oauth-callback.cjs","sources":["../../src/oauth/use-oauth-callback.ts"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\n\nexport interface UseOAuthCallbackOptions<T> {\n /** Function that exchanges the provider response for an app session. Called once on mount. */\n exchange: () => Promise<T>;\n /** Fired with the result on success. Receives the value resolved by `exchange`. */\n onSuccess?: (result: T) => void | Promise<void>;\n /** Fired when `exchange` throws or rejects. */\n onError?: (error: unknown) => void;\n}\n\nexport interface UseOAuthCallbackResult<T> {\n /** `true` while the exchange promise is pending. */\n loading: boolean;\n /** Last resolved value, when `status === \"success\"`. */\n data: T | null;\n /** Last rejection reason, when `status === \"error\"`. */\n error: unknown;\n /** Aggregated state — `\"pending\"`, `\"success\"`, or `\"error\"`. */\n status: \"pending\" | \"success\" | \"error\";\n}\n\n/**\n * Run an OAuth-callback \"exchange\" exactly once on mount. Designed for\n * `/callback` routes that receive provider redirects and need to swap a\n * code/token for an app session via the backend.\n *\n * Survives React StrictMode double-mounting in dev — uses a ref guard to\n * ensure `exchange` runs once.\n *\n * @example\n * function OAuthCallback() {\n * const { loading, error } = useOAuthCallback({\n * exchange: async () => {\n * const code = new URLSearchParams(location.search).get(\"code\")!;\n * return api.post(\"/auth/google/exchange\", { body: { code } });\n * },\n * onSuccess: ({ token, user }) => {\n * useAuthStore.getState().setSession({ user, token });\n * navigate(\"/dashboard\", { replace: true });\n * },\n * onError: () => navigate(\"/login?error=oauth\", { replace: true }),\n * });\n *\n * if (loading) return <Spinner />;\n * if (error) return <ErrorState description=\"OAuth falhou\" />;\n * return null;\n * }\n */\nexport function useOAuthCallback<T>(\n options: UseOAuthCallbackOptions<T>,\n): UseOAuthCallbackResult<T> {\n const { exchange, onSuccess, onError } = options;\n const [data, setData] = useState<T | null>(null);\n const [error, setError] = useState<unknown>(null);\n const [status, setStatus] = useState<\"pending\" | \"success\" | \"error\">(\"pending\");\n const ranRef = useRef<boolean>(false);\n\n useEffect(() => {\n if (ranRef.current) return;\n ranRef.current = true;\n let cancelled = false;\n exchange()\n .then((result) => {\n if (cancelled) return;\n setData(result);\n setStatus(\"success\");\n return onSuccess?.(result);\n })\n .catch((err) => {\n if (cancelled) return;\n setError(err);\n setStatus(\"error\");\n onError?.(err);\n });\n return () => {\n cancelled = true;\n };\n }, [exchange, onSuccess, onError]);\n\n return { loading: status === \"pending\", data, error, status };\n}\n"],"names":["useOAuthCallback","options","exchange","onSuccess","onError","data","setData","useState","error","setError","status","setStatus","ranRef","useRef","useEffect","cancelled","result","err"],"mappings":"yGAiDO,SAASA,EACZC,EACyB,CACzB,KAAM,CAAE,SAAAC,EAAU,UAAAC,EAAW,QAAAC,CAAA,EAAYH,EACnC,CAACI,EAAMC,CAAO,EAAIC,EAAAA,SAAmB,IAAI,EACzC,CAACC,EAAOC,CAAQ,EAAIF,EAAAA,SAAkB,IAAI,EAC1C,CAACG,EAAQC,CAAS,EAAIJ,EAAAA,SAA0C,SAAS,EACzEK,EAASC,EAAAA,OAAgB,EAAK,EAEpCC,OAAAA,EAAAA,UAAU,IAAM,CACZ,GAAIF,EAAO,QAAS,OACpBA,EAAO,QAAU,GACjB,IAAIG,EAAY,GAChB,OAAAb,EAAA,EACK,KAAMc,GAAW,CACd,GAAI,CAAAD,EACJ,OAAAT,EAAQU,CAAM,EACdL,EAAU,SAAS,EACZR,IAAYa,CAAM,CAC7B,CAAC,EACA,MAAOC,GAAQ,CACRF,IACJN,EAASQ,CAAG,EACZN,EAAU,OAAO,EACjBP,IAAUa,CAAG,EACjB,CAAC,EACE,IAAM,CACTF,EAAY,EAChB,CACJ,EAAG,CAACb,EAAUC,EAAWC,CAAO,CAAC,EAE1B,CAAE,QAASM,IAAW,UAAW,KAAAL,EAAM,MAAAG,EAAO,OAAAE,CAAA,CACzD"}
@@ -0,0 +1,21 @@
1
+ import { useState as r, useRef as h, useEffect as p } from "react";
2
+ function S(f) {
3
+ const { exchange: n, onSuccess: s, onError: u } = f, [l, i] = r(null), [d, g] = r(null), [c, a] = r("pending"), o = h(!1);
4
+ return p(() => {
5
+ if (o.current) return;
6
+ o.current = !0;
7
+ let t = !1;
8
+ return n().then((e) => {
9
+ if (!t)
10
+ return i(e), a("success"), s?.(e);
11
+ }).catch((e) => {
12
+ t || (g(e), a("error"), u?.(e));
13
+ }), () => {
14
+ t = !0;
15
+ };
16
+ }, [n, s, u]), { loading: c === "pending", data: l, error: d, status: c };
17
+ }
18
+ export {
19
+ S as useOAuthCallback
20
+ };
21
+ //# sourceMappingURL=use-oauth-callback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-oauth-callback.js","sources":["../../src/oauth/use-oauth-callback.ts"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\n\nexport interface UseOAuthCallbackOptions<T> {\n /** Function that exchanges the provider response for an app session. Called once on mount. */\n exchange: () => Promise<T>;\n /** Fired with the result on success. Receives the value resolved by `exchange`. */\n onSuccess?: (result: T) => void | Promise<void>;\n /** Fired when `exchange` throws or rejects. */\n onError?: (error: unknown) => void;\n}\n\nexport interface UseOAuthCallbackResult<T> {\n /** `true` while the exchange promise is pending. */\n loading: boolean;\n /** Last resolved value, when `status === \"success\"`. */\n data: T | null;\n /** Last rejection reason, when `status === \"error\"`. */\n error: unknown;\n /** Aggregated state — `\"pending\"`, `\"success\"`, or `\"error\"`. */\n status: \"pending\" | \"success\" | \"error\";\n}\n\n/**\n * Run an OAuth-callback \"exchange\" exactly once on mount. Designed for\n * `/callback` routes that receive provider redirects and need to swap a\n * code/token for an app session via the backend.\n *\n * Survives React StrictMode double-mounting in dev — uses a ref guard to\n * ensure `exchange` runs once.\n *\n * @example\n * function OAuthCallback() {\n * const { loading, error } = useOAuthCallback({\n * exchange: async () => {\n * const code = new URLSearchParams(location.search).get(\"code\")!;\n * return api.post(\"/auth/google/exchange\", { body: { code } });\n * },\n * onSuccess: ({ token, user }) => {\n * useAuthStore.getState().setSession({ user, token });\n * navigate(\"/dashboard\", { replace: true });\n * },\n * onError: () => navigate(\"/login?error=oauth\", { replace: true }),\n * });\n *\n * if (loading) return <Spinner />;\n * if (error) return <ErrorState description=\"OAuth falhou\" />;\n * return null;\n * }\n */\nexport function useOAuthCallback<T>(\n options: UseOAuthCallbackOptions<T>,\n): UseOAuthCallbackResult<T> {\n const { exchange, onSuccess, onError } = options;\n const [data, setData] = useState<T | null>(null);\n const [error, setError] = useState<unknown>(null);\n const [status, setStatus] = useState<\"pending\" | \"success\" | \"error\">(\"pending\");\n const ranRef = useRef<boolean>(false);\n\n useEffect(() => {\n if (ranRef.current) return;\n ranRef.current = true;\n let cancelled = false;\n exchange()\n .then((result) => {\n if (cancelled) return;\n setData(result);\n setStatus(\"success\");\n return onSuccess?.(result);\n })\n .catch((err) => {\n if (cancelled) return;\n setError(err);\n setStatus(\"error\");\n onError?.(err);\n });\n return () => {\n cancelled = true;\n };\n }, [exchange, onSuccess, onError]);\n\n return { loading: status === \"pending\", data, error, status };\n}\n"],"names":["useOAuthCallback","options","exchange","onSuccess","onError","data","setData","useState","error","setError","status","setStatus","ranRef","useRef","useEffect","cancelled","result","err"],"mappings":";AAiDO,SAASA,EACZC,GACyB;AACzB,QAAM,EAAE,UAAAC,GAAU,WAAAC,GAAW,SAAAC,EAAA,IAAYH,GACnC,CAACI,GAAMC,CAAO,IAAIC,EAAmB,IAAI,GACzC,CAACC,GAAOC,CAAQ,IAAIF,EAAkB,IAAI,GAC1C,CAACG,GAAQC,CAAS,IAAIJ,EAA0C,SAAS,GACzEK,IAASC,EAAgB,EAAK;AAEpC,SAAAC,EAAU,MAAM;AACZ,QAAIF,EAAO,QAAS;AACpB,IAAAA,EAAO,UAAU;AACjB,QAAIG,IAAY;AAChB,WAAAb,EAAA,EACK,KAAK,CAACc,MAAW;AACd,UAAI,CAAAD;AACJ,eAAAT,EAAQU,CAAM,GACdL,EAAU,SAAS,GACZR,IAAYa,CAAM;AAAA,IAC7B,CAAC,EACA,MAAM,CAACC,MAAQ;AACZ,MAAIF,MACJN,EAASQ,CAAG,GACZN,EAAU,OAAO,GACjBP,IAAUa,CAAG;AAAA,IACjB,CAAC,GACE,MAAM;AACT,MAAAF,IAAY;AAAA,IAChB;AAAA,EACJ,GAAG,CAACb,GAAUC,GAAWC,CAAO,CAAC,GAE1B,EAAE,SAASM,MAAW,WAAW,MAAAL,GAAM,OAAAG,GAAO,QAAAE,EAAA;AACzD;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function t(i){if(i instanceof Date)return i.getTime();if(typeof i=="number")return i;const n=Date.parse(i);return Number.isNaN(n)?0:n}function e(i,n,r){return i===void 0||t(r(n))>=t(r(i))?n:i}function s(i,n,r){return i===void 0||r(n)>=r(i)?n:i}exports.higherVersionWins=s;exports.lastWriteWins=e;
2
+ //# sourceMappingURL=conflict.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conflict.cjs","sources":["../../src/offline/conflict.ts"],"sourcesContent":["/**\n * Conflict-resolution helpers for the `applyRemote` callback of\n * {@link createOfflineSync}. Each takes the current local record (or\n * `undefined` when the record is new locally) and the incoming remote record,\n * and returns the winner. Ties resolve to the remote copy, treating the server\n * as authoritative.\n */\n\n/** Normalise a timestamp-ish value to epoch milliseconds. */\nfunction toMillis(value: number | string | Date): number {\n if (value instanceof Date) return value.getTime();\n if (typeof value === \"number\") return value;\n const parsed = Date.parse(value);\n return Number.isNaN(parsed) ? 0 : parsed;\n}\n\n/**\n * Resolve a conflict by keeping whichever record was written last, comparing a\n * timestamp field. The remote record wins ties.\n *\n * @typeParam T - The record shape.\n * @param local - The current local record, or `undefined` when new.\n * @param remote - The incoming remote record.\n * @param getTimestamp - Reads the comparison timestamp (epoch ms, ISO string or `Date`).\n * @returns The winning record.\n *\n * @example\n * applyRemote: async (dto) => {\n * const local = await store.get(dto.id);\n * await store.save(lastWriteWins(local, dto, (r) => r.updatedAt));\n * }\n */\nexport function lastWriteWins<T>(\n local: T | undefined,\n remote: T,\n getTimestamp: (record: T) => number | string | Date,\n): T {\n if (local === undefined) return remote;\n return toMillis(getTimestamp(remote)) >= toMillis(getTimestamp(local)) ? remote : local;\n}\n\n/**\n * Resolve a conflict by keeping whichever record carries the higher version\n * number (monotonic counter / row version). The remote record wins ties.\n *\n * @typeParam T - The record shape.\n * @param local - The current local record, or `undefined` when new.\n * @param remote - The incoming remote record.\n * @param getVersion - Reads the monotonic version number.\n * @returns The winning record.\n *\n * @example\n * applyRemote: async (dto) => {\n * const local = await store.get(dto.id);\n * await store.save(higherVersionWins(local, dto, (r) => r.version));\n * }\n */\nexport function higherVersionWins<T>(\n local: T | undefined,\n remote: T,\n getVersion: (record: T) => number,\n): T {\n if (local === undefined) return remote;\n return getVersion(remote) >= getVersion(local) ? remote : local;\n}\n"],"names":["toMillis","value","parsed","lastWriteWins","local","remote","getTimestamp","higherVersionWins","getVersion"],"mappings":"gFASA,SAASA,EAASC,EAAuC,CACrD,GAAIA,aAAiB,KAAM,OAAOA,EAAM,QAAA,EACxC,GAAI,OAAOA,GAAU,SAAU,OAAOA,EACtC,MAAMC,EAAS,KAAK,MAAMD,CAAK,EAC/B,OAAO,OAAO,MAAMC,CAAM,EAAI,EAAIA,CACtC,CAkBO,SAASC,EACZC,EACAC,EACAC,EACC,CACD,OAAIF,IAAU,QACPJ,EAASM,EAAaD,CAAM,CAAC,GAAKL,EAASM,EAAaF,CAAK,CAAC,EADrCC,EACkDD,CACtF,CAkBO,SAASG,EACZH,EACAC,EACAG,EACC,CACD,OAAIJ,IAAU,QACPI,EAAWH,CAAM,GAAKG,EAAWJ,CAAK,EADbC,EAC0BD,CAC9D"}
@@ -0,0 +1,17 @@
1
+ function t(n) {
2
+ if (n instanceof Date) return n.getTime();
3
+ if (typeof n == "number") return n;
4
+ const i = Date.parse(n);
5
+ return Number.isNaN(i) ? 0 : i;
6
+ }
7
+ function f(n, i, r) {
8
+ return n === void 0 || t(r(i)) >= t(r(n)) ? i : n;
9
+ }
10
+ function s(n, i, r) {
11
+ return n === void 0 || r(i) >= r(n) ? i : n;
12
+ }
13
+ export {
14
+ s as higherVersionWins,
15
+ f as lastWriteWins
16
+ };
17
+ //# sourceMappingURL=conflict.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conflict.js","sources":["../../src/offline/conflict.ts"],"sourcesContent":["/**\n * Conflict-resolution helpers for the `applyRemote` callback of\n * {@link createOfflineSync}. Each takes the current local record (or\n * `undefined` when the record is new locally) and the incoming remote record,\n * and returns the winner. Ties resolve to the remote copy, treating the server\n * as authoritative.\n */\n\n/** Normalise a timestamp-ish value to epoch milliseconds. */\nfunction toMillis(value: number | string | Date): number {\n if (value instanceof Date) return value.getTime();\n if (typeof value === \"number\") return value;\n const parsed = Date.parse(value);\n return Number.isNaN(parsed) ? 0 : parsed;\n}\n\n/**\n * Resolve a conflict by keeping whichever record was written last, comparing a\n * timestamp field. The remote record wins ties.\n *\n * @typeParam T - The record shape.\n * @param local - The current local record, or `undefined` when new.\n * @param remote - The incoming remote record.\n * @param getTimestamp - Reads the comparison timestamp (epoch ms, ISO string or `Date`).\n * @returns The winning record.\n *\n * @example\n * applyRemote: async (dto) => {\n * const local = await store.get(dto.id);\n * await store.save(lastWriteWins(local, dto, (r) => r.updatedAt));\n * }\n */\nexport function lastWriteWins<T>(\n local: T | undefined,\n remote: T,\n getTimestamp: (record: T) => number | string | Date,\n): T {\n if (local === undefined) return remote;\n return toMillis(getTimestamp(remote)) >= toMillis(getTimestamp(local)) ? remote : local;\n}\n\n/**\n * Resolve a conflict by keeping whichever record carries the higher version\n * number (monotonic counter / row version). The remote record wins ties.\n *\n * @typeParam T - The record shape.\n * @param local - The current local record, or `undefined` when new.\n * @param remote - The incoming remote record.\n * @param getVersion - Reads the monotonic version number.\n * @returns The winning record.\n *\n * @example\n * applyRemote: async (dto) => {\n * const local = await store.get(dto.id);\n * await store.save(higherVersionWins(local, dto, (r) => r.version));\n * }\n */\nexport function higherVersionWins<T>(\n local: T | undefined,\n remote: T,\n getVersion: (record: T) => number,\n): T {\n if (local === undefined) return remote;\n return getVersion(remote) >= getVersion(local) ? remote : local;\n}\n"],"names":["toMillis","value","parsed","lastWriteWins","local","remote","getTimestamp","higherVersionWins","getVersion"],"mappings":"AASA,SAASA,EAASC,GAAuC;AACrD,MAAIA,aAAiB,KAAM,QAAOA,EAAM,QAAA;AACxC,MAAI,OAAOA,KAAU,SAAU,QAAOA;AACtC,QAAMC,IAAS,KAAK,MAAMD,CAAK;AAC/B,SAAO,OAAO,MAAMC,CAAM,IAAI,IAAIA;AACtC;AAkBO,SAASC,EACZC,GACAC,GACAC,GACC;AACD,SAAIF,MAAU,UACPJ,EAASM,EAAaD,CAAM,CAAC,KAAKL,EAASM,EAAaF,CAAK,CAAC,IADrCC,IACkDD;AACtF;AAkBO,SAASG,EACZH,GACAC,GACAG,GACC;AACD,SAAIJ,MAAU,UACPI,EAAWH,CAAM,KAAKG,EAAWJ,CAAK,IADbC,IAC0BD;AAC9D;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("dexie");class g extends v{store;constructor(l,u,a,c){super(l),this.version(u).stores({[a]:c}),this.store=this.table(a)}}function O(f){const{databaseName:l,version:u,tableName:a,indexes:c,keyPath:d="id",ownerField:i}=f,y=new g(l,u,a,c),t=y.store;function b(e,r){return!i||!r?e:{...e,[i]:r}}async function m(e,r={}){const{orderBy:s=d,reverse:q=!1,limit:p,offset:h,filter:w}=r;let o=i&&e?t.where(i).equals(e):t.toCollection();w&&(o=o.filter(w));let n=s===d?await o.toArray():await o.sortBy(s);return q&&(n=n.reverse()),h&&(n=n.slice(h)),typeof p=="number"&&(n=n.slice(0,p)),n}return{put:(e,r)=>t.put(b(e,r)),bulkPut:(e,r)=>t.bulkPut(e.map(s=>b(s,r))),get:e=>t.get(e),list:m,update:(e,r)=>t.update(e,r),updateMany:async(e,r)=>{const s=r;return i&&e?t.where(i).equals(e).modify(s):t.toCollection().modify(s)},delete:e=>t.delete(e),clear:async e=>{if(i&&e){await t.where(i).equals(e).delete();return}await t.clear()},count:e=>i&&e?t.where(i).equals(e).count():t.count(),raw:t,db:y}}exports.createOfflineStore=O;
2
+ //# sourceMappingURL=create-offline-store.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-offline-store.cjs","sources":["../../src/offline/create-offline-store.ts"],"sourcesContent":["import Dexie, { type Table, type UpdateSpec } from \"dexie\";\n\nexport interface OfflineStoreConfig<TItem> {\n /** IndexedDB database name. */\n databaseName: string;\n /** Schema version. Bump when changing indexes; pair with a migration if needed. */\n version: number;\n /** Object-store name. */\n tableName: string;\n /**\n * Dexie index definition for the table. Use `&` for the primary key\n * (unique), e.g. `\"&id, owner_id, created_at\"`. See Dexie docs for the\n * full syntax.\n */\n indexes: string;\n /** Property used as the primary key (default: `\"id\"`). */\n keyPath?: keyof TItem & string;\n /**\n * Optional owner scoping. When set, every read/write method honors the\n * `owner` argument and persists it on each record (e.g. multi-tenant\n * notifications keyed by `user_id`).\n */\n ownerField?: keyof TItem & string;\n}\n\nexport interface ListOptions<TItem> {\n /** Property to order by. Default: `keyPath`. */\n orderBy?: keyof TItem & string;\n /** Reverse the ordering. Default: false. */\n reverse?: boolean;\n /** Maximum number of items to return. */\n limit?: number;\n /** Skip this many items from the start of the result set. */\n offset?: number;\n /** Custom predicate applied after the index query. */\n filter?: (item: TItem) => boolean;\n}\n\nexport interface OfflineStore<TItem, TKey extends string | number> {\n /** Insert or replace a record. */\n put: (item: TItem, owner?: string) => Promise<TKey>;\n /** Insert or replace multiple records in a single transaction. */\n bulkPut: (items: TItem[], owner?: string) => Promise<TKey>;\n /** Fetch one record by its primary key. */\n get: (key: TKey) => Promise<TItem | undefined>;\n /** List records, optionally scoped to `owner` when `ownerField` is configured. */\n list: (owner?: string, options?: ListOptions<TItem>) => Promise<TItem[]>;\n /** Partial update by primary key. Returns the number of records changed. */\n update: (key: TKey, changes: Partial<TItem>) => Promise<number>;\n /** Apply a modification to every record matching `owner`. */\n updateMany: (owner: string | undefined, changes: Partial<TItem>) => Promise<number>;\n /** Delete one record by primary key. */\n delete: (key: TKey) => Promise<void>;\n /** Delete every record matching `owner` (or the entire table when no scope is set). */\n clear: (owner?: string) => Promise<void>;\n /** Count records, optionally scoped to `owner`. */\n count: (owner?: string) => Promise<number>;\n /** Raw Dexie table for advanced queries. */\n raw: Table<TItem, TKey>;\n /** Underlying Dexie instance. */\n db: Dexie;\n}\n\nclass GenericDb<TItem, TKey extends string | number> extends Dexie {\n store!: Table<TItem, TKey>;\n\n constructor(name: string, version: number, tableName: string, indexes: string) {\n super(name);\n this.version(version).stores({ [tableName]: indexes });\n this.store = this.table<TItem, TKey>(tableName);\n }\n}\n\n/**\n * Build a typed IndexedDB-backed store using Dexie. Optionally scope every\n * operation by an `ownerField` (useful for multi-user SSE history, drafts,\n * cache per workspace, etc.).\n *\n * Dexie is an **optional peer dependency** — install it (`npm i dexie`) only\n * when your app needs offline storage.\n *\n * @example\n * type Note = { id: string; owner_id: string; text: string; created_at: string };\n * const notes = createOfflineStore<Note, string>({\n * databaseName: \"TempestNotes\",\n * version: 1,\n * tableName: \"notes\",\n * indexes: \"&id, owner_id, created_at\",\n * ownerField: \"owner_id\",\n * });\n * await notes.put({ id: \"n1\", owner_id: \"u1\", text: \"hi\", created_at: ... }, \"u1\");\n * const mine = await notes.list(\"u1\", { orderBy: \"created_at\", reverse: true });\n */\nexport function createOfflineStore<TItem, TKey extends string | number = string>(\n config: OfflineStoreConfig<TItem>,\n): OfflineStore<TItem, TKey> {\n const { databaseName, version, tableName, indexes, keyPath = \"id\", ownerField } = config;\n\n const db = new GenericDb<TItem, TKey>(databaseName, version, tableName, indexes);\n const table = db.store;\n\n function withOwner(item: TItem, owner?: string): TItem {\n if (!ownerField || !owner) return item;\n return { ...item, [ownerField]: owner } as TItem;\n }\n\n async function list(owner?: string, options: ListOptions<TItem> = {}): Promise<TItem[]> {\n const { orderBy = keyPath, reverse = false, limit, offset, filter } = options;\n\n let collection =\n ownerField && owner ? table.where(ownerField).equals(owner) : table.toCollection();\n\n if (filter) collection = collection.filter(filter);\n\n let items =\n orderBy === keyPath ? await collection.toArray() : await collection.sortBy(orderBy);\n\n if (reverse) items = items.reverse();\n if (offset) items = items.slice(offset);\n if (typeof limit === \"number\") items = items.slice(0, limit);\n return items;\n }\n\n return {\n put: (item, owner) => table.put(withOwner(item, owner)) as Promise<TKey>,\n bulkPut: (items, owner) =>\n table.bulkPut(items.map((item) => withOwner(item, owner))) as Promise<TKey>,\n get: (key) => table.get(key),\n list,\n update: (key, changes) => table.update(key, changes as UpdateSpec<TItem>),\n updateMany: async (owner, changes) => {\n const spec = changes as UpdateSpec<TItem>;\n if (ownerField && owner) {\n return table.where(ownerField).equals(owner).modify(spec);\n }\n return table.toCollection().modify(spec);\n },\n delete: (key) => table.delete(key),\n clear: async (owner) => {\n if (ownerField && owner) {\n await table.where(ownerField).equals(owner).delete();\n return;\n }\n await table.clear();\n },\n count: (owner) => {\n if (ownerField && owner) {\n return table.where(ownerField).equals(owner).count();\n }\n return table.count();\n },\n raw: table,\n db,\n };\n}\n"],"names":["GenericDb","Dexie","name","version","tableName","indexes","createOfflineStore","config","databaseName","keyPath","ownerField","db","table","withOwner","item","owner","list","options","orderBy","reverse","limit","offset","filter","collection","items","key","changes","spec"],"mappings":"yGA+DA,MAAMA,UAAuDC,CAAM,CAC/D,MAEA,YAAYC,EAAcC,EAAiBC,EAAmBC,EAAiB,CAC3E,MAAMH,CAAI,EACV,KAAK,QAAQC,CAAO,EAAE,OAAO,CAAE,CAACC,CAAS,EAAGC,EAAS,EACrD,KAAK,MAAQ,KAAK,MAAmBD,CAAS,CAClD,CACJ,CAsBO,SAASE,EACZC,EACyB,CACzB,KAAM,CAAE,aAAAC,EAAc,QAAAL,EAAS,UAAAC,EAAW,QAAAC,EAAS,QAAAI,EAAU,KAAM,WAAAC,GAAeH,EAE5EI,EAAK,IAAIX,EAAuBQ,EAAcL,EAASC,EAAWC,CAAO,EACzEO,EAAQD,EAAG,MAEjB,SAASE,EAAUC,EAAaC,EAAuB,CACnD,MAAI,CAACL,GAAc,CAACK,EAAcD,EAC3B,CAAE,GAAGA,EAAM,CAACJ,CAAU,EAAGK,CAAA,CACpC,CAEA,eAAeC,EAAKD,EAAgBE,EAA8B,GAAsB,CACpF,KAAM,CAAE,QAAAC,EAAUT,EAAS,QAAAU,EAAU,GAAO,MAAAC,EAAO,OAAAC,EAAQ,OAAAC,GAAWL,EAEtE,IAAIM,EACAb,GAAcK,EAAQH,EAAM,MAAMF,CAAU,EAAE,OAAOK,CAAK,EAAIH,EAAM,aAAA,EAEpEU,IAAQC,EAAaA,EAAW,OAAOD,CAAM,GAEjD,IAAIE,EACAN,IAAYT,EAAU,MAAMc,EAAW,UAAY,MAAMA,EAAW,OAAOL,CAAO,EAEtF,OAAIC,IAASK,EAAQA,EAAM,QAAA,GACvBH,IAAQG,EAAQA,EAAM,MAAMH,CAAM,GAClC,OAAOD,GAAU,aAAkBI,EAAM,MAAM,EAAGJ,CAAK,GACpDI,CACX,CAEA,MAAO,CACH,IAAK,CAACV,EAAMC,IAAUH,EAAM,IAAIC,EAAUC,EAAMC,CAAK,CAAC,EACtD,QAAS,CAACS,EAAOT,IACbH,EAAM,QAAQY,EAAM,IAAKV,GAASD,EAAUC,EAAMC,CAAK,CAAC,CAAC,EAC7D,IAAMU,GAAQb,EAAM,IAAIa,CAAG,EAC3B,KAAAT,EACA,OAAQ,CAACS,EAAKC,IAAYd,EAAM,OAAOa,EAAKC,CAA4B,EACxE,WAAY,MAAOX,EAAOW,IAAY,CAClC,MAAMC,EAAOD,EACb,OAAIhB,GAAcK,EACPH,EAAM,MAAMF,CAAU,EAAE,OAAOK,CAAK,EAAE,OAAOY,CAAI,EAErDf,EAAM,eAAe,OAAOe,CAAI,CAC3C,EACA,OAASF,GAAQb,EAAM,OAAOa,CAAG,EACjC,MAAO,MAAOV,GAAU,CACpB,GAAIL,GAAcK,EAAO,CACrB,MAAMH,EAAM,MAAMF,CAAU,EAAE,OAAOK,CAAK,EAAE,OAAA,EAC5C,MACJ,CACA,MAAMH,EAAM,MAAA,CAChB,EACA,MAAQG,GACAL,GAAcK,EACPH,EAAM,MAAMF,CAAU,EAAE,OAAOK,CAAK,EAAE,MAAA,EAE1CH,EAAM,MAAA,EAEjB,IAAKA,EACL,GAAAD,CAAA,CAER"}
@@ -0,0 +1,46 @@
1
+ import v from "dexie";
2
+ class x extends v {
3
+ store;
4
+ constructor(l, u, a, c) {
5
+ super(l), this.version(u).stores({ [a]: c }), this.store = this.table(a);
6
+ }
7
+ }
8
+ function P(f) {
9
+ const { databaseName: l, version: u, tableName: a, indexes: c, keyPath: d = "id", ownerField: i } = f, p = new x(l, u, a, c), t = p.store;
10
+ function y(e, r) {
11
+ return !i || !r ? e : { ...e, [i]: r };
12
+ }
13
+ async function w(e, r = {}) {
14
+ const { orderBy: s = d, reverse: q = !1, limit: h, offset: b, filter: m } = r;
15
+ let o = i && e ? t.where(i).equals(e) : t.toCollection();
16
+ m && (o = o.filter(m));
17
+ let n = s === d ? await o.toArray() : await o.sortBy(s);
18
+ return q && (n = n.reverse()), b && (n = n.slice(b)), typeof h == "number" && (n = n.slice(0, h)), n;
19
+ }
20
+ return {
21
+ put: (e, r) => t.put(y(e, r)),
22
+ bulkPut: (e, r) => t.bulkPut(e.map((s) => y(s, r))),
23
+ get: (e) => t.get(e),
24
+ list: w,
25
+ update: (e, r) => t.update(e, r),
26
+ updateMany: async (e, r) => {
27
+ const s = r;
28
+ return i && e ? t.where(i).equals(e).modify(s) : t.toCollection().modify(s);
29
+ },
30
+ delete: (e) => t.delete(e),
31
+ clear: async (e) => {
32
+ if (i && e) {
33
+ await t.where(i).equals(e).delete();
34
+ return;
35
+ }
36
+ await t.clear();
37
+ },
38
+ count: (e) => i && e ? t.where(i).equals(e).count() : t.count(),
39
+ raw: t,
40
+ db: p
41
+ };
42
+ }
43
+ export {
44
+ P as createOfflineStore
45
+ };
46
+ //# sourceMappingURL=create-offline-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-offline-store.js","sources":["../../src/offline/create-offline-store.ts"],"sourcesContent":["import Dexie, { type Table, type UpdateSpec } from \"dexie\";\n\nexport interface OfflineStoreConfig<TItem> {\n /** IndexedDB database name. */\n databaseName: string;\n /** Schema version. Bump when changing indexes; pair with a migration if needed. */\n version: number;\n /** Object-store name. */\n tableName: string;\n /**\n * Dexie index definition for the table. Use `&` for the primary key\n * (unique), e.g. `\"&id, owner_id, created_at\"`. See Dexie docs for the\n * full syntax.\n */\n indexes: string;\n /** Property used as the primary key (default: `\"id\"`). */\n keyPath?: keyof TItem & string;\n /**\n * Optional owner scoping. When set, every read/write method honors the\n * `owner` argument and persists it on each record (e.g. multi-tenant\n * notifications keyed by `user_id`).\n */\n ownerField?: keyof TItem & string;\n}\n\nexport interface ListOptions<TItem> {\n /** Property to order by. Default: `keyPath`. */\n orderBy?: keyof TItem & string;\n /** Reverse the ordering. Default: false. */\n reverse?: boolean;\n /** Maximum number of items to return. */\n limit?: number;\n /** Skip this many items from the start of the result set. */\n offset?: number;\n /** Custom predicate applied after the index query. */\n filter?: (item: TItem) => boolean;\n}\n\nexport interface OfflineStore<TItem, TKey extends string | number> {\n /** Insert or replace a record. */\n put: (item: TItem, owner?: string) => Promise<TKey>;\n /** Insert or replace multiple records in a single transaction. */\n bulkPut: (items: TItem[], owner?: string) => Promise<TKey>;\n /** Fetch one record by its primary key. */\n get: (key: TKey) => Promise<TItem | undefined>;\n /** List records, optionally scoped to `owner` when `ownerField` is configured. */\n list: (owner?: string, options?: ListOptions<TItem>) => Promise<TItem[]>;\n /** Partial update by primary key. Returns the number of records changed. */\n update: (key: TKey, changes: Partial<TItem>) => Promise<number>;\n /** Apply a modification to every record matching `owner`. */\n updateMany: (owner: string | undefined, changes: Partial<TItem>) => Promise<number>;\n /** Delete one record by primary key. */\n delete: (key: TKey) => Promise<void>;\n /** Delete every record matching `owner` (or the entire table when no scope is set). */\n clear: (owner?: string) => Promise<void>;\n /** Count records, optionally scoped to `owner`. */\n count: (owner?: string) => Promise<number>;\n /** Raw Dexie table for advanced queries. */\n raw: Table<TItem, TKey>;\n /** Underlying Dexie instance. */\n db: Dexie;\n}\n\nclass GenericDb<TItem, TKey extends string | number> extends Dexie {\n store!: Table<TItem, TKey>;\n\n constructor(name: string, version: number, tableName: string, indexes: string) {\n super(name);\n this.version(version).stores({ [tableName]: indexes });\n this.store = this.table<TItem, TKey>(tableName);\n }\n}\n\n/**\n * Build a typed IndexedDB-backed store using Dexie. Optionally scope every\n * operation by an `ownerField` (useful for multi-user SSE history, drafts,\n * cache per workspace, etc.).\n *\n * Dexie is an **optional peer dependency** — install it (`npm i dexie`) only\n * when your app needs offline storage.\n *\n * @example\n * type Note = { id: string; owner_id: string; text: string; created_at: string };\n * const notes = createOfflineStore<Note, string>({\n * databaseName: \"TempestNotes\",\n * version: 1,\n * tableName: \"notes\",\n * indexes: \"&id, owner_id, created_at\",\n * ownerField: \"owner_id\",\n * });\n * await notes.put({ id: \"n1\", owner_id: \"u1\", text: \"hi\", created_at: ... }, \"u1\");\n * const mine = await notes.list(\"u1\", { orderBy: \"created_at\", reverse: true });\n */\nexport function createOfflineStore<TItem, TKey extends string | number = string>(\n config: OfflineStoreConfig<TItem>,\n): OfflineStore<TItem, TKey> {\n const { databaseName, version, tableName, indexes, keyPath = \"id\", ownerField } = config;\n\n const db = new GenericDb<TItem, TKey>(databaseName, version, tableName, indexes);\n const table = db.store;\n\n function withOwner(item: TItem, owner?: string): TItem {\n if (!ownerField || !owner) return item;\n return { ...item, [ownerField]: owner } as TItem;\n }\n\n async function list(owner?: string, options: ListOptions<TItem> = {}): Promise<TItem[]> {\n const { orderBy = keyPath, reverse = false, limit, offset, filter } = options;\n\n let collection =\n ownerField && owner ? table.where(ownerField).equals(owner) : table.toCollection();\n\n if (filter) collection = collection.filter(filter);\n\n let items =\n orderBy === keyPath ? await collection.toArray() : await collection.sortBy(orderBy);\n\n if (reverse) items = items.reverse();\n if (offset) items = items.slice(offset);\n if (typeof limit === \"number\") items = items.slice(0, limit);\n return items;\n }\n\n return {\n put: (item, owner) => table.put(withOwner(item, owner)) as Promise<TKey>,\n bulkPut: (items, owner) =>\n table.bulkPut(items.map((item) => withOwner(item, owner))) as Promise<TKey>,\n get: (key) => table.get(key),\n list,\n update: (key, changes) => table.update(key, changes as UpdateSpec<TItem>),\n updateMany: async (owner, changes) => {\n const spec = changes as UpdateSpec<TItem>;\n if (ownerField && owner) {\n return table.where(ownerField).equals(owner).modify(spec);\n }\n return table.toCollection().modify(spec);\n },\n delete: (key) => table.delete(key),\n clear: async (owner) => {\n if (ownerField && owner) {\n await table.where(ownerField).equals(owner).delete();\n return;\n }\n await table.clear();\n },\n count: (owner) => {\n if (ownerField && owner) {\n return table.where(ownerField).equals(owner).count();\n }\n return table.count();\n },\n raw: table,\n db,\n };\n}\n"],"names":["GenericDb","Dexie","name","version","tableName","indexes","createOfflineStore","config","databaseName","keyPath","ownerField","db","table","withOwner","item","owner","list","options","orderBy","reverse","limit","offset","filter","collection","items","key","changes","spec"],"mappings":";AA+DA,MAAMA,UAAuDC,EAAM;AAAA,EAC/D;AAAA,EAEA,YAAYC,GAAcC,GAAiBC,GAAmBC,GAAiB;AAC3E,UAAMH,CAAI,GACV,KAAK,QAAQC,CAAO,EAAE,OAAO,EAAE,CAACC,CAAS,GAAGC,GAAS,GACrD,KAAK,QAAQ,KAAK,MAAmBD,CAAS;AAAA,EAClD;AACJ;AAsBO,SAASE,EACZC,GACyB;AACzB,QAAM,EAAE,cAAAC,GAAc,SAAAL,GAAS,WAAAC,GAAW,SAAAC,GAAS,SAAAI,IAAU,MAAM,YAAAC,MAAeH,GAE5EI,IAAK,IAAIX,EAAuBQ,GAAcL,GAASC,GAAWC,CAAO,GACzEO,IAAQD,EAAG;AAEjB,WAASE,EAAUC,GAAaC,GAAuB;AACnD,WAAI,CAACL,KAAc,CAACK,IAAcD,IAC3B,EAAE,GAAGA,GAAM,CAACJ,CAAU,GAAGK,EAAA;AAAA,EACpC;AAEA,iBAAeC,EAAKD,GAAgBE,IAA8B,IAAsB;AACpF,UAAM,EAAE,SAAAC,IAAUT,GAAS,SAAAU,IAAU,IAAO,OAAAC,GAAO,QAAAC,GAAQ,QAAAC,MAAWL;AAEtE,QAAIM,IACAb,KAAcK,IAAQH,EAAM,MAAMF,CAAU,EAAE,OAAOK,CAAK,IAAIH,EAAM,aAAA;AAExE,IAAIU,MAAQC,IAAaA,EAAW,OAAOD,CAAM;AAEjD,QAAIE,IACAN,MAAYT,IAAU,MAAMc,EAAW,YAAY,MAAMA,EAAW,OAAOL,CAAO;AAEtF,WAAIC,MAASK,IAAQA,EAAM,QAAA,IACvBH,MAAQG,IAAQA,EAAM,MAAMH,CAAM,IAClC,OAAOD,KAAU,iBAAkBI,EAAM,MAAM,GAAGJ,CAAK,IACpDI;AAAA,EACX;AAEA,SAAO;AAAA,IACH,KAAK,CAACV,GAAMC,MAAUH,EAAM,IAAIC,EAAUC,GAAMC,CAAK,CAAC;AAAA,IACtD,SAAS,CAACS,GAAOT,MACbH,EAAM,QAAQY,EAAM,IAAI,CAACV,MAASD,EAAUC,GAAMC,CAAK,CAAC,CAAC;AAAA,IAC7D,KAAK,CAACU,MAAQb,EAAM,IAAIa,CAAG;AAAA,IAC3B,MAAAT;AAAA,IACA,QAAQ,CAACS,GAAKC,MAAYd,EAAM,OAAOa,GAAKC,CAA4B;AAAA,IACxE,YAAY,OAAOX,GAAOW,MAAY;AAClC,YAAMC,IAAOD;AACb,aAAIhB,KAAcK,IACPH,EAAM,MAAMF,CAAU,EAAE,OAAOK,CAAK,EAAE,OAAOY,CAAI,IAErDf,EAAM,eAAe,OAAOe,CAAI;AAAA,IAC3C;AAAA,IACA,QAAQ,CAACF,MAAQb,EAAM,OAAOa,CAAG;AAAA,IACjC,OAAO,OAAOV,MAAU;AACpB,UAAIL,KAAcK,GAAO;AACrB,cAAMH,EAAM,MAAMF,CAAU,EAAE,OAAOK,CAAK,EAAE,OAAA;AAC5C;AAAA,MACJ;AACA,YAAMH,EAAM,MAAA;AAAA,IAChB;AAAA,IACA,OAAO,CAACG,MACAL,KAAcK,IACPH,EAAM,MAAMF,CAAU,EAAE,OAAOK,CAAK,EAAE,MAAA,IAE1CH,EAAM,MAAA;AAAA,IAEjB,KAAKA;AAAA,IACL,IAAAD;AAAA,EAAA;AAER;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("../utils/ids.cjs"),O=require("./create-offline-store.cjs");function q(t){const r=typeof localStorage<"u";return{get:()=>r?localStorage.getItem(t):null,set:o=>{r&&localStorage.setItem(t,o)},clear:()=>{r&&localStorage.removeItem(t)}}}function x(t){const r=O.createOfflineStore({databaseName:t.databaseName,version:t.version??1,tableName:t.tableName??"outbox",indexes:"&id, recordId, enqueuedAt",keyPath:"id"}),o="get"in t.watermark?t.watermark:q(t.watermark.storageKey),b=t.idPrefix??"outbox",h=t.isOnline??(()=>typeof navigator<"u"?navigator.onLine:!0);let d=null;const f=new Set;let l={phase:"idle",pending:0,lastSummary:null,lastError:null,lastSyncedAt:null};const y=t.crossTab===!0,m=t.broadcastChannelName??`tempest-sync:${t.databaseName}`,i=y&&typeof BroadcastChannel<"u"?new BroadcastChannel(m):null;let p=!1;function v(){for(const e of f)e(l)}function w(e){l={...l,...e},v(),i&&!p&&i.postMessage(l)}i&&(i.onmessage=e=>{p||(l=e.data,v())});async function u(){w({pending:await r.count()})}async function k(e){const a=await r.list(void 0,{orderBy:"enqueuedAt"});for(const n of a)try{await t.deliver(n),await r.delete(n.id),await t.onEntryDelivered?.(n),e.succeeded+=1}catch(s){const c=s instanceof Error?s.message:"delivery failed";await r.update(n.id,{attempts:n.attempts+1,lastError:c}),await t.onEntryFailed?.(n,s),e.failed+=1,e.lastError=c}}async function g(){const e=o.get();let a=null,n=e;do{const s=await t.pullPage(e,a);for(const c of s.items)await t.applyRemote(c);a=s.nextCursor,n=s.serverTime}while(a);n&&o.set(n)}async function S(e){const a=Date.now(),n={trigger:e,succeeded:0,failed:0,durationMs:0,skipped:!1,lastError:null};return h()?(await k(n),await g(),n.durationMs=Date.now()-a,n):(n.skipped=!0,n.durationMs=Date.now()-a,n)}async function E(e){const a=typeof navigator<"u"?navigator.locks:void 0;return!y||!a?S(e):await a.request(`${m}:flush`,{ifAvailable:!0},async s=>s?S(e):null)??{trigger:e,succeeded:0,failed:0,durationMs:0,skipped:!1,lastError:null}}return u(),{async enqueue(e,a,n){const s={id:A.randomId(b),op:e,recordId:a,enqueuedAt:Date.now(),attempts:0,payload:n};return await r.put(s),await u(),s.id},flush(e="manual"){return d||(w({phase:"syncing"}),d=E(e).then(async a=>(await u(),w({phase:a.skipped?"offline":a.failed>0?"error":"idle",lastSummary:a,lastError:a.lastError,lastSyncedAt:a.skipped?l.lastSyncedAt:Date.now()}),a)).finally(()=>{d=null})),d},pendingCount(){return r.count()},listPending(){return r.list(void 0,{orderBy:"enqueuedAt"})},async clearOutbox(){await r.clear(),await u()},resetWatermark(){o.clear()},getState(){return l},subscribe(e){return f.add(e),()=>{f.delete(e)}},dispose(){p=!0,i?.close()}}}exports.createOfflineSync=x;
2
+ //# sourceMappingURL=create-offline-sync.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-offline-sync.cjs","sources":["../../src/offline/create-offline-sync.ts"],"sourcesContent":["import { randomId } from \"../utils/ids\";\nimport { createOfflineStore } from \"./create-offline-store\";\n\n/**\n * Mutation kinds queued in the outbox.\n *\n * `create`/`update` carry a snapshot of the record; `delete` needs only the\n * record id. The distinction between `create` and `update` is advisory — the\n * engine treats both as \"deliver this record\" and leaves the create-vs-update\n * decision to the app's `deliver` callback (a `PUT` upsert usually ignores it).\n */\nexport type OutboxOp = \"create\" | \"update\" | \"delete\";\n\n/**\n * A single queued mutation.\n *\n * @typeParam TPayload - The record snapshot shape carried by\n * `create`/`update` entries (omitted for `delete`).\n */\nexport interface OutboxEntry<TPayload = unknown> {\n /** Stable per-entry id (generated with {@link randomId}). */\n id: string;\n /** The mutation kind. */\n op: OutboxOp;\n /** Primary key of the record the mutation targets. */\n recordId: string;\n /** Epoch milliseconds when the mutation was queued. */\n enqueuedAt: number;\n /** How many delivery attempts have been made so far. */\n attempts: number;\n /** Last delivery error message, kept for UI/debug. */\n lastError?: string;\n /** Record snapshot for `create`/`update`. Omitted for `delete`. */\n payload?: TPayload;\n}\n\n/**\n * Why a sync run was triggered. The listed values are the common ones; any\n * string is accepted so apps can add their own telemetry labels.\n */\nexport type SyncTrigger =\n | \"boot\"\n | \"online-event\"\n | \"after-mutation\"\n | \"manual\"\n | \"interval\"\n | (string & {});\n\n/**\n * One page of the server delta pull.\n *\n * @typeParam TRemote - The server-side item shape.\n */\nexport interface PullPage<TRemote> {\n /** Items changed since the watermark, in this page. */\n items: TRemote[];\n /** Cursor for the next page, or `null` when this is the last page. */\n nextCursor: string | null;\n /**\n * Server clock to persist as the next watermark once the whole delta is\n * applied. `null` leaves the watermark unchanged.\n */\n serverTime: string | null;\n}\n\n/** Outcome of a single {@link OfflineSync.flush} run. */\nexport interface SyncRunSummary {\n /** The trigger passed to `flush`. */\n trigger: SyncTrigger;\n /** Entries delivered to the server this run. */\n succeeded: number;\n /** Entries that failed and stay queued for the next run. */\n failed: number;\n /** Total wall-clock milliseconds the run took. */\n durationMs: number;\n /** `true` when the run was skipped because the device was offline. */\n skipped: boolean;\n /** Last delivery error message seen this run, or `null` when none failed. */\n lastError: string | null;\n}\n\n/**\n * Coarse lifecycle phase of the sync engine, surfaced through\n * {@link OfflineSync.getState} / {@link OfflineSync.subscribe} for reactive UI.\n *\n * - `\"idle\"` — nothing in flight and the last run (if any) fully succeeded.\n * - `\"syncing\"` — a `flush` run is currently in progress.\n * - `\"offline\"` — the last run was skipped because the device was offline.\n * - `\"error\"` — the last run left at least one entry queued after a failure.\n */\nexport type SyncPhase = \"idle\" | \"syncing\" | \"offline\" | \"error\";\n\n/**\n * Immutable snapshot of the engine's reactive state. A fresh object is emitted\n * to subscribers on every change, so it is safe to use as a\n * `useSyncExternalStore` snapshot (reference equality signals \"no change\").\n */\nexport interface SyncState {\n /** Current lifecycle phase. */\n phase: SyncPhase;\n /** Number of mutations still queued in the outbox. */\n pending: number;\n /** Summary of the most recent `flush` run, or `null` before the first. */\n lastSummary: SyncRunSummary | null;\n /** Message of the most recent delivery failure, or `null`. */\n lastError: string | null;\n /** Epoch ms of the last non-skipped run, or `null` before the first. */\n lastSyncedAt: number | null;\n}\n\n/**\n * Pluggable persistence for the pull watermark (the \"changed since\" cursor).\n * Pass an object with a `storageKey` to use a `localStorage`-backed default.\n */\nexport interface WatermarkStore {\n /** Read the current watermark, or `null` when none is stored. */\n get: () => string | null;\n /** Persist a new watermark. */\n set: (value: string) => void;\n /** Drop the watermark (e.g. on logout / account switch). */\n clear: () => void;\n}\n\n/**\n * Configuration for {@link createOfflineSync}.\n *\n * The engine owns the outbox, the single-flight flush, the offline guard, the\n * paginated pull loop and the watermark; the three transport callbacks\n * (`deliver`, `pullPage`, `applyRemote`) are where the app plugs in its own\n * endpoints, record shape and conflict resolution.\n *\n * @typeParam TPayload - Record snapshot carried by outbox entries.\n * @typeParam TRemote - Server item shape returned by `pullPage`.\n */\nexport interface OfflineSyncConfig<TPayload, TRemote> {\n /** IndexedDB database name for the outbox (kept separate per queue). */\n databaseName: string;\n /** Outbox object-store name. Default `\"outbox\"`. */\n tableName?: string;\n /** Outbox schema version. Default `1`. */\n version?: number;\n /** Prefix for generated entry ids. Default `\"outbox\"`. */\n idPrefix?: string;\n /**\n * Deliver one queued mutation to the server. Throwing keeps the entry\n * queued (its `attempts`/`lastError` are bumped) for the next run.\n */\n deliver: (entry: OutboxEntry<TPayload>) => Promise<void>;\n /** Fetch one page of the server delta since `since`, from `cursor`. */\n pullPage: (since: string | null, cursor: string | null) => Promise<PullPage<TRemote>>;\n /**\n * Merge one pulled item into the local store. The app owns conflict\n * resolution here (e.g. last-write-wins, keeping newer local pending\n * edits, resolving tombstones and downloading blobs).\n */\n applyRemote: (item: TRemote) => Promise<void>;\n /** Watermark persistence, or `{ storageKey }` for a `localStorage` default. */\n watermark: WatermarkStore | { storageKey: string };\n /** Called after an entry is delivered and acked. */\n onEntryDelivered?: (entry: OutboxEntry<TPayload>) => void | Promise<void>;\n /** Called after an entry fails delivery (it stays queued). */\n onEntryFailed?: (entry: OutboxEntry<TPayload>, error: unknown) => void | Promise<void>;\n /**\n * Connectivity check. Default reads `navigator.onLine` (always online in\n * non-browser environments). When it returns `false`, `flush` is skipped.\n */\n isOnline?: () => boolean;\n /**\n * Broadcast {@link SyncState} across browser tabs of the same origin via a\n * `BroadcastChannel`, so every tab shows a coherent pending count / phase\n * (e.g. one tab flushing drops the badge to zero everywhere). The outbox is\n * already a shared IndexedDB; this only shares the in-memory state. Silently\n * ignored where `BroadcastChannel` is unavailable. Default `false`.\n *\n * When the Web Locks API is available, `flush` is additionally coordinated\n * *across* tabs: only one tab runs at a time and others skip while the lock\n * is held (they pick up the result via the broadcast). Delivery should still\n * be idempotent (upsert by client id). Without Web Locks, `flush` falls back\n * to per-tab single-flight.\n */\n crossTab?: boolean;\n /** Channel name when `crossTab` is on. Default `tempest-sync:${databaseName}`. */\n broadcastChannelName?: string;\n}\n\n/**\n * Offline-first sync engine: a durable outbox plus a paginated delta pull.\n *\n * @typeParam TPayload - Record snapshot carried by outbox entries.\n */\nexport interface OfflineSync<TPayload> {\n /**\n * Queue a mutation. Returns the generated entry id.\n *\n * @param op - The mutation kind.\n * @param recordId - Primary key of the affected record.\n * @param payload - Record snapshot (for `create`/`update`).\n */\n enqueue: (op: OutboxOp, recordId: string, payload?: TPayload) => Promise<string>;\n /**\n * Run a full sync (drain the outbox, then pull the delta). Concurrent\n * calls share one in-flight promise, so triggers never overlap.\n *\n * @param trigger - Label for why the run happened. Default `\"manual\"`.\n */\n flush: (trigger?: SyncTrigger) => Promise<SyncRunSummary>;\n /** Number of mutations still queued. */\n pendingCount: () => Promise<number>;\n /** The queued mutations in FIFO order. */\n listPending: () => Promise<OutboxEntry<TPayload>[]>;\n /** Drop every queued mutation (e.g. on logout). */\n clearOutbox: () => Promise<void>;\n /** Reset the pull watermark (e.g. on logout / account switch). */\n resetWatermark: () => void;\n /** Read the current reactive {@link SyncState} snapshot synchronously. */\n getState: () => SyncState;\n /**\n * Subscribe to {@link SyncState} changes. The listener fires on every\n * enqueue, flush transition and outbox clear.\n *\n * @param listener - Called with the new snapshot on each change.\n * @returns An unsubscribe function.\n */\n subscribe: (listener: (state: SyncState) => void) => () => void;\n /**\n * Release resources held by the engine — currently the cross-tab\n * `BroadcastChannel` when `crossTab` is enabled. Safe to call when none was\n * opened. Optional in long-lived apps (the channel is reclaimed on tab\n * close); call it in tests and on teardown.\n */\n dispose: () => void;\n}\n\n/**\n * Build a `localStorage`-backed {@link WatermarkStore}. Reads/writes are no-ops\n * when `localStorage` is unavailable (SSR / non-browser).\n *\n * @param key - The `localStorage` key.\n * @returns A watermark store persisting to `localStorage`.\n */\nfunction localStorageWatermark(key: string): WatermarkStore {\n const available = typeof localStorage !== \"undefined\";\n return {\n get: () => (available ? localStorage.getItem(key) : null),\n set: (value: string) => {\n if (available) localStorage.setItem(key, value);\n },\n clear: () => {\n if (available) localStorage.removeItem(key);\n },\n };\n}\n\n/**\n * Create an offline-first sync engine over an IndexedDB outbox.\n *\n * The engine drains queued mutations to the server (`deliver`) and pulls the\n * server delta back (`pullPage` + `applyRemote`), advancing a watermark so each\n * run only fetches what changed. `flush` is single-flight and skips cleanly\n * while offline; failed deliveries stay queued with their attempt count bumped.\n *\n * Dexie is an **optional peer dependency** (via {@link createOfflineStore}) —\n * install it (`npm i dexie`) when you use this engine.\n *\n * @typeParam TPayload - Record snapshot carried by outbox entries.\n * @typeParam TRemote - Server item shape returned by `pullPage`.\n * @param config - Transport callbacks + outbox/watermark configuration.\n * @returns The sync handle (`enqueue`, `flush`, `pendingCount`, …).\n *\n * @example\n * const sync = createOfflineSync<Note, NoteDto>({\n * databaseName: \"NotesOutbox\",\n * watermark: { storageKey: \"notes.watermark\" },\n * deliver: async (entry) => {\n * if (entry.op === \"delete\") return api.remove(entry.recordId);\n * await api.upsert(entry.recordId, entry.payload!);\n * },\n * pullPage: async (since, cursor) => {\n * const page = await api.changes(since, cursor);\n * return { items: page.items, nextCursor: page.next, serverTime: page.now };\n * },\n * applyRemote: async (dto) => {\n * if (dto.deleted) return localStore.remove(dto.id);\n * await localStore.save(fromDto(dto));\n * },\n * });\n * await sync.enqueue(\"create\", note.id, note);\n * await sync.flush(\"after-mutation\");\n */\nexport function createOfflineSync<TPayload = unknown, TRemote = unknown>(\n config: OfflineSyncConfig<TPayload, TRemote>,\n): OfflineSync<TPayload> {\n const outbox = createOfflineStore<OutboxEntry<TPayload>, string>({\n databaseName: config.databaseName,\n version: config.version ?? 1,\n tableName: config.tableName ?? \"outbox\",\n indexes: \"&id, recordId, enqueuedAt\",\n keyPath: \"id\",\n });\n\n const watermark: WatermarkStore =\n \"get\" in config.watermark\n ? config.watermark\n : localStorageWatermark(config.watermark.storageKey);\n\n const idPrefix = config.idPrefix ?? \"outbox\";\n const isOnline =\n config.isOnline ?? (() => (typeof navigator !== \"undefined\" ? navigator.onLine : true));\n\n let inflight: Promise<SyncRunSummary> | null = null;\n\n const listeners = new Set<(state: SyncState) => void>();\n let state: SyncState = {\n phase: \"idle\",\n pending: 0,\n lastSummary: null,\n lastError: null,\n lastSyncedAt: null,\n };\n\n const crossTab = config.crossTab === true;\n const channelName = config.broadcastChannelName ?? `tempest-sync:${config.databaseName}`;\n const channel: BroadcastChannel | null =\n crossTab && typeof BroadcastChannel !== \"undefined\"\n ? new BroadcastChannel(channelName)\n : null;\n let closed = false;\n\n function notify(): void {\n for (const listener of listeners) listener(state);\n }\n\n function setState(patch: Partial<SyncState>): void {\n state = { ...state, ...patch };\n notify();\n if (channel && !closed) channel.postMessage(state);\n }\n\n if (channel) {\n channel.onmessage = (event: MessageEvent<SyncState>) => {\n if (closed) return;\n state = event.data;\n notify();\n };\n }\n\n async function refreshPending(): Promise<void> {\n setState({ pending: await outbox.count() });\n }\n\n async function push(summary: SyncRunSummary): Promise<void> {\n const entries = await outbox.list(undefined, { orderBy: \"enqueuedAt\" });\n for (const entry of entries) {\n try {\n await config.deliver(entry);\n await outbox.delete(entry.id);\n await config.onEntryDelivered?.(entry);\n summary.succeeded += 1;\n } catch (cause) {\n const message = cause instanceof Error ? cause.message : \"delivery failed\";\n await outbox.update(entry.id, {\n attempts: entry.attempts + 1,\n lastError: message,\n } as Partial<OutboxEntry<TPayload>>);\n await config.onEntryFailed?.(entry, cause);\n summary.failed += 1;\n summary.lastError = message;\n }\n }\n }\n\n async function pull(): Promise<void> {\n const since = watermark.get();\n let cursor: string | null = null;\n let serverTime: string | null = since;\n do {\n const page = await config.pullPage(since, cursor);\n for (const item of page.items) {\n await config.applyRemote(item);\n }\n cursor = page.nextCursor;\n serverTime = page.serverTime;\n } while (cursor);\n if (serverTime) watermark.set(serverTime);\n }\n\n async function runOnce(trigger: SyncTrigger): Promise<SyncRunSummary> {\n const startedAt = Date.now();\n const summary: SyncRunSummary = {\n trigger,\n succeeded: 0,\n failed: 0,\n durationMs: 0,\n skipped: false,\n lastError: null,\n };\n if (!isOnline()) {\n summary.skipped = true;\n summary.durationMs = Date.now() - startedAt;\n return summary;\n }\n await push(summary);\n await pull();\n summary.durationMs = Date.now() - startedAt;\n return summary;\n }\n\n /**\n * Run one sync pass, serialized across tabs when possible.\n *\n * With `crossTab` on and the Web Locks API available, the pass is wrapped in\n * an `ifAvailable` lock request: whichever tab holds the lock runs, and the\n * others get `null` back instead of duplicating the work — their `SyncState`\n * catches up through the `BroadcastChannel`. The no-op summary keeps\n * `skipped: false` on purpose: `skipped` means \"device offline\" (it maps to\n * `phase: \"offline\"`), which is not what happened here. Falls back to a plain\n * per-tab run when `crossTab` is off or Web Locks is missing.\n *\n * @param trigger - What asked for this run, carried into the summary.\n * @returns The run summary, or an empty summary when another tab held the lock.\n */\n async function runGuarded(trigger: SyncTrigger): Promise<SyncRunSummary> {\n const locks = typeof navigator !== \"undefined\" ? navigator.locks : undefined;\n if (!crossTab || !locks) return runOnce(trigger);\n const result = await locks.request(\n `${channelName}:flush`,\n { ifAvailable: true },\n async (lock) => (lock ? runOnce(trigger) : null),\n );\n return (\n result ?? {\n trigger,\n succeeded: 0,\n failed: 0,\n durationMs: 0,\n skipped: false,\n lastError: null,\n }\n );\n }\n\n void refreshPending();\n\n return {\n async enqueue(op, recordId, payload) {\n const entry: OutboxEntry<TPayload> = {\n id: randomId(idPrefix),\n op,\n recordId,\n enqueuedAt: Date.now(),\n attempts: 0,\n payload,\n };\n await outbox.put(entry);\n await refreshPending();\n return entry.id;\n },\n flush(trigger: SyncTrigger = \"manual\") {\n if (!inflight) {\n setState({ phase: \"syncing\" });\n inflight = runGuarded(trigger)\n .then(async (summary) => {\n await refreshPending();\n setState({\n phase: summary.skipped\n ? \"offline\"\n : summary.failed > 0\n ? \"error\"\n : \"idle\",\n lastSummary: summary,\n lastError: summary.lastError,\n lastSyncedAt: summary.skipped ? state.lastSyncedAt : Date.now(),\n });\n return summary;\n })\n .finally(() => {\n inflight = null;\n });\n }\n return inflight;\n },\n pendingCount() {\n return outbox.count();\n },\n listPending() {\n return outbox.list(undefined, { orderBy: \"enqueuedAt\" });\n },\n async clearOutbox() {\n await outbox.clear();\n await refreshPending();\n },\n resetWatermark() {\n watermark.clear();\n },\n getState() {\n return state;\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n dispose() {\n closed = true;\n channel?.close();\n },\n };\n}\n"],"names":["localStorageWatermark","key","available","value","createOfflineSync","config","outbox","createOfflineStore","watermark","idPrefix","isOnline","inflight","listeners","state","crossTab","channelName","channel","closed","notify","listener","setState","patch","event","refreshPending","push","summary","entries","entry","cause","message","pull","since","cursor","serverTime","page","item","runOnce","trigger","startedAt","runGuarded","locks","lock","op","recordId","payload","randomId"],"mappings":"4JAgPA,SAASA,EAAsBC,EAA6B,CACxD,MAAMC,EAAY,OAAO,aAAiB,IAC1C,MAAO,CACH,IAAK,IAAOA,EAAY,aAAa,QAAQD,CAAG,EAAI,KACpD,IAAME,GAAkB,CAChBD,GAAW,aAAa,QAAQD,EAAKE,CAAK,CAClD,EACA,MAAO,IAAM,CACLD,GAAW,aAAa,WAAWD,CAAG,CAC9C,CAAA,CAER,CAsCO,SAASG,EACZC,EACqB,CACrB,MAAMC,EAASC,EAAAA,mBAAkD,CAC7D,aAAcF,EAAO,aACrB,QAASA,EAAO,SAAW,EAC3B,UAAWA,EAAO,WAAa,SAC/B,QAAS,4BACT,QAAS,IAAA,CACZ,EAEKG,EACF,QAASH,EAAO,UACVA,EAAO,UACPL,EAAsBK,EAAO,UAAU,UAAU,EAErDI,EAAWJ,EAAO,UAAY,SAC9BK,EACFL,EAAO,WAAa,IAAO,OAAO,UAAc,IAAc,UAAU,OAAS,IAErF,IAAIM,EAA2C,KAE/C,MAAMC,MAAgB,IACtB,IAAIC,EAAmB,CACnB,MAAO,OACP,QAAS,EACT,YAAa,KACb,UAAW,KACX,aAAc,IAAA,EAGlB,MAAMC,EAAWT,EAAO,WAAa,GAC/BU,EAAcV,EAAO,sBAAwB,gBAAgBA,EAAO,YAAY,GAChFW,EACFF,GAAY,OAAO,iBAAqB,IAClC,IAAI,iBAAiBC,CAAW,EAChC,KACV,IAAIE,EAAS,GAEb,SAASC,GAAe,CACpB,UAAWC,KAAYP,EAAWO,EAASN,CAAK,CACpD,CAEA,SAASO,EAASC,EAAiC,CAC/CR,EAAQ,CAAE,GAAGA,EAAO,GAAGQ,CAAA,EACvBH,EAAA,EACIF,GAAW,CAACC,GAAQD,EAAQ,YAAYH,CAAK,CACrD,CAEIG,IACAA,EAAQ,UAAaM,GAAmC,CAChDL,IACJJ,EAAQS,EAAM,KACdJ,EAAA,EACJ,GAGJ,eAAeK,GAAgC,CAC3CH,EAAS,CAAE,QAAS,MAAMd,EAAO,MAAA,EAAS,CAC9C,CAEA,eAAekB,EAAKC,EAAwC,CACxD,MAAMC,EAAU,MAAMpB,EAAO,KAAK,OAAW,CAAE,QAAS,aAAc,EACtE,UAAWqB,KAASD,EAChB,GAAI,CACA,MAAMrB,EAAO,QAAQsB,CAAK,EAC1B,MAAMrB,EAAO,OAAOqB,EAAM,EAAE,EAC5B,MAAMtB,EAAO,mBAAmBsB,CAAK,EACrCF,EAAQ,WAAa,CACzB,OAASG,EAAO,CACZ,MAAMC,EAAUD,aAAiB,MAAQA,EAAM,QAAU,kBACzD,MAAMtB,EAAO,OAAOqB,EAAM,GAAI,CAC1B,SAAUA,EAAM,SAAW,EAC3B,UAAWE,CAAA,CACoB,EACnC,MAAMxB,EAAO,gBAAgBsB,EAAOC,CAAK,EACzCH,EAAQ,QAAU,EAClBA,EAAQ,UAAYI,CACxB,CAER,CAEA,eAAeC,GAAsB,CACjC,MAAMC,EAAQvB,EAAU,IAAA,EACxB,IAAIwB,EAAwB,KACxBC,EAA4BF,EAChC,EAAG,CACC,MAAMG,EAAO,MAAM7B,EAAO,SAAS0B,EAAOC,CAAM,EAChD,UAAWG,KAAQD,EAAK,MACpB,MAAM7B,EAAO,YAAY8B,CAAI,EAEjCH,EAASE,EAAK,WACdD,EAAaC,EAAK,UACtB,OAASF,GACLC,GAAYzB,EAAU,IAAIyB,CAAU,CAC5C,CAEA,eAAeG,EAAQC,EAA+C,CAClE,MAAMC,EAAY,KAAK,IAAA,EACjBb,EAA0B,CAC5B,QAAAY,EACA,UAAW,EACX,OAAQ,EACR,WAAY,EACZ,QAAS,GACT,UAAW,IAAA,EAEf,OAAK3B,KAKL,MAAMc,EAAKC,CAAO,EAClB,MAAMK,EAAA,EACNL,EAAQ,WAAa,KAAK,IAAA,EAAQa,EAC3Bb,IAPHA,EAAQ,QAAU,GAClBA,EAAQ,WAAa,KAAK,IAAA,EAAQa,EAC3Bb,EAMf,CAgBA,eAAec,EAAWF,EAA+C,CACrE,MAAMG,EAAQ,OAAO,UAAc,IAAc,UAAU,MAAQ,OACnE,MAAI,CAAC1B,GAAY,CAAC0B,EAAcJ,EAAQC,CAAO,EAChC,MAAMG,EAAM,QACvB,GAAGzB,CAAW,SACd,CAAE,YAAa,EAAA,EACf,MAAO0B,GAAUA,EAAOL,EAAQC,CAAO,EAAI,IAAA,GAGjC,CACN,QAAAA,EACA,UAAW,EACX,OAAQ,EACR,WAAY,EACZ,QAAS,GACT,UAAW,IAAA,CAGvB,CAEA,OAAKd,EAAA,EAEE,CACH,MAAM,QAAQmB,EAAIC,EAAUC,EAAS,CACjC,MAAMjB,EAA+B,CACjC,GAAIkB,EAAAA,SAASpC,CAAQ,EACrB,GAAAiC,EACA,SAAAC,EACA,WAAY,KAAK,IAAA,EACjB,SAAU,EACV,QAAAC,CAAA,EAEJ,aAAMtC,EAAO,IAAIqB,CAAK,EACtB,MAAMJ,EAAA,EACCI,EAAM,EACjB,EACA,MAAMU,EAAuB,SAAU,CACnC,OAAK1B,IACDS,EAAS,CAAE,MAAO,UAAW,EAC7BT,EAAW4B,EAAWF,CAAO,EACxB,KAAK,MAAOZ,IACT,MAAMF,EAAA,EACNH,EAAS,CACL,MAAOK,EAAQ,QACT,UACAA,EAAQ,OAAS,EACf,QACA,OACR,YAAaA,EACb,UAAWA,EAAQ,UACnB,aAAcA,EAAQ,QAAUZ,EAAM,aAAe,KAAK,IAAA,CAAI,CACjE,EACMY,EACV,EACA,QAAQ,IAAM,CACXd,EAAW,IACf,CAAC,GAEFA,CACX,EACA,cAAe,CACX,OAAOL,EAAO,MAAA,CAClB,EACA,aAAc,CACV,OAAOA,EAAO,KAAK,OAAW,CAAE,QAAS,aAAc,CAC3D,EACA,MAAM,aAAc,CAChB,MAAMA,EAAO,MAAA,EACb,MAAMiB,EAAA,CACV,EACA,gBAAiB,CACbf,EAAU,MAAA,CACd,EACA,UAAW,CACP,OAAOK,CACX,EACA,UAAUM,EAAU,CAChB,OAAAP,EAAU,IAAIO,CAAQ,EACf,IAAM,CACTP,EAAU,OAAOO,CAAQ,CAC7B,CACJ,EACA,SAAU,CACNF,EAAS,GACTD,GAAS,MAAA,CACb,CAAA,CAER"}
@@ -0,0 +1,146 @@
1
+ import { randomId as x } from "../utils/ids.js";
2
+ import { createOfflineStore as A } from "./create-offline-store.js";
3
+ function N(t) {
4
+ const r = typeof localStorage < "u";
5
+ return {
6
+ get: () => r ? localStorage.getItem(t) : null,
7
+ set: (o) => {
8
+ r && localStorage.setItem(t, o);
9
+ },
10
+ clear: () => {
11
+ r && localStorage.removeItem(t);
12
+ }
13
+ };
14
+ }
15
+ function O(t) {
16
+ const r = A({
17
+ databaseName: t.databaseName,
18
+ version: t.version ?? 1,
19
+ tableName: t.tableName ?? "outbox",
20
+ indexes: "&id, recordId, enqueuedAt",
21
+ keyPath: "id"
22
+ }), o = "get" in t.watermark ? t.watermark : N(t.watermark.storageKey), b = t.idPrefix ?? "outbox", S = t.isOnline ?? (() => typeof navigator < "u" ? navigator.onLine : !0);
23
+ let d = null;
24
+ const f = /* @__PURE__ */ new Set();
25
+ let l = {
26
+ phase: "idle",
27
+ pending: 0,
28
+ lastSummary: null,
29
+ lastError: null,
30
+ lastSyncedAt: null
31
+ };
32
+ const m = t.crossTab === !0, y = t.broadcastChannelName ?? `tempest-sync:${t.databaseName}`, i = m && typeof BroadcastChannel < "u" ? new BroadcastChannel(y) : null;
33
+ let p = !1;
34
+ function v() {
35
+ for (const e of f) e(l);
36
+ }
37
+ function w(e) {
38
+ l = { ...l, ...e }, v(), i && !p && i.postMessage(l);
39
+ }
40
+ i && (i.onmessage = (e) => {
41
+ p || (l = e.data, v());
42
+ });
43
+ async function u() {
44
+ w({ pending: await r.count() });
45
+ }
46
+ async function k(e) {
47
+ const a = await r.list(void 0, { orderBy: "enqueuedAt" });
48
+ for (const n of a)
49
+ try {
50
+ await t.deliver(n), await r.delete(n.id), await t.onEntryDelivered?.(n), e.succeeded += 1;
51
+ } catch (s) {
52
+ const c = s instanceof Error ? s.message : "delivery failed";
53
+ await r.update(n.id, {
54
+ attempts: n.attempts + 1,
55
+ lastError: c
56
+ }), await t.onEntryFailed?.(n, s), e.failed += 1, e.lastError = c;
57
+ }
58
+ }
59
+ async function E() {
60
+ const e = o.get();
61
+ let a = null, n = e;
62
+ do {
63
+ const s = await t.pullPage(e, a);
64
+ for (const c of s.items)
65
+ await t.applyRemote(c);
66
+ a = s.nextCursor, n = s.serverTime;
67
+ } while (a);
68
+ n && o.set(n);
69
+ }
70
+ async function h(e) {
71
+ const a = Date.now(), n = {
72
+ trigger: e,
73
+ succeeded: 0,
74
+ failed: 0,
75
+ durationMs: 0,
76
+ skipped: !1,
77
+ lastError: null
78
+ };
79
+ return S() ? (await k(n), await E(), n.durationMs = Date.now() - a, n) : (n.skipped = !0, n.durationMs = Date.now() - a, n);
80
+ }
81
+ async function g(e) {
82
+ const a = typeof navigator < "u" ? navigator.locks : void 0;
83
+ return !m || !a ? h(e) : await a.request(
84
+ `${y}:flush`,
85
+ { ifAvailable: !0 },
86
+ async (s) => s ? h(e) : null
87
+ ) ?? {
88
+ trigger: e,
89
+ succeeded: 0,
90
+ failed: 0,
91
+ durationMs: 0,
92
+ skipped: !1,
93
+ lastError: null
94
+ };
95
+ }
96
+ return u(), {
97
+ async enqueue(e, a, n) {
98
+ const s = {
99
+ id: x(b),
100
+ op: e,
101
+ recordId: a,
102
+ enqueuedAt: Date.now(),
103
+ attempts: 0,
104
+ payload: n
105
+ };
106
+ return await r.put(s), await u(), s.id;
107
+ },
108
+ flush(e = "manual") {
109
+ return d || (w({ phase: "syncing" }), d = g(e).then(async (a) => (await u(), w({
110
+ phase: a.skipped ? "offline" : a.failed > 0 ? "error" : "idle",
111
+ lastSummary: a,
112
+ lastError: a.lastError,
113
+ lastSyncedAt: a.skipped ? l.lastSyncedAt : Date.now()
114
+ }), a)).finally(() => {
115
+ d = null;
116
+ })), d;
117
+ },
118
+ pendingCount() {
119
+ return r.count();
120
+ },
121
+ listPending() {
122
+ return r.list(void 0, { orderBy: "enqueuedAt" });
123
+ },
124
+ async clearOutbox() {
125
+ await r.clear(), await u();
126
+ },
127
+ resetWatermark() {
128
+ o.clear();
129
+ },
130
+ getState() {
131
+ return l;
132
+ },
133
+ subscribe(e) {
134
+ return f.add(e), () => {
135
+ f.delete(e);
136
+ };
137
+ },
138
+ dispose() {
139
+ p = !0, i?.close();
140
+ }
141
+ };
142
+ }
143
+ export {
144
+ O as createOfflineSync
145
+ };
146
+ //# sourceMappingURL=create-offline-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-offline-sync.js","sources":["../../src/offline/create-offline-sync.ts"],"sourcesContent":["import { randomId } from \"../utils/ids\";\nimport { createOfflineStore } from \"./create-offline-store\";\n\n/**\n * Mutation kinds queued in the outbox.\n *\n * `create`/`update` carry a snapshot of the record; `delete` needs only the\n * record id. The distinction between `create` and `update` is advisory — the\n * engine treats both as \"deliver this record\" and leaves the create-vs-update\n * decision to the app's `deliver` callback (a `PUT` upsert usually ignores it).\n */\nexport type OutboxOp = \"create\" | \"update\" | \"delete\";\n\n/**\n * A single queued mutation.\n *\n * @typeParam TPayload - The record snapshot shape carried by\n * `create`/`update` entries (omitted for `delete`).\n */\nexport interface OutboxEntry<TPayload = unknown> {\n /** Stable per-entry id (generated with {@link randomId}). */\n id: string;\n /** The mutation kind. */\n op: OutboxOp;\n /** Primary key of the record the mutation targets. */\n recordId: string;\n /** Epoch milliseconds when the mutation was queued. */\n enqueuedAt: number;\n /** How many delivery attempts have been made so far. */\n attempts: number;\n /** Last delivery error message, kept for UI/debug. */\n lastError?: string;\n /** Record snapshot for `create`/`update`. Omitted for `delete`. */\n payload?: TPayload;\n}\n\n/**\n * Why a sync run was triggered. The listed values are the common ones; any\n * string is accepted so apps can add their own telemetry labels.\n */\nexport type SyncTrigger =\n | \"boot\"\n | \"online-event\"\n | \"after-mutation\"\n | \"manual\"\n | \"interval\"\n | (string & {});\n\n/**\n * One page of the server delta pull.\n *\n * @typeParam TRemote - The server-side item shape.\n */\nexport interface PullPage<TRemote> {\n /** Items changed since the watermark, in this page. */\n items: TRemote[];\n /** Cursor for the next page, or `null` when this is the last page. */\n nextCursor: string | null;\n /**\n * Server clock to persist as the next watermark once the whole delta is\n * applied. `null` leaves the watermark unchanged.\n */\n serverTime: string | null;\n}\n\n/** Outcome of a single {@link OfflineSync.flush} run. */\nexport interface SyncRunSummary {\n /** The trigger passed to `flush`. */\n trigger: SyncTrigger;\n /** Entries delivered to the server this run. */\n succeeded: number;\n /** Entries that failed and stay queued for the next run. */\n failed: number;\n /** Total wall-clock milliseconds the run took. */\n durationMs: number;\n /** `true` when the run was skipped because the device was offline. */\n skipped: boolean;\n /** Last delivery error message seen this run, or `null` when none failed. */\n lastError: string | null;\n}\n\n/**\n * Coarse lifecycle phase of the sync engine, surfaced through\n * {@link OfflineSync.getState} / {@link OfflineSync.subscribe} for reactive UI.\n *\n * - `\"idle\"` — nothing in flight and the last run (if any) fully succeeded.\n * - `\"syncing\"` — a `flush` run is currently in progress.\n * - `\"offline\"` — the last run was skipped because the device was offline.\n * - `\"error\"` — the last run left at least one entry queued after a failure.\n */\nexport type SyncPhase = \"idle\" | \"syncing\" | \"offline\" | \"error\";\n\n/**\n * Immutable snapshot of the engine's reactive state. A fresh object is emitted\n * to subscribers on every change, so it is safe to use as a\n * `useSyncExternalStore` snapshot (reference equality signals \"no change\").\n */\nexport interface SyncState {\n /** Current lifecycle phase. */\n phase: SyncPhase;\n /** Number of mutations still queued in the outbox. */\n pending: number;\n /** Summary of the most recent `flush` run, or `null` before the first. */\n lastSummary: SyncRunSummary | null;\n /** Message of the most recent delivery failure, or `null`. */\n lastError: string | null;\n /** Epoch ms of the last non-skipped run, or `null` before the first. */\n lastSyncedAt: number | null;\n}\n\n/**\n * Pluggable persistence for the pull watermark (the \"changed since\" cursor).\n * Pass an object with a `storageKey` to use a `localStorage`-backed default.\n */\nexport interface WatermarkStore {\n /** Read the current watermark, or `null` when none is stored. */\n get: () => string | null;\n /** Persist a new watermark. */\n set: (value: string) => void;\n /** Drop the watermark (e.g. on logout / account switch). */\n clear: () => void;\n}\n\n/**\n * Configuration for {@link createOfflineSync}.\n *\n * The engine owns the outbox, the single-flight flush, the offline guard, the\n * paginated pull loop and the watermark; the three transport callbacks\n * (`deliver`, `pullPage`, `applyRemote`) are where the app plugs in its own\n * endpoints, record shape and conflict resolution.\n *\n * @typeParam TPayload - Record snapshot carried by outbox entries.\n * @typeParam TRemote - Server item shape returned by `pullPage`.\n */\nexport interface OfflineSyncConfig<TPayload, TRemote> {\n /** IndexedDB database name for the outbox (kept separate per queue). */\n databaseName: string;\n /** Outbox object-store name. Default `\"outbox\"`. */\n tableName?: string;\n /** Outbox schema version. Default `1`. */\n version?: number;\n /** Prefix for generated entry ids. Default `\"outbox\"`. */\n idPrefix?: string;\n /**\n * Deliver one queued mutation to the server. Throwing keeps the entry\n * queued (its `attempts`/`lastError` are bumped) for the next run.\n */\n deliver: (entry: OutboxEntry<TPayload>) => Promise<void>;\n /** Fetch one page of the server delta since `since`, from `cursor`. */\n pullPage: (since: string | null, cursor: string | null) => Promise<PullPage<TRemote>>;\n /**\n * Merge one pulled item into the local store. The app owns conflict\n * resolution here (e.g. last-write-wins, keeping newer local pending\n * edits, resolving tombstones and downloading blobs).\n */\n applyRemote: (item: TRemote) => Promise<void>;\n /** Watermark persistence, or `{ storageKey }` for a `localStorage` default. */\n watermark: WatermarkStore | { storageKey: string };\n /** Called after an entry is delivered and acked. */\n onEntryDelivered?: (entry: OutboxEntry<TPayload>) => void | Promise<void>;\n /** Called after an entry fails delivery (it stays queued). */\n onEntryFailed?: (entry: OutboxEntry<TPayload>, error: unknown) => void | Promise<void>;\n /**\n * Connectivity check. Default reads `navigator.onLine` (always online in\n * non-browser environments). When it returns `false`, `flush` is skipped.\n */\n isOnline?: () => boolean;\n /**\n * Broadcast {@link SyncState} across browser tabs of the same origin via a\n * `BroadcastChannel`, so every tab shows a coherent pending count / phase\n * (e.g. one tab flushing drops the badge to zero everywhere). The outbox is\n * already a shared IndexedDB; this only shares the in-memory state. Silently\n * ignored where `BroadcastChannel` is unavailable. Default `false`.\n *\n * When the Web Locks API is available, `flush` is additionally coordinated\n * *across* tabs: only one tab runs at a time and others skip while the lock\n * is held (they pick up the result via the broadcast). Delivery should still\n * be idempotent (upsert by client id). Without Web Locks, `flush` falls back\n * to per-tab single-flight.\n */\n crossTab?: boolean;\n /** Channel name when `crossTab` is on. Default `tempest-sync:${databaseName}`. */\n broadcastChannelName?: string;\n}\n\n/**\n * Offline-first sync engine: a durable outbox plus a paginated delta pull.\n *\n * @typeParam TPayload - Record snapshot carried by outbox entries.\n */\nexport interface OfflineSync<TPayload> {\n /**\n * Queue a mutation. Returns the generated entry id.\n *\n * @param op - The mutation kind.\n * @param recordId - Primary key of the affected record.\n * @param payload - Record snapshot (for `create`/`update`).\n */\n enqueue: (op: OutboxOp, recordId: string, payload?: TPayload) => Promise<string>;\n /**\n * Run a full sync (drain the outbox, then pull the delta). Concurrent\n * calls share one in-flight promise, so triggers never overlap.\n *\n * @param trigger - Label for why the run happened. Default `\"manual\"`.\n */\n flush: (trigger?: SyncTrigger) => Promise<SyncRunSummary>;\n /** Number of mutations still queued. */\n pendingCount: () => Promise<number>;\n /** The queued mutations in FIFO order. */\n listPending: () => Promise<OutboxEntry<TPayload>[]>;\n /** Drop every queued mutation (e.g. on logout). */\n clearOutbox: () => Promise<void>;\n /** Reset the pull watermark (e.g. on logout / account switch). */\n resetWatermark: () => void;\n /** Read the current reactive {@link SyncState} snapshot synchronously. */\n getState: () => SyncState;\n /**\n * Subscribe to {@link SyncState} changes. The listener fires on every\n * enqueue, flush transition and outbox clear.\n *\n * @param listener - Called with the new snapshot on each change.\n * @returns An unsubscribe function.\n */\n subscribe: (listener: (state: SyncState) => void) => () => void;\n /**\n * Release resources held by the engine — currently the cross-tab\n * `BroadcastChannel` when `crossTab` is enabled. Safe to call when none was\n * opened. Optional in long-lived apps (the channel is reclaimed on tab\n * close); call it in tests and on teardown.\n */\n dispose: () => void;\n}\n\n/**\n * Build a `localStorage`-backed {@link WatermarkStore}. Reads/writes are no-ops\n * when `localStorage` is unavailable (SSR / non-browser).\n *\n * @param key - The `localStorage` key.\n * @returns A watermark store persisting to `localStorage`.\n */\nfunction localStorageWatermark(key: string): WatermarkStore {\n const available = typeof localStorage !== \"undefined\";\n return {\n get: () => (available ? localStorage.getItem(key) : null),\n set: (value: string) => {\n if (available) localStorage.setItem(key, value);\n },\n clear: () => {\n if (available) localStorage.removeItem(key);\n },\n };\n}\n\n/**\n * Create an offline-first sync engine over an IndexedDB outbox.\n *\n * The engine drains queued mutations to the server (`deliver`) and pulls the\n * server delta back (`pullPage` + `applyRemote`), advancing a watermark so each\n * run only fetches what changed. `flush` is single-flight and skips cleanly\n * while offline; failed deliveries stay queued with their attempt count bumped.\n *\n * Dexie is an **optional peer dependency** (via {@link createOfflineStore}) —\n * install it (`npm i dexie`) when you use this engine.\n *\n * @typeParam TPayload - Record snapshot carried by outbox entries.\n * @typeParam TRemote - Server item shape returned by `pullPage`.\n * @param config - Transport callbacks + outbox/watermark configuration.\n * @returns The sync handle (`enqueue`, `flush`, `pendingCount`, …).\n *\n * @example\n * const sync = createOfflineSync<Note, NoteDto>({\n * databaseName: \"NotesOutbox\",\n * watermark: { storageKey: \"notes.watermark\" },\n * deliver: async (entry) => {\n * if (entry.op === \"delete\") return api.remove(entry.recordId);\n * await api.upsert(entry.recordId, entry.payload!);\n * },\n * pullPage: async (since, cursor) => {\n * const page = await api.changes(since, cursor);\n * return { items: page.items, nextCursor: page.next, serverTime: page.now };\n * },\n * applyRemote: async (dto) => {\n * if (dto.deleted) return localStore.remove(dto.id);\n * await localStore.save(fromDto(dto));\n * },\n * });\n * await sync.enqueue(\"create\", note.id, note);\n * await sync.flush(\"after-mutation\");\n */\nexport function createOfflineSync<TPayload = unknown, TRemote = unknown>(\n config: OfflineSyncConfig<TPayload, TRemote>,\n): OfflineSync<TPayload> {\n const outbox = createOfflineStore<OutboxEntry<TPayload>, string>({\n databaseName: config.databaseName,\n version: config.version ?? 1,\n tableName: config.tableName ?? \"outbox\",\n indexes: \"&id, recordId, enqueuedAt\",\n keyPath: \"id\",\n });\n\n const watermark: WatermarkStore =\n \"get\" in config.watermark\n ? config.watermark\n : localStorageWatermark(config.watermark.storageKey);\n\n const idPrefix = config.idPrefix ?? \"outbox\";\n const isOnline =\n config.isOnline ?? (() => (typeof navigator !== \"undefined\" ? navigator.onLine : true));\n\n let inflight: Promise<SyncRunSummary> | null = null;\n\n const listeners = new Set<(state: SyncState) => void>();\n let state: SyncState = {\n phase: \"idle\",\n pending: 0,\n lastSummary: null,\n lastError: null,\n lastSyncedAt: null,\n };\n\n const crossTab = config.crossTab === true;\n const channelName = config.broadcastChannelName ?? `tempest-sync:${config.databaseName}`;\n const channel: BroadcastChannel | null =\n crossTab && typeof BroadcastChannel !== \"undefined\"\n ? new BroadcastChannel(channelName)\n : null;\n let closed = false;\n\n function notify(): void {\n for (const listener of listeners) listener(state);\n }\n\n function setState(patch: Partial<SyncState>): void {\n state = { ...state, ...patch };\n notify();\n if (channel && !closed) channel.postMessage(state);\n }\n\n if (channel) {\n channel.onmessage = (event: MessageEvent<SyncState>) => {\n if (closed) return;\n state = event.data;\n notify();\n };\n }\n\n async function refreshPending(): Promise<void> {\n setState({ pending: await outbox.count() });\n }\n\n async function push(summary: SyncRunSummary): Promise<void> {\n const entries = await outbox.list(undefined, { orderBy: \"enqueuedAt\" });\n for (const entry of entries) {\n try {\n await config.deliver(entry);\n await outbox.delete(entry.id);\n await config.onEntryDelivered?.(entry);\n summary.succeeded += 1;\n } catch (cause) {\n const message = cause instanceof Error ? cause.message : \"delivery failed\";\n await outbox.update(entry.id, {\n attempts: entry.attempts + 1,\n lastError: message,\n } as Partial<OutboxEntry<TPayload>>);\n await config.onEntryFailed?.(entry, cause);\n summary.failed += 1;\n summary.lastError = message;\n }\n }\n }\n\n async function pull(): Promise<void> {\n const since = watermark.get();\n let cursor: string | null = null;\n let serverTime: string | null = since;\n do {\n const page = await config.pullPage(since, cursor);\n for (const item of page.items) {\n await config.applyRemote(item);\n }\n cursor = page.nextCursor;\n serverTime = page.serverTime;\n } while (cursor);\n if (serverTime) watermark.set(serverTime);\n }\n\n async function runOnce(trigger: SyncTrigger): Promise<SyncRunSummary> {\n const startedAt = Date.now();\n const summary: SyncRunSummary = {\n trigger,\n succeeded: 0,\n failed: 0,\n durationMs: 0,\n skipped: false,\n lastError: null,\n };\n if (!isOnline()) {\n summary.skipped = true;\n summary.durationMs = Date.now() - startedAt;\n return summary;\n }\n await push(summary);\n await pull();\n summary.durationMs = Date.now() - startedAt;\n return summary;\n }\n\n /**\n * Run one sync pass, serialized across tabs when possible.\n *\n * With `crossTab` on and the Web Locks API available, the pass is wrapped in\n * an `ifAvailable` lock request: whichever tab holds the lock runs, and the\n * others get `null` back instead of duplicating the work — their `SyncState`\n * catches up through the `BroadcastChannel`. The no-op summary keeps\n * `skipped: false` on purpose: `skipped` means \"device offline\" (it maps to\n * `phase: \"offline\"`), which is not what happened here. Falls back to a plain\n * per-tab run when `crossTab` is off or Web Locks is missing.\n *\n * @param trigger - What asked for this run, carried into the summary.\n * @returns The run summary, or an empty summary when another tab held the lock.\n */\n async function runGuarded(trigger: SyncTrigger): Promise<SyncRunSummary> {\n const locks = typeof navigator !== \"undefined\" ? navigator.locks : undefined;\n if (!crossTab || !locks) return runOnce(trigger);\n const result = await locks.request(\n `${channelName}:flush`,\n { ifAvailable: true },\n async (lock) => (lock ? runOnce(trigger) : null),\n );\n return (\n result ?? {\n trigger,\n succeeded: 0,\n failed: 0,\n durationMs: 0,\n skipped: false,\n lastError: null,\n }\n );\n }\n\n void refreshPending();\n\n return {\n async enqueue(op, recordId, payload) {\n const entry: OutboxEntry<TPayload> = {\n id: randomId(idPrefix),\n op,\n recordId,\n enqueuedAt: Date.now(),\n attempts: 0,\n payload,\n };\n await outbox.put(entry);\n await refreshPending();\n return entry.id;\n },\n flush(trigger: SyncTrigger = \"manual\") {\n if (!inflight) {\n setState({ phase: \"syncing\" });\n inflight = runGuarded(trigger)\n .then(async (summary) => {\n await refreshPending();\n setState({\n phase: summary.skipped\n ? \"offline\"\n : summary.failed > 0\n ? \"error\"\n : \"idle\",\n lastSummary: summary,\n lastError: summary.lastError,\n lastSyncedAt: summary.skipped ? state.lastSyncedAt : Date.now(),\n });\n return summary;\n })\n .finally(() => {\n inflight = null;\n });\n }\n return inflight;\n },\n pendingCount() {\n return outbox.count();\n },\n listPending() {\n return outbox.list(undefined, { orderBy: \"enqueuedAt\" });\n },\n async clearOutbox() {\n await outbox.clear();\n await refreshPending();\n },\n resetWatermark() {\n watermark.clear();\n },\n getState() {\n return state;\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n dispose() {\n closed = true;\n channel?.close();\n },\n };\n}\n"],"names":["localStorageWatermark","key","available","value","createOfflineSync","config","outbox","createOfflineStore","watermark","idPrefix","isOnline","inflight","listeners","state","crossTab","channelName","channel","closed","notify","listener","setState","patch","event","refreshPending","push","summary","entries","entry","cause","message","pull","since","cursor","serverTime","page","item","runOnce","trigger","startedAt","runGuarded","locks","lock","op","recordId","payload","randomId"],"mappings":";;AAgPA,SAASA,EAAsBC,GAA6B;AACxD,QAAMC,IAAY,OAAO,eAAiB;AAC1C,SAAO;AAAA,IACH,KAAK,MAAOA,IAAY,aAAa,QAAQD,CAAG,IAAI;AAAA,IACpD,KAAK,CAACE,MAAkB;AACpB,MAAID,KAAW,aAAa,QAAQD,GAAKE,CAAK;AAAA,IAClD;AAAA,IACA,OAAO,MAAM;AACT,MAAID,KAAW,aAAa,WAAWD,CAAG;AAAA,IAC9C;AAAA,EAAA;AAER;AAsCO,SAASG,EACZC,GACqB;AACrB,QAAMC,IAASC,EAAkD;AAAA,IAC7D,cAAcF,EAAO;AAAA,IACrB,SAASA,EAAO,WAAW;AAAA,IAC3B,WAAWA,EAAO,aAAa;AAAA,IAC/B,SAAS;AAAA,IACT,SAAS;AAAA,EAAA,CACZ,GAEKG,IACF,SAASH,EAAO,YACVA,EAAO,YACPL,EAAsBK,EAAO,UAAU,UAAU,GAErDI,IAAWJ,EAAO,YAAY,UAC9BK,IACFL,EAAO,aAAa,MAAO,OAAO,YAAc,MAAc,UAAU,SAAS;AAErF,MAAIM,IAA2C;AAE/C,QAAMC,wBAAgB,IAAA;AACtB,MAAIC,IAAmB;AAAA,IACnB,OAAO;AAAA,IACP,SAAS;AAAA,IACT,aAAa;AAAA,IACb,WAAW;AAAA,IACX,cAAc;AAAA,EAAA;AAGlB,QAAMC,IAAWT,EAAO,aAAa,IAC/BU,IAAcV,EAAO,wBAAwB,gBAAgBA,EAAO,YAAY,IAChFW,IACFF,KAAY,OAAO,mBAAqB,MAClC,IAAI,iBAAiBC,CAAW,IAChC;AACV,MAAIE,IAAS;AAEb,WAASC,IAAe;AACpB,eAAWC,KAAYP,EAAW,CAAAO,EAASN,CAAK;AAAA,EACpD;AAEA,WAASO,EAASC,GAAiC;AAC/C,IAAAR,IAAQ,EAAE,GAAGA,GAAO,GAAGQ,EAAA,GACvBH,EAAA,GACIF,KAAW,CAACC,KAAQD,EAAQ,YAAYH,CAAK;AAAA,EACrD;AAEA,EAAIG,MACAA,EAAQ,YAAY,CAACM,MAAmC;AACpD,IAAIL,MACJJ,IAAQS,EAAM,MACdJ,EAAA;AAAA,EACJ;AAGJ,iBAAeK,IAAgC;AAC3C,IAAAH,EAAS,EAAE,SAAS,MAAMd,EAAO,MAAA,GAAS;AAAA,EAC9C;AAEA,iBAAekB,EAAKC,GAAwC;AACxD,UAAMC,IAAU,MAAMpB,EAAO,KAAK,QAAW,EAAE,SAAS,cAAc;AACtE,eAAWqB,KAASD;AAChB,UAAI;AACA,cAAMrB,EAAO,QAAQsB,CAAK,GAC1B,MAAMrB,EAAO,OAAOqB,EAAM,EAAE,GAC5B,MAAMtB,EAAO,mBAAmBsB,CAAK,GACrCF,EAAQ,aAAa;AAAA,MACzB,SAASG,GAAO;AACZ,cAAMC,IAAUD,aAAiB,QAAQA,EAAM,UAAU;AACzD,cAAMtB,EAAO,OAAOqB,EAAM,IAAI;AAAA,UAC1B,UAAUA,EAAM,WAAW;AAAA,UAC3B,WAAWE;AAAA,QAAA,CACoB,GACnC,MAAMxB,EAAO,gBAAgBsB,GAAOC,CAAK,GACzCH,EAAQ,UAAU,GAClBA,EAAQ,YAAYI;AAAA,MACxB;AAAA,EAER;AAEA,iBAAeC,IAAsB;AACjC,UAAMC,IAAQvB,EAAU,IAAA;AACxB,QAAIwB,IAAwB,MACxBC,IAA4BF;AAChC,OAAG;AACC,YAAMG,IAAO,MAAM7B,EAAO,SAAS0B,GAAOC,CAAM;AAChD,iBAAWG,KAAQD,EAAK;AACpB,cAAM7B,EAAO,YAAY8B,CAAI;AAEjC,MAAAH,IAASE,EAAK,YACdD,IAAaC,EAAK;AAAA,IACtB,SAASF;AACT,IAAIC,KAAYzB,EAAU,IAAIyB,CAAU;AAAA,EAC5C;AAEA,iBAAeG,EAAQC,GAA+C;AAClE,UAAMC,IAAY,KAAK,IAAA,GACjBb,IAA0B;AAAA,MAC5B,SAAAY;AAAA,MACA,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IAAA;AAEf,WAAK3B,OAKL,MAAMc,EAAKC,CAAO,GAClB,MAAMK,EAAA,GACNL,EAAQ,aAAa,KAAK,IAAA,IAAQa,GAC3Bb,MAPHA,EAAQ,UAAU,IAClBA,EAAQ,aAAa,KAAK,IAAA,IAAQa,GAC3Bb;AAAA,EAMf;AAgBA,iBAAec,EAAWF,GAA+C;AACrE,UAAMG,IAAQ,OAAO,YAAc,MAAc,UAAU,QAAQ;AACnE,WAAI,CAAC1B,KAAY,CAAC0B,IAAcJ,EAAQC,CAAO,IAChC,MAAMG,EAAM;AAAA,MACvB,GAAGzB,CAAW;AAAA,MACd,EAAE,aAAa,GAAA;AAAA,MACf,OAAO0B,MAAUA,IAAOL,EAAQC,CAAO,IAAI;AAAA,IAAA,KAGjC;AAAA,MACN,SAAAA;AAAA,MACA,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,IAAA;AAAA,EAGvB;AAEA,SAAKd,EAAA,GAEE;AAAA,IACH,MAAM,QAAQmB,GAAIC,GAAUC,GAAS;AACjC,YAAMjB,IAA+B;AAAA,QACjC,IAAIkB,EAASpC,CAAQ;AAAA,QACrB,IAAAiC;AAAA,QACA,UAAAC;AAAA,QACA,YAAY,KAAK,IAAA;AAAA,QACjB,UAAU;AAAA,QACV,SAAAC;AAAA,MAAA;AAEJ,mBAAMtC,EAAO,IAAIqB,CAAK,GACtB,MAAMJ,EAAA,GACCI,EAAM;AAAA,IACjB;AAAA,IACA,MAAMU,IAAuB,UAAU;AACnC,aAAK1B,MACDS,EAAS,EAAE,OAAO,WAAW,GAC7BT,IAAW4B,EAAWF,CAAO,EACxB,KAAK,OAAOZ,OACT,MAAMF,EAAA,GACNH,EAAS;AAAA,QACL,OAAOK,EAAQ,UACT,YACAA,EAAQ,SAAS,IACf,UACA;AAAA,QACR,aAAaA;AAAA,QACb,WAAWA,EAAQ;AAAA,QACnB,cAAcA,EAAQ,UAAUZ,EAAM,eAAe,KAAK,IAAA;AAAA,MAAI,CACjE,GACMY,EACV,EACA,QAAQ,MAAM;AACX,QAAAd,IAAW;AAAA,MACf,CAAC,IAEFA;AAAA,IACX;AAAA,IACA,eAAe;AACX,aAAOL,EAAO,MAAA;AAAA,IAClB;AAAA,IACA,cAAc;AACV,aAAOA,EAAO,KAAK,QAAW,EAAE,SAAS,cAAc;AAAA,IAC3D;AAAA,IACA,MAAM,cAAc;AAChB,YAAMA,EAAO,MAAA,GACb,MAAMiB,EAAA;AAAA,IACV;AAAA,IACA,iBAAiB;AACb,MAAAf,EAAU,MAAA;AAAA,IACd;AAAA,IACA,WAAW;AACP,aAAOK;AAAA,IACX;AAAA,IACA,UAAUM,GAAU;AAChB,aAAAP,EAAU,IAAIO,CAAQ,GACf,MAAM;AACT,QAAAP,EAAU,OAAOO,CAAQ;AAAA,MAC7B;AAAA,IACJ;AAAA,IACA,UAAU;AACN,MAAAF,IAAS,IACTD,GAAS,MAAA;AAAA,IACb;AAAA,EAAA;AAER;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react");function l(e,n={}){const{flushOnMount:o=!1,flushOnOnline:f=!0,intervalMs:u=0}=n,s=t.useSyncExternalStore(e.subscribe,e.getState,e.getState),r=t.useRef(e.flush);return r.current=e.flush,t.useEffect(()=>{o&&r.current("boot")},[o]),t.useEffect(()=>{if(!f||typeof window>"u")return;const i=()=>{r.current("online-event")};return window.addEventListener("online",i),()=>window.removeEventListener("online",i)},[f]),t.useEffect(()=>{if(u<=0||typeof window>"u")return;const i=window.setInterval(()=>{r.current("interval")},u);return()=>window.clearInterval(i)},[u]),{...s,syncing:s.phase==="syncing",enqueue:e.enqueue,flush:e.flush}}function a(e){return e.phase==="syncing"?"syncing":e.phase==="offline"?"offline":e.phase==="error"?"error":e.pending>0?"pending":"idle"}function c(e){const n=t.useSyncExternalStore(e.subscribe,e.getState,e.getState);return{tone:a(n),pending:n.pending,syncing:n.phase==="syncing",offline:n.phase==="offline",lastError:n.lastError}}exports.useOfflineSync=l;exports.useSyncStatus=c;
2
+ //# sourceMappingURL=use-offline-sync.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-offline-sync.cjs","sources":["../../src/offline/use-offline-sync.ts"],"sourcesContent":["import { useEffect, useRef, useSyncExternalStore } from \"react\";\nimport type {\n OfflineSync,\n OutboxOp,\n SyncRunSummary,\n SyncState,\n SyncTrigger,\n} from \"./create-offline-sync\";\n\n/**\n * Options for {@link useOfflineSync}. All auto-flush triggers are opt-in except\n * `flushOnOnline`, which defaults to `true` so the app catches up the moment\n * connectivity returns.\n */\nexport interface UseOfflineSyncOptions {\n /** Flush once when the component mounts (trigger `\"boot\"`). Default `false`. */\n flushOnMount?: boolean;\n /**\n * Flush when the browser fires the `online` event (trigger\n * `\"online-event\"`). Default `true`.\n */\n flushOnOnline?: boolean;\n /**\n * Flush on this interval in milliseconds (trigger `\"interval\"`). `0`\n * disables the timer. Default `0`.\n */\n intervalMs?: number;\n}\n\n/**\n * Reactive view of an {@link OfflineSync} engine, plus its imperative actions.\n * Extends {@link SyncState} so `phase`, `pending`, `lastSummary`, `lastError`\n * and `lastSyncedAt` are read directly off the result.\n *\n * @typeParam TPayload - Record snapshot carried by outbox entries.\n */\nexport interface UseOfflineSyncResult<TPayload> extends SyncState {\n /** `true` while a flush run is in progress (`phase === \"syncing\"`). */\n syncing: boolean;\n /** Queue a mutation. Mirrors {@link OfflineSync.enqueue}. */\n enqueue: (op: OutboxOp, recordId: string, payload?: TPayload) => Promise<string>;\n /** Trigger a flush run. Mirrors {@link OfflineSync.flush}. */\n flush: (trigger?: SyncTrigger) => Promise<SyncRunSummary>;\n}\n\n/**\n * Subscribe a React component to an {@link OfflineSync} engine.\n *\n * Re-renders whenever the engine's {@link SyncState} changes (enqueue, flush\n * transition, outbox clear) via `useSyncExternalStore`, and optionally wires\n * auto-flush on mount, on the `online` event and on an interval. The engine\n * itself is created once by the app and passed in — the hook never owns it, so\n * multiple components can observe the same queue.\n *\n * @typeParam TPayload - Record snapshot carried by outbox entries.\n * @param sync - The engine returned by `createOfflineSync`.\n * @param options - Auto-flush triggers.\n * @returns The reactive state merged with `enqueue`/`flush` actions.\n *\n * @example\n * const { pending, syncing, phase, flush } = useOfflineSync(notesSync, {\n * flushOnMount: true,\n * intervalMs: 30_000,\n * });\n * return <SyncStatusBadge pending={pending} syncing={syncing} phase={phase} />;\n */\nexport function useOfflineSync<TPayload>(\n sync: OfflineSync<TPayload>,\n options: UseOfflineSyncOptions = {},\n): UseOfflineSyncResult<TPayload> {\n const { flushOnMount = false, flushOnOnline = true, intervalMs = 0 } = options;\n\n const state = useSyncExternalStore(sync.subscribe, sync.getState, sync.getState);\n\n const flushRef = useRef(sync.flush);\n flushRef.current = sync.flush;\n\n useEffect(() => {\n if (flushOnMount) void flushRef.current(\"boot\");\n }, [flushOnMount]);\n\n useEffect(() => {\n if (!flushOnOnline || typeof window === \"undefined\") return;\n const handleOnline = (): void => {\n void flushRef.current(\"online-event\");\n };\n window.addEventListener(\"online\", handleOnline);\n return () => window.removeEventListener(\"online\", handleOnline);\n }, [flushOnOnline]);\n\n useEffect(() => {\n if (intervalMs <= 0 || typeof window === \"undefined\") return;\n const id = window.setInterval(() => {\n void flushRef.current(\"interval\");\n }, intervalMs);\n return () => window.clearInterval(id);\n }, [intervalMs]);\n\n return {\n ...state,\n syncing: state.phase === \"syncing\",\n enqueue: sync.enqueue,\n flush: sync.flush,\n };\n}\n\n/**\n * Presentation-ready tone for a sync status indicator. Collapses the engine's\n * {@link SyncState} into the single most relevant signal for a badge/pill.\n */\nexport type SyncTone = \"idle\" | \"syncing\" | \"pending\" | \"offline\" | \"error\";\n\n/**\n * Compact status snapshot for a status badge/pill. Prefer this over\n * {@link useOfflineSync} when a component only needs to *display* status and\n * does not trigger flushes itself.\n */\nexport interface SyncStatus {\n /** The dominant tone to render. */\n tone: SyncTone;\n /** Number of mutations still queued. */\n pending: number;\n /** `true` while a flush run is in progress. */\n syncing: boolean;\n /** `true` when the last run was skipped for being offline. */\n offline: boolean;\n /** Message of the most recent delivery failure, or `null`. */\n lastError: string | null;\n}\n\n/**\n * Derive the dominant {@link SyncTone} from an engine snapshot.\n *\n * Precedence: syncing → offline → error → pending → idle. `syncing` wins so an\n * in-flight run always reads as active even while entries remain queued.\n *\n * @param state - The engine {@link SyncState}.\n * @returns The tone to render.\n */\nfunction toneFromState(state: SyncState): SyncTone {\n if (state.phase === \"syncing\") return \"syncing\";\n if (state.phase === \"offline\") return \"offline\";\n if (state.phase === \"error\") return \"error\";\n if (state.pending > 0) return \"pending\";\n return \"idle\";\n}\n\n/**\n * Subscribe to an {@link OfflineSync} engine and return a display-only\n * {@link SyncStatus}. A thin read-only companion to {@link useOfflineSync},\n * intended to feed a `<SyncStatusBadge>` without exposing flush actions.\n *\n * @typeParam TPayload - Record snapshot carried by outbox entries.\n * @param sync - The engine returned by `createOfflineSync`.\n * @returns The compact status snapshot.\n */\nexport function useSyncStatus<TPayload>(sync: OfflineSync<TPayload>): SyncStatus {\n const state = useSyncExternalStore(sync.subscribe, sync.getState, sync.getState);\n return {\n tone: toneFromState(state),\n pending: state.pending,\n syncing: state.phase === \"syncing\",\n offline: state.phase === \"offline\",\n lastError: state.lastError,\n };\n}\n"],"names":["useOfflineSync","sync","options","flushOnMount","flushOnOnline","intervalMs","state","useSyncExternalStore","flushRef","useRef","useEffect","handleOnline","id","toneFromState","useSyncStatus"],"mappings":"yGAkEO,SAASA,EACZC,EACAC,EAAiC,GACH,CAC9B,KAAM,CAAE,aAAAC,EAAe,GAAO,cAAAC,EAAgB,GAAM,WAAAC,EAAa,GAAMH,EAEjEI,EAAQC,EAAAA,qBAAqBN,EAAK,UAAWA,EAAK,SAAUA,EAAK,QAAQ,EAEzEO,EAAWC,EAAAA,OAAOR,EAAK,KAAK,EAClC,OAAAO,EAAS,QAAUP,EAAK,MAExBS,EAAAA,UAAU,IAAM,CACRP,GAAmBK,EAAS,QAAQ,MAAM,CAClD,EAAG,CAACL,CAAY,CAAC,EAEjBO,EAAAA,UAAU,IAAM,CACZ,GAAI,CAACN,GAAiB,OAAO,OAAW,IAAa,OACrD,MAAMO,EAAe,IAAY,CACxBH,EAAS,QAAQ,cAAc,CACxC,EACA,cAAO,iBAAiB,SAAUG,CAAY,EACvC,IAAM,OAAO,oBAAoB,SAAUA,CAAY,CAClE,EAAG,CAACP,CAAa,CAAC,EAElBM,EAAAA,UAAU,IAAM,CACZ,GAAIL,GAAc,GAAK,OAAO,OAAW,IAAa,OACtD,MAAMO,EAAK,OAAO,YAAY,IAAM,CAC3BJ,EAAS,QAAQ,UAAU,CACpC,EAAGH,CAAU,EACb,MAAO,IAAM,OAAO,cAAcO,CAAE,CACxC,EAAG,CAACP,CAAU,CAAC,EAER,CACH,GAAGC,EACH,QAASA,EAAM,QAAU,UACzB,QAASL,EAAK,QACd,MAAOA,EAAK,KAAA,CAEpB,CAmCA,SAASY,EAAcP,EAA4B,CAC/C,OAAIA,EAAM,QAAU,UAAkB,UAClCA,EAAM,QAAU,UAAkB,UAClCA,EAAM,QAAU,QAAgB,QAChCA,EAAM,QAAU,EAAU,UACvB,MACX,CAWO,SAASQ,EAAwBb,EAAyC,CAC7E,MAAMK,EAAQC,EAAAA,qBAAqBN,EAAK,UAAWA,EAAK,SAAUA,EAAK,QAAQ,EAC/E,MAAO,CACH,KAAMY,EAAcP,CAAK,EACzB,QAASA,EAAM,QACf,QAASA,EAAM,QAAU,UACzB,QAASA,EAAM,QAAU,UACzB,UAAWA,EAAM,SAAA,CAEzB"}
@@ -0,0 +1,42 @@
1
+ import { useSyncExternalStore as l, useRef as a, useEffect as o } from "react";
2
+ function g(e, n = {}) {
3
+ const { flushOnMount: u = !1, flushOnOnline: f = !0, intervalMs: i = 0 } = n, s = l(e.subscribe, e.getState, e.getState), t = a(e.flush);
4
+ return t.current = e.flush, o(() => {
5
+ u && t.current("boot");
6
+ }, [u]), o(() => {
7
+ if (!f || typeof window > "u") return;
8
+ const r = () => {
9
+ t.current("online-event");
10
+ };
11
+ return window.addEventListener("online", r), () => window.removeEventListener("online", r);
12
+ }, [f]), o(() => {
13
+ if (i <= 0 || typeof window > "u") return;
14
+ const r = window.setInterval(() => {
15
+ t.current("interval");
16
+ }, i);
17
+ return () => window.clearInterval(r);
18
+ }, [i]), {
19
+ ...s,
20
+ syncing: s.phase === "syncing",
21
+ enqueue: e.enqueue,
22
+ flush: e.flush
23
+ };
24
+ }
25
+ function d(e) {
26
+ return e.phase === "syncing" ? "syncing" : e.phase === "offline" ? "offline" : e.phase === "error" ? "error" : e.pending > 0 ? "pending" : "idle";
27
+ }
28
+ function h(e) {
29
+ const n = l(e.subscribe, e.getState, e.getState);
30
+ return {
31
+ tone: d(n),
32
+ pending: n.pending,
33
+ syncing: n.phase === "syncing",
34
+ offline: n.phase === "offline",
35
+ lastError: n.lastError
36
+ };
37
+ }
38
+ export {
39
+ g as useOfflineSync,
40
+ h as useSyncStatus
41
+ };
42
+ //# sourceMappingURL=use-offline-sync.js.map