@kirill.konshin/utils 0.0.18 → 0.0.20

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 (352) hide show
  1. package/.ctirc +19 -10
  2. package/.storybook/main.ts +1 -20
  3. package/.storybook/preview.ts +1 -16
  4. package/.turbo/turbo-build.log +9 -66
  5. package/CHANGELOG.md +27 -0
  6. package/README.md +6 -0
  7. package/dist/bootstrap/index.d.ts +1 -12
  8. package/dist/bootstrap/index.d.ts.map +1 -1
  9. package/dist/browser/index.d.ts +2 -0
  10. package/dist/browser/index.d.ts.map +1 -0
  11. package/dist/core/index.d.ts +1 -9
  12. package/dist/core/index.d.ts.map +1 -1
  13. package/dist/electron/index.d.ts +1 -2
  14. package/dist/electron/index.d.ts.map +1 -1
  15. package/dist/electron-builder/index.d.ts +1 -2
  16. package/dist/electron-builder/index.d.ts.map +1 -1
  17. package/dist/index.d.ts +13 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +27 -0
  20. package/dist/mui/index.d.ts +1 -4
  21. package/dist/mui/index.d.ts.map +1 -1
  22. package/dist/next/index.d.ts +1 -5
  23. package/dist/next/index.d.ts.map +1 -1
  24. package/dist/node/index.d.ts +2 -0
  25. package/dist/node/index.d.ts.map +1 -0
  26. package/dist/react/index.d.ts +1 -5
  27. package/dist/react/index.d.ts.map +1 -1
  28. package/dist/react-native/index.d.ts +1 -3
  29. package/dist/react-native/index.d.ts.map +1 -1
  30. package/dist/tailwind/index.d.ts +1 -2
  31. package/dist/tailwind/index.d.ts.map +1 -1
  32. package/dist/worker/index.d.ts +2 -0
  33. package/dist/worker/index.d.ts.map +1 -0
  34. package/package.json +41 -99
  35. package/src/bootstrap/index.ts +2 -12
  36. package/src/browser/index.ts +2 -0
  37. package/src/core/index.ts +2 -9
  38. package/src/electron/index.ts +2 -2
  39. package/src/electron-builder/index.ts +2 -2
  40. package/src/index.ts +12 -0
  41. package/src/mui/index.ts +2 -4
  42. package/src/next/index.ts +2 -5
  43. package/src/node/index.ts +2 -0
  44. package/src/react/index.ts +2 -5
  45. package/src/react-native/index.ts +2 -3
  46. package/src/tailwind/index.ts +2 -2
  47. package/src/worker/index.ts +2 -0
  48. package/tsconfig.json +2 -14
  49. package/vite.config.ts +2 -56
  50. package/.turbo/turbo-test.log +0 -171
  51. package/builders/.swcrc +0 -18
  52. package/builders/build.config.ts +0 -11
  53. package/builders/bun.build.js +0 -23
  54. package/builders/package.json +0 -209
  55. package/builders/perf.mjs +0 -63
  56. package/builders/rollup.config.mjs +0 -50
  57. package/builders/rslib.config.ts +0 -26
  58. package/builders/tsconfig.json +0 -21
  59. package/builders/tsup.config.ts +0 -20
  60. package/builders/turbo.json +0 -24
  61. package/builders/vite.config.ts +0 -37
  62. package/demo/worker-demo.ts +0 -73
  63. package/dist/bootstrap/adaptiveContainer.d.ts +0 -3
  64. package/dist/bootstrap/adaptiveContainer.d.ts.map +0 -1
  65. package/dist/bootstrap/adaptiveContainer.js +0 -11
  66. package/dist/bootstrap/adaptiveContainer.js.map +0 -1
  67. package/dist/bootstrap/controls.d.ts +0 -38
  68. package/dist/bootstrap/controls.d.ts.map +0 -1
  69. package/dist/bootstrap/controls.js +0 -78
  70. package/dist/bootstrap/controls.js.map +0 -1
  71. package/dist/bootstrap/controls.stories.d.ts +0 -9
  72. package/dist/bootstrap/controls.stories.d.ts.map +0 -1
  73. package/dist/bootstrap/error.d.ts +0 -7
  74. package/dist/bootstrap/error.d.ts.map +0 -1
  75. package/dist/bootstrap/error.js +0 -32
  76. package/dist/bootstrap/error.js.map +0 -1
  77. package/dist/bootstrap/error.stories.d.ts +0 -8
  78. package/dist/bootstrap/error.stories.d.ts.map +0 -1
  79. package/dist/bootstrap/field.d.ts +0 -9
  80. package/dist/bootstrap/field.d.ts.map +0 -1
  81. package/dist/bootstrap/field.js +0 -29
  82. package/dist/bootstrap/field.js.map +0 -1
  83. package/dist/bootstrap/field.stories.d.ts +0 -8
  84. package/dist/bootstrap/field.stories.d.ts.map +0 -1
  85. package/dist/bootstrap/footer.d.ts +0 -10
  86. package/dist/bootstrap/footer.d.ts.map +0 -1
  87. package/dist/bootstrap/footer.js +0 -40
  88. package/dist/bootstrap/footer.js.map +0 -1
  89. package/dist/bootstrap/globalLoading.d.ts +0 -4
  90. package/dist/bootstrap/globalLoading.d.ts.map +0 -1
  91. package/dist/bootstrap/globalLoading.js +0 -10
  92. package/dist/bootstrap/globalLoading.js.map +0 -1
  93. package/dist/bootstrap/globalLoading.stories.d.ts +0 -7
  94. package/dist/bootstrap/globalLoading.stories.d.ts.map +0 -1
  95. package/dist/bootstrap/index.js +0 -35
  96. package/dist/bootstrap/loading.d.ts +0 -8
  97. package/dist/bootstrap/loading.d.ts.map +0 -1
  98. package/dist/bootstrap/loading.js +0 -18
  99. package/dist/bootstrap/loading.js.map +0 -1
  100. package/dist/bootstrap/loading.stories.d.ts +0 -9
  101. package/dist/bootstrap/loading.stories.d.ts.map +0 -1
  102. package/dist/bootstrap/responsiveHelper.d.ts +0 -7
  103. package/dist/bootstrap/responsiveHelper.d.ts.map +0 -1
  104. package/dist/bootstrap/responsiveHelper.js +0 -46
  105. package/dist/bootstrap/responsiveHelper.js.map +0 -1
  106. package/dist/bootstrap/screen.d.ts +0 -20
  107. package/dist/bootstrap/screen.d.ts.map +0 -1
  108. package/dist/bootstrap/screen.js +0 -79
  109. package/dist/bootstrap/screen.js.map +0 -1
  110. package/dist/bootstrap/screen.stories.d.ts +0 -14
  111. package/dist/bootstrap/screen.stories.d.ts.map +0 -1
  112. package/dist/bootstrap/toaster.d.ts +0 -9
  113. package/dist/bootstrap/toaster.d.ts.map +0 -1
  114. package/dist/bootstrap/toaster.js +0 -37
  115. package/dist/bootstrap/toaster.js.map +0 -1
  116. package/dist/bootstrap/toaster.stories.d.ts +0 -8
  117. package/dist/bootstrap/toaster.stories.d.ts.map +0 -1
  118. package/dist/bootstrap/useModal.d.ts +0 -22
  119. package/dist/bootstrap/useModal.d.ts.map +0 -1
  120. package/dist/bootstrap/useModal.js +0 -50
  121. package/dist/bootstrap/useModal.js.map +0 -1
  122. package/dist/bootstrap/useModal.stories.d.ts +0 -9
  123. package/dist/bootstrap/useModal.stories.d.ts.map +0 -1
  124. package/dist/bootstrap/useWrappedForm.d.ts +0 -14
  125. package/dist/bootstrap/useWrappedForm.d.ts.map +0 -1
  126. package/dist/bootstrap/useWrappedForm.js +0 -32
  127. package/dist/bootstrap/useWrappedForm.js.map +0 -1
  128. package/dist/core/cache.d.ts +0 -120
  129. package/dist/core/cache.d.ts.map +0 -1
  130. package/dist/core/cache.js +0 -107
  131. package/dist/core/cache.js.map +0 -1
  132. package/dist/core/cache.test.d.ts +0 -2
  133. package/dist/core/cache.test.d.ts.map +0 -1
  134. package/dist/core/errors.d.ts +0 -2
  135. package/dist/core/errors.d.ts.map +0 -1
  136. package/dist/core/errors.js +0 -15
  137. package/dist/core/errors.js.map +0 -1
  138. package/dist/core/files.d.ts +0 -3
  139. package/dist/core/files.d.ts.map +0 -1
  140. package/dist/core/files.js +0 -27
  141. package/dist/core/files.js.map +0 -1
  142. package/dist/core/index.js +0 -34
  143. package/dist/core/index.js.map +0 -1
  144. package/dist/core/ls.d.ts +0 -6
  145. package/dist/core/ls.d.ts.map +0 -1
  146. package/dist/core/ls.js +0 -12
  147. package/dist/core/ls.js.map +0 -1
  148. package/dist/core/measure.d.ts +0 -35
  149. package/dist/core/measure.d.ts.map +0 -1
  150. package/dist/core/measure.js +0 -56
  151. package/dist/core/measure.js.map +0 -1
  152. package/dist/core/mutex.d.ts +0 -6
  153. package/dist/core/mutex.d.ts.map +0 -1
  154. package/dist/core/mutex.js +0 -26
  155. package/dist/core/mutex.js.map +0 -1
  156. package/dist/core/worker.d.ts +0 -98
  157. package/dist/core/worker.d.ts.map +0 -1
  158. package/dist/core/worker.js +0 -240
  159. package/dist/core/worker.js.map +0 -1
  160. package/dist/core/worker.test.d.ts +0 -2
  161. package/dist/core/worker.test.d.ts.map +0 -1
  162. package/dist/core/workerUtils.d.ts +0 -3
  163. package/dist/core/workerUtils.d.ts.map +0 -1
  164. package/dist/core/workerUtils.js +0 -31
  165. package/dist/core/workerUtils.js.map +0 -1
  166. package/dist/core/wrpc.d.ts +0 -45
  167. package/dist/core/wrpc.d.ts.map +0 -1
  168. package/dist/core/wrpc.fixture.d.ts +0 -29
  169. package/dist/core/wrpc.fixture.d.ts.map +0 -1
  170. package/dist/core/wrpc.js +0 -242
  171. package/dist/core/wrpc.js.map +0 -1
  172. package/dist/core/wrpc.test.d.ts +0 -1
  173. package/dist/core/wrpc.test.d.ts.map +0 -1
  174. package/dist/electron/createWindow.d.ts +0 -23
  175. package/dist/electron/createWindow.d.ts.map +0 -1
  176. package/dist/electron/createWindow.js +0 -160
  177. package/dist/electron/createWindow.js.map +0 -1
  178. package/dist/electron/index.js +0 -9
  179. package/dist/electron/index.js.map +0 -1
  180. package/dist/electron/updater.d.ts +0 -2
  181. package/dist/electron/updater.d.ts.map +0 -1
  182. package/dist/electron/updater.js +0 -47
  183. package/dist/electron/updater.js.map +0 -1
  184. package/dist/electron-builder/builder.d.ts +0 -8
  185. package/dist/electron-builder/builder.d.ts.map +0 -1
  186. package/dist/electron-builder/builder.js +0 -130
  187. package/dist/electron-builder/builder.js.map +0 -1
  188. package/dist/electron-builder/images.d.ts +0 -7
  189. package/dist/electron-builder/images.d.ts.map +0 -1
  190. package/dist/electron-builder/images.js +0 -25
  191. package/dist/electron-builder/images.js.map +0 -1
  192. package/dist/electron-builder/index.js +0 -7
  193. package/dist/electron-builder/index.js.map +0 -1
  194. package/dist/mui/formControlFieldset.d.ts +0 -5
  195. package/dist/mui/formControlFieldset.d.ts.map +0 -1
  196. package/dist/mui/formControlFieldset.js +0 -28
  197. package/dist/mui/formControlFieldset.js.map +0 -1
  198. package/dist/mui/formControlFieldset.stories.d.ts +0 -7
  199. package/dist/mui/formControlFieldset.stories.d.ts.map +0 -1
  200. package/dist/mui/formLabelLegend.d.ts +0 -4
  201. package/dist/mui/formLabelLegend.d.ts.map +0 -1
  202. package/dist/mui/formLabelLegend.js +0 -12
  203. package/dist/mui/formLabelLegend.js.map +0 -1
  204. package/dist/mui/genericControl.d.ts +0 -7
  205. package/dist/mui/genericControl.d.ts.map +0 -1
  206. package/dist/mui/genericControl.js +0 -21
  207. package/dist/mui/genericControl.js.map +0 -1
  208. package/dist/mui/index.js +0 -11
  209. package/dist/mui/index.js.map +0 -1
  210. package/dist/mui/readOnly.d.ts +0 -6
  211. package/dist/mui/readOnly.d.ts.map +0 -1
  212. package/dist/mui/readOnly.js +0 -7
  213. package/dist/mui/readOnly.js.map +0 -1
  214. package/dist/next/appLink.d.ts +0 -8
  215. package/dist/next/appLink.d.ts.map +0 -1
  216. package/dist/next/appLink.js +0 -34
  217. package/dist/next/appLink.js.map +0 -1
  218. package/dist/next/index.js +0 -15
  219. package/dist/next/index.js.map +0 -1
  220. package/dist/next/measure.d.ts +0 -15
  221. package/dist/next/measure.d.ts.map +0 -1
  222. package/dist/next/measure.js +0 -9
  223. package/dist/next/measure.js.map +0 -1
  224. package/dist/next/noSSR.d.ts +0 -5
  225. package/dist/next/noSSR.d.ts.map +0 -1
  226. package/dist/next/noSSR.js +0 -15
  227. package/dist/next/noSSR.js.map +0 -1
  228. package/dist/next/redirect.d.ts +0 -6
  229. package/dist/next/redirect.d.ts.map +0 -1
  230. package/dist/next/useIsInner.d.ts +0 -3
  231. package/dist/next/useIsInner.d.ts.map +0 -1
  232. package/dist/next/useIsInner.js +0 -15
  233. package/dist/next/useIsInner.js.map +0 -1
  234. package/dist/react/apiCall.d.ts +0 -6
  235. package/dist/react/apiCall.d.ts.map +0 -1
  236. package/dist/react/apiCall.js +0 -24
  237. package/dist/react/apiCall.js.map +0 -1
  238. package/dist/react/form/client.d.ts +0 -7
  239. package/dist/react/form/client.d.ts.map +0 -1
  240. package/dist/react/form/client.js +0 -46
  241. package/dist/react/form/client.js.map +0 -1
  242. package/dist/react/form/form.d.ts +0 -45
  243. package/dist/react/form/form.d.ts.map +0 -1
  244. package/dist/react/form/form.js +0 -69
  245. package/dist/react/form/form.js.map +0 -1
  246. package/dist/react/form/index.d.ts +0 -3
  247. package/dist/react/form/index.d.ts.map +0 -1
  248. package/dist/react/index.js +0 -25
  249. package/dist/react/index.js.map +0 -1
  250. package/dist/react/keyboard.d.ts +0 -11
  251. package/dist/react/keyboard.d.ts.map +0 -1
  252. package/dist/react/keyboard.js +0 -38
  253. package/dist/react/keyboard.js.map +0 -1
  254. package/dist/react/useFetch.d.ts +0 -2
  255. package/dist/react/useFetch.d.ts.map +0 -1
  256. package/dist/react/useFetch.js +0 -20
  257. package/dist/react/useFetch.js.map +0 -1
  258. package/dist/react/useFetcher.d.ts +0 -10
  259. package/dist/react/useFetcher.d.ts.map +0 -1
  260. package/dist/react/useFetcher.js +0 -43
  261. package/dist/react/useFetcher.js.map +0 -1
  262. package/dist/react-native/index.js +0 -9
  263. package/dist/react-native/index.js.map +0 -1
  264. package/dist/react-native/share.d.ts +0 -9
  265. package/dist/react-native/share.d.ts.map +0 -1
  266. package/dist/react-native/share.js +0 -23
  267. package/dist/react-native/share.js.map +0 -1
  268. package/dist/react-native/update.d.ts +0 -4
  269. package/dist/react-native/update.d.ts.map +0 -1
  270. package/dist/react-native/update.js +0 -40
  271. package/dist/react-native/update.js.map +0 -1
  272. package/dist/react-native/useAppState.d.ts +0 -2
  273. package/dist/react-native/useAppState.d.ts.map +0 -1
  274. package/dist/react-native/useAppState.js +0 -18
  275. package/dist/react-native/useAppState.js.map +0 -1
  276. package/dist/tailwind/fullpage.d.ts +0 -7
  277. package/dist/tailwind/fullpage.d.ts.map +0 -1
  278. package/dist/tailwind/fullpage.js +0 -14
  279. package/dist/tailwind/fullpage.js.map +0 -1
  280. package/dist/tailwind/index.js +0 -7
  281. package/dist/tailwind/index.js.map +0 -1
  282. package/dist/tailwind/responsiveHelper.d.ts +0 -2
  283. package/dist/tailwind/responsiveHelper.d.ts.map +0 -1
  284. package/dist/tailwind/responsiveHelper.js +0 -16
  285. package/dist/tailwind/responsiveHelper.js.map +0 -1
  286. package/src/bootstrap/adaptiveContainer.tsx +0 -12
  287. package/src/bootstrap/controls.stories.tsx +0 -62
  288. package/src/bootstrap/controls.tsx +0 -119
  289. package/src/bootstrap/error.stories.tsx +0 -34
  290. package/src/bootstrap/error.tsx +0 -40
  291. package/src/bootstrap/field.stories.tsx +0 -42
  292. package/src/bootstrap/field.tsx +0 -35
  293. package/src/bootstrap/footer.tsx +0 -49
  294. package/src/bootstrap/globalLoading.stories.tsx +0 -25
  295. package/src/bootstrap/globalLoading.tsx +0 -17
  296. package/src/bootstrap/loading.stories.tsx +0 -35
  297. package/src/bootstrap/loading.tsx +0 -22
  298. package/src/bootstrap/main.scss +0 -86
  299. package/src/bootstrap/responsiveHelper.tsx +0 -50
  300. package/src/bootstrap/screen.stories.tsx +0 -160
  301. package/src/bootstrap/screen.tsx +0 -144
  302. package/src/bootstrap/toaster.stories.tsx +0 -32
  303. package/src/bootstrap/toaster.tsx +0 -38
  304. package/src/bootstrap/useModal.stories.tsx +0 -51
  305. package/src/bootstrap/useModal.tsx +0 -88
  306. package/src/bootstrap/useWrappedForm.ts +0 -40
  307. package/src/core/README.md +0 -91
  308. package/src/core/cache.test.ts +0 -121
  309. package/src/core/cache.ts +0 -239
  310. package/src/core/errors.ts +0 -14
  311. package/src/core/files.ts +0 -25
  312. package/src/core/ls.ts +0 -11
  313. package/src/core/measure.ts +0 -61
  314. package/src/core/mutex.ts +0 -22
  315. package/src/core/worker.test.ts +0 -197
  316. package/src/core/worker.ts +0 -340
  317. package/src/core/workerUtils.ts +0 -32
  318. package/src/core/wrpc.fixture.ts +0 -72
  319. package/src/core/wrpc.test.ts +0 -225
  320. package/src/core/wrpc.ts +0 -359
  321. package/src/electron/README.md +0 -13
  322. package/src/electron/createWindow.ts +0 -234
  323. package/src/electron/updater.ts +0 -54
  324. package/src/electron-builder/builder.ts +0 -150
  325. package/src/electron-builder/images.ts +0 -33
  326. package/src/mui/README.md +0 -3
  327. package/src/mui/formControlFieldset.stories.tsx +0 -71
  328. package/src/mui/formControlFieldset.tsx +0 -26
  329. package/src/mui/formLabelLegend.tsx +0 -11
  330. package/src/mui/genericControl.tsx +0 -20
  331. package/src/mui/readOnly.tsx +0 -6
  332. package/src/next/appLink.tsx +0 -40
  333. package/src/next/measure.ts +0 -7
  334. package/src/next/noSSR.tsx +0 -17
  335. package/src/next/redirect.tsx +0 -13
  336. package/src/next/useIsInner.ts +0 -13
  337. package/src/react/apiCall.ts +0 -25
  338. package/src/react/form/client.tsx +0 -62
  339. package/src/react/form/form.tsx +0 -129
  340. package/src/react/form/index.ts +0 -2
  341. package/src/react/keyboard.tsx +0 -49
  342. package/src/react/useFetch.ts +0 -29
  343. package/src/react/useFetcher.ts +0 -49
  344. package/src/react-native/share.ts +0 -31
  345. package/src/react-native/update.tsx +0 -40
  346. package/src/react-native/useAppState.ts +0 -18
  347. package/src/tailwind/README.md +0 -8
  348. package/src/tailwind/fullpage.tsx +0 -11
  349. package/src/tailwind/responsiveHelper.tsx +0 -16
  350. package/src-todo/auth0.tsx +0 -177
  351. package/vite.exports.ts +0 -121
  352. /package/dist/{bootstrap/index.js.map → index.js.map} +0 -0
@@ -1,38 +0,0 @@
1
- "use client";
2
- import { jsx } from "react/jsx-runtime";
3
- import { createContext, useState, useMemo, useContext, useEffect } from "react";
4
- const isCtrlOrMeta = (e) => e.metaKey || e.ctrlKey;
5
- const EVENT = "keydown";
6
- const HotkeysContext = createContext(null);
7
- const HotkeysProvider = ({ children }) => {
8
- const [enabled, setEnabled] = useState(true);
9
- const control = useMemo(() => ({ enabled, setEnabled }), [enabled, setEnabled]);
10
- return /* @__PURE__ */ jsx(HotkeysContext.Provider, { value: control, children });
11
- };
12
- const useHotkeys = (hotkeys) => {
13
- const { enabled } = useContext(HotkeysContext);
14
- useEffect(() => {
15
- if (typeof document === "undefined" || !enabled) {
16
- return;
17
- }
18
- const listeners = (e) => {
19
- if (!isCtrlOrMeta(e)) return;
20
- for (const [code, callback] of Object.entries(hotkeys)) {
21
- if (e.code === code) {
22
- callback(e);
23
- return;
24
- }
25
- }
26
- };
27
- window.addEventListener(EVENT, listeners, true);
28
- return () => {
29
- window.removeEventListener(EVENT, listeners);
30
- };
31
- }, [hotkeys, enabled]);
32
- };
33
- export {
34
- HotkeysContext,
35
- HotkeysProvider,
36
- useHotkeys
37
- };
38
- //# sourceMappingURL=keyboard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keyboard.js","sources":["../../src/react/keyboard.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, createContext, useMemo, useState, Dispatch, SetStateAction, useContext } from 'react';\n\nconst isCtrlOrMeta = (e: KeyboardEvent) => e.metaKey || e.ctrlKey;\n\nconst EVENT = 'keydown';\n\nexport type Hotkeys = Record<KeyboardEvent['code'], (e: KeyboardEvent) => void>;\n\nexport const HotkeysContext = createContext<{\n enabled: boolean;\n setEnabled: Dispatch<SetStateAction<boolean>>;\n}>(null as never);\n\nexport const HotkeysProvider = ({ children }) => {\n const [enabled, setEnabled] = useState(true);\n\n const control = useMemo(() => ({ enabled, setEnabled }), [enabled, setEnabled]);\n\n return <HotkeysContext.Provider value={control}>{children}</HotkeysContext.Provider>;\n};\n\nexport const useHotkeys = (hotkeys: Hotkeys) => {\n const { enabled } = useContext(HotkeysContext);\n\n useEffect(() => {\n if (typeof document === 'undefined' || !enabled) {\n return;\n }\n\n const listeners = (e: KeyboardEvent) => {\n if (!isCtrlOrMeta(e)) return;\n\n for (const [code, callback] of Object.entries(hotkeys)) {\n if (e.code === code) {\n callback(e);\n return;\n }\n }\n };\n\n window.addEventListener(EVENT, listeners, true);\n\n return () => {\n window.removeEventListener(EVENT, listeners);\n };\n }, [hotkeys, enabled]);\n};\n"],"names":[],"mappings":";;;AAIA,MAAM,eAAe,CAAC,MAAqB,EAAE,WAAW,EAAE;AAE1D,MAAM,QAAQ;AAID,MAAA,iBAAiB,cAG3B,IAAa;AAET,MAAM,kBAAkB,CAAC,EAAE,eAAe;AAC7C,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,IAAI;AAErC,QAAA,UAAU,QAAQ,OAAO,EAAE,SAAS,eAAe,CAAC,SAAS,UAAU,CAAC;AAE9E,6BAAQ,eAAe,UAAf,EAAwB,OAAO,SAAU,UAAS;AAC9D;AAEa,MAAA,aAAa,CAAC,YAAqB;AAC5C,QAAM,EAAE,QAAA,IAAY,WAAW,cAAc;AAE7C,YAAU,MAAM;AACZ,QAAI,OAAO,aAAa,eAAe,CAAC,SAAS;AAC7C;AAAA,IAAA;AAGE,UAAA,YAAY,CAAC,MAAqB;AAChC,UAAA,CAAC,aAAa,CAAC,EAAG;AAEtB,iBAAW,CAAC,MAAM,QAAQ,KAAK,OAAO,QAAQ,OAAO,GAAG;AAChD,YAAA,EAAE,SAAS,MAAM;AACjB,mBAAS,CAAC;AACV;AAAA,QAAA;AAAA,MACJ;AAAA,IAER;AAEO,WAAA,iBAAiB,OAAO,WAAW,IAAI;AAE9C,WAAO,MAAM;AACF,aAAA,oBAAoB,OAAO,SAAS;AAAA,IAC/C;AAAA,EAAA,GACD,CAAC,SAAS,OAAO,CAAC;AACzB;"}
@@ -1,2 +0,0 @@
1
- export declare function useFetch<R>(fn: (...args: any[]) => Promise<R>, defaultValue?: R | null): [R | null, typeof fn, boolean, Error | undefined];
2
- //# sourceMappingURL=useFetch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFetch.d.ts","sourceRoot":"","sources":["../../src/react/useFetch.ts"],"names":[],"mappings":"AAOA,wBAAgB,QAAQ,CAAC,CAAC,EACtB,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,EAClC,YAAY,GAAE,CAAC,GAAG,IAAW,GAC9B,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,GAAG,SAAS,CAAC,CAkBnD"}
@@ -1,20 +0,0 @@
1
- "use client";
2
- import { useTransition, useState, useCallback } from "react";
3
- function useFetch(fn, defaultValue = null) {
4
- const [isPending, startTransition] = useTransition();
5
- const [data, setData] = useState(defaultValue);
6
- const [error, setError] = useState();
7
- const actionFn = useCallback(
8
- (...args) => {
9
- const promise = fn(...args);
10
- startTransition(() => promise.then(setData).catch(setError));
11
- return promise;
12
- },
13
- [fn]
14
- );
15
- return [data, actionFn, isPending, error];
16
- }
17
- export {
18
- useFetch
19
- };
20
- //# sourceMappingURL=useFetch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFetch.js","sources":["../../src/react/useFetch.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useState, useTransition } from 'react';\n\n//TODO useFetch https://use-http.com\n//TODO SWR?\n//TODO Tanstack Query?\nexport function useFetch<R>(\n fn: (...args: any[]) => Promise<R>,\n defaultValue: R | null = null,\n): [R | null, typeof fn, boolean, Error | undefined] {\n // An async function was passed to useActionState, but it was dispatched outside of an action context.\n // This is likely not what you intended. Either pass the dispatch function to an `action` prop, or dispatch manually inside `startTransition`\n const [isPending, startTransition] = useTransition();\n const [data, setData] = useState<R | null>(defaultValue);\n const [error, setError] = useState<Error>();\n\n const actionFn = useCallback(\n (...args: Parameters<typeof fn>) => {\n const promise = fn(...args);\n // https://react.dev/reference/react/useTransition#react-doesnt-treat-my-state-update-after-await-as-a-transition\n startTransition(() => promise.then(setData).catch(setError)); //FIXME sub-chain...\n return promise;\n },\n [fn],\n );\n\n return [data, actionFn, isPending, error];\n}\n"],"names":[],"mappings":";;AAOgB,SAAA,SACZ,IACA,eAAyB,MACwB;AAGjD,QAAM,CAAC,WAAW,eAAe,IAAI,cAAc;AACnD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAmB,YAAY;AACvD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAgB;AAE1C,QAAM,WAAW;AAAA,IACb,IAAI,SAAgC;AAC1B,YAAA,UAAU,GAAG,GAAG,IAAI;AAE1B,sBAAgB,MAAM,QAAQ,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AACpD,aAAA;AAAA,IACX;AAAA,IACA,CAAC,EAAE;AAAA,EACP;AAEA,SAAO,CAAC,MAAM,UAAU,WAAW,KAAK;AAC5C;"}
@@ -1,10 +0,0 @@
1
- export declare function useFetcher<T = any>(cb: any, { fetchOnMount, onError }?: {
2
- fetchOnMount?: boolean;
3
- onError?: (e: Error) => void;
4
- }): {
5
- loading: boolean;
6
- error: Error | null;
7
- data: T | null;
8
- trigger: (...args: any[]) => Promise<any>;
9
- };
10
- //# sourceMappingURL=useFetcher.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFetcher.d.ts","sourceRoot":"","sources":["../../src/react/useFetcher.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,CAAC,GAAG,GAAG,EAC9B,EAAE,KAAA,EAEF,EAAE,YAAoB,EAAE,OAAO,EAAE,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;CAAO;;;;;EA2CnG"}
@@ -1,43 +0,0 @@
1
- import { useState, useRef, useCallback, useEffect } from "react";
2
- function useFetcher(cb, { fetchOnMount = false, onError } = {}) {
3
- const [loading, setLoading] = useState(fetchOnMount);
4
- const [error, setError] = useState(null);
5
- const [data, setData] = useState(null);
6
- const isMounted = useRef(false);
7
- const trigger = useCallback(
8
- async (...args) => {
9
- try {
10
- setLoading(true);
11
- setError(null);
12
- const res = await cb(args);
13
- if (!isMounted.current) return;
14
- setData(res);
15
- return res;
16
- } catch (e) {
17
- console.error("Fetch failed", e);
18
- if (!isMounted.current) return;
19
- setError(e);
20
- onError == null ? void 0 : onError(e);
21
- } finally {
22
- if (isMounted.current) setLoading(false);
23
- }
24
- },
25
- [cb, onError]
26
- );
27
- useEffect(() => {
28
- if (fetchOnMount) {
29
- trigger().catch((e) => console.error("Fetch on mount failed", e));
30
- }
31
- }, [fetchOnMount, cb, trigger]);
32
- useEffect(() => {
33
- isMounted.current = true;
34
- return () => {
35
- isMounted.current = false;
36
- };
37
- });
38
- return { loading, error, data, trigger };
39
- }
40
- export {
41
- useFetcher
42
- };
43
- //# sourceMappingURL=useFetcher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFetcher.js","sources":["../../src/react/useFetcher.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport function useFetcher<T = any>(\n cb,\n\n { fetchOnMount = false, onError }: { fetchOnMount?: boolean; onError?: (e: Error) => void } = {},\n) {\n const [loading, setLoading] = useState(fetchOnMount);\n const [error, setError] = useState<Error | null>(null);\n const [data, setData] = useState<T | null>(null);\n\n const isMounted = useRef(false);\n\n const trigger = useCallback(\n async (...args) => {\n try {\n setLoading(true);\n setError(null);\n const res = await cb(args);\n if (!isMounted.current) return;\n setData(res);\n return res;\n } catch (e) {\n console.error('Fetch failed', e);\n if (!isMounted.current) return;\n setError(e);\n (onError as any)?.(e);\n } finally {\n if (isMounted.current) setLoading(false);\n }\n },\n [cb, onError],\n );\n\n useEffect(() => {\n if (fetchOnMount) {\n trigger().catch((e) => console.error('Fetch on mount failed', e)); // catch actually will never happen\n }\n }, [fetchOnMount, cb, trigger]);\n\n useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n });\n\n return { loading, error, data, trigger };\n}\n"],"names":[],"mappings":";AAEgB,SAAA,WACZ,IAEA,EAAE,eAAe,OAAO,QAAQ,IAA8D,IAChG;AACE,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,YAAY;AACnD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAuB,IAAI;AACrD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAmB,IAAI;AAEzC,QAAA,YAAY,OAAO,KAAK;AAE9B,QAAM,UAAU;AAAA,IACZ,UAAU,SAAS;AACX,UAAA;AACA,mBAAW,IAAI;AACf,iBAAS,IAAI;AACP,cAAA,MAAM,MAAM,GAAG,IAAI;AACrB,YAAA,CAAC,UAAU,QAAS;AACxB,gBAAQ,GAAG;AACJ,eAAA;AAAA,eACF,GAAG;AACA,gBAAA,MAAM,gBAAgB,CAAC;AAC3B,YAAA,CAAC,UAAU,QAAS;AACxB,iBAAS,CAAC;AACT,2CAAkB;AAAA,MAAC,UACtB;AACM,YAAA,UAAU,QAAS,YAAW,KAAK;AAAA,MAAA;AAAA,IAE/C;AAAA,IACA,CAAC,IAAI,OAAO;AAAA,EAChB;AAEA,YAAU,MAAM;AACZ,QAAI,cAAc;AACN,cAAA,EAAE,MAAM,CAAC,MAAM,QAAQ,MAAM,yBAAyB,CAAC,CAAC;AAAA,IAAA;AAAA,EAErE,GAAA,CAAC,cAAc,IAAI,OAAO,CAAC;AAE9B,YAAU,MAAM;AACZ,cAAU,UAAU;AACpB,WAAO,MAAM;AACT,gBAAU,UAAU;AAAA,IACxB;AAAA,EAAA,CACH;AAED,SAAO,EAAE,SAAS,OAAO,MAAM,QAAQ;AAC3C;"}
@@ -1,9 +0,0 @@
1
- import { shareDialog } from "./share.js";
2
- import { Update } from "./update.js";
3
- import { useAppState } from "./useAppState.js";
4
- export {
5
- Update,
6
- shareDialog,
7
- useAppState
8
- };
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -1,9 +0,0 @@
1
- /**
2
- * data:text/plain;base64,W29iamV
3
- * @see https://stackoverflow.com/questions/69738812/problem-to-generate-pdf-from-a-blob-in-an-expo-app-using-filesystem
4
- * @param base64
5
- * @param fileName
6
- * @returns {Promise<void>}
7
- */
8
- export declare const shareDialog: (base64: any, fileName: any) => Promise<void>;
9
- //# sourceMappingURL=share.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"share.d.ts","sourceRoot":"","sources":["../../src/react-native/share.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,+CAoBvB,CAAC"}
@@ -1,23 +0,0 @@
1
- import * as FileSystem from "expo-file-system";
2
- import * as Sharing from "expo-sharing";
3
- const shareDialog = async (base64, fileName) => {
4
- const path = `${FileSystem.documentDirectory}/${fileName}`;
5
- try {
6
- if (!await Sharing.isAvailableAsync()) throw new Error("Sharing is not available");
7
- const [header, buffer] = base64.split(",");
8
- const [, mimeTypeStr] = header.split(":");
9
- const [mimeType] = mimeTypeStr.split(";");
10
- await FileSystem.writeAsStringAsync(`${path}`, buffer, {
11
- encoding: FileSystem.EncodingType.Base64
12
- });
13
- await Sharing.shareAsync(path, { mimeType, UTI: fileName, dialogTitle: "Save or share document" });
14
- } catch (error) {
15
- alert("Sharing failed: " + error.message);
16
- } finally {
17
- await FileSystem.deleteAsync(path);
18
- }
19
- };
20
- export {
21
- shareDialog
22
- };
23
- //# sourceMappingURL=share.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"share.js","sources":["../../src/react-native/share.ts"],"sourcesContent":["import * as FileSystem from 'expo-file-system';\nimport * as Sharing from 'expo-sharing';\n\n/**\n * data:text/plain;base64,W29iamV\n * @see https://stackoverflow.com/questions/69738812/problem-to-generate-pdf-from-a-blob-in-an-expo-app-using-filesystem\n * @param base64\n * @param fileName\n * @returns {Promise<void>}\n */\nexport const shareDialog = async (base64, fileName) => {\n const path = `${FileSystem.documentDirectory}/${fileName}`;\n\n try {\n if (!(await Sharing.isAvailableAsync())) throw new Error('Sharing is not available');\n\n const [header, buffer] = base64.split(',');\n const [, mimeTypeStr] = header.split(':');\n const [mimeType] = mimeTypeStr.split(';');\n\n await FileSystem.writeAsStringAsync(`${path}`, buffer, {\n encoding: FileSystem.EncodingType.Base64,\n });\n\n await Sharing.shareAsync(path, { mimeType, UTI: fileName, dialogTitle: 'Save or share document' });\n } catch (error) {\n alert('Sharing failed: ' + error.message);\n } finally {\n await FileSystem.deleteAsync(path);\n }\n};\n"],"names":[],"mappings":";;AAUa,MAAA,cAAc,OAAO,QAAQ,aAAa;AACnD,QAAM,OAAO,GAAG,WAAW,iBAAiB,IAAI,QAAQ;AAEpD,MAAA;AACI,QAAA,CAAE,MAAM,QAAQ,mBAA2B,OAAA,IAAI,MAAM,0BAA0B;AAEnF,UAAM,CAAC,QAAQ,MAAM,IAAI,OAAO,MAAM,GAAG;AACzC,UAAM,CAAG,EAAA,WAAW,IAAI,OAAO,MAAM,GAAG;AACxC,UAAM,CAAC,QAAQ,IAAI,YAAY,MAAM,GAAG;AAExC,UAAM,WAAW,mBAAmB,GAAG,IAAI,IAAI,QAAQ;AAAA,MACnD,UAAU,WAAW,aAAa;AAAA,IAAA,CACrC;AAEK,UAAA,QAAQ,WAAW,MAAM,EAAE,UAAU,KAAK,UAAU,aAAa,0BAA0B;AAAA,WAC5F,OAAO;AACN,UAAA,qBAAqB,MAAM,OAAO;AAAA,EAAA,UAC1C;AACQ,UAAA,WAAW,YAAY,IAAI;AAAA,EAAA;AAEzC;"}
@@ -1,4 +0,0 @@
1
- export declare function Update({ children }: {
2
- children: any;
3
- }): any;
4
- //# sourceMappingURL=update.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/react-native/update.tsx"],"names":[],"mappings":"AAIA,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE;;CAAA,OAmClC"}
@@ -1,40 +0,0 @@
1
- import { jsxs } from "react/jsx-runtime";
2
- import * as Updates from "expo-updates";
3
- import { useState, useEffect } from "react";
4
- import { Text } from "react-native";
5
- function Update({ children }) {
6
- const [updating, setUpdating] = useState(true);
7
- useEffect(() => {
8
- (async () => {
9
- try {
10
- if (__DEV__) {
11
- setUpdating(false);
12
- return;
13
- }
14
- const update = await Updates.checkForUpdateAsync();
15
- if (!update.isAvailable) {
16
- setUpdating(false);
17
- return;
18
- }
19
- await Updates.fetchUpdateAsync();
20
- alert("Update is available. App will reload.");
21
- await Updates.reloadAsync();
22
- } catch (error) {
23
- alert(`Error fetching latest Expo update: ${error}`);
24
- setUpdating(false);
25
- }
26
- })();
27
- });
28
- if (updating) {
29
- return /* @__PURE__ */ jsxs(Text, { children: [
30
- "Checking for updates (",
31
- Updates.channel,
32
- ")..."
33
- ] });
34
- }
35
- return children;
36
- }
37
- export {
38
- Update
39
- };
40
- //# sourceMappingURL=update.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.js","sources":["../../src/react-native/update.tsx"],"sourcesContent":["import * as Updates from 'expo-updates';\nimport { useEffect, useState } from 'react';\nimport { Text } from 'react-native';\n\nexport function Update({ children }) {\n //FIXME useUpdates https://blog.expo.dev/feature-preview-updates-js-api-for-expo-updates-3b92beb40dab\n const [updating, setUpdating] = useState(true);\n\n useEffect(() => {\n (async () => {\n try {\n if (__DEV__) {\n setUpdating(false);\n return;\n }\n\n const update = await Updates.checkForUpdateAsync();\n\n if (!update.isAvailable) {\n setUpdating(false);\n return;\n }\n\n await Updates.fetchUpdateAsync();\n alert('Update is available. App will reload.');\n await Updates.reloadAsync();\n } catch (error) {\n // You can also add an alert() to see the error message in case of an error when fetching updates.\n alert(`Error fetching latest Expo update: ${error}`);\n setUpdating(false);\n }\n })();\n });\n\n if (updating) {\n return <Text>Checking for updates ({Updates.channel})...</Text>;\n }\n\n return children;\n}\n"],"names":[],"mappings":";;;;AAIgB,SAAA,OAAO,EAAE,YAAY;AAEjC,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,IAAI;AAE7C,YAAU,MAAM;AACZ,KAAC,YAAY;AACL,UAAA;AACA,YAAI,SAAS;AACT,sBAAY,KAAK;AACjB;AAAA,QAAA;AAGE,cAAA,SAAS,MAAM,QAAQ,oBAAoB;AAE7C,YAAA,CAAC,OAAO,aAAa;AACrB,sBAAY,KAAK;AACjB;AAAA,QAAA;AAGJ,cAAM,QAAQ,iBAAiB;AAC/B,cAAM,uCAAuC;AAC7C,cAAM,QAAQ,YAAY;AAAA,eACrB,OAAO;AAEN,cAAA,sCAAsC,KAAK,EAAE;AACnD,oBAAY,KAAK;AAAA,MAAA;AAAA,IACrB,GACD;AAAA,EAAA,CACN;AAED,MAAI,UAAU;AACV,gCAAQ,MAAK,EAAA,UAAA;AAAA,MAAA;AAAA,MAAuB,QAAQ;AAAA,MAAQ;AAAA,IAAA,GAAI;AAAA,EAAA;AAGrD,SAAA;AACX;"}
@@ -1,2 +0,0 @@
1
- export declare function useAppState(): "active" | "unknown" | "background" | "inactive" | "extension";
2
- //# sourceMappingURL=useAppState.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAppState.d.ts","sourceRoot":"","sources":["../../src/react-native/useAppState.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,mEAc1B"}
@@ -1,18 +0,0 @@
1
- import { useState, useEffect } from "react";
2
- import { AppState } from "react-native";
3
- function useAppState() {
4
- const [appState, setAppState] = useState(AppState.currentState);
5
- useEffect(() => {
6
- const subscription = AppState.addEventListener("change", (nextAppState) => {
7
- setAppState(nextAppState);
8
- });
9
- return () => {
10
- subscription.remove();
11
- };
12
- }, []);
13
- return appState;
14
- }
15
- export {
16
- useAppState
17
- };
18
- //# sourceMappingURL=useAppState.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAppState.js","sources":["../../src/react-native/useAppState.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { AppState } from 'react-native';\n\nexport function useAppState() {\n const [appState, setAppState] = useState(AppState.currentState);\n\n useEffect(() => {\n const subscription = AppState.addEventListener('change', (nextAppState) => {\n setAppState(nextAppState);\n });\n\n return () => {\n subscription.remove();\n };\n }, []);\n\n return appState;\n}\n"],"names":[],"mappings":";;AAGO,SAAS,cAAc;AAC1B,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,SAAS,YAAY;AAE9D,YAAU,MAAM;AACZ,UAAM,eAAe,SAAS,iBAAiB,UAAU,CAAC,iBAAiB;AACvE,kBAAY,YAAY;AAAA,IAAA,CAC3B;AAED,WAAO,MAAM;AACT,mBAAa,OAAO;AAAA,IACxB;AAAA,EACJ,GAAG,EAAE;AAEE,SAAA;AACX;"}
@@ -1,7 +0,0 @@
1
- export declare const Fullpage: ({ divRef, className, children, ...props }: {
2
- [x: string]: any;
3
- divRef?: null | undefined;
4
- className?: string | undefined;
5
- children: any;
6
- }) => import("react/jsx-runtime").JSX.Element;
7
- //# sourceMappingURL=fullpage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fullpage.d.ts","sourceRoot":"","sources":["../../src/tailwind/fullpage.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;;;;;6CAQpB,CAAC"}
@@ -1,14 +0,0 @@
1
- import { jsx } from "react/jsx-runtime";
2
- const Fullpage = ({ divRef = null, className = "", children, ...props }) => /* @__PURE__ */ jsx(
3
- "div",
4
- {
5
- ref: divRef,
6
- ...props,
7
- className: `container h-screen flex flex-col justify-center items-center ${className}`,
8
- children
9
- }
10
- );
11
- export {
12
- Fullpage
13
- };
14
- //# sourceMappingURL=fullpage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fullpage.js","sources":["../../src/tailwind/fullpage.tsx"],"sourcesContent":["import React from 'react';\n\nexport const Fullpage = ({ divRef = null, className = '', children, ...props }) => (\n <div\n ref={divRef}\n {...props}\n className={`container h-screen flex flex-col justify-center items-center ${className}`}\n >\n {children}\n </div>\n);\n"],"names":[],"mappings":";AAEa,MAAA,WAAW,CAAC,EAAE,SAAS,MAAM,YAAY,IAAI,UAAU,GAAG,MAAA,MACnE;AAAA,EAAC;AAAA,EAAA;AAAA,IACG,KAAK;AAAA,IACJ,GAAG;AAAA,IACJ,WAAW,gEAAgE,SAAS;AAAA,IAEnF;AAAA,EAAA;AACL;"}
@@ -1,7 +0,0 @@
1
- import { Fullpage } from "./fullpage.js";
2
- import { ResponsiveHelperTW } from "./responsiveHelper.js";
3
- export {
4
- Fullpage,
5
- ResponsiveHelperTW
6
- };
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -1,2 +0,0 @@
1
- export declare function ResponsiveHelperTW(): import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=responsiveHelper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"responsiveHelper.d.ts","sourceRoot":"","sources":["../../src/tailwind/responsiveHelper.tsx"],"names":[],"mappings":"AAIA,wBAAgB,kBAAkB,4CAWjC"}
@@ -1,16 +0,0 @@
1
- "use client";
2
- import { jsxs, jsx } from "react/jsx-runtime";
3
- function ResponsiveHelperTW() {
4
- return /* @__PURE__ */ jsxs("span", { className: "fixed bottom-0 right-2 z-30 leading-none text-xs", children: [
5
- /* @__PURE__ */ jsx("small", { className: "hidden xs:max-sm:block", children: "XS" }),
6
- /* @__PURE__ */ jsx("small", { className: "hidden sm:max-md:block", children: "SM" }),
7
- /* @__PURE__ */ jsx("small", { className: "hidden md:max-lg:block", children: "MD" }),
8
- /* @__PURE__ */ jsx("small", { className: "hidden lg:max-xl:block", children: "LG" }),
9
- /* @__PURE__ */ jsx("small", { className: "hidden xl:max-2xl:block", children: "XL" }),
10
- /* @__PURE__ */ jsx("small", { className: "hidden 2xl:block", children: "XXL" })
11
- ] });
12
- }
13
- export {
14
- ResponsiveHelperTW
15
- };
16
- //# sourceMappingURL=responsiveHelper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"responsiveHelper.js","sources":["../../src/tailwind/responsiveHelper.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\n\nexport function ResponsiveHelperTW() {\n return (\n <span className=\"fixed bottom-0 right-2 z-30 leading-none text-xs\">\n <small className=\"hidden xs:max-sm:block\">XS</small>\n <small className=\"hidden sm:max-md:block\">SM</small>\n <small className=\"hidden md:max-lg:block\">MD</small>\n <small className=\"hidden lg:max-xl:block\">LG</small>\n <small className=\"hidden xl:max-2xl:block\">XL</small>\n <small className=\"hidden 2xl:block\">XXL</small>\n </span>\n );\n}\n"],"names":[],"mappings":";;AAIO,SAAS,qBAAqB;AAE7B,SAAA,qBAAC,QAAK,EAAA,WAAU,oDACZ,UAAA;AAAA,IAAC,oBAAA,SAAA,EAAM,WAAU,0BAAyB,UAAE,MAAA;AAAA,IAC3C,oBAAA,SAAA,EAAM,WAAU,0BAAyB,UAAE,MAAA;AAAA,IAC3C,oBAAA,SAAA,EAAM,WAAU,0BAAyB,UAAE,MAAA;AAAA,IAC3C,oBAAA,SAAA,EAAM,WAAU,0BAAyB,UAAE,MAAA;AAAA,IAC3C,oBAAA,SAAA,EAAM,WAAU,2BAA0B,UAAE,MAAA;AAAA,IAC5C,oBAAA,SAAA,EAAM,WAAU,oBAAmB,UAAG,MAAA,CAAA;AAAA,EAAA,GAC3C;AAER;"}
@@ -1,12 +0,0 @@
1
- import React from 'react';
2
- import { Container, ContainerProps } from 'react-bootstrap';
3
- import { useBreakpoint } from './responsiveHelper';
4
-
5
- export function AdaptiveContainer({ children, ...props }: ContainerProps) {
6
- const { isMobile } = useBreakpoint();
7
- return (
8
- <Container fluid={isMobile} {...props}>
9
- {children}
10
- </Container>
11
- );
12
- }
@@ -1,62 +0,0 @@
1
- import React, { cloneElement, useCallback, useState } from 'react';
2
- import type { Meta, StoryObj } from '@storybook/react';
3
- import { fn } from '@storybook/test';
4
-
5
- import { Select, Control, Range, Checkbox } from './controls';
6
-
7
- const defaultOptions = { num: 1, bool: false, select: 'bar' };
8
-
9
- // More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
10
- const meta: Meta<typeof Control> = {
11
- title: 'Bootstrap / Controls',
12
- parameters: {
13
- layout: 'centered',
14
- },
15
- tags: ['autodocs'],
16
- argTypes: {},
17
- args: { options: { ...defaultOptions }, setOptions: fn(), defaultOptions: { ...defaultOptions }, name: 'unused' },
18
- render: function Demo(args) {
19
- const [options, setOptionsRaw] = useState(args.options);
20
-
21
- const setOptions = useCallback(
22
- (options) =>
23
- setOptionsRaw((currentOptions) => {
24
- return { ...currentOptions, ...options };
25
- }),
26
- [],
27
- );
28
-
29
- const controlProps = { options, setOptions, defaultOptions };
30
-
31
- const { children, name, ...safeArgs } = args;
32
-
33
- return <div style={{ width: '300px' }}>{cloneElement(children as any, { ...safeArgs, ...controlProps })}</div>;
34
- },
35
- };
36
-
37
- export default meta;
38
-
39
- type Story = StoryObj<typeof meta>;
40
-
41
- export const RangeControl: Story = {
42
- args: {
43
- children: <Range name="Num" min={0} max={1} />,
44
- },
45
- };
46
-
47
- export const CheckboxControl: Story = {
48
- args: {
49
- children: <Checkbox name="Bool" />,
50
- },
51
- };
52
-
53
- export const SelectControl: Story = {
54
- args: {
55
- children: (
56
- <Select name="Select">
57
- <option value="foo">Foo</option>
58
- <option value="bar">Bar</option>
59
- </Select>
60
- ),
61
- },
62
- };
@@ -1,119 +0,0 @@
1
- import React, { HTMLInputTypeAttribute, memo } from 'react';
2
-
3
- const lcFirst = (str) => str[0].toLowerCase() + str.substring(1, str.length);
4
-
5
- const toProperty = (str) => lcFirst(str).split(' ').join('');
6
-
7
- export interface ControlProps {
8
- value?: any;
9
- setValue?: (v: any) => void;
10
- defaultValue?: any;
11
- options?: { [key: string]: any };
12
- setOptions?: (v: { [key: string]: any }) => void;
13
- defaultOptions?: { [key: string]: any };
14
- name: string;
15
- children?: React.ReactNode;
16
- inputProps?: {
17
- type: HTMLInputTypeAttribute;
18
- property?: string;
19
- valueExtractor?: (e: any) => any;
20
- className?: string;
21
- } & any;
22
- hideValue?: boolean;
23
- }
24
-
25
- export type LabelProps = Pick<ControlProps, 'name' | 'value' | 'defaultValue'> & { reset: () => void };
26
-
27
- export const Label = memo<LabelProps>(function Label({ name, reset, value, defaultValue }) {
28
- return (
29
- <label className="flex-grow-1 mb-0 d-flex align-items-center justify-content-start gap-2">
30
- {name}
31
- {value !== defaultValue && (
32
- <>
33
- <a href="javascript: void(0)" onClick={reset}>
34
- <small>reset</small>
35
- </a>
36
- </>
37
- )}
38
- </label>
39
- );
40
- });
41
-
42
- export const Control = memo<ControlProps>(function Control({
43
- value = null,
44
- setValue,
45
- defaultValue = null,
46
- options = {},
47
- setOptions,
48
- defaultOptions = {},
49
- name,
50
- inputProps: { Tag = 'input', property = 'value', valueExtractor = (e) => e.target.value, ...inputProps } = {},
51
- hideValue = false,
52
- children,
53
- }) {
54
- const prop = toProperty(name);
55
-
56
- defaultValue = defaultValue || defaultOptions[prop];
57
- value = value || options?.[prop];
58
- setValue = setValue || ((v) => setOptions?.({ [prop]: v }));
59
-
60
- const reset = () => setValue(defaultValue);
61
-
62
- return (
63
- <div className="d-flex align-items-center gap-2">
64
- <Label name={name} reset={reset} value={value} defaultValue={defaultValue} />
65
- <Tag
66
- {...inputProps}
67
- {...{ [property]: value || '' }} // null is needed to make it always controlled
68
- className={`${value === defaultValue ? 'opacity-75' : ''} ${inputProps.className}`}
69
- onChange={(e) => setValue(valueExtractor(e))}
70
- >
71
- {children}
72
- </Tag>
73
- {!hideValue && (
74
- <span onDoubleClick={reset} className="text-start" style={{ width: '20px' }}>
75
- {value}
76
- </span>
77
- )}
78
- </div>
79
- );
80
- });
81
-
82
- export interface RangeProps extends ControlProps {
83
- min: number;
84
- max: number;
85
- step?: number;
86
- }
87
-
88
- export const Range = memo<RangeProps>(function Range({ min, max, step = 0.1, ...props }) {
89
- return (
90
- <Control
91
- inputProps={{
92
- type: 'range',
93
- min,
94
- max,
95
- step,
96
- className: 'form-control-range',
97
- valueExtractor: (e) => parseFloat(e.target.value),
98
- }}
99
- {...props}
100
- />
101
- );
102
- });
103
-
104
- export const Checkbox = memo<ControlProps>(function Checkbox(props) {
105
- return (
106
- <Control
107
- inputProps={{ type: 'checkbox', property: 'checked', valueExtractor: (e) => e.target.checked }}
108
- {...props}
109
- />
110
- );
111
- });
112
-
113
- export const Select = memo<ControlProps>(function Select({ children, ...props }) {
114
- return (
115
- <Control inputProps={{ Tag: 'select', className: 'form-select' }} {...props} hideValue={true}>
116
- {children}
117
- </Control>
118
- );
119
- });
@@ -1,34 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
- import { fn } from '@storybook/test';
3
-
4
- import { ErrorAlert } from './error';
5
-
6
- // More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
7
- const meta: Meta<typeof ErrorAlert> = {
8
- title: 'Bootstrap / ErrorAlert',
9
- component: ErrorAlert,
10
- parameters: {
11
- layout: 'centered',
12
- },
13
- tags: ['autodocs'],
14
- argTypes: {
15
- // backgroundColor: { control: 'color' },
16
- children: { control: 'text' },
17
- },
18
- args: { onRetry: fn() },
19
- };
20
-
21
- export default meta;
22
- type Story = StoryObj<typeof meta>;
23
-
24
- export const String: Story = {
25
- args: {
26
- children: 'An error occurred',
27
- },
28
- };
29
-
30
- export const ErrorObject: Story = {
31
- args: {
32
- children: new Error('An error occurred') as any,
33
- },
34
- };
@@ -1,40 +0,0 @@
1
- 'use client';
2
-
3
- import React from 'react';
4
- import { Alert, AlertProps, Button, ButtonProps } from 'react-bootstrap';
5
-
6
- //TODO Create MUI-specific?
7
- export function ErrorAlert({
8
- onRetry,
9
- children,
10
- buttonProps,
11
- ...props
12
- }: {
13
- children?: Error | string | any;
14
- onRetry?: () => any;
15
- buttonProps?: ButtonProps;
16
- }) {
17
- if (!children) return null;
18
-
19
- return (
20
- <Alert variant="danger" {...props}>
21
- <div>{children.message || children.toString()}</div>
22
- {onRetry && (
23
- <div>
24
- <Button
25
- variant="link"
26
- className="alert-link"
27
- {...buttonProps}
28
- onClick={(e) => {
29
- e.preventDefault();
30
- e.stopPropagation();
31
- onRetry();
32
- }}
33
- >
34
- Retry
35
- </Button>
36
- </div>
37
- )}
38
- </Alert>
39
- );
40
- }