@hkdigital/lib-sveltekit 0.1.22 → 0.1.24

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 (41) hide show
  1. package/dist/classes/svelte/image/ImageScene.svelte.d.ts +54 -26
  2. package/dist/classes/svelte/image/ImageScene.svelte.js +208 -75
  3. package/dist/classes/svelte/image/ImageVariantsLoader.svelte.d.ts +5 -6
  4. package/dist/classes/svelte/image/ImageVariantsLoader.svelte.js +39 -55
  5. package/dist/components/area/HkArea.svelte.d.ts +0 -14
  6. package/dist/components/area/HkGridArea.svelte.d.ts +0 -22
  7. package/dist/components/buttons/button/Button.svelte.d.ts +0 -21
  8. package/dist/components/buttons/button-icon-steeze/SteezeIconButton.svelte.d.ts +0 -9
  9. package/dist/components/buttons/button-text/TextButton.svelte.d.ts +0 -7
  10. package/dist/components/debug/debug-panel-design-scaling/DebugPanelDesignScaling.svelte.d.ts +0 -4
  11. package/dist/components/hkdev/blocks/TextBlock.svelte.d.ts +0 -13
  12. package/dist/components/hkdev/buttons/CheckButton.svelte.d.ts +0 -18
  13. package/dist/components/icons/HkIcon.svelte.d.ts +0 -12
  14. package/dist/components/icons/HkTabIcon.svelte.d.ts +0 -21
  15. package/dist/components/icons/SteezeIcon.svelte.d.ts +0 -12
  16. package/dist/components/inputs/text-input/TextInput.svelte.d.ts +0 -28
  17. package/dist/components/layout/grid-layers/GridLayers.svelte.d.ts +0 -23
  18. package/dist/components/panels/panel/Panel.svelte.d.ts +0 -13
  19. package/dist/components/rows/panel-grid-row/PanelGridRow.svelte.d.ts +0 -14
  20. package/dist/components/rows/panel-row-2/PanelRow2.svelte.d.ts +0 -14
  21. package/dist/components/tab-bar/HkTabBar.svelte.d.ts +0 -18
  22. package/dist/components/tab-bar/HkTabBarSelector.svelte.d.ts +0 -19
  23. package/dist/design/tailwind-theme-extend.d.ts +4 -4
  24. package/dist/server/logger.d.ts +0 -1
  25. package/dist/widgets/button-group/ButtonGroup.svelte.d.ts +0 -20
  26. package/dist/widgets/compare-left-right/CompareLeftRight.svelte.d.ts +0 -10
  27. package/dist/widgets/game-box/GameBox.svelte.d.ts +0 -41
  28. package/dist/widgets/hk-app-layout/HkAppLayout.svelte.d.ts +0 -11
  29. package/dist/widgets/image-box/ImageBox.svelte +4 -4
  30. package/dist/widgets/image-box/ImageBox.svelte.d.ts +1 -21
  31. package/dist/widgets/presenter/(broken) Presenter.state.svelte.js__ +613 -0
  32. package/dist/widgets/presenter/ImageSlide.svelte.d.ts +1 -5
  33. package/dist/widgets/presenter/Presenter.state.svelte.d.ts +3 -22
  34. package/dist/widgets/presenter/Presenter.state.svelte.js +156 -155
  35. package/dist/widgets/presenter/Presenter.svelte +23 -7
  36. package/dist/widgets/presenter/Presenter.svelte.d.ts +3 -12
  37. package/dist/widgets/presenter/Presenter.svelte__ +125 -0
  38. package/dist/widgets/virtual-viewport/VirtualViewport.svelte.d.ts +0 -22
  39. package/package.json +1 -1
  40. package/dist/classes/svelte/image/ImageScene.svelte.js__ +0 -253
  41. package/dist/classes/svelte/image/ImageVariantsLoader.svelte.js--responsive-loading-fails-fix-tried__ +0 -184
@@ -1,3 +1,5 @@
1
+ import { tick } from 'svelte';
2
+
1
3
  import { defineStateContext } from '../../util/svelte/state-context/index.js';
2
4
 
3
5
  import { findFirst } from '../../util/array/index.js';
@@ -67,24 +69,25 @@ export class PresenterState {
67
69
  /** @type {HkPromise[]} */
68
70
  transitionPromises = $state.raw([]);
69
71
 
72
+ /** @type {HkPromise} */
73
+ slideLoadingPromise = null;
74
+
70
75
  /** @type {boolean} */
71
76
  isSlideLoading = $state(false);
72
77
 
73
78
  /** @type {boolean} */
74
- controllerRequested = $state(false);
75
-
76
- /** @type {number} Loading timeout in milliseconds (0 = disabled) */
77
- loadingTimeout = $state(1000);
79
+ loadingSpinner = $state(false);
78
80
 
79
81
  /** @type {boolean} */
80
82
  busy = $derived.by(() => {
81
- const { layerA, layerB } = this;
83
+ const { layerA, layerB, isSlideLoading } = this;
84
+
82
85
  const layerAStable =
83
86
  layerA.stageShow || layerA.stageAfter || layerA.stageIdle;
84
87
  const layerBStable =
85
88
  layerB.stageShow || layerB.stageAfter || layerB.stageIdle;
86
89
 
87
- return !(layerAStable && layerBStable);
90
+ return !(layerAStable && layerBStable) || isSlideLoading;
88
91
  });
89
92
 
90
93
  /** @type {string} */
@@ -98,21 +101,26 @@ export class PresenterState {
98
101
  */
99
102
  constructor() {
100
103
  this.#setupStageTransitions();
101
- this.#setupTransitionTracking();
102
- this.#setupLoadingTransitions();
103
- }
104
104
 
105
- /**
106
- * Returns a simplified presenter reference with essential methods
107
- * for slide components to use
108
- *
109
- * @returns {PresenterRef} A reference object with presenter methods
110
- */
111
- getPresenterRef() {
112
- return {
113
- gotoSlide: (name) => this.gotoSlide(name),
114
- getCurrentSlideName: () => this.currentSlideName
115
- };
105
+ let timeout;
106
+
107
+ $effect((slideLoadingPromise) => {
108
+ if (this.isSlideLoading) {
109
+ // Enable spinner after a short delay
110
+ clearTimeout(timeout);
111
+ setTimeout(() => {
112
+ untrack(() => {
113
+ if (this.isSlideLoading) {
114
+ this.loadingSpinner = true;
115
+ } else {
116
+ this.loadingSpinner = false;
117
+ }
118
+ });
119
+ }, 500);
120
+ } else {
121
+ this.loadingSpinner = false;
122
+ }
123
+ });
116
124
  }
117
125
 
118
126
  /**
@@ -155,59 +163,27 @@ export class PresenterState {
155
163
  return updatedLayer;
156
164
  }
157
165
 
158
- /**
159
- * Set up reactivity for tracking transition promises
160
- * This handles the completion of animations and layer swapping
161
- */
162
- #setupTransitionTracking() {
163
- $effect(() => {
164
- const promises = this.transitionPromises;
166
+ // /**
167
+ // * Set up reactivity for tracking transition promises
168
+ // * This handles the completion of animations and layer swapping
169
+ // */
170
+ // #setupTransitionTracking() {
171
+ // $effect(() => {
172
+ // const promises = this.transitionPromises;
165
173
 
166
- if (promises.length > 0) {
167
- const nextSlide = this.#getSlide(this.nextLayerLabel);
174
+ // if (promises.length > 0) {
175
+ // const nextSlide = this.#getSlide(this.nextLayerLabel);
168
176
 
169
- if (!nextSlide) {
170
- return;
171
- }
177
+ // if (!nextSlide) {
178
+ // return;
179
+ // }
172
180
 
173
- untrack(() => {
174
- this.#executeTransition(promises);
175
- });
176
- }
177
- });
178
- }
179
-
180
- /**
181
- * Set up reactivity to start transitions after component loading is complete
182
- */
183
- #setupLoadingTransitions() {
184
- $effect(() => {
185
- // Only start transitions when loading is complete and we have a next slide
186
- if (!this.isSlideLoading && this.#getSlide(this.nextLayerLabel)) {
187
- const currentSlide = this.#getSlide(this.currentLayerLabel);
188
- const nextSlide = this.#getSlide(this.nextLayerLabel);
189
-
190
- // Prepare the next layer for its entrance transition
191
- this.#updateLayer(this.nextLayerLabel, {
192
- z: Z_FRONT,
193
- visible: true,
194
- stageBeforeIn: true,
195
- transitions: nextSlide?.intro ?? []
196
- });
197
-
198
- // Prepare the current layer for its exit transition
199
- this.#updateLayer(this.currentLayerLabel, {
200
- z: Z_BACK,
201
- visible: true,
202
- stageBeforeOut: true,
203
- transitions: currentSlide?.outro ?? []
204
- });
205
-
206
- // Start transitions
207
- this.#applyTransitions();
208
- }
209
- });
210
- }
181
+ // untrack(() => {
182
+ // this.#executeTransition(promises);
183
+ // });
184
+ // }
185
+ // });
186
+ // }
211
187
 
212
188
  /**
213
189
  * Execute the transition by waiting for all promises and then
@@ -217,6 +193,8 @@ export class PresenterState {
217
193
  */
218
194
  async #executeTransition(promises) {
219
195
  try {
196
+ // console.debug('executeTransition');
197
+
220
198
  await Promise.allSettled(promises);
221
199
 
222
200
  untrack(() => {
@@ -265,48 +243,6 @@ export class PresenterState {
265
243
  }
266
244
  }
267
245
 
268
- /**
269
- * Mark the slide as loaded, which triggers transitions to begin
270
- */
271
- finishSlideLoading() {
272
- this.isSlideLoading = false;
273
- }
274
-
275
- /**
276
- * Returns a controller object for managing manual loading
277
- * Components can use this to signal when they're done loading
278
- * or to cancel and go back to the previous slide
279
- *
280
- * @returns {LoadController} Object with loaded() and cancel() methods
281
- */
282
- getLoadingController() {
283
- // Mark that the controller was requested
284
- this.controllerRequested = true;
285
-
286
- return {
287
- /**
288
- * Call when component has finished loading
289
- */
290
- loaded: () => {
291
- this.finishSlideLoading();
292
- },
293
-
294
- /**
295
- * Call to cancel loading and return to previous slide
296
- */
297
- cancel: () => {
298
- // Return to previous slide if available
299
- const currentSlideName = this.currentSlideName;
300
- if (currentSlideName) {
301
- this.gotoSlide(currentSlideName);
302
- } else if (this.slides.length > 0) {
303
- // Fallback to first slide if no current slide
304
- this.gotoSlide(this.slides[0].name);
305
- }
306
- }
307
- };
308
- }
309
-
310
246
  /**
311
247
  * Configure the presentation
312
248
  *
@@ -369,57 +305,79 @@ export class PresenterState {
369
305
  throw new Error('Transition in progress');
370
306
  }
371
307
 
372
- // Reset controller requested flag
373
- this.controllerRequested = false;
374
-
375
- // Set loading state to true before starting transition
376
- this.isSlideLoading = true;
377
-
378
- // Add controller function to slide props if it has a component
379
- if (slide.data?.component) {
380
- // Get a presenter reference to pass to the slide
381
- const presenterRef = this.getPresenterRef();
382
-
383
- // Create a copy of the slide to avoid mutating the original
384
- const slideWithExtras = {
385
- ...slide,
386
- data: {
387
- ...slide.data,
388
- props: {
389
- ...(slide.data.props || {}),
390
- getLoadingController: () => this.getLoadingController(),
391
- presenter: presenterRef // Add presenter reference to props
392
- }
308
+ this.slideLoadingPromise = null;
309
+
310
+ // Get a presenter reference to pass to the slide
311
+ const presenterRef = this.#getPresenterRef();
312
+
313
+ // Create a copy of the slide to avoid mutating the original
314
+ const slideWithProps = {
315
+ ...slide,
316
+ data: {
317
+ ...slide.data,
318
+ props: {
319
+ ...(slide.data.props || {}),
320
+ getLoadingController: () => {
321
+ this.isSlideLoading = true;
322
+ this.slideLoadingPromise = new HkPromise(() => {});
323
+
324
+ return this.#getLoadingController();
325
+ // this.slideLoadingPromise should be a HkPromise now
326
+ // console.log('slideLoadingPromise', this.slideLoadingPromise);
327
+ },
328
+ presenter: presenterRef // Add presenter reference to props
393
329
  }
394
- };
330
+ }
331
+ };
395
332
 
396
- // Add next slide to next layer with controller and presenter included
397
- this.#updateSlide(this.nextLayerLabel, slideWithExtras);
333
+ // console.debug('Checkpoint 1');
398
334
 
399
- // If a timeout is configured, automatically finish loading after delay
400
- if (this.loadingTimeout > 0) {
401
- setTimeout(() => {
402
- // Only auto-finish if the controller wasn't requested
403
- if (!this.controllerRequested && this.isSlideLoading) {
404
- // console.debug(
405
- // `Slide '${slide.name}' didn't request loading controller, auto-finishing.`
406
- // );
407
- this.finishSlideLoading();
408
- }
409
- }, this.loadingTimeout);
410
- }
411
- } else {
412
- // No component, so just use the slide as is
413
- this.#updateSlide(this.nextLayerLabel, slide);
414
- // No component to load, so finish loading immediately
415
- this.finishSlideLoading();
335
+ // Add next slide to next layer
336
+ this.#updateSlide(this.nextLayerLabel, slideWithProps);
337
+
338
+ // console.debug('Checkpoint 2');
339
+
340
+ await tick();
341
+
342
+ // console.debug('Checkpoint 3');
343
+
344
+ if (this.slideLoadingPromise) {
345
+ // console.debug('Waiting for slide to load');
346
+ // @ts-ignore
347
+ await this.slideLoadingPromise;
348
+ this.isSlideLoading = false;
349
+ // console.debug('Done waiting for slide loading');
416
350
  }
417
351
 
418
- // Make next layer visible, move to front
352
+ const currentSlide = this.#getSlide(this.currentLayerLabel);
353
+ const nextSlide = this.#getSlide(this.nextLayerLabel);
354
+
355
+ // console.debug('Checkpoint 4');
356
+
357
+ // Make next layer visible, move to front, and prepare for
358
+ // transition in
419
359
  this.#updateLayer(this.nextLayerLabel, {
420
360
  z: Z_FRONT,
421
- visible: true
361
+ visible: true,
362
+ stageBeforeIn: true,
363
+ transitions: nextSlide?.intro ?? []
422
364
  });
365
+
366
+ // Move current layer to back, keep visible, and prepare for
367
+ // transition out
368
+ this.#updateLayer(this.currentLayerLabel, {
369
+ z: Z_BACK,
370
+ visible: true,
371
+ stageBeforeOut: true,
372
+ transitions: currentSlide?.outro ?? []
373
+ });
374
+
375
+ // console.debug('Checkpoint 5');
376
+
377
+ // Start transitions
378
+ this.#applyTransitions();
379
+
380
+ await this.#executeTransition(this.transitionPromises);
423
381
  }
424
382
 
425
383
  /**
@@ -545,6 +503,49 @@ export class PresenterState {
545
503
 
546
504
  throw new Error(`Missing slide [${label}]`);
547
505
  }
506
+
507
+ /**
508
+ * Returns a simplified presenter reference with essential methods
509
+ * for slide components to use
510
+ *
511
+ * @returns {PresenterRef} A reference object with presenter methods
512
+ */
513
+ #getPresenterRef() {
514
+ return {
515
+ gotoSlide: (name) => this.gotoSlide(name),
516
+ getCurrentSlideName: () => this.currentSlideName
517
+ };
518
+ }
519
+
520
+ /**
521
+ * Returns a controller object for managing manual loading
522
+ * Components can use this to signal when they're done loading
523
+ * or to cancel and go back to the previous slide
524
+ *
525
+ * @returns {LoadController}
526
+ * Object with loaded() and cancel() methods
527
+ */
528
+ #getLoadingController() {
529
+ // console.debug('getLoadingController was called');
530
+
531
+ return {
532
+ /**
533
+ * Call when component has finished loading
534
+ */
535
+ loaded: () => {
536
+ // console.debug('Slide said loading has completed');
537
+ this.slideLoadingPromise?.tryResolve();
538
+ },
539
+
540
+ /**
541
+ * Call to cancel loading and return to previous slide
542
+ */
543
+ cancel: () => {
544
+ // console.debug('Slide said loading has cancelled');
545
+ this.slideLoadingPromise?.tryReject();
546
+ }
547
+ };
548
+ }
548
549
  }
549
550
 
550
551
  /* -------------------------------------- Export create & get state functions */
@@ -3,7 +3,8 @@
3
3
 
4
4
  import { GridLayers } from '../../components/layout/index.js';
5
5
 
6
- import { createOrGetPresenterState } from './index.js';
6
+ import { PresenterState } from './Presenter.state.svelte.js';
7
+ import { getPresenterState } from './index.js';
7
8
  import { cssBefore, cssDuring } from './util.js';
8
9
 
9
10
  /* ------------------------------------------------------------------ Props */
@@ -23,7 +24,9 @@
23
24
  * autostart?: boolean,
24
25
  * startSlide?: string,
25
26
  * instanceKey?: Symbol | string,
26
- * layoutSnippet: import('svelte').Snippet<[Slide|null, Layer]>
27
+ * presenter?: import('./Presenter.state.svelte.js').PresenterState,
28
+ * layoutSnippet: import('svelte').Snippet<[Slide|null, Layer]>,
29
+ * loadingSnippet?: import('svelte').Snippet,
27
30
  * }}
28
31
  */
29
32
  let {
@@ -38,13 +41,20 @@
38
41
  // State
39
42
  instanceKey,
40
43
 
44
+ presenter = $bindable(new PresenterState()),
45
+
41
46
  // Snippets
42
- layoutSnippet
47
+ layoutSnippet,
48
+ loadingSnippet
43
49
  } = $props();
44
50
 
45
- /* ------------------------------------------------------------------ State */
51
+ // > Create presenter state object and register using setContext
52
+
53
+ // FIXME: Using getPresenterState to force creation of presenter outside
54
+ // the component. Otherwise transitions doe not work somehow..
55
+ presenter = getPresenterState(instanceKey);
46
56
 
47
- const presenter = createOrGetPresenterState(instanceKey);
57
+ // > State
48
58
 
49
59
  $effect.pre(() => {
50
60
  // Configure presenter with slides if provided
@@ -107,7 +117,7 @@
107
117
  inert={presenter.busy}
108
118
  class="justify-self-stretch self-stretch overflow-hidden"
109
119
  >
110
- <div class={classesA} style={stylesA}>
120
+ <div class="{classesA} h-full w-full" style={stylesA}>
111
121
  {@render layoutSnippet(presenter.slideA, presenter.layerA)}
112
122
  </div>
113
123
  </div>
@@ -118,8 +128,14 @@
118
128
  inert={presenter.busy}
119
129
  class="justify-self-stretch self-stretch overflow-hidden"
120
130
  >
121
- <div class={classesB} style={stylesB}>
131
+ <div class="{classesB} h-full w-full" style={stylesB}>
122
132
  {@render layoutSnippet(presenter.slideB, presenter.layerB)}
123
133
  </div>
124
134
  </div>
135
+
136
+ {#if loadingSnippet && presenter.loadingSpinner}
137
+ <div class="h-full w-full" style="z-index:20;">
138
+ {@render loadingSnippet()}
139
+ </div>
140
+ {/if}
125
141
  </GridLayers>
@@ -1,20 +1,11 @@
1
1
  export default Presenter;
2
- type Presenter = {
3
- $on?(type: string, callback: (e: any) => void): () => void;
4
- $set?(props: Partial<{
5
- classes?: string;
6
- slides?: Slide[];
7
- autostart?: boolean;
8
- startSlide?: string;
9
- instanceKey?: string | Symbol;
10
- layoutSnippet: Snippet<[Slide, Layer]>;
11
- }>): void;
12
- };
13
2
  declare const Presenter: import("svelte").Component<{
14
3
  classes?: string;
15
4
  slides?: import("./typedef.js").Slide[];
16
5
  autostart?: boolean;
17
6
  startSlide?: string;
18
7
  instanceKey?: Symbol | string;
8
+ presenter?: import("./Presenter.state.svelte.js").PresenterState;
19
9
  layoutSnippet: import("svelte").Snippet<[import("./typedef.js").Slide | null, import("./typedef.js").Layer]>;
20
- }, {}, "">;
10
+ loadingSnippet?: import("svelte").Snippet;
11
+ }, {}, "presenter">;
@@ -0,0 +1,125 @@
1
+ <script>
2
+ /* ---------------------------------------------------------------- Imports */
3
+
4
+ import { GridLayers } from '$lib/components/layout/index.js';
5
+
6
+ import { createOrGetPresenterState } from './index.js';
7
+ import { cssBefore, cssDuring } from './util.js';
8
+
9
+ /* ------------------------------------------------------------------ Props */
10
+
11
+ /**
12
+ * @typedef {import("./typedef.js").Slide} Slide
13
+ */
14
+
15
+ /**
16
+ * @typedef {import("./typedef.js").Layer} Layer
17
+ */
18
+
19
+ /**
20
+ * @type {{
21
+ * classes?: string,
22
+ * slides?: import("./typedef.js").Slide[],
23
+ * autostart?: boolean,
24
+ * startSlide?: string,
25
+ * instanceKey?: Symbol | string,
26
+ * layoutSnippet: import('svelte').Snippet<[Slide|null, Layer]>
27
+ * }}
28
+ */
29
+ let {
30
+ // > Style
31
+ classes,
32
+
33
+ // > Functional
34
+ slides,
35
+ autostart = false,
36
+ startSlide,
37
+
38
+ // State
39
+ instanceKey,
40
+
41
+ // Snippets
42
+ layoutSnippet
43
+ } = $props();
44
+
45
+ /* ------------------------------------------------------------------ State */
46
+
47
+ const presenter = createOrGetPresenterState(instanceKey);
48
+
49
+ $effect.pre(() => {
50
+ // Configure presenter with slides if provided
51
+ presenter.configure({ slides, autostart, startSlide });
52
+ });
53
+
54
+ let classesA = $state('');
55
+ let classesB = $state('');
56
+
57
+ let stylesA = $state('');
58
+ let stylesB = $state('');
59
+
60
+ //> Apply stage classes and styles
61
+
62
+ $effect(() => {
63
+ // > layerA
64
+
65
+ const { stageBeforeIn, stageIn, stageBeforeOut, stageOut, transitions } =
66
+ presenter.layerA;
67
+
68
+ if (transitions && transitions.length) {
69
+ if (stageBeforeIn || stageBeforeOut) {
70
+ ({ style: stylesA, classes: classesA } = cssBefore(transitions));
71
+ } else if (stageIn || stageOut) {
72
+ setTimeout(() => {
73
+ ({ style: stylesA, classes: classesA } = cssDuring(transitions));
74
+ });
75
+ }
76
+ } else {
77
+ stylesA = '';
78
+ classesA = '';
79
+ }
80
+ });
81
+
82
+ $effect(() => {
83
+ // > layerB
84
+
85
+ const { stageBeforeIn, stageIn, stageBeforeOut, stageOut, transitions } =
86
+ presenter.layerB;
87
+
88
+ if (transitions) {
89
+ if (stageBeforeIn || stageBeforeOut) {
90
+ ({ style: stylesB, classes: classesB } = cssBefore(transitions));
91
+ } else if (stageIn || stageOut) {
92
+ setTimeout(() => {
93
+ ({ style: stylesB, classes: classesB } = cssDuring(transitions));
94
+ });
95
+ }
96
+ } else {
97
+ stylesB = '';
98
+ classesB = '';
99
+ }
100
+ });
101
+ </script>
102
+
103
+ <GridLayers data-component="presenter" {classes}>
104
+ <div
105
+ style:z-index={presenter.layerA.z}
106
+ style:visibility={presenter.layerA.visible ? 'visible' : 'hidden'}
107
+ inert={presenter.busy}
108
+ class="justify-self-stretch self-stretch overflow-hidden"
109
+ >
110
+ <div class={classesA} style={stylesA}>
111
+ {@render layoutSnippet(presenter.slideA, presenter.layerA)}
112
+ </div>
113
+ </div>
114
+
115
+ <div
116
+ style:z-index={presenter.layerB.z}
117
+ style:visibility={presenter.layerB.visible ? 'visible' : 'hidden'}
118
+ inert={presenter.busy}
119
+ class="justify-self-stretch self-stretch overflow-hidden"
120
+ >
121
+ <div class={classesB} style={stylesB}>
122
+ {@render layoutSnippet(presenter.slideB, presenter.layerB)}
123
+ </div>
124
+ </div>
125
+ </GridLayers>
@@ -1,26 +1,4 @@
1
1
  export default VirtualViewport;
2
- type VirtualViewport = {
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
- overflow?: string;
12
- designWidth?: number;
13
- designHeight?: number;
14
- scaleViewport?: number;
15
- scaleW?: number;
16
- scaleH?: number;
17
- scaleUI?: number;
18
- scaleTextBase?: number;
19
- scaleTextHeading?: number;
20
- scaleTextUI?: number;
21
- children?: Snippet<[]>;
22
- }>): void;
23
- };
24
2
  declare const VirtualViewport: import("svelte").Component<{
25
3
  [attr: string]: any;
26
4
  base?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hkdigital/lib-sveltekit",
3
- "version": "0.1.22",
3
+ "version": "0.1.24",
4
4
  "author": {
5
5
  "name": "HKdigital",
6
6
  "url": "https://hkdigital.nl"