@hkdigital/lib-sveltekit 0.1.6 → 0.1.7

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 (215) hide show
  1. package/README.md +127 -127
  2. package/dist/classes/data/IterableTree.js +243 -243
  3. package/dist/classes/data/Selector.js +190 -190
  4. package/dist/classes/data/index.js +2 -2
  5. package/dist/classes/index.js +3 -3
  6. package/dist/classes/promise/HkPromise.js +377 -377
  7. package/dist/classes/promise/index.js +1 -1
  8. package/dist/classes/stores/SubscribersCount.js +107 -107
  9. package/dist/classes/stores/index.js +1 -1
  10. package/dist/classes/streams/LogTransformStream.js +19 -19
  11. package/dist/classes/streams/ServerEventsStore.js +110 -110
  12. package/dist/classes/streams/TimeStampSource.js +26 -26
  13. package/dist/classes/streams/index.js +3 -3
  14. package/dist/classes/svelte/audio/AudioLoader.svelte.js +58 -58
  15. package/dist/classes/svelte/audio/AudioScene.svelte.js +282 -282
  16. package/dist/classes/svelte/audio/mocks.js +35 -35
  17. package/dist/classes/svelte/final-state-machine/FiniteStateMachine.svelte.js +133 -133
  18. package/dist/classes/svelte/final-state-machine/index.js +1 -1
  19. package/dist/classes/svelte/image/ImageLoader.svelte.js +47 -47
  20. package/dist/classes/svelte/image/ImageScene.svelte.js +253 -253
  21. package/dist/classes/svelte/image/ImageVariantsLoader.svelte.js +152 -152
  22. package/dist/classes/svelte/image/index.js +4 -4
  23. package/dist/classes/svelte/image/mocks.js +35 -35
  24. package/dist/classes/svelte/image/typedef.js +8 -8
  25. package/dist/classes/svelte/loading-state-machine/LoadingStateMachine.svelte.js +109 -109
  26. package/dist/classes/svelte/loading-state-machine/constants.js +16 -16
  27. package/dist/classes/svelte/loading-state-machine/index.js +3 -3
  28. package/dist/classes/svelte/network-loader/NetworkLoader.svelte.js +331 -331
  29. package/dist/classes/svelte/network-loader/constants.js +3 -3
  30. package/dist/classes/svelte/network-loader/index.js +3 -3
  31. package/dist/classes/svelte/network-loader/mocks.js +30 -30
  32. package/dist/classes/svelte/network-loader/typedef.js +8 -8
  33. package/dist/components/area/HkArea.svelte +49 -49
  34. package/dist/components/area/HkArea.svelte.d.ts +14 -0
  35. package/dist/components/area/HkGridArea.svelte +77 -77
  36. package/dist/components/area/HkGridArea.svelte.d.ts +22 -0
  37. package/dist/components/area/index.js +2 -2
  38. package/dist/components/boxes/game-box/GameBox.svelte +112 -112
  39. package/dist/components/boxes/game-box/GameBox.svelte.d.ts +15 -0
  40. package/dist/components/boxes/game-box/gamebox.util.js +83 -83
  41. package/dist/components/boxes/index.js +2 -2
  42. package/dist/components/boxes/virtual-viewport/VirtualViewport.svelte +199 -199
  43. package/dist/components/boxes/virtual-viewport/VirtualViewport.svelte.d.ts +22 -0
  44. package/dist/components/buttons/button/Button.svelte +76 -75
  45. package/dist/components/buttons/button/Button.svelte.d.ts +21 -0
  46. package/dist/components/buttons/button-icon-steeze/SteezeIconButton.svelte +30 -0
  47. package/dist/components/buttons/button-icon-steeze/SteezeIconButton.svelte.d.ts +16 -0
  48. package/dist/components/buttons/button-text/TextButton.svelte +21 -21
  49. package/dist/components/buttons/button-text/TextButton.svelte.d.ts +7 -0
  50. package/dist/components/buttons/index.d.ts +1 -0
  51. package/dist/components/buttons/index.js +3 -2
  52. package/dist/components/hkdev/blocks/TextBlock.svelte +46 -46
  53. package/dist/components/hkdev/blocks/TextBlock.svelte.d.ts +13 -0
  54. package/dist/components/hkdev/buttons/CheckButton.svelte +62 -62
  55. package/dist/components/hkdev/buttons/CheckButton.svelte.d.ts +18 -0
  56. package/dist/components/{icon → icons}/HkIcon.svelte +86 -86
  57. package/dist/components/icons/HkIcon.svelte.d.ts +22 -0
  58. package/dist/components/{icon → icons}/HkTabIcon.svelte +116 -116
  59. package/dist/components/icons/HkTabIcon.svelte.d.ts +40 -0
  60. package/dist/components/icons/SteezeIcon.svelte +96 -0
  61. package/dist/components/icons/SteezeIcon.svelte.d.ts +22 -0
  62. package/dist/components/{icon → icons}/index.d.ts +1 -0
  63. package/dist/components/{icon → icons}/index.js +6 -4
  64. package/dist/components/{icon → icons}/typedef.js +16 -16
  65. package/dist/components/image/ImageBox.svelte +208 -208
  66. package/dist/components/image/ImageBox.svelte.d.ts +19 -0
  67. package/dist/components/image/index.js +5 -5
  68. package/dist/components/image/typedef.js +32 -32
  69. package/dist/components/index.js +2 -2
  70. package/dist/components/inputs/index.js +1 -1
  71. package/dist/components/inputs/text-input/TestTextInput.svelte__ +102 -102
  72. package/dist/components/inputs/text-input/TextInput.svelte +226 -226
  73. package/dist/components/inputs/text-input/TextInput.svelte.d.ts +28 -0
  74. package/dist/components/inputs/text-input/TextInput.svelte___ +83 -83
  75. package/dist/components/inputs/text-input/assets/IconInvalid.svelte +14 -14
  76. package/dist/components/inputs/text-input/assets/IconValid.svelte +12 -12
  77. package/dist/components/layout/HkAppLayout.state.svelte.js +25 -25
  78. package/dist/components/layout/HkAppLayout.svelte +251 -251
  79. package/dist/components/layout/HkAppLayout.svelte.d.ts +11 -0
  80. package/dist/components/layout/HkGridLayers.svelte +82 -82
  81. package/dist/components/layout/HkGridLayers.svelte.d.ts +23 -0
  82. package/dist/components/layout/index.js +9 -9
  83. package/dist/components/panels/index.js +1 -1
  84. package/dist/components/panels/plain-panel/PlainPanel.svelte +33 -33
  85. package/dist/components/panels/plain-panel/PlainPanel.svelte.d.ts +12 -0
  86. package/dist/components/rows/index.js +3 -3
  87. package/dist/components/rows/panel-grid-row/PanelGridRow.svelte +104 -104
  88. package/dist/components/rows/panel-grid-row/PanelGridRow.svelte.d.ts +14 -0
  89. package/dist/components/rows/panel-row-2/PanelRow2.svelte +40 -40
  90. package/dist/components/rows/panel-row-2/PanelRow2.svelte.d.ts +14 -0
  91. package/dist/components/tab-bar/HkTabBar.state.svelte.js +149 -149
  92. package/dist/components/tab-bar/HkTabBar.svelte +74 -74
  93. package/dist/components/tab-bar/HkTabBar.svelte.d.ts +18 -0
  94. package/dist/components/tab-bar/HkTabBarSelector.state.svelte.js +93 -93
  95. package/dist/components/tab-bar/HkTabBarSelector.svelte +49 -49
  96. package/dist/components/tab-bar/HkTabBarSelector.svelte.d.ts +19 -0
  97. package/dist/components/tab-bar/index.js +17 -17
  98. package/dist/components/tab-bar/typedef.d.ts +1 -1
  99. package/dist/components/tab-bar/typedef.js +8 -8
  100. package/dist/components/widgets/compare-left-right/CompareLeftRight.svelte +179 -179
  101. package/dist/components/widgets/compare-left-right/CompareLeftRight.svelte.d.ts +10 -0
  102. package/dist/components/widgets/compare-left-right/index.js +1 -1
  103. package/dist/components/widgets/scale-control/index.js +1 -1
  104. package/dist/config/imagetools-config.js +189 -189
  105. package/dist/config/imagetools.d.ts +71 -71
  106. package/dist/config/typedef.js +8 -8
  107. package/dist/constants/errors/api.js +9 -9
  108. package/dist/constants/errors/generic.js +5 -5
  109. package/dist/constants/errors/index.js +3 -3
  110. package/dist/constants/errors/jwt.js +5 -5
  111. package/dist/constants/http/headers.js +6 -6
  112. package/dist/constants/http/index.js +2 -2
  113. package/dist/constants/http/methods.js +2 -2
  114. package/dist/constants/index.js +3 -3
  115. package/dist/constants/mime/application.js +5 -5
  116. package/dist/constants/mime/audio.js +13 -13
  117. package/dist/constants/mime/image.js +3 -3
  118. package/dist/constants/mime/index.js +4 -4
  119. package/dist/constants/mime/text.js +2 -2
  120. package/dist/constants/regexp/index.js +31 -31
  121. package/dist/constants/regexp/inspiratie.js__ +95 -95
  122. package/dist/constants/regexp/text.js +49 -49
  123. package/dist/constants/regexp/user.js +32 -32
  124. package/dist/constants/regexp/web.js +3 -3
  125. package/dist/constants/state-labels/input-states.js +11 -11
  126. package/dist/constants/state-labels/submit-states.js +4 -4
  127. package/dist/constants/time.js +28 -28
  128. package/dist/css/tw-prose.postcss__ +259 -259
  129. package/dist/css/utilities.postcss +43 -43
  130. package/dist/design/design-config.js +73 -73
  131. package/dist/design/tailwind-theme-extend.d.ts +4 -4
  132. package/dist/design/tailwind-theme-extend.js +160 -151
  133. package/dist/schemas/index.js +1 -1
  134. package/dist/schemas/validate-url.js +180 -180
  135. package/dist/server/index.js +1 -1
  136. package/dist/server/logger.js +94 -94
  137. package/dist/states/index.js +1 -1
  138. package/dist/states/navigation.svelte.js +55 -55
  139. package/dist/stores/index.js +1 -1
  140. package/dist/stores/theme.js +80 -80
  141. package/dist/themes/hkdev/components/blocks/text-block.postcss +40 -40
  142. package/dist/themes/hkdev/components/boxes/game-box.postcss +13 -13
  143. package/dist/themes/hkdev/components/buttons/button-icon-steeze.postcss +22 -0
  144. package/dist/themes/hkdev/components/buttons/button-text.postcss +34 -34
  145. package/dist/themes/hkdev/components/buttons/button.postcss +138 -138
  146. package/dist/themes/hkdev/components/buttons/button.postcss__ +40 -0
  147. package/dist/themes/hkdev/components/buttons/button.postcss___ +91 -0
  148. package/dist/themes/hkdev/components/buttons/skip-button.postcss +8 -8
  149. package/dist/themes/hkdev/components/icons/icon-steeze.postcss +22 -0
  150. package/dist/themes/hkdev/components/inputs/text-input.postcss +108 -108
  151. package/dist/themes/hkdev/components/panels/plain-panel.postcss +46 -46
  152. package/dist/themes/hkdev/components/panels/speech-bubble.postcss +52 -52
  153. package/dist/themes/hkdev/components/rows/panel-grid-row.postcss +7 -7
  154. package/dist/themes/hkdev/components/rows/panel-row-2.postcss +9 -9
  155. package/dist/themes/hkdev/components.postcss +61 -55
  156. package/dist/themes/hkdev/debug.postcss +1 -1
  157. package/dist/themes/hkdev/global/layout.postcss +39 -39
  158. package/dist/themes/hkdev/global/on-colors.postcss +53 -53
  159. package/dist/themes/hkdev/global/text.postcss__ +34 -34
  160. package/dist/themes/hkdev/global/vars.postcss__ +7 -7
  161. package/dist/themes/hkdev/globals.postcss +11 -11
  162. package/dist/themes/hkdev/responsive.postcss +12 -12
  163. package/dist/themes/hkdev/theme-ext.js +15 -15
  164. package/dist/themes/hkdev/theme.js +227 -227
  165. package/dist/themes/index.js +1 -1
  166. package/dist/util/array/index.js +455 -455
  167. package/dist/util/compare/index.js +247 -247
  168. package/dist/util/css/css-vars.js +83 -83
  169. package/dist/util/css/index.js +1 -1
  170. package/dist/util/design-system/components/states.js +22 -22
  171. package/dist/util/design-system/css/clamp.js +66 -66
  172. package/dist/util/design-system/css/root-design-vars.js +100 -100
  173. package/dist/util/design-system/index.js +5 -5
  174. package/dist/util/design-system/layout/scaling.js +97 -97
  175. package/dist/util/design-system/tailwind.js +289 -289
  176. package/dist/util/expect/arrays.js +47 -47
  177. package/dist/util/expect/index.js +259 -259
  178. package/dist/util/expect/primitives.js +55 -55
  179. package/dist/util/expect/url.js +60 -60
  180. package/dist/util/function/index.js +218 -218
  181. package/dist/util/http/errors.js +97 -97
  182. package/dist/util/http/headers.js +45 -45
  183. package/dist/util/http/http-request.js +273 -273
  184. package/dist/util/http/index.js +22 -22
  185. package/dist/util/http/json-request.js +143 -143
  186. package/dist/util/http/mocks.js +65 -65
  187. package/dist/util/http/response.js +228 -228
  188. package/dist/util/http/url.js +52 -52
  189. package/dist/util/image/index.js +86 -86
  190. package/dist/util/index.js +2 -2
  191. package/dist/util/is/index.js +140 -140
  192. package/dist/util/iterate/index.js +234 -234
  193. package/dist/util/object/index.js +1361 -1361
  194. package/dist/util/singleton/index.js +97 -97
  195. package/dist/util/string/index.js +184 -184
  196. package/dist/util/svelte/index.js +2 -2
  197. package/dist/util/svelte/observe/index.js +49 -49
  198. package/dist/util/svelte/state-context/index.js +83 -83
  199. package/dist/util/svelte/wait/index.js +38 -38
  200. package/dist/util/sveltekit/index.js +1 -1
  201. package/dist/util/sveltekit/route-folders/index.js +82 -82
  202. package/dist/util/time/index.js +339 -339
  203. package/dist/valibot/date.js__ +10 -10
  204. package/dist/valibot/index.js +9 -9
  205. package/dist/valibot/url.js +95 -95
  206. package/dist/valibot/user.js +23 -23
  207. package/dist/zod/all.js +33 -33
  208. package/dist/zod/generic.js +11 -11
  209. package/dist/zod/javascript.js +32 -32
  210. package/dist/zod/user.js +16 -16
  211. package/dist/zod/web.js +52 -52
  212. package/package.json +99 -99
  213. package/dist/components/icon/HkIcon.svelte.d.ts +0 -10
  214. package/dist/components/icon/HkTabIcon.svelte.d.ts +0 -19
  215. /package/dist/components/{icon → icons}/typedef.d.ts +0 -0
@@ -1,208 +1,208 @@
1
- <script>
2
- import { ImageLoader } from '../../classes/svelte/image/index.js';
3
- import { ImageVariantsLoader } from '../../classes/svelte/image/index.js';
4
- import { toSingleImageMeta } from '../../util/image/index.js';
5
-
6
- /**
7
- * @type {{
8
- * base?: string,
9
- * bg?: string,
10
- * classes?: string,
11
- * width?: string,
12
- * height?: string,
13
- * aspect?: string,
14
- * overflow?: string,
15
- * fit?: 'contain' | 'cover' | 'fill',
16
- * position?: string,
17
- * imageMeta: import('../../config/typedef.js').ImageMeta | import('../../config/typedef.js').ImageMeta[],
18
- * imageLoader?: import('../../classes/svelte/image/index.js').ImageLoader,
19
- * alt?: string,
20
- * onProgress?: (progress: import('../../classes/svelte/network-loader/typedef.js').LoadingProgress) => void,
21
- * [attr: string]: any
22
- * }}
23
- */
24
- let {
25
- // Style
26
- base,
27
- bg,
28
- classes,
29
- width,
30
- height,
31
- aspect,
32
- overflow = 'overflow-clip',
33
-
34
- // Fitting and positioning of image in its container
35
- fit = 'contain',
36
- position = 'left top',
37
-
38
- // Image data
39
- imageMeta,
40
- imageLoader,
41
-
42
- // Accessibility
43
- alt = '',
44
-
45
- // Events
46
- onProgress,
47
-
48
- // Additional attributes
49
- ...attrs
50
- } = $props();
51
-
52
- if (!imageMeta) {
53
- throw new Error('Missing [imageMeta]');
54
- }
55
-
56
- /** @type {HTMLDivElement|undefined} */
57
- let containerElem = $state();
58
-
59
- let imageMeta_ = $state();
60
- let variantsLoader = $state();
61
- let variantObjectUrl = $state(null);
62
- let objectUrl = $state(null);
63
-
64
- // For single image meta
65
- let metaWidth = $state(0);
66
- let metaHeight = $state(0);
67
-
68
- /** @type {ImageLoader|undefined} */
69
- let imageLoader_ = $state();
70
-
71
- $effect(() => {
72
- // Setup variants loader for responsive images
73
- if (Array.isArray(imageMeta) && !imageLoader && !variantsLoader) {
74
- variantsLoader = new ImageVariantsLoader(imageMeta, {
75
- devicePixelRatio: window.devicePixelRatio
76
- });
77
- }
78
- // Handle single image meta
79
- else if (imageMeta && !variantsLoader) {
80
- imageMeta_ = toSingleImageMeta(imageMeta);
81
- }
82
- });
83
-
84
- // Handle progress reporting
85
- $effect(() => {
86
- if (!onProgress) return;
87
-
88
- // Report progress from variants loader
89
- if (variantsLoader) {
90
- onProgress(variantsLoader.progress);
91
- }
92
- // Report progress from single image loader
93
- else if (imageLoader_) {
94
- onProgress(imageLoader_.progress);
95
- }
96
- });
97
-
98
- $effect(() => {
99
- if (imageMeta_) {
100
- metaWidth = imageMeta_.width ?? 0;
101
- metaHeight = imageMeta_.height ?? 0;
102
- }
103
- });
104
-
105
- $effect(() => {
106
- if (!imageMeta && imageLoader && !imageLoader_) {
107
- imageLoader_ = imageLoader;
108
- imageMeta_ = imageLoader.imageMeta;
109
- }
110
- });
111
-
112
- $effect(() => {
113
- if (imageMeta_ && !imageLoader_) {
114
- imageLoader_ = new ImageLoader({ imageMeta: imageMeta_ });
115
- }
116
- });
117
-
118
- $effect(() => {
119
- if (imageLoader_?.initial) {
120
- imageLoader_.load();
121
- }
122
- });
123
-
124
- $effect(() => {
125
- if (imageLoader_?.loaded) {
126
- objectUrl = imageLoader_.getObjectURL();
127
- }
128
-
129
- return () => {
130
- if (objectUrl) {
131
- URL.revokeObjectURL(objectUrl);
132
- objectUrl = null;
133
- }
134
- };
135
- });
136
-
137
- $effect(() => {
138
- if (!containerElem || !variantsLoader) return;
139
-
140
- const resizeObserver = new ResizeObserver((entries) => {
141
- for (const entry of entries) {
142
- const { width, height } = entry.contentRect;
143
- variantsLoader.updateOptimalImageMeta({
144
- containerWidth: width,
145
- containerHeight: height,
146
- fit
147
- });
148
- }
149
- });
150
-
151
- resizeObserver.observe(containerElem);
152
- return () => resizeObserver.disconnect();
153
- });
154
-
155
- $effect(() => {
156
- if (variantsLoader?.loaded) {
157
- variantObjectUrl = variantsLoader.getObjectURL();
158
- }
159
-
160
- return () => {
161
- if (variantObjectUrl) {
162
- URL.revokeObjectURL(variantObjectUrl);
163
- variantObjectUrl = null;
164
- }
165
- };
166
- });
167
- </script>
168
-
169
- <div
170
- data-image="box"
171
- bind:this={containerElem}
172
- class="{base} {bg} {aspect} {overflow} {width} {height} {classes}"
173
- style:--fit={fit}
174
- style:--pos={position}
175
- style:width={width || (height && aspect) ? undefined : '100%'}
176
- style:height={height || (width && aspect) ? undefined : '100%'}
177
- {...attrs}
178
- >
179
- {#if variantsLoader?.loaded && variantObjectUrl}
180
- <img
181
- src={variantObjectUrl}
182
- {alt}
183
- width={variantsLoader.variant.width}
184
- height={variantsLoader.variant.height}
185
- />
186
- {:else if objectUrl && metaWidth && metaHeight}
187
- <img src={objectUrl} {alt} width={metaWidth} height={metaHeight} />
188
- {/if}
189
- </div>
190
-
191
- <style>
192
- [data-image='box'] {
193
- max-width: 100%;
194
- max-height: 100%;
195
- }
196
-
197
- img {
198
- display: block;
199
- width: 100%;
200
- height: 100%;
201
- max-width: 100%;
202
- max-height: 100%;
203
- -o-object-fit: var(--fit);
204
- object-fit: var(--fit);
205
- -o-object-position: var(--pos);
206
- object-position: var(--pos);
207
- }
208
- </style>
1
+ <script>
2
+ import { ImageLoader } from '../../classes/svelte/image/index.js';
3
+ import { ImageVariantsLoader } from '../../classes/svelte/image/index.js';
4
+ import { toSingleImageMeta } from '../../util/image/index.js';
5
+
6
+ /**
7
+ * @type {{
8
+ * base?: string,
9
+ * bg?: string,
10
+ * classes?: string,
11
+ * width?: string,
12
+ * height?: string,
13
+ * aspect?: string,
14
+ * overflow?: string,
15
+ * fit?: 'contain' | 'cover' | 'fill',
16
+ * position?: string,
17
+ * imageMeta: import('../../config/typedef.js').ImageMeta | import('../../config/typedef.js').ImageMeta[],
18
+ * imageLoader?: import('../../classes/svelte/image/index.js').ImageLoader,
19
+ * alt?: string,
20
+ * onProgress?: (progress: import('../../classes/svelte/network-loader/typedef.js').LoadingProgress) => void,
21
+ * [attr: string]: any
22
+ * }}
23
+ */
24
+ let {
25
+ // Style
26
+ base,
27
+ bg,
28
+ classes,
29
+ width,
30
+ height,
31
+ aspect,
32
+ overflow = 'overflow-clip',
33
+
34
+ // Fitting and positioning of image in its container
35
+ fit = 'contain',
36
+ position = 'left top',
37
+
38
+ // Image data
39
+ imageMeta,
40
+ imageLoader,
41
+
42
+ // Accessibility
43
+ alt = '',
44
+
45
+ // Events
46
+ onProgress,
47
+
48
+ // Additional attributes
49
+ ...attrs
50
+ } = $props();
51
+
52
+ if (!imageMeta) {
53
+ throw new Error('Missing [imageMeta]');
54
+ }
55
+
56
+ /** @type {HTMLDivElement|undefined} */
57
+ let containerElem = $state();
58
+
59
+ let imageMeta_ = $state();
60
+ let variantsLoader = $state();
61
+ let variantObjectUrl = $state(null);
62
+ let objectUrl = $state(null);
63
+
64
+ // For single image meta
65
+ let metaWidth = $state(0);
66
+ let metaHeight = $state(0);
67
+
68
+ /** @type {ImageLoader|undefined} */
69
+ let imageLoader_ = $state();
70
+
71
+ $effect(() => {
72
+ // Setup variants loader for responsive images
73
+ if (Array.isArray(imageMeta) && !imageLoader && !variantsLoader) {
74
+ variantsLoader = new ImageVariantsLoader(imageMeta, {
75
+ devicePixelRatio: window.devicePixelRatio
76
+ });
77
+ }
78
+ // Handle single image meta
79
+ else if (imageMeta && !variantsLoader) {
80
+ imageMeta_ = toSingleImageMeta(imageMeta);
81
+ }
82
+ });
83
+
84
+ // Handle progress reporting
85
+ $effect(() => {
86
+ if (!onProgress) return;
87
+
88
+ // Report progress from variants loader
89
+ if (variantsLoader) {
90
+ onProgress(variantsLoader.progress);
91
+ }
92
+ // Report progress from single image loader
93
+ else if (imageLoader_) {
94
+ onProgress(imageLoader_.progress);
95
+ }
96
+ });
97
+
98
+ $effect(() => {
99
+ if (imageMeta_) {
100
+ metaWidth = imageMeta_.width ?? 0;
101
+ metaHeight = imageMeta_.height ?? 0;
102
+ }
103
+ });
104
+
105
+ $effect(() => {
106
+ if (!imageMeta && imageLoader && !imageLoader_) {
107
+ imageLoader_ = imageLoader;
108
+ imageMeta_ = imageLoader.imageMeta;
109
+ }
110
+ });
111
+
112
+ $effect(() => {
113
+ if (imageMeta_ && !imageLoader_) {
114
+ imageLoader_ = new ImageLoader({ imageMeta: imageMeta_ });
115
+ }
116
+ });
117
+
118
+ $effect(() => {
119
+ if (imageLoader_?.initial) {
120
+ imageLoader_.load();
121
+ }
122
+ });
123
+
124
+ $effect(() => {
125
+ if (imageLoader_?.loaded) {
126
+ objectUrl = imageLoader_.getObjectURL();
127
+ }
128
+
129
+ return () => {
130
+ if (objectUrl) {
131
+ URL.revokeObjectURL(objectUrl);
132
+ objectUrl = null;
133
+ }
134
+ };
135
+ });
136
+
137
+ $effect(() => {
138
+ if (!containerElem || !variantsLoader) return;
139
+
140
+ const resizeObserver = new ResizeObserver((entries) => {
141
+ for (const entry of entries) {
142
+ const { width, height } = entry.contentRect;
143
+ variantsLoader.updateOptimalImageMeta({
144
+ containerWidth: width,
145
+ containerHeight: height,
146
+ fit
147
+ });
148
+ }
149
+ });
150
+
151
+ resizeObserver.observe(containerElem);
152
+ return () => resizeObserver.disconnect();
153
+ });
154
+
155
+ $effect(() => {
156
+ if (variantsLoader?.loaded) {
157
+ variantObjectUrl = variantsLoader.getObjectURL();
158
+ }
159
+
160
+ return () => {
161
+ if (variantObjectUrl) {
162
+ URL.revokeObjectURL(variantObjectUrl);
163
+ variantObjectUrl = null;
164
+ }
165
+ };
166
+ });
167
+ </script>
168
+
169
+ <div
170
+ data-image="box"
171
+ bind:this={containerElem}
172
+ class="{base} {bg} {aspect} {overflow} {width} {height} {classes}"
173
+ style:--fit={fit}
174
+ style:--pos={position}
175
+ style:width={width || (height && aspect) ? undefined : '100%'}
176
+ style:height={height || (width && aspect) ? undefined : '100%'}
177
+ {...attrs}
178
+ >
179
+ {#if variantsLoader?.loaded && variantObjectUrl}
180
+ <img
181
+ src={variantObjectUrl}
182
+ {alt}
183
+ width={variantsLoader.variant.width}
184
+ height={variantsLoader.variant.height}
185
+ />
186
+ {:else if objectUrl && metaWidth && metaHeight}
187
+ <img src={objectUrl} {alt} width={metaWidth} height={metaHeight} />
188
+ {/if}
189
+ </div>
190
+
191
+ <style>
192
+ [data-image='box'] {
193
+ max-width: 100%;
194
+ max-height: 100%;
195
+ }
196
+
197
+ img {
198
+ display: block;
199
+ width: 100%;
200
+ height: 100%;
201
+ max-width: 100%;
202
+ max-height: 100%;
203
+ -o-object-fit: var(--fit);
204
+ object-fit: var(--fit);
205
+ -o-object-position: var(--pos);
206
+ object-position: var(--pos);
207
+ }
208
+ </style>
@@ -1,4 +1,23 @@
1
1
  export default ImageBox;
2
+ type ImageBox = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<{
5
+ [attr: string]: any;
6
+ base?: string;
7
+ bg?: string;
8
+ classes?: string;
9
+ width?: string;
10
+ height?: string;
11
+ aspect?: string;
12
+ overflow?: string;
13
+ fit?: "fill" | "contain" | "cover";
14
+ position?: string;
15
+ imageMeta: ImageMeta | ImageMeta[];
16
+ imageLoader?: ImageLoader;
17
+ alt?: string;
18
+ onProgress?: (progress: LoadingProgress) => void;
19
+ }>): void;
20
+ };
2
21
  declare const ImageBox: import("svelte").Component<{
3
22
  [attr: string]: any;
4
23
  base?: string;
@@ -1,5 +1,5 @@
1
- /** @typedef {import('../../config/typedef.js').ImageMeta} ImageMeta */
2
-
3
- export { default as ImageBox } from './ImageBox.svelte';
4
-
5
- export default {};
1
+ /** @typedef {import('../../config/typedef.js').ImageMeta} ImageMeta */
2
+
3
+ export { default as ImageBox } from './ImageBox.svelte';
4
+
5
+ export default {};
@@ -1,32 +1,32 @@
1
- /**
2
- * @typedef {(
3
- * 'contain' |
4
- * 'cover' |
5
- * 'fill' |
6
- * 'none' |
7
- * 'scale-down'
8
- * )} ObjectFit
9
- */
10
-
11
- /**
12
- * @typedef {(
13
- * 'left' |
14
- * 'center' |
15
- * 'right' |
16
- * 'top' |
17
- * 'bottom' |
18
- * 'left top' |
19
- * 'left center' |
20
- * 'left bottom' |
21
- * 'center top' |
22
- * 'center center' |
23
- * 'center bottom' |
24
- * 'right top' |
25
- * 'right center' |
26
- * 'right bottom' |
27
- * `${number}% ${number}%` |
28
- * `${number}px ${number}px`
29
- * )} ObjectPosition
30
- */
31
-
32
- export default {};
1
+ /**
2
+ * @typedef {(
3
+ * 'contain' |
4
+ * 'cover' |
5
+ * 'fill' |
6
+ * 'none' |
7
+ * 'scale-down'
8
+ * )} ObjectFit
9
+ */
10
+
11
+ /**
12
+ * @typedef {(
13
+ * 'left' |
14
+ * 'center' |
15
+ * 'right' |
16
+ * 'top' |
17
+ * 'bottom' |
18
+ * 'left top' |
19
+ * 'left center' |
20
+ * 'left bottom' |
21
+ * 'center top' |
22
+ * 'center center' |
23
+ * 'center bottom' |
24
+ * 'right top' |
25
+ * 'right center' |
26
+ * 'right bottom' |
27
+ * `${number}% ${number}%` |
28
+ * `${number}px ${number}px`
29
+ * )} ObjectPosition
30
+ */
31
+
32
+ export default {};
@@ -1,2 +1,2 @@
1
- // export * as area from "./area/index.js";
2
- // export * as icon from "./icon/index.js";
1
+ // export * as area from "./area/index.js";
2
+ // export * as icon from "./icon/index.js";
@@ -1 +1 @@
1
- export { default as TextInput } from './text-input/TextInput.svelte';
1
+ export { default as TextInput } from './text-input/TextInput.svelte';