@kirill.konshin/utils 0.0.13 → 0.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/.ctirc +2 -1
  2. package/.turbo/turbo-build.log +28 -23
  3. package/.turbo/turbo-test.log +78 -25
  4. package/CHANGELOG.md +12 -0
  5. package/README.md +1 -1
  6. package/demo/{cache-demo-clean.ts → worker-demo.ts} +1 -1
  7. package/dist/bootstrap/controls.d.ts +5 -2
  8. package/dist/bootstrap/controls.d.ts.map +1 -1
  9. package/dist/bootstrap/controls.js +1 -0
  10. package/dist/bootstrap/controls.js.map +1 -1
  11. package/dist/bootstrap/controls.stories.d.ts +9 -0
  12. package/dist/bootstrap/controls.stories.d.ts.map +1 -0
  13. package/dist/bootstrap/error.js +1 -0
  14. package/dist/bootstrap/error.js.map +1 -1
  15. package/dist/bootstrap/error.stories.d.ts +8 -0
  16. package/dist/bootstrap/error.stories.d.ts.map +1 -0
  17. package/dist/bootstrap/field.stories.d.ts +8 -0
  18. package/dist/bootstrap/field.stories.d.ts.map +1 -0
  19. package/dist/bootstrap/globalLoading.stories.d.ts +7 -0
  20. package/dist/bootstrap/globalLoading.stories.d.ts.map +1 -0
  21. package/dist/bootstrap/index.js +2 -1
  22. package/dist/bootstrap/loading.stories.d.ts +9 -0
  23. package/dist/bootstrap/loading.stories.d.ts.map +1 -0
  24. package/dist/bootstrap/responsiveHelper.js +1 -0
  25. package/dist/bootstrap/responsiveHelper.js.map +1 -1
  26. package/dist/bootstrap/screen.stories.d.ts +14 -0
  27. package/dist/bootstrap/screen.stories.d.ts.map +1 -0
  28. package/dist/bootstrap/toaster.js +1 -0
  29. package/dist/bootstrap/toaster.js.map +1 -1
  30. package/dist/bootstrap/toaster.stories.d.ts +8 -0
  31. package/dist/bootstrap/toaster.stories.d.ts.map +1 -0
  32. package/dist/bootstrap/useModal.stories.d.ts +9 -0
  33. package/dist/bootstrap/useModal.stories.d.ts.map +1 -0
  34. package/dist/core/cache.d.ts +7 -8
  35. package/dist/core/cache.d.ts.map +1 -1
  36. package/dist/core/cache.js +7 -4
  37. package/dist/core/cache.js.map +1 -1
  38. package/dist/core/cache.test.d.ts +2 -0
  39. package/dist/core/cache.test.d.ts.map +1 -0
  40. package/dist/core/files.d.ts +3 -0
  41. package/dist/core/files.d.ts.map +1 -0
  42. package/dist/core/files.js +27 -0
  43. package/dist/core/files.js.map +1 -0
  44. package/dist/core/index.d.ts +4 -0
  45. package/dist/core/index.d.ts.map +1 -1
  46. package/dist/core/index.js +14 -2
  47. package/dist/core/index.js.map +1 -1
  48. package/dist/core/ls.d.ts +6 -0
  49. package/dist/core/ls.d.ts.map +1 -0
  50. package/dist/core/ls.js +12 -0
  51. package/dist/core/ls.js.map +1 -0
  52. package/dist/core/worker.d.ts +23 -9
  53. package/dist/core/worker.d.ts.map +1 -1
  54. package/dist/core/worker.js +93 -90
  55. package/dist/core/worker.js.map +1 -1
  56. package/dist/core/worker.test.d.ts +2 -0
  57. package/dist/core/worker.test.d.ts.map +1 -0
  58. package/dist/core/workerUtils.d.ts +3 -0
  59. package/dist/core/workerUtils.d.ts.map +1 -0
  60. package/dist/core/workerUtils.js +31 -0
  61. package/dist/core/workerUtils.js.map +1 -0
  62. package/dist/core/wrpc.d.ts +45 -0
  63. package/dist/core/wrpc.d.ts.map +1 -0
  64. package/dist/core/wrpc.fixture.d.ts +29 -0
  65. package/dist/core/wrpc.fixture.d.ts.map +1 -0
  66. package/dist/core/wrpc.js +242 -0
  67. package/dist/core/wrpc.js.map +1 -0
  68. package/dist/core/wrpc.test.d.ts +1 -0
  69. package/dist/core/wrpc.test.d.ts.map +1 -0
  70. package/dist/mui/formControlFieldset.stories.d.ts +7 -0
  71. package/dist/mui/formControlFieldset.stories.d.ts.map +1 -0
  72. package/dist/next/appLink.js +1 -0
  73. package/dist/next/appLink.js.map +1 -1
  74. package/dist/next/noSSR.js +1 -0
  75. package/dist/next/noSSR.js.map +1 -1
  76. package/dist/next/useIsInner.js +1 -0
  77. package/dist/next/useIsInner.js.map +1 -1
  78. package/dist/react/form/client.js +1 -0
  79. package/dist/react/form/client.js.map +1 -1
  80. package/dist/react/form/form.d.ts +7 -6
  81. package/dist/react/form/form.d.ts.map +1 -1
  82. package/dist/react/form/form.js +14 -20
  83. package/dist/react/form/form.js.map +1 -1
  84. package/dist/react/index.d.ts +1 -0
  85. package/dist/react/index.d.ts.map +1 -1
  86. package/dist/react/index.js +8 -2
  87. package/dist/react/index.js.map +1 -1
  88. package/dist/react/keyboard.d.ts +11 -0
  89. package/dist/react/keyboard.d.ts.map +1 -0
  90. package/dist/react/keyboard.js +38 -0
  91. package/dist/react/keyboard.js.map +1 -0
  92. package/dist/react/useFetch.js +1 -0
  93. package/dist/react/useFetch.js.map +1 -1
  94. package/dist/tailwind/responsiveHelper.js +1 -0
  95. package/dist/tailwind/responsiveHelper.js.map +1 -1
  96. package/package.json +6 -2
  97. package/src/bootstrap/controls.stories.tsx +2 -2
  98. package/src/bootstrap/controls.tsx +3 -3
  99. package/src/bootstrap/error.stories.tsx +3 -3
  100. package/src/bootstrap/field.stories.tsx +2 -2
  101. package/src/bootstrap/globalLoading.stories.tsx +2 -2
  102. package/src/bootstrap/loading.stories.tsx +2 -2
  103. package/src/bootstrap/screen.stories.tsx +2 -2
  104. package/src/bootstrap/toaster.stories.tsx +2 -2
  105. package/src/bootstrap/useModal.stories.tsx +3 -3
  106. package/src/core/README.md +91 -0
  107. package/src/core/cache.ts +12 -12
  108. package/src/core/files.ts +24 -0
  109. package/src/core/index.ts +4 -0
  110. package/src/core/ls.ts +11 -0
  111. package/src/core/worker.test.ts +197 -0
  112. package/src/core/worker.ts +106 -93
  113. package/src/core/workerUtils.ts +32 -0
  114. package/src/core/wrpc.fixture.ts +72 -0
  115. package/src/core/wrpc.test.ts +225 -0
  116. package/src/core/wrpc.ts +359 -0
  117. package/src/mui/formControlFieldset.stories.tsx +1 -1
  118. package/src/react/form/form.tsx +53 -33
  119. package/src/react/index.ts +1 -0
  120. package/src/react/keyboard.tsx +49 -0
  121. package/src/tailwind/README.md +8 -0
  122. package/tsconfig.json +2 -1
  123. package/vite.config.ts +13 -4
  124. package/vite.exports.ts +3 -3
  125. package/demo/cache-demo.ts +0 -343
package/.ctirc CHANGED
@@ -2,7 +2,8 @@
2
2
  "addNewline": true,
3
3
  "fileExcludePatterns": [
4
4
  "*.stories.*",
5
- "*.test.*"
5
+ "*.test.*",
6
+ "*.fixture.*"
6
7
  ],
7
8
  "verbose": false,
8
9
  "withoutBackupFile": true,
@@ -1,15 +1,15 @@
1
1
  vite v6.0.11 building SSR bundle for production...
2
2
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/bootstrap
3
- create succeeded: /home/runner/work/utils/utils/packages/utils/src/electron-builder
3
+ create succeeded: /home/runner/work/utils/utils/packages/utils/src/electron
4
4
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/core
5
+ create succeeded: /home/runner/work/utils/utils/packages/utils/src/electron-builder
6
+ create succeeded: /home/runner/work/utils/utils/packages/utils/src/mui
5
7
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/next
6
- create succeeded: /home/runner/work/utils/utils/packages/utils/src/react-native
7
8
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/tailwind
8
- create succeeded: /home/runner/work/utils/utils/packages/utils/src/mui
9
- create succeeded: /home/runner/work/utils/utils/packages/utils/src/electron
9
+ create succeeded: /home/runner/work/utils/utils/packages/utils/src/react-native
10
10
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/react
11
11
  transforming...
12
- ✓ 50 modules transformed.
12
+ ✓ 55 modules transformed.
13
13
  rendering chunks...
14
14
 
15
15
  [vite:dts] Start generate declaration files...
@@ -22,46 +22,51 @@ rendering chunks...
22
22
  dist/next/index.js 0.34 kB │ map: 0.10 kB
23
23
  dist/core/errors.js 0.35 kB │ map: 0.86 kB
24
24
  dist/tailwind/fullpage.js 0.35 kB │ map: 0.61 kB
25
- dist/next/useIsInner.js 0.36 kB │ map: 0.62 kB
25
+ dist/next/useIsInner.js 0.37 kB │ map: 0.62 kB
26
26
  dist/next/measure.js 0.38 kB │ map: 0.55 kB
27
27
  dist/mui/formLabelLegend.js 0.38 kB │ map: 0.67 kB
28
28
  dist/bootstrap/adaptiveContainer.js 0.40 kB │ map: 0.66 kB
29
29
  dist/bootstrap/globalLoading.js 0.43 kB │ map: 0.82 kB
30
- dist/next/noSSR.js 0.44 kB │ map: 0.89 kB
30
+ dist/next/noSSR.js 0.45 kB │ map: 0.89 kB
31
31
  dist/react-native/useAppState.js 0.47 kB │ map: 0.84 kB
32
- dist/react/index.js 0.48 kB │ map: 0.09 kB
33
32
  dist/mui/genericControl.js 0.50 kB │ map: 1.02 kB
33
+ dist/core/ls.js 0.50 kB │ map: 0.90 kB
34
34
  dist/bootstrap/loading.js 0.54 kB │ map: 1.01 kB
35
- dist/core/index.js 0.56 kB │ map: 0.09 kB
36
- dist/react/useFetch.js 0.56 kB │ map: 1.70 kB
35
+ dist/react/useFetch.js 0.57 kB │ map: 1.70 kB
37
36
  dist/mui/formControlFieldset.js 0.64 kB │ map: 1.23 kB
38
- dist/next/appLink.js 0.75 kB │ map: 1.58 kB
37
+ dist/react/index.js 0.65 kB │ map: 0.10 kB
39
38
  dist/core/mutex.js 0.76 kB │ map: 1.19 kB
40
- dist/bootstrap/error.js 0.78 kB │ map: 1.66 kB
39
+ dist/next/appLink.js 0.77 kB │ map: 1.58 kB
40
+ dist/core/files.js 0.79 kB │ map: 1.57 kB
41
41
  dist/bootstrap/field.js 0.79 kB │ map: 1.56 kB
42
- dist/tailwind/responsiveHelper.js 0.82 kB │ map: 1.14 kB
42
+ dist/bootstrap/error.js 0.79 kB │ map: 1.66 kB
43
+ dist/tailwind/responsiveHelper.js 0.84 kB │ map: 1.14 kB
43
44
  dist/react-native/share.js 0.85 kB │ map: 1.75 kB
44
45
  dist/react/apiCall.js 0.85 kB │ map: 1.47 kB
45
46
  dist/bootstrap/useWrappedForm.js 0.90 kB │ map: 2.22 kB
46
- dist/bootstrap/index.js 0.95 kB │ map: 0.10 kB
47
+ dist/core/index.js 0.90 kB │ map: 0.10 kB
48
+ dist/bootstrap/index.js 0.97 kB │ map: 0.10 kB
49
+ dist/core/workerUtils.js 0.97 kB │ map: 1.83 kB
47
50
  dist/electron-builder/images.js 1.02 kB │ map: 1.95 kB
48
51
  dist/react-native/update.js 1.03 kB │ map: 1.97 kB
52
+ dist/react/keyboard.js 1.19 kB │ map: 2.31 kB
49
53
  dist/react/useFetcher.js 1.20 kB │ map: 2.47 kB
50
- dist/bootstrap/toaster.js 1.23 kB │ map: 2.08 kB
54
+ dist/bootstrap/toaster.js 1.25 kB │ map: 2.08 kB
51
55
  dist/core/measure.js 1.43 kB │ map: 2.88 kB
52
56
  dist/electron/updater.js 1.44 kB │ map: 2.61 kB
53
57
  dist/bootstrap/footer.js 1.53 kB │ map: 2.57 kB
54
- dist/react/form/client.js 1.56 kB │ map: 3.36 kB
55
- dist/bootstrap/responsiveHelper.js 1.77 kB │ map: 2.87 kB
58
+ dist/react/form/client.js 1.58 kB │ map: 3.36 kB
59
+ dist/bootstrap/responsiveHelper.js 1.78 kB │ map: 2.87 kB
56
60
  dist/bootstrap/useModal.js 2.09 kB │ map: 4.75 kB
57
- dist/react/form/form.js 2.57 kB │ map: 5.74 kB
58
- dist/bootstrap/controls.js 2.74 kB │ map: 5.81 kB
59
- dist/core/cache.js 3.02 kB │ map: 9.95 kB
61
+ dist/react/form/form.js 2.34 kB │ map: 6.18 kB
62
+ dist/bootstrap/controls.js 2.75 kB │ map: 5.83 kB
63
+ dist/core/cache.js 3.08 kB │ map: 9.97 kB
60
64
  dist/electron-builder/builder.js 3.09 kB │ map: 6.76 kB
61
65
  dist/bootstrap/screen.js 3.37 kB │ map: 7.04 kB
62
66
  dist/electron/createWindow.js 5.39 kB │ map: 10.88 kB
63
- dist/core/worker.js 7.45 kB │ map: 15.67 kB
64
- [vite:dts] Declaration files built in 5191ms.
67
+ dist/core/worker.js 7.95 kB │ map: 16.41 kB
68
+ dist/core/wrpc.js 8.83 kB map: 20.60 kB
69
+ [vite:dts] Declaration files built in 6324ms.
65
70
 
66
- ✓ built in 5.46s
71
+ ✓ built in 6.68s
67
72
  Updated package.json with exports
@@ -1,46 +1,93 @@
1
1
  [?25lcreate succeeded: /home/runner/work/utils/utils/packages/utils/src/bootstrap
2
2
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/electron
3
- create succeeded: /home/runner/work/utils/utils/packages/utils/src/electron-builder
4
3
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/mui
4
+ create succeeded: /home/runner/work/utils/utils/packages/utils/src/electron-builder
5
+ create succeeded: /home/runner/work/utils/utils/packages/utils/src/core
5
6
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/next
6
- create succeeded: /home/runner/work/utils/utils/packages/utils/src/react-native
7
7
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/tailwind
8
- create succeeded: /home/runner/work/utils/utils/packages/utils/src/core
8
+ create succeeded: /home/runner/work/utils/utils/packages/utils/src/react-native
9
9
  create succeeded: /home/runner/work/utils/utils/packages/utils/src/react
10
10
 
11
11
   RUN  v3.0.4 /home/runner/work/utils/utils/packages/utils
12
12
  Coverage enabled with v8
13
13
 
14
- stderr | src/core/cache.test.ts > TransformerMap > simple
15
- CREATE cache test
16
-
17
- stderr | src/core/cache.test.ts > TransformerMap > key transform
18
- CREATE cache test
19
-
20
14
  stdout | src/core/cache.test.ts > TransformerMap > key transform
21
15
  CLEAR cache test
22
16
 
23
- ✓ src/core/cache.test.ts (4 tests) 10ms
17
+ stderr | src/core/wrpc.test.ts
18
+ Using an object as a third argument is deprecated. Vitest 4 will throw an error if the third argument is not a timeout number. Please use the second argument for options. See more at https://vitest.dev/guide/migration
19
+
20
+ ✓ src/core/cache.test.ts (4 tests) 14ms
21
+ ✓ src/core/worker.test.ts (8 tests) 16ms
22
+ stdout | src/core/wrpc.test.ts > WRPC > for await ... of return yield
23
+ DATA 1
24
+
25
+ stdout | src/core/wrpc.test.ts > WRPC > for await ... of return yield
26
+ DATA 2
27
+
28
+ stdout | src/core/wrpc.test.ts > WRPC > for await ... of return yield
29
+ DATA 3
30
+
31
+ stdout | src/core/wrpc.test.ts > WRPC > for await ... of return yield
32
+ DATA { value: 1, done: false }
33
+
34
+ stdout | src/core/wrpc.test.ts > WRPC > for await ... of return yield
35
+ DATA { value: 2, done: false }
36
+
37
+ stdout | src/core/wrpc.test.ts > WRPC > for await ... of return yield
38
+ DATA { value: 3, done: false }
24
39
 
25
-  Test Files  1 passed (1)
26
-  Tests  4 passed (4)
27
-  Start at  06:11:35
28
-  Duration  866ms (transform 48ms, setup 0ms, collect 43ms, tests 10ms, environment 0ms, prepare 73ms)
40
+ stdout | src/core/wrpc.test.ts > WRPC > for await ... of return yield
41
+ DATA { value: undefined, done: true }
42
+
43
+ stdout | src/core/wrpc.test.ts > WRPC > for await ... of separate return & yield
44
+ DATA { progress: 0 }
45
+
46
+ stdout | src/core/wrpc.test.ts > WRPC > for await ... of separate return & yield
47
+ DATA { progress: 0.5 }
48
+
49
+ stdout | src/core/wrpc.test.ts > WRPC > for await ... of separate return & yield
50
+ DATA { progress: 1, aborted: false }
51
+
52
+ stdout | src/core/wrpc.test.ts > WRPC > do ... while
53
+ DATA { value: { progress: 0 }, done: false }
54
+
55
+ stdout | src/core/wrpc.test.ts > WRPC > do ... while
56
+ DATA { value: { progress: 0.5 }, done: false }
57
+
58
+ stdout | src/core/wrpc.test.ts > WRPC > do ... while
59
+ DATA { value: { progress: 1, aborted: false }, done: false }
60
+
61
+ stdout | src/core/wrpc.test.ts > WRPC > do ... while
62
+ DATA { value: 'foo', done: true }
63
+
64
+ stdout | src/core/wrpc.test.ts > WRPC > break
65
+ DATA { progress: 0 }
66
+
67
+ stdout | src/core/wrpc.test.ts > WRPC > abort
68
+ DATA { progress: 0 }
69
+
70
+ ✓ src/core/wrpc.test.ts (13 tests | 1 skipped) 729ms
71
+ ✓ WRPC > stop 503ms
72
+
73
+  Test Files  3 passed (3)
74
+  Tests  24 passed | 1 skipped (25)
75
+  Start at  20:57:07
76
+  Duration  1.84s (transform 251ms, setup 0ms, collect 344ms, tests 759ms, environment 1ms, prepare 370ms)
29
77
 
30
78
   % Coverage report from v8
31
79
  -------------------|---------|----------|---------|---------|-------------------
32
80
  File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
33
81
  -------------------|---------|----------|---------|---------|-------------------
34
- All files | 3.28 | 63.82 | 53.08 | 3.28 |
82
+ All files | 22.23 | 81.64 | 66.44 | 22.23 |
35
83
  utils | 0 | 0 | 0 | 0 |
36
84
  vite.exports.ts | 0 | 0 | 0 | 0 | 1-121
37
85
  utils/builders | 0 | 0 | 0 | 0 |
38
86
  bun.build.js | 0 | 0 | 0 | 0 | 1-23
39
87
  perf.mjs | 0 | 0 | 0 | 0 | 1-63
40
88
  rslib.config.ts | 0 | 0 | 0 | 0 | 1-26
41
- utils/demo | 0 | 50 | 50 | 0 |
42
- ...demo-clean.ts | 0 | 0 | 0 | 0 | 1-73
43
- cache-demo.ts | 0 | 100 | 100 | 0 | 3-343
89
+ utils/demo | 0 | 0 | 0 | 0 |
90
+ worker-demo.ts | 0 | 0 | 0 | 0 | 1-73
44
91
  utils/src-todo | 0 | 0 | 0 | 0 |
45
92
  auth0.tsx | 0 | 0 | 0 | 0 |
46
93
  .../src/bootstrap | 0 | 71.42 | 71.42 | 0 |
@@ -65,13 +112,18 @@ All files | 3.28 | 63.82 | 53.08 | 3.28 |
65
112
  ...l.stories.tsx | 0 | 100 | 100 | 0 | 3-51
66
113
  useModal.tsx | 0 | 0 | 0 | 0 | 1-88
67
114
  ...rappedForm.ts | 0 | 0 | 0 | 0 | 1-40
68
- utils/src/core | 20.2 | 82.35 | 52.38 | 20.2 |
69
- cache.ts | 81.25 | 89.65 | 56.25 | 81.25 | ...98-199,218-219
115
+ utils/src/core | 78.75 | 88.28 | 75 | 78.75 |
116
+ cache.ts | 81.25 | 89.65 | 56.25 | 81.25 | ...94-195,218-219
70
117
  errors.ts | 0 | 100 | 100 | 0 | 2-14
71
- index.ts | 0 | 0 | 0 | 0 | 1-5
118
+ files.ts | 0 | 0 | 0 | 0 | 1-24
119
+ index.ts | 0 | 0 | 0 | 0 | 1-9
120
+ ls.ts | 0 | 0 | 0 | 0 | 1-11
72
121
  measure.ts | 0 | 0 | 0 | 0 | 1-61
73
122
  mutex.ts | 0 | 100 | 100 | 0 | 3-22
74
- worker.ts | 0 | 0 | 0 | 0 | 1-327
123
+ worker.ts | 100 | 98.71 | 100 | 100 | 57
124
+ workerUtils.ts | 100 | 83.33 | 100 | 100 | 26-27
125
+ wrpc.fixture.ts | 78.84 | 77.77 | 66.66 | 78.84 | 28,62-63,65-72
126
+ wrpc.ts | 97.11 | 85.24 | 69.69 | 97.11 | ...79-180,225-226
75
127
  ...s/src/electron | 0 | 33.33 | 33.33 | 0 |
76
128
  createWindow.ts | 0 | 0 | 0 | 0 | 1-234
77
129
  index.ts | 0 | 0 | 0 | 0 | 1-2
@@ -94,9 +146,10 @@ All files | 3.28 | 63.82 | 53.08 | 3.28 |
94
146
  noSSR.tsx | 0 | 100 | 100 | 0 | 3-17
95
147
  redirect.tsx | 0 | 100 | 100 | 0 | 3-13
96
148
  useIsInner.ts | 0 | 100 | 100 | 0 | 3-13
97
- utils/src/react | 0 | 25 | 25 | 0 |
149
+ utils/src/react | 0 | 40 | 40 | 0 |
98
150
  apiCall.ts | 0 | 0 | 0 | 0 | 1-25
99
- index.ts | 0 | 0 | 0 | 0 | 1-4
151
+ index.ts | 0 | 0 | 0 | 0 | 1-5
152
+ keyboard.tsx | 0 | 100 | 100 | 0 | 3-49
100
153
  useFetch.ts | 0 | 100 | 100 | 0 | 3-29
101
154
  useFetcher.ts | 0 | 0 | 0 | 0 | 1-49
102
155
  ...c/react-native | 0 | 0 | 0 | 0 |
@@ -106,7 +159,7 @@ All files | 3.28 | 63.82 | 53.08 | 3.28 |
106
159
  useAppState.ts | 0 | 0 | 0 | 0 | 1-18
107
160
  ...src/react/form | 0 | 33.33 | 33.33 | 0 |
108
161
  client.tsx | 0 | 100 | 100 | 0 | 3-62
109
- form.tsx | 0 | 0 | 0 | 0 | 1-109
162
+ form.tsx | 0 | 0 | 0 | 0 | 1-129
110
163
  index.ts | 0 | 0 | 0 | 0 | 1-2
111
164
  ...s/src/tailwind | 0 | 66.66 | 66.66 | 0 |
112
165
  fullpage.tsx | 0 | 100 | 100 | 0 | 3-10
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @kirill.konshin/utils
2
2
 
3
+ ## 0.0.15
4
+
5
+ ### Patch Changes
6
+
7
+ - WRPC
8
+
9
+ ## 0.0.14
10
+
11
+ ### Patch Changes
12
+
13
+ - Preserve directives for Vite
14
+
3
15
  ## 0.0.13
4
16
 
5
17
  ### Patch Changes
package/README.md CHANGED
@@ -36,7 +36,7 @@ https://jakeginnivan.medium.com/options-for-publishing-typescript-libraries-9c37
36
36
  - ⚠️ Seem to reemit all files all the time
37
37
  - `vite`
38
38
  - ✅ Fast
39
- - ✅ Comes with `vitest`
39
+ - ✅ Comes with `vitest` (reasoning https://youtu.be/w9xQRJXKrV0)
40
40
  - ✅ Comes with Storybook plugin
41
41
  - ⚠️ Based on Rollup, inherits its quirks
42
42
  - ⚠️ Awkward configuration, half Vite half Rollup
@@ -1,4 +1,4 @@
1
- import { RespondersBase, WorkerDialog } from '../src/worker';
1
+ import { RespondersBase, WorkerDialog } from '../src/core';
2
2
 
3
3
  class Responders extends RespondersBase<Responders> {
4
4
  encode = this.create(
@@ -1,5 +1,5 @@
1
1
  import { default as React, HTMLInputTypeAttribute } from 'react';
2
- interface ControlProps {
2
+ export interface ControlProps {
3
3
  value?: any;
4
4
  setValue?: (v: any) => void;
5
5
  defaultValue?: any;
@@ -22,6 +22,10 @@ interface ControlProps {
22
22
  } & any;
23
23
  hideValue?: boolean;
24
24
  }
25
+ export type LabelProps = Pick<ControlProps, 'name' | 'value' | 'defaultValue'> & {
26
+ reset: () => void;
27
+ };
28
+ export declare const Label: React.NamedExoticComponent<LabelProps>;
25
29
  export declare const Control: React.NamedExoticComponent<ControlProps>;
26
30
  export interface RangeProps extends ControlProps {
27
31
  min: number;
@@ -31,5 +35,4 @@ export interface RangeProps extends ControlProps {
31
35
  export declare const Range: React.NamedExoticComponent<RangeProps>;
32
36
  export declare const Checkbox: React.NamedExoticComponent<ControlProps>;
33
37
  export declare const Select: React.NamedExoticComponent<ControlProps>;
34
- export {};
35
38
  //# sourceMappingURL=controls.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../src/bootstrap/controls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,sBAAsB,EAAQ,MAAM,OAAO,CAAC;AAM5D,UAAU,YAAY;IAClB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACjC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,KAAK,IAAI,CAAC;IACjD,cAAc,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE;QACT,IAAI,EAAE,sBAAsB,CAAC;QAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;QACjC,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,GAAG,CAAC;IACR,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAmBD,eAAO,MAAM,OAAO,0CAsClB,CAAC;AAEH,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,KAAK,wCAchB,CAAC;AAEH,eAAO,MAAM,QAAQ,0CAOnB,CAAC;AAEH,eAAO,MAAM,MAAM,0CAMjB,CAAC"}
1
+ {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../src/bootstrap/controls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,sBAAsB,EAAQ,MAAM,OAAO,CAAC;AAM5D,MAAM,WAAW,YAAY;IACzB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC5B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACjC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,KAAK,IAAI,CAAC;IACjD,cAAc,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE;QACT,IAAI,EAAE,sBAAsB,CAAC;QAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;QACjC,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,GAAG,CAAC;IACR,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,GAAG,cAAc,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC;AAEvG,eAAO,MAAM,KAAK,wCAahB,CAAC;AAEH,eAAO,MAAM,OAAO,0CAsClB,CAAC;AAEH,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,KAAK,wCAchB,CAAC;AAEH,eAAO,MAAM,QAAQ,0CAOnB,CAAC;AAEH,eAAO,MAAM,MAAM,0CAMjB,CAAC"}
@@ -71,6 +71,7 @@ const Select = memo(function Select2({ children, ...props }) {
71
71
  export {
72
72
  Checkbox,
73
73
  Control,
74
+ Label,
74
75
  Range,
75
76
  Select
76
77
  };
@@ -1 +1 @@
1
- {"version":3,"file":"controls.js","sources":["../../src/bootstrap/controls.tsx"],"sourcesContent":["import React, { HTMLInputTypeAttribute, memo } from 'react';\n\nconst lcFirst = (str) => str[0].toLowerCase() + str.substring(1, str.length);\n\nconst toProperty = (str) => lcFirst(str).split(' ').join('');\n\ninterface ControlProps {\n value?: any;\n setValue?: (v: any) => void;\n defaultValue?: any;\n options?: { [key: string]: any };\n setOptions?: (v: { [key: string]: any }) => void;\n defaultOptions?: { [key: string]: any };\n name: string;\n children?: React.ReactNode;\n inputProps?: {\n type: HTMLInputTypeAttribute;\n property?: string;\n valueExtractor?: (e: any) => any;\n className?: string;\n } & any;\n hideValue?: boolean;\n}\n\ntype LabelProps = Pick<ControlProps, 'name' | 'value' | 'defaultValue'> & { reset: () => void };\n\nconst Label = memo<LabelProps>(function Label({ name, reset, value, defaultValue }) {\n return (\n <label className=\"flex-grow-1 mb-0 d-flex align-items-center justify-content-start gap-2\">\n {name}\n {value !== defaultValue && (\n <>\n <a href=\"javascript: void(0)\" onClick={reset}>\n <small>reset</small>\n </a>\n </>\n )}\n </label>\n );\n});\n\nexport const Control = memo<ControlProps>(function Control({\n value = null,\n setValue,\n defaultValue = null,\n options = {},\n setOptions,\n defaultOptions = {},\n name,\n inputProps: { Tag = 'input', property = 'value', valueExtractor = (e) => e.target.value, ...inputProps } = {},\n hideValue = false,\n children,\n}) {\n const prop = toProperty(name);\n\n defaultValue = defaultValue || defaultOptions[prop];\n value = value || options?.[prop];\n setValue = setValue || ((v) => setOptions?.({ [prop]: v }));\n\n const reset = () => setValue(defaultValue);\n\n return (\n <div className=\"d-flex align-items-center gap-2\">\n <Label name={name} reset={reset} value={value} defaultValue={defaultValue} />\n <Tag\n {...inputProps}\n {...{ [property]: value || '' }} // null is needed to make it always controlled\n className={`${value === defaultValue ? 'opacity-75' : ''} ${inputProps.className}`}\n onChange={(e) => setValue(valueExtractor(e))}\n >\n {children}\n </Tag>\n {!hideValue && (\n <span onDoubleClick={reset} className=\"text-start\" style={{ width: '20px' }}>\n {value}\n </span>\n )}\n </div>\n );\n});\n\nexport interface RangeProps extends ControlProps {\n min: number;\n max: number;\n step?: number;\n}\n\nexport const Range = memo<RangeProps>(function Range({ min, max, step = 0.1, ...props }) {\n return (\n <Control\n inputProps={{\n type: 'range',\n min,\n max,\n step,\n className: 'form-control-range',\n valueExtractor: (e) => parseFloat(e.target.value),\n }}\n {...props}\n />\n );\n});\n\nexport const Checkbox = memo<ControlProps>(function Checkbox(props) {\n return (\n <Control\n inputProps={{ type: 'checkbox', property: 'checked', valueExtractor: (e) => e.target.checked }}\n {...props}\n />\n );\n});\n\nexport const Select = memo<ControlProps>(function Select({ children, ...props }) {\n return (\n <Control inputProps={{ Tag: 'select', className: 'form-select' }} {...props} hideValue={true}>\n {children}\n </Control>\n );\n});\n"],"names":["Label","Control","Range","Checkbox","Select"],"mappings":";;AAEA,MAAM,UAAU,CAAC,QAAQ,IAAI,CAAC,EAAE,gBAAgB,IAAI,UAAU,GAAG,IAAI,MAAM;AAE3E,MAAM,aAAa,CAAC,QAAQ,QAAQ,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,EAAE;AAsB3D,MAAM,QAAQ,KAAiB,SAASA,OAAM,EAAE,MAAM,OAAO,OAAO,gBAAgB;AAE5E,SAAA,qBAAC,SAAM,EAAA,WAAU,0EACZ,UAAA;AAAA,IAAA;AAAA,IACA,UAAU,gBAEH,oBAAA,UAAA,EAAA,UAAA,oBAAC,KAAE,EAAA,MAAK,uBAAsB,SAAS,OACnC,UAAA,oBAAC,SAAM,EAAA,UAAA,SAAK,GAChB,EACJ,CAAA;AAAA,EAAA,GAER;AAER,CAAC;AAEY,MAAA,UAAU,KAAmB,SAASC,SAAQ;AAAA,EACvD,QAAQ;AAAA,EACR;AAAA,EACA,eAAe;AAAA,EACf,UAAU,CAAC;AAAA,EACX;AAAA,EACA,iBAAiB,CAAC;AAAA,EAClB;AAAA,EACA,YAAY,EAAE,MAAM,SAAS,WAAW,SAAS,iBAAiB,CAAC,MAAM,EAAE,OAAO,OAAO,GAAG,eAAe,CAAC;AAAA,EAC5G,YAAY;AAAA,EACZ;AACJ,GAAG;AACO,QAAA,OAAO,WAAW,IAAI;AAEb,iBAAA,gBAAgB,eAAe,IAAI;AAC1C,UAAA,UAAS,mCAAU;AAChB,aAAA,aAAa,CAAC,MAAM,yCAAa,EAAE,CAAC,IAAI,GAAG,EAAA;AAEhD,QAAA,QAAQ,MAAM,SAAS,YAAY;AAGrC,SAAA,qBAAC,OAAI,EAAA,WAAU,mCACX,UAAA;AAAA,IAAA,oBAAC,OAAM,EAAA,MAAY,OAAc,OAAc,cAA4B;AAAA,IAC3E;AAAA,MAAC;AAAA,MAAA;AAAA,QACI,GAAG;AAAA,QACH,GAAG,EAAE,CAAC,QAAQ,GAAG,SAAS,GAAG;AAAA,QAC9B,WAAW,GAAG,UAAU,eAAe,eAAe,EAAE,IAAI,WAAW,SAAS;AAAA,QAChF,UAAU,CAAC,MAAM,SAAS,eAAe,CAAC,CAAC;AAAA,QAE1C;AAAA,MAAA;AAAA,IACL;AAAA,IACC,CAAC,aACG,oBAAA,QAAA,EAAK,eAAe,OAAO,WAAU,cAAa,OAAO,EAAE,OAAO,OAAA,GAC9D,UACL,MAAA,CAAA;AAAA,EAAA,GAER;AAER,CAAC;AAQY,MAAA,QAAQ,KAAiB,SAASC,OAAM,EAAE,KAAK,KAAK,OAAO,KAAK,GAAG,SAAS;AAEjF,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,YAAY;AAAA,QACR,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX,gBAAgB,CAAC,MAAM,WAAW,EAAE,OAAO,KAAK;AAAA,MACpD;AAAA,MACC,GAAG;AAAA,IAAA;AAAA,EACR;AAER,CAAC;AAEM,MAAM,WAAW,KAAmB,SAASC,UAAS,OAAO;AAE5D,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,YAAY,EAAE,MAAM,YAAY,UAAU,WAAW,gBAAgB,CAAC,MAAM,EAAE,OAAO,QAAQ;AAAA,MAC5F,GAAG;AAAA,IAAA;AAAA,EACR;AAER,CAAC;AAEY,MAAA,SAAS,KAAmB,SAASC,QAAO,EAAE,UAAU,GAAG,SAAS;AAC7E,SACK,oBAAA,SAAA,EAAQ,YAAY,EAAE,KAAK,UAAU,WAAW,cAAA,GAAkB,GAAG,OAAO,WAAW,MACnF,SACL,CAAA;AAER,CAAC;"}
1
+ {"version":3,"file":"controls.js","sources":["../../src/bootstrap/controls.tsx"],"sourcesContent":["import React, { HTMLInputTypeAttribute, memo } from 'react';\n\nconst lcFirst = (str) => str[0].toLowerCase() + str.substring(1, str.length);\n\nconst toProperty = (str) => lcFirst(str).split(' ').join('');\n\nexport interface ControlProps {\n value?: any;\n setValue?: (v: any) => void;\n defaultValue?: any;\n options?: { [key: string]: any };\n setOptions?: (v: { [key: string]: any }) => void;\n defaultOptions?: { [key: string]: any };\n name: string;\n children?: React.ReactNode;\n inputProps?: {\n type: HTMLInputTypeAttribute;\n property?: string;\n valueExtractor?: (e: any) => any;\n className?: string;\n } & any;\n hideValue?: boolean;\n}\n\nexport type LabelProps = Pick<ControlProps, 'name' | 'value' | 'defaultValue'> & { reset: () => void };\n\nexport const Label = memo<LabelProps>(function Label({ name, reset, value, defaultValue }) {\n return (\n <label className=\"flex-grow-1 mb-0 d-flex align-items-center justify-content-start gap-2\">\n {name}\n {value !== defaultValue && (\n <>\n <a href=\"javascript: void(0)\" onClick={reset}>\n <small>reset</small>\n </a>\n </>\n )}\n </label>\n );\n});\n\nexport const Control = memo<ControlProps>(function Control({\n value = null,\n setValue,\n defaultValue = null,\n options = {},\n setOptions,\n defaultOptions = {},\n name,\n inputProps: { Tag = 'input', property = 'value', valueExtractor = (e) => e.target.value, ...inputProps } = {},\n hideValue = false,\n children,\n}) {\n const prop = toProperty(name);\n\n defaultValue = defaultValue || defaultOptions[prop];\n value = value || options?.[prop];\n setValue = setValue || ((v) => setOptions?.({ [prop]: v }));\n\n const reset = () => setValue(defaultValue);\n\n return (\n <div className=\"d-flex align-items-center gap-2\">\n <Label name={name} reset={reset} value={value} defaultValue={defaultValue} />\n <Tag\n {...inputProps}\n {...{ [property]: value || '' }} // null is needed to make it always controlled\n className={`${value === defaultValue ? 'opacity-75' : ''} ${inputProps.className}`}\n onChange={(e) => setValue(valueExtractor(e))}\n >\n {children}\n </Tag>\n {!hideValue && (\n <span onDoubleClick={reset} className=\"text-start\" style={{ width: '20px' }}>\n {value}\n </span>\n )}\n </div>\n );\n});\n\nexport interface RangeProps extends ControlProps {\n min: number;\n max: number;\n step?: number;\n}\n\nexport const Range = memo<RangeProps>(function Range({ min, max, step = 0.1, ...props }) {\n return (\n <Control\n inputProps={{\n type: 'range',\n min,\n max,\n step,\n className: 'form-control-range',\n valueExtractor: (e) => parseFloat(e.target.value),\n }}\n {...props}\n />\n );\n});\n\nexport const Checkbox = memo<ControlProps>(function Checkbox(props) {\n return (\n <Control\n inputProps={{ type: 'checkbox', property: 'checked', valueExtractor: (e) => e.target.checked }}\n {...props}\n />\n );\n});\n\nexport const Select = memo<ControlProps>(function Select({ children, ...props }) {\n return (\n <Control inputProps={{ Tag: 'select', className: 'form-select' }} {...props} hideValue={true}>\n {children}\n </Control>\n );\n});\n"],"names":["Label","Control","Range","Checkbox","Select"],"mappings":";;AAEA,MAAM,UAAU,CAAC,QAAQ,IAAI,CAAC,EAAE,gBAAgB,IAAI,UAAU,GAAG,IAAI,MAAM;AAE3E,MAAM,aAAa,CAAC,QAAQ,QAAQ,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,EAAE;AAsB9C,MAAA,QAAQ,KAAiB,SAASA,OAAM,EAAE,MAAM,OAAO,OAAO,gBAAgB;AAEnF,SAAA,qBAAC,SAAM,EAAA,WAAU,0EACZ,UAAA;AAAA,IAAA;AAAA,IACA,UAAU,gBAEH,oBAAA,UAAA,EAAA,UAAA,oBAAC,KAAE,EAAA,MAAK,uBAAsB,SAAS,OACnC,UAAA,oBAAC,SAAM,EAAA,UAAA,SAAK,GAChB,EACJ,CAAA;AAAA,EAAA,GAER;AAER,CAAC;AAEY,MAAA,UAAU,KAAmB,SAASC,SAAQ;AAAA,EACvD,QAAQ;AAAA,EACR;AAAA,EACA,eAAe;AAAA,EACf,UAAU,CAAC;AAAA,EACX;AAAA,EACA,iBAAiB,CAAC;AAAA,EAClB;AAAA,EACA,YAAY,EAAE,MAAM,SAAS,WAAW,SAAS,iBAAiB,CAAC,MAAM,EAAE,OAAO,OAAO,GAAG,eAAe,CAAC;AAAA,EAC5G,YAAY;AAAA,EACZ;AACJ,GAAG;AACO,QAAA,OAAO,WAAW,IAAI;AAEb,iBAAA,gBAAgB,eAAe,IAAI;AAC1C,UAAA,UAAS,mCAAU;AAChB,aAAA,aAAa,CAAC,MAAM,yCAAa,EAAE,CAAC,IAAI,GAAG,EAAA;AAEhD,QAAA,QAAQ,MAAM,SAAS,YAAY;AAGrC,SAAA,qBAAC,OAAI,EAAA,WAAU,mCACX,UAAA;AAAA,IAAA,oBAAC,OAAM,EAAA,MAAY,OAAc,OAAc,cAA4B;AAAA,IAC3E;AAAA,MAAC;AAAA,MAAA;AAAA,QACI,GAAG;AAAA,QACH,GAAG,EAAE,CAAC,QAAQ,GAAG,SAAS,GAAG;AAAA,QAC9B,WAAW,GAAG,UAAU,eAAe,eAAe,EAAE,IAAI,WAAW,SAAS;AAAA,QAChF,UAAU,CAAC,MAAM,SAAS,eAAe,CAAC,CAAC;AAAA,QAE1C;AAAA,MAAA;AAAA,IACL;AAAA,IACC,CAAC,aACG,oBAAA,QAAA,EAAK,eAAe,OAAO,WAAU,cAAa,OAAO,EAAE,OAAO,OAAA,GAC9D,UACL,MAAA,CAAA;AAAA,EAAA,GAER;AAER,CAAC;AAQY,MAAA,QAAQ,KAAiB,SAASC,OAAM,EAAE,KAAK,KAAK,OAAO,KAAK,GAAG,SAAS;AAEjF,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,YAAY;AAAA,QACR,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX,gBAAgB,CAAC,MAAM,WAAW,EAAE,OAAO,KAAK;AAAA,MACpD;AAAA,MACC,GAAG;AAAA,IAAA;AAAA,EACR;AAER,CAAC;AAEM,MAAM,WAAW,KAAmB,SAASC,UAAS,OAAO;AAE5D,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,YAAY,EAAE,MAAM,YAAY,UAAU,WAAW,gBAAgB,CAAC,MAAM,EAAE,OAAO,QAAQ;AAAA,MAC5F,GAAG;AAAA,IAAA;AAAA,EACR;AAER,CAAC;AAEY,MAAA,SAAS,KAAmB,SAASC,QAAO,EAAE,UAAU,GAAG,SAAS;AAC7E,SACK,oBAAA,SAAA,EAAQ,YAAY,EAAE,KAAK,UAAU,WAAW,cAAA,GAAkB,GAAG,OAAO,WAAW,MACnF,SACL,CAAA;AAER,CAAC;"}
@@ -0,0 +1,9 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { Control } from './controls';
3
+ declare const meta: Meta<typeof Control>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const RangeControl: Story;
7
+ export declare const CheckboxControl: Story;
8
+ export declare const SelectControl: Story;
9
+ //# sourceMappingURL=controls.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controls.stories.d.ts","sourceRoot":"","sources":["../../src/bootstrap/controls.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAU,OAAO,EAAmB,MAAM,YAAY,CAAC;AAK9D,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,OAAO,CAyB9B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,YAAY,EAAE,KAI1B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAI7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAS3B,CAAC"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsxs, jsx } from "react/jsx-runtime";
2
3
  import { Alert, Button } from "react-bootstrap";
3
4
  function ErrorAlert({
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","sources":["../../src/bootstrap/error.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { Alert, AlertProps, Button, ButtonProps } from 'react-bootstrap';\n\n//TODO Create MUI-specific?\nexport function ErrorAlert({\n onRetry,\n children,\n buttonProps,\n ...props\n}: {\n children?: Error | string | any;\n onRetry?: () => any;\n buttonProps?: ButtonProps;\n}) {\n if (!children) return null;\n\n return (\n <Alert variant=\"danger\" {...props}>\n <div>{children.message || children.toString()}</div>\n {onRetry && (\n <div>\n <Button\n variant=\"link\"\n className=\"alert-link\"\n {...buttonProps}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onRetry();\n }}\n >\n Retry\n </Button>\n </div>\n )}\n </Alert>\n );\n}\n"],"names":[],"mappings":";;AAMO,SAAS,WAAW;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACP,GAIG;AACK,MAAA,CAAC,SAAiB,QAAA;AAEtB,SACK,qBAAA,OAAA,EAAM,SAAQ,UAAU,GAAG,OACxB,UAAA;AAAA,IAAA,oBAAC,OAAK,EAAA,UAAA,SAAS,WAAW,SAAS,YAAW;AAAA,IAC7C,+BACI,OACG,EAAA,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,SAAQ;AAAA,QACR,WAAU;AAAA,QACT,GAAG;AAAA,QACJ,SAAS,CAAC,MAAM;AACZ,YAAE,eAAe;AACjB,YAAE,gBAAgB;AACV,kBAAA;AAAA,QACZ;AAAA,QACH,UAAA;AAAA,MAAA;AAAA,IAAA,EAGL,CAAA;AAAA,EAAA,GAER;AAER;"}
1
+ {"version":3,"file":"error.js","sources":["../../src/bootstrap/error.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { Alert, AlertProps, Button, ButtonProps } from 'react-bootstrap';\n\n//TODO Create MUI-specific?\nexport function ErrorAlert({\n onRetry,\n children,\n buttonProps,\n ...props\n}: {\n children?: Error | string | any;\n onRetry?: () => any;\n buttonProps?: ButtonProps;\n}) {\n if (!children) return null;\n\n return (\n <Alert variant=\"danger\" {...props}>\n <div>{children.message || children.toString()}</div>\n {onRetry && (\n <div>\n <Button\n variant=\"link\"\n className=\"alert-link\"\n {...buttonProps}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onRetry();\n }}\n >\n Retry\n </Button>\n </div>\n )}\n </Alert>\n );\n}\n"],"names":[],"mappings":";;;AAMO,SAAS,WAAW;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACP,GAIG;AACK,MAAA,CAAC,SAAiB,QAAA;AAEtB,SACK,qBAAA,OAAA,EAAM,SAAQ,UAAU,GAAG,OACxB,UAAA;AAAA,IAAA,oBAAC,OAAK,EAAA,UAAA,SAAS,WAAW,SAAS,YAAW;AAAA,IAC7C,+BACI,OACG,EAAA,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,SAAQ;AAAA,QACR,WAAU;AAAA,QACT,GAAG;AAAA,QACJ,SAAS,CAAC,MAAM;AACZ,YAAE,eAAe;AACjB,YAAE,gBAAgB;AACV,kBAAA;AAAA,QACZ;AAAA,QACH,UAAA;AAAA,MAAA;AAAA,IAAA,EAGL,CAAA;AAAA,EAAA,GAER;AAER;"}
@@ -0,0 +1,8 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { ErrorAlert } from './error';
3
+ declare const meta: Meta<typeof ErrorAlert>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const String: Story;
7
+ export declare const ErrorObject: Story;
8
+ //# sourceMappingURL=error.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.stories.d.ts","sourceRoot":"","sources":["../../src/bootstrap/error.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,UAAU,CAYjC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,MAAM,EAAE,KAIpB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAIzB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { FieldGroup } from './field';
3
+ declare const meta: Meta<typeof FieldGroup>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Vertical: Story;
7
+ export declare const Horizontal: Story;
8
+ //# sourceMappingURL=field.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.stories.d.ts","sourceRoot":"","sources":["../../src/bootstrap/field.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAIrC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,UAAU,CAajC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,QAAQ,EAAE,KAMtB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAMxB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { GlobalLoading } from './globalLoading';
3
+ declare const meta: Meta<typeof GlobalLoading>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ //# sourceMappingURL=globalLoading.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalLoading.stories.d.ts","sourceRoot":"","sources":["../../src/bootstrap/globalLoading.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,aAAa,CAUpC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { AdaptiveContainer } from "./adaptiveContainer.js";
2
- import { Checkbox, Control, Range, Select } from "./controls.js";
2
+ import { Checkbox, Control, Label, Range, Select } from "./controls.js";
3
3
  import { ErrorAlert } from "./error.js";
4
4
  import { FieldGroup } from "./field.js";
5
5
  import { Footer, FooterNavItem } from "./footer.js";
@@ -19,6 +19,7 @@ export {
19
19
  Footer,
20
20
  FooterNavItem,
21
21
  GlobalLoading,
22
+ Label,
22
23
  Loading,
23
24
  Range,
24
25
  ResponsiveHelperBS,
@@ -0,0 +1,9 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { Loading } from './loading';
3
+ declare const meta: Meta<typeof Loading>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const Children: Story;
8
+ export declare const Size: Story;
9
+ //# sourceMappingURL=loading.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading.stories.d.ts","sourceRoot":"","sources":["../../src/bootstrap/loading.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,OAAO,CAY9B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,QAAQ,EAAE,KAItB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAIlB,CAAC"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsxs, jsx } from "react/jsx-runtime";
2
3
  import React from "react";
3
4
  function useBreakpoint() {
@@ -1 +1 @@
1
- {"version":3,"file":"responsiveHelper.js","sources":["../../src/bootstrap/responsiveHelper.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\n\nexport function useBreakpoint() {\n const [breakpoint, setBreakpoint] = React.useState('xs');\n\n React.useEffect(() => {\n const updateBreakpoint = () => {\n const width = window.innerWidth;\n if (width < 576) {\n setBreakpoint('xs');\n } else if (width < 768) {\n setBreakpoint('sm');\n } else if (width < 992) {\n setBreakpoint('md');\n } else if (width < 1200) {\n setBreakpoint('lg');\n } else if (width < 1400) {\n setBreakpoint('xl');\n } else {\n setBreakpoint('xxl');\n }\n };\n\n updateBreakpoint();\n window.addEventListener('resize', updateBreakpoint);\n\n return () => {\n window.removeEventListener('resize', updateBreakpoint);\n };\n }, []);\n\n const isMobile = ['xs', 'sm', 'md'].includes(breakpoint);\n\n return { breakpoint, isMobile, isDesktop: !isMobile };\n}\n\nexport function ResponsiveHelperBS() {\n return (\n <span className=\"small position-fixed bottom-0 z-3\" style={{ fontSize: '9px', right: 1, lineHeight: 1 }}>\n <small className=\"d-block d-sm-none\">XS</small>\n <small className=\"d-none d-sm-block d-md-none\">SM</small>\n <small className=\"d-none d-md-block d-lg-none\">MD</small>\n <small className=\"d-none d-lg-block d-xl-none\">LG</small>\n <small className=\"d-none d-xl-block d-xxl-none\">XL</small>\n <small className=\"d-none d-xxl-block\">XXL</small>\n </span>\n );\n}\n"],"names":[],"mappings":";;AAIO,SAAS,gBAAgB;AAC5B,QAAM,CAAC,YAAY,aAAa,IAAI,MAAM,SAAS,IAAI;AAEvD,QAAM,UAAU,MAAM;AAClB,UAAM,mBAAmB,MAAM;AAC3B,YAAM,QAAQ,OAAO;AACrB,UAAI,QAAQ,KAAK;AACb,sBAAc,IAAI;AAAA,MAAA,WACX,QAAQ,KAAK;AACpB,sBAAc,IAAI;AAAA,MAAA,WACX,QAAQ,KAAK;AACpB,sBAAc,IAAI;AAAA,MAAA,WACX,QAAQ,MAAM;AACrB,sBAAc,IAAI;AAAA,MAAA,WACX,QAAQ,MAAM;AACrB,sBAAc,IAAI;AAAA,MAAA,OACf;AACH,sBAAc,KAAK;AAAA,MAAA;AAAA,IAE3B;AAEiB,qBAAA;AACV,WAAA,iBAAiB,UAAU,gBAAgB;AAElD,WAAO,MAAM;AACF,aAAA,oBAAoB,UAAU,gBAAgB;AAAA,IACzD;AAAA,EACJ,GAAG,EAAE;AAEL,QAAM,WAAW,CAAC,MAAM,MAAM,IAAI,EAAE,SAAS,UAAU;AAEvD,SAAO,EAAE,YAAY,UAAU,WAAW,CAAC,SAAS;AACxD;AAEO,SAAS,qBAAqB;AACjC,SACK,qBAAA,QAAA,EAAK,WAAU,qCAAoC,OAAO,EAAE,UAAU,OAAO,OAAO,GAAG,YAAY,EAAA,GAChG,UAAA;AAAA,IAAC,oBAAA,SAAA,EAAM,WAAU,qBAAoB,UAAE,MAAA;AAAA,IACtC,oBAAA,SAAA,EAAM,WAAU,+BAA8B,UAAE,MAAA;AAAA,IAChD,oBAAA,SAAA,EAAM,WAAU,+BAA8B,UAAE,MAAA;AAAA,IAChD,oBAAA,SAAA,EAAM,WAAU,+BAA8B,UAAE,MAAA;AAAA,IAChD,oBAAA,SAAA,EAAM,WAAU,gCAA+B,UAAE,MAAA;AAAA,IACjD,oBAAA,SAAA,EAAM,WAAU,sBAAqB,UAAG,MAAA,CAAA;AAAA,EAAA,GAC7C;AAER;"}
1
+ {"version":3,"file":"responsiveHelper.js","sources":["../../src/bootstrap/responsiveHelper.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\n\nexport function useBreakpoint() {\n const [breakpoint, setBreakpoint] = React.useState('xs');\n\n React.useEffect(() => {\n const updateBreakpoint = () => {\n const width = window.innerWidth;\n if (width < 576) {\n setBreakpoint('xs');\n } else if (width < 768) {\n setBreakpoint('sm');\n } else if (width < 992) {\n setBreakpoint('md');\n } else if (width < 1200) {\n setBreakpoint('lg');\n } else if (width < 1400) {\n setBreakpoint('xl');\n } else {\n setBreakpoint('xxl');\n }\n };\n\n updateBreakpoint();\n window.addEventListener('resize', updateBreakpoint);\n\n return () => {\n window.removeEventListener('resize', updateBreakpoint);\n };\n }, []);\n\n const isMobile = ['xs', 'sm', 'md'].includes(breakpoint);\n\n return { breakpoint, isMobile, isDesktop: !isMobile };\n}\n\nexport function ResponsiveHelperBS() {\n return (\n <span className=\"small position-fixed bottom-0 z-3\" style={{ fontSize: '9px', right: 1, lineHeight: 1 }}>\n <small className=\"d-block d-sm-none\">XS</small>\n <small className=\"d-none d-sm-block d-md-none\">SM</small>\n <small className=\"d-none d-md-block d-lg-none\">MD</small>\n <small className=\"d-none d-lg-block d-xl-none\">LG</small>\n <small className=\"d-none d-xl-block d-xxl-none\">XL</small>\n <small className=\"d-none d-xxl-block\">XXL</small>\n </span>\n );\n}\n"],"names":[],"mappings":";;;AAIO,SAAS,gBAAgB;AAC5B,QAAM,CAAC,YAAY,aAAa,IAAI,MAAM,SAAS,IAAI;AAEvD,QAAM,UAAU,MAAM;AAClB,UAAM,mBAAmB,MAAM;AAC3B,YAAM,QAAQ,OAAO;AACrB,UAAI,QAAQ,KAAK;AACb,sBAAc,IAAI;AAAA,MAAA,WACX,QAAQ,KAAK;AACpB,sBAAc,IAAI;AAAA,MAAA,WACX,QAAQ,KAAK;AACpB,sBAAc,IAAI;AAAA,MAAA,WACX,QAAQ,MAAM;AACrB,sBAAc,IAAI;AAAA,MAAA,WACX,QAAQ,MAAM;AACrB,sBAAc,IAAI;AAAA,MAAA,OACf;AACH,sBAAc,KAAK;AAAA,MAAA;AAAA,IAE3B;AAEiB,qBAAA;AACV,WAAA,iBAAiB,UAAU,gBAAgB;AAElD,WAAO,MAAM;AACF,aAAA,oBAAoB,UAAU,gBAAgB;AAAA,IACzD;AAAA,EACJ,GAAG,EAAE;AAEL,QAAM,WAAW,CAAC,MAAM,MAAM,IAAI,EAAE,SAAS,UAAU;AAEvD,SAAO,EAAE,YAAY,UAAU,WAAW,CAAC,SAAS;AACxD;AAEO,SAAS,qBAAqB;AACjC,SACK,qBAAA,QAAA,EAAK,WAAU,qCAAoC,OAAO,EAAE,UAAU,OAAO,OAAO,GAAG,YAAY,EAAA,GAChG,UAAA;AAAA,IAAC,oBAAA,SAAA,EAAM,WAAU,qBAAoB,UAAE,MAAA;AAAA,IACtC,oBAAA,SAAA,EAAM,WAAU,+BAA8B,UAAE,MAAA;AAAA,IAChD,oBAAA,SAAA,EAAM,WAAU,+BAA8B,UAAE,MAAA;AAAA,IAChD,oBAAA,SAAA,EAAM,WAAU,+BAA8B,UAAE,MAAA;AAAA,IAChD,oBAAA,SAAA,EAAM,WAAU,gCAA+B,UAAE,MAAA;AAAA,IACjD,oBAAA,SAAA,EAAM,WAAU,sBAAqB,UAAG,MAAA,CAAA;AAAA,EAAA,GAC7C;AAER;"}
@@ -0,0 +1,14 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { Screen } from './screen';
3
+ declare const meta: Meta<typeof Screen>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const LongContent: Story;
8
+ export declare const Loader: Story;
9
+ export declare const Centered: Story;
10
+ export declare const ForwardCb: Story;
11
+ export declare const ForwardIcon: Story;
12
+ export declare const ForwardBtn: Story;
13
+ export declare const HeaderForm: Story;
14
+ //# sourceMappingURL=screen.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen.stories.d.ts","sourceRoot":"","sources":["../../src/bootstrap/screen.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AA2ClC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,MAAM,CA8B7B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,WAAW,EAAE,KAKzB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAcpB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAIvB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAKzB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAgBxB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAaxB,CAAC"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsxs, jsx } from "react/jsx-runtime";
2
3
  import { useState } from "react";
3
4
  import { Toast } from "react-bootstrap";
@@ -1 +1 @@
1
- {"version":3,"file":"toaster.js","sources":["../../src/bootstrap/toaster.tsx"],"sourcesContent":["'use client';\n\nimport React, { useState } from 'react';\nimport { Toast, ToastProps } from 'react-bootstrap';\n// import { useToaster } from '../redux/toasterSlice';\n\nexport function Toaster({\n toast,\n}: { toast: string | { message: string; title?: string; variant?: 'dark' | 'success' | 'danger' } } & ToastProps) {\n //const { toast, setToast } = useToaster();\n const [dismissed, setDismissed] = useState(false);\n\n const msg = typeof toast === 'string' ? toast : toast?.message;\n const title = typeof toast === 'string' ? 'Notification' : toast?.title;\n const variant = typeof toast === 'string' ? '' : toast?.variant;\n\n return (\n <Toast\n onClose={() => setDismissed(true)}\n show={!dismissed}\n delay={10000}\n autohide\n bg={variant?.toLowerCase()}\n className=\"position-fixed top-50 right-50 min-w-200px z-3\"\n >\n <Toast.Header>\n <strong className=\"me-auto\">Notification</strong>\n </Toast.Header>\n <Toast.Body\n className={\n ['dark', 'success', 'danger'].includes((variant as string)?.toLowerCase()) ? 'text-white' : ''\n }\n >\n {msg}\n </Toast.Body>\n </Toast>\n );\n}\n"],"names":[],"mappings":";;;AAMO,SAAS,QAAQ;AAAA,EACpB;AACJ,GAAkH;AAE9G,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAEhD,QAAM,MAAM,OAAO,UAAU,WAAW,QAAQ,+BAAO;AACzC,SAAO,UAAU,WAAW,iBAAiB,+BAAO;AAClE,QAAM,UAAU,OAAO,UAAU,WAAW,KAAK,+BAAO;AAGpD,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,SAAS,MAAM,aAAa,IAAI;AAAA,MAChC,MAAM,CAAC;AAAA,MACP,OAAO;AAAA,MACP,UAAQ;AAAA,MACR,IAAI,mCAAS;AAAA,MACb,WAAU;AAAA,MAEV,UAAA;AAAA,QAAC,oBAAA,MAAM,QAAN,EACG,UAAA,oBAAC,YAAO,WAAU,WAAU,0BAAY,EAC5C,CAAA;AAAA,QACA;AAAA,UAAC,MAAM;AAAA,UAAN;AAAA,YACG,WACI,CAAC,QAAQ,WAAW,QAAQ,EAAE,SAAU,mCAAoB,aAAa,IAAI,eAAe;AAAA,YAG/F,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACL;AAAA,IAAA;AAAA,EACJ;AAER;"}
1
+ {"version":3,"file":"toaster.js","sources":["../../src/bootstrap/toaster.tsx"],"sourcesContent":["'use client';\n\nimport React, { useState } from 'react';\nimport { Toast, ToastProps } from 'react-bootstrap';\n// import { useToaster } from '../redux/toasterSlice';\n\nexport function Toaster({\n toast,\n}: { toast: string | { message: string; title?: string; variant?: 'dark' | 'success' | 'danger' } } & ToastProps) {\n //const { toast, setToast } = useToaster();\n const [dismissed, setDismissed] = useState(false);\n\n const msg = typeof toast === 'string' ? toast : toast?.message;\n const title = typeof toast === 'string' ? 'Notification' : toast?.title;\n const variant = typeof toast === 'string' ? '' : toast?.variant;\n\n return (\n <Toast\n onClose={() => setDismissed(true)}\n show={!dismissed}\n delay={10000}\n autohide\n bg={variant?.toLowerCase()}\n className=\"position-fixed top-50 right-50 min-w-200px z-3\"\n >\n <Toast.Header>\n <strong className=\"me-auto\">Notification</strong>\n </Toast.Header>\n <Toast.Body\n className={\n ['dark', 'success', 'danger'].includes((variant as string)?.toLowerCase()) ? 'text-white' : ''\n }\n >\n {msg}\n </Toast.Body>\n </Toast>\n );\n}\n"],"names":[],"mappings":";;;;AAMO,SAAS,QAAQ;AAAA,EACpB;AACJ,GAAkH;AAE9G,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAEhD,QAAM,MAAM,OAAO,UAAU,WAAW,QAAQ,+BAAO;AACzC,SAAO,UAAU,WAAW,iBAAiB,+BAAO;AAClE,QAAM,UAAU,OAAO,UAAU,WAAW,KAAK,+BAAO;AAGpD,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,SAAS,MAAM,aAAa,IAAI;AAAA,MAChC,MAAM,CAAC;AAAA,MACP,OAAO;AAAA,MACP,UAAQ;AAAA,MACR,IAAI,mCAAS;AAAA,MACb,WAAU;AAAA,MAEV,UAAA;AAAA,QAAC,oBAAA,MAAM,QAAN,EACG,UAAA,oBAAC,YAAO,WAAU,WAAU,0BAAY,EAC5C,CAAA;AAAA,QACA;AAAA,UAAC,MAAM;AAAA,UAAN;AAAA,YACG,WACI,CAAC,QAAQ,WAAW,QAAQ,EAAE,SAAU,mCAAoB,aAAa,IAAI,eAAe;AAAA,YAG/F,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACL;AAAA,IAAA;AAAA,EACJ;AAER;"}
@@ -0,0 +1,8 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import { Toaster } from './toaster';
3
+ declare const meta: Meta<typeof Toaster>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const Object: Story;
8
+ //# sourceMappingURL=toaster.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toaster.stories.d.ts","sourceRoot":"","sources":["../../src/bootstrap/toaster.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,OAAO,CAS9B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAIpB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { FC } from 'react';
2
+ import { Meta, StoryObj } from '@storybook/react';
3
+ import { UseModalProps } from './useModal';
4
+ declare const meta: Meta<FC<UseModalProps>>;
5
+ export default meta;
6
+ type Story = StoryObj<typeof meta>;
7
+ export declare const Default: Story;
8
+ export declare const Offcanvas: Story;
9
+ //# sourceMappingURL=useModal.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useModal.stories.d.ts","sourceRoot":"","sources":["../../src/bootstrap/useModal.stories.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAY,aAAa,EAAE,MAAM,YAAY,CAAC;AAIrD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CA8BjC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAIvB,CAAC"}
@@ -37,17 +37,12 @@ export declare function memo<Key extends any[], Val, SerializedKey extends any[]
37
37
  *
38
38
  * This makes possible to implement various one-off and subsequent transformations.
39
39
  *
40
- * 1. `write`: Before writing to cache, called only once if cache is present and valid
41
- * 2. `read`: After it's read from cache, always called if cache is valid
42
- * TODO Better names: once, folloing
43
- * TODO Better names: memoize, recover
44
- * TODO Better names: writeTransformer, readTransformer
45
- * TODO Better names: writeModifier, readModifier
46
- * TODO Better names: write, read
40
+ * 1. `write`: Transform value BEFORE writing to cache, called only once if cache IS NOT present or IS NOT valid
41
+ * 2. `read`: Transform value AFTER it's read from cache, always called if cache IS valid, keep in mind this transform is applied on top of BEFORE
47
42
  *
48
43
  * Both should return same type or null.
49
44
  *
50
- * If newValue is null, old is returned, and no cache is set.
45
+ * If `newValue` is null, old is returned, and no cache is set.
51
46
  *
52
47
  * ```ts
53
48
  * class InputCache extends TypedCache<string, ImageBitmap> {
@@ -113,6 +108,10 @@ export declare abstract class TransformerMap<Key, Val = Key> extends Map<Key, Va
113
108
  protected write(key: Key, newValue?: Val, oldValue?: Val): MaybePromise<Val>;
114
109
  protected read(oldValue: Val, key: Key): MaybePromise<Val>;
115
110
  delete(key: Key): boolean;
111
+ /**
112
+ * Do something with the value and key before removing it from cache
113
+ * For example, close a file or a bitmap
114
+ */
116
115
  protected dispose(value: Val, key: Key): void;
117
116
  clear(): void;
118
117
  set(key: Key, value: Val): this;