@hkdigital/lib-sveltekit 0.1.62 → 0.1.65
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.
- package/README.md +135 -135
- package/dist/assets/autospuiten/car-paint-picker.js +41 -41
- package/dist/assets/autospuiten/labels.js +7 -7
- package/dist/classes/data/IterableTree.js +243 -243
- package/dist/classes/data/Selector.js +190 -190
- package/dist/classes/data/index.js +2 -2
- package/dist/classes/index.js +4 -4
- package/dist/classes/promise/HkPromise.js +377 -377
- package/dist/classes/promise/index.js +1 -1
- package/dist/classes/stores/SubscribersCount.js +107 -107
- package/dist/classes/stores/index.js +1 -1
- package/dist/classes/streams/LogTransformStream.js +19 -19
- package/dist/classes/streams/ServerEventsStore.js +110 -110
- package/dist/classes/streams/TimeStampSource.js +26 -26
- package/dist/classes/streams/index.js +3 -3
- package/dist/classes/svelte/audio/AudioLoader.svelte.js +58 -58
- package/dist/classes/svelte/audio/AudioScene.svelte.js +295 -295
- package/dist/classes/svelte/audio/mocks.js +35 -35
- package/dist/classes/svelte/finite-state-machine/FiniteStateMachine.svelte.js +133 -133
- package/dist/classes/svelte/finite-state-machine/index.js +1 -1
- package/dist/classes/svelte/image/ImageLoader.svelte.js +47 -47
- package/dist/classes/svelte/image/ImageScene.svelte.js +253 -253
- package/dist/classes/svelte/image/ImageVariantsLoader.svelte.js +152 -152
- package/dist/classes/svelte/image/index.js +4 -4
- package/dist/classes/svelte/image/mocks.js +35 -35
- package/dist/classes/svelte/image/typedef.js +8 -8
- package/dist/classes/svelte/index.js +14 -14
- package/dist/classes/svelte/loading-state-machine/LoadingStateMachine.svelte.js +109 -109
- package/dist/classes/svelte/loading-state-machine/constants.js +16 -16
- package/dist/classes/svelte/loading-state-machine/index.js +3 -3
- package/dist/classes/svelte/network-loader/NetworkLoader.svelte.js +331 -331
- package/dist/classes/svelte/network-loader/constants.js +3 -3
- package/dist/classes/svelte/network-loader/index.js +3 -3
- package/dist/classes/svelte/network-loader/mocks.js +30 -30
- package/dist/classes/svelte/network-loader/typedef.js +8 -8
- package/dist/components/area/HkArea.svelte +49 -49
- package/dist/components/area/HkGridArea.svelte +77 -77
- package/dist/components/area/index.js +2 -2
- package/dist/components/buttons/button/Button.svelte +82 -82
- package/dist/components/buttons/button-icon-steeze/SteezeIconButton.svelte +30 -30
- package/dist/components/buttons/button-text/TextButton.svelte +21 -21
- package/dist/components/buttons/index.js +3 -3
- package/dist/components/debug/debug-panel-design-scaling/DebugPanelDesignScaling.svelte +146 -146
- package/dist/components/debug/index.js +1 -1
- package/dist/components/hkdev/blocks/TextBlock.svelte +46 -46
- package/dist/components/hkdev/buttons/CheckButton.svelte +62 -62
- package/dist/components/icons/HkIcon.svelte +86 -86
- package/dist/components/icons/HkTabIcon.svelte +116 -116
- package/dist/components/icons/SteezeIcon.svelte +97 -97
- package/dist/components/icons/index.js +6 -6
- package/dist/components/icons/typedef.js +16 -16
- package/dist/components/index.js +2 -2
- package/dist/components/inputs/index.js +1 -1
- package/dist/components/inputs/text-input/TestTextInput.svelte__ +102 -102
- package/dist/components/inputs/text-input/TextInput.svelte +223 -223
- package/dist/components/inputs/text-input/TextInput.svelte___ +83 -83
- package/dist/components/inputs/text-input/assets/IconInvalid.svelte +14 -14
- package/dist/components/inputs/text-input/assets/IconValid.svelte +12 -12
- package/dist/components/layout/grid-layers/GridLayers.svelte +167 -167
- package/dist/components/layout/index.js +1 -1
- package/dist/components/panels/index.js +1 -1
- package/dist/components/panels/panel/Panel.svelte +43 -43
- package/dist/components/rows/index.js +3 -3
- package/dist/components/rows/panel-grid-row/PanelGridRow.svelte +104 -104
- package/dist/components/rows/panel-row-2/PanelRow2.svelte +40 -40
- package/dist/components/tab-bar/HkTabBar.state.svelte.js +149 -149
- package/dist/components/tab-bar/HkTabBar.svelte +74 -74
- package/dist/components/tab-bar/HkTabBarSelector.state.svelte.js +93 -93
- package/dist/components/tab-bar/HkTabBarSelector.svelte +49 -49
- package/dist/components/tab-bar/index.js +17 -17
- package/dist/components/tab-bar/typedef.js +8 -8
- package/dist/config/imagetools-config.js +189 -189
- package/dist/config/imagetools.d.ts +71 -71
- package/dist/config/typedef.js +8 -8
- package/dist/constants/bases.js +13 -13
- package/dist/constants/errors/api.js +9 -9
- package/dist/constants/errors/generic.js +5 -5
- package/dist/constants/errors/index.js +3 -3
- package/dist/constants/errors/jwt.js +5 -5
- package/dist/constants/http/headers.js +6 -6
- package/dist/constants/http/index.js +2 -2
- package/dist/constants/http/methods.js +2 -2
- package/dist/constants/index.js +3 -3
- package/dist/constants/mime/application.js +5 -5
- package/dist/constants/mime/audio.js +13 -13
- package/dist/constants/mime/image.js +3 -3
- package/dist/constants/mime/index.js +4 -4
- package/dist/constants/mime/text.js +2 -2
- package/dist/constants/regexp/index.js +31 -31
- package/dist/constants/regexp/inspiratie.js__ +95 -95
- package/dist/constants/regexp/text.js +49 -49
- package/dist/constants/regexp/user.js +32 -32
- package/dist/constants/regexp/web.js +3 -3
- package/dist/constants/state-labels/input-states.js +11 -11
- package/dist/constants/state-labels/submit-states.js +4 -4
- package/dist/constants/time.js +28 -28
- package/dist/css/utilities.css +43 -43
- package/dist/design/design-config.js +73 -73
- package/dist/design/tailwind-theme-extend.js +158 -158
- package/dist/schemas/index.js +1 -1
- package/dist/schemas/validate-url.js +180 -180
- package/dist/server/index.js +1 -1
- package/dist/server/logger.js +94 -94
- package/dist/states/index.js +1 -1
- package/dist/states/navigation.svelte.js +55 -55
- package/dist/stores/index.js +1 -1
- package/dist/stores/theme.js +80 -80
- package/dist/themes/hkdev/components/blocks/text-block.css +41 -41
- package/dist/themes/hkdev/components/boxes/game-box.css +12 -12
- package/dist/themes/hkdev/components/buttons/button-icon-steeze.css +22 -22
- package/dist/themes/hkdev/components/buttons/button-text.css +32 -32
- package/dist/themes/hkdev/components/buttons/button.css +142 -142
- package/dist/themes/hkdev/components/buttons/skip-button.css +6 -6
- package/dist/themes/hkdev/components/icons/icon-steeze.css +22 -22
- package/dist/themes/hkdev/components/inputs/text-input.css +104 -104
- package/dist/themes/hkdev/components/panels/panel.css +27 -27
- package/dist/themes/hkdev/components/rows/panel-grid-row.css +6 -6
- package/dist/themes/hkdev/components/rows/panel-row-2.css +7 -7
- package/dist/themes/hkdev/components.css +47 -47
- package/dist/themes/hkdev/debug.css +1 -1
- package/dist/themes/hkdev/global/layout.css +39 -39
- package/dist/themes/hkdev/global/on-colors.css +53 -53
- package/dist/themes/hkdev/globals.css +11 -11
- package/dist/themes/hkdev/responsive.css +12 -12
- package/dist/themes/hkdev/theme-ext.js +15 -15
- package/dist/themes/hkdev/theme.js +235 -235
- package/dist/themes/index.js +1 -1
- package/dist/util/array/index.js +455 -455
- package/dist/util/bases/base58.js +262 -262
- package/dist/util/bases/index.js +1 -1
- package/dist/util/compare/index.js +247 -247
- package/dist/util/css/css-vars.js +83 -83
- package/dist/util/css/index.js +1 -1
- package/dist/util/design-system/components/states.js +22 -22
- package/dist/util/design-system/css/clamp.js +66 -66
- package/dist/util/design-system/css/root-design-vars.js +100 -100
- package/dist/util/design-system/index.js +5 -5
- package/dist/util/design-system/layout/scaling.js +228 -228
- package/dist/util/design-system/skeleton.js +208 -208
- package/dist/util/design-system/tailwind.js +288 -288
- package/dist/util/expect/arrays.js +47 -47
- package/dist/util/expect/index.js +259 -259
- package/dist/util/expect/primitives.js +55 -55
- package/dist/util/expect/url.js +60 -60
- package/dist/util/function/index.js +218 -218
- package/dist/util/http/errors.js +97 -97
- package/dist/util/http/headers.js +45 -45
- package/dist/util/http/http-request.js +294 -294
- package/dist/util/http/index.js +22 -22
- package/dist/util/http/json-request.js +143 -143
- package/dist/util/http/mocks.js +65 -65
- package/dist/util/http/response.js +241 -241
- package/dist/util/http/test-data__/content-length-test-hkdigital-small.V4HfZyBQ.avif +0 -0
- package/dist/util/http/url.js +52 -52
- package/dist/util/image/index.js +86 -86
- package/dist/util/index.js +2 -2
- package/dist/util/is/index.js +140 -140
- package/dist/util/iterate/index.js +234 -234
- package/dist/util/object/index.js +1361 -1361
- package/dist/util/singleton/index.js +97 -97
- package/dist/util/string/array-path.js +75 -75
- package/dist/util/string/convert.js +54 -54
- package/dist/util/string/fs.js +226 -226
- package/dist/util/string/index.js +5 -5
- package/dist/util/string/interpolate.js +61 -61
- package/dist/util/string/pad.js +10 -10
- package/dist/util/svelte/index.js +4 -4
- package/dist/util/svelte/loading/loading-tracker.svelte.js +108 -108
- package/dist/util/svelte/observe/index.js +49 -49
- package/dist/util/svelte/state-context/index.js +83 -83
- package/dist/util/svelte/wait/index.js +38 -38
- package/dist/util/sveltekit/index.js +1 -1
- package/dist/util/sveltekit/route-folders/index.js +101 -101
- package/dist/util/time/index.js +323 -323
- package/dist/util/unique/index.js +249 -249
- package/dist/valibot/date.js__ +10 -10
- package/dist/valibot/index.js +9 -9
- package/dist/valibot/url.js +95 -95
- package/dist/valibot/user.js +23 -23
- package/dist/widgets/button-group/ButtonGroup.svelte +82 -94
- package/dist/widgets/button-group/ButtonGroup.svelte.d.ts +0 -2
- package/dist/widgets/button-group/typedef.js +10 -10
- package/dist/widgets/compare-left-right/CompareLeftRight.svelte +179 -179
- package/dist/widgets/compare-left-right/index.js +1 -1
- package/dist/widgets/game-box/GameBox.svelte +579 -186
- package/dist/widgets/game-box/GameBox.svelte.d.ts +64 -4
- package/dist/widgets/game-box/gamebox.util.js +83 -83
- package/dist/widgets/hk-app-layout/HkAppLayout.state.svelte.js +25 -25
- package/dist/widgets/hk-app-layout/HkAppLayout.svelte +251 -251
- package/dist/widgets/image-box/ImageBox.svelte +212 -212
- package/dist/widgets/image-box/index.js +5 -5
- package/dist/widgets/image-box/typedef.js +32 -32
- package/dist/widgets/index.js +23 -23
- package/dist/widgets/presenter/(broken) Presenter.state.svelte.js__ +613 -0
- package/dist/widgets/presenter/ImageSlide.svelte +64 -64
- package/dist/widgets/presenter/Presenter.state.svelte.js +636 -636
- package/dist/widgets/presenter/Presenter.svelte +140 -140
- package/dist/widgets/presenter/Presenter.svelte__ +125 -0
- package/dist/widgets/presenter/constants.js +7 -7
- package/dist/widgets/presenter/index.js +10 -10
- package/dist/widgets/presenter/typedef.js +106 -106
- package/dist/widgets/presenter/util.js +210 -210
- package/dist/widgets/virtual-viewport/VirtualViewport.svelte +196 -196
- package/dist/zod/all.js +33 -33
- package/dist/zod/generic.js +11 -11
- package/dist/zod/javascript.js +32 -32
- package/dist/zod/user.js +16 -16
- package/dist/zod/web.js +52 -52
- package/package.json +102 -102
@@ -1,196 +1,196 @@
|
|
1
|
-
<script>
|
2
|
-
import { onMount } from 'svelte';
|
3
|
-
import {
|
4
|
-
getRootCssDesignWidth,
|
5
|
-
getRootCssDesignHeight,
|
6
|
-
getClampParams,
|
7
|
-
clamp
|
8
|
-
} from '../../util/design-system/index.js';
|
9
|
-
|
10
|
-
/**
|
11
|
-
* Virtual viewport component that creates a container with its own scaling
|
12
|
-
* system based on its actual dimensions.
|
13
|
-
*
|
14
|
-
* @type {{
|
15
|
-
* base?: string,
|
16
|
-
* bg?: string,
|
17
|
-
* classes?: string,
|
18
|
-
* width?: string,
|
19
|
-
* height?: string,
|
20
|
-
* overflow?: string,
|
21
|
-
* designWidth?: number,
|
22
|
-
* designHeight?: number,
|
23
|
-
* scaleViewport?: number,
|
24
|
-
* scaleW?: number,
|
25
|
-
* scaleH?: number,
|
26
|
-
* scaleUI?: number,
|
27
|
-
* scaleTextBase?: number,
|
28
|
-
* scaleTextHeading?: number,
|
29
|
-
* scaleTextUI?: number,
|
30
|
-
* children?: import('svelte').Snippet,
|
31
|
-
* [attr: string]: any
|
32
|
-
* }}
|
33
|
-
*/
|
34
|
-
let {
|
35
|
-
// Style related props first
|
36
|
-
base,
|
37
|
-
bg,
|
38
|
-
classes,
|
39
|
-
width,
|
40
|
-
height,
|
41
|
-
overflow = 'overflow-clip',
|
42
|
-
|
43
|
-
// Functional bindable props
|
44
|
-
designWidth = $bindable(0),
|
45
|
-
designHeight = $bindable(0),
|
46
|
-
scaleViewport = $bindable(0),
|
47
|
-
scaleW = $bindable(0),
|
48
|
-
scaleH = $bindable(0),
|
49
|
-
scaleUI = $bindable(0),
|
50
|
-
scaleTextBase = $bindable(0),
|
51
|
-
scaleTextHeading = $bindable(0),
|
52
|
-
scaleTextUI = $bindable(0),
|
53
|
-
|
54
|
-
// Snippets
|
55
|
-
children,
|
56
|
-
|
57
|
-
// Rest of attributes
|
58
|
-
...attrs
|
59
|
-
} = $props();
|
60
|
-
|
61
|
-
/**
|
62
|
-
* References to the container element for measurement
|
63
|
-
* @type {HTMLDivElement}
|
64
|
-
*/
|
65
|
-
let container;
|
66
|
-
|
67
|
-
/**
|
68
|
-
* Current scaling variables
|
69
|
-
*/
|
70
|
-
let scaleVars = $state('');
|
71
|
-
|
72
|
-
// No separate variables for design dimensions
|
73
|
-
|
74
|
-
/**
|
75
|
-
* Error state for CSS variable parsing
|
76
|
-
*/
|
77
|
-
let cssParsingError = $state(null);
|
78
|
-
|
79
|
-
/**
|
80
|
-
* Update scaling based on current dimensions
|
81
|
-
*/
|
82
|
-
function updateScaling() {
|
83
|
-
if (!container) return;
|
84
|
-
|
85
|
-
// Get actual container dimensions
|
86
|
-
const rect = container.getBoundingClientRect();
|
87
|
-
const containerWidth = rect.width;
|
88
|
-
const containerHeight = rect.height;
|
89
|
-
|
90
|
-
// Calculate ratios similar to root variables
|
91
|
-
scaleW = containerWidth / designWidth;
|
92
|
-
scaleH = containerHeight / designHeight;
|
93
|
-
|
94
|
-
// Use the smaller ratio to ensure content fits
|
95
|
-
scaleViewport = Math.min(scaleW, scaleH);
|
96
|
-
|
97
|
-
try {
|
98
|
-
// Get clamp parameters from CSS variables
|
99
|
-
const uiParams = getClampParams('scale-ui');
|
100
|
-
const baseParams = getClampParams('scale-text-base');
|
101
|
-
const headingParams = getClampParams('scale-text-heading');
|
102
|
-
const textUIParams = getClampParams('scale-text-ui');
|
103
|
-
|
104
|
-
// Apply scaling according to extracted clamp parameters
|
105
|
-
scaleUI = clamp(uiParams.min, scaleViewport, uiParams.max);
|
106
|
-
|
107
|
-
scaleTextBase = clamp(baseParams.min, scaleViewport, baseParams.max);
|
108
|
-
scaleTextHeading = clamp(
|
109
|
-
headingParams.min,
|
110
|
-
scaleViewport,
|
111
|
-
headingParams.max
|
112
|
-
);
|
113
|
-
scaleTextUI = clamp(textUIParams.min, scaleViewport, textUIParams.max);
|
114
|
-
|
115
|
-
// Clear any previous error
|
116
|
-
cssParsingError = null;
|
117
|
-
} catch (error) {
|
118
|
-
// Store the error for debugging
|
119
|
-
cssParsingError = error;
|
120
|
-
console.error('VirtualViewport scaling error:', error);
|
121
|
-
|
122
|
-
// Fallback to simple scaling without clamping
|
123
|
-
scaleUI = scaleViewport;
|
124
|
-
scaleTextBase = scaleViewport;
|
125
|
-
scaleTextHeading = scaleViewport;
|
126
|
-
scaleTextUI = scaleViewport;
|
127
|
-
}
|
128
|
-
|
129
|
-
// Update the style variables
|
130
|
-
scaleVars = `
|
131
|
-
--scale-w: ${scaleW};
|
132
|
-
--scale-h: ${scaleH};
|
133
|
-
--scale-viewport: ${scaleViewport};
|
134
|
-
--scale-ui: ${scaleUI};
|
135
|
-
--scale-text-base: ${scaleTextBase};
|
136
|
-
--scale-text-heading: ${scaleTextHeading};
|
137
|
-
--scale-text-ui: ${scaleTextUI};
|
138
|
-
`;
|
139
|
-
}
|
140
|
-
|
141
|
-
// Watch for changes and update scaling
|
142
|
-
$effect(() => {
|
143
|
-
updateScaling();
|
144
|
-
});
|
145
|
-
|
146
|
-
onMount(() => {
|
147
|
-
try {
|
148
|
-
// Get design dimensions from CSS variables if props are zero
|
149
|
-
if (designWidth === 0) {
|
150
|
-
designWidth = getRootCssDesignWidth() ?? 1920;
|
151
|
-
}
|
152
|
-
|
153
|
-
if (designHeight === 0) {
|
154
|
-
designHeight = getRootCssDesignHeight() ?? 1080;
|
155
|
-
}
|
156
|
-
|
157
|
-
// Initial calculation
|
158
|
-
updateScaling();
|
159
|
-
|
160
|
-
// Set up ResizeObserver to update scaling when container size changes
|
161
|
-
const resizeObserver = new ResizeObserver(() => {
|
162
|
-
updateScaling();
|
163
|
-
});
|
164
|
-
|
165
|
-
resizeObserver.observe(container);
|
166
|
-
|
167
|
-
// Clean up
|
168
|
-
return () => {
|
169
|
-
resizeObserver.disconnect();
|
170
|
-
};
|
171
|
-
} catch (error) {
|
172
|
-
cssParsingError = error;
|
173
|
-
console.error('VirtualViewport initialization error:', error);
|
174
|
-
}
|
175
|
-
});
|
176
|
-
</script>
|
177
|
-
|
178
|
-
<div
|
179
|
-
data-component="virtual-viewport"
|
180
|
-
bind:this={container}
|
181
|
-
class="{base} {bg} {width} {height} {overflow} {classes}"
|
182
|
-
style={scaleVars}
|
183
|
-
style:width={width ? width : '100%'}
|
184
|
-
style:height={height ? height : '100%'}
|
185
|
-
{...attrs}
|
186
|
-
>
|
187
|
-
{#if cssParsingError}
|
188
|
-
<!-- Add a discreet error indicator for development -->
|
189
|
-
<div
|
190
|
-
class="absolute top-0 right-0 p-1 text-red-500 text-xs bg-black bg-opacity-50 rounded-bl"
|
191
|
-
>
|
192
|
-
CSS Parsing Error
|
193
|
-
</div>
|
194
|
-
{/if}
|
195
|
-
{@render children()}
|
196
|
-
</div>
|
1
|
+
<script>
|
2
|
+
import { onMount } from 'svelte';
|
3
|
+
import {
|
4
|
+
getRootCssDesignWidth,
|
5
|
+
getRootCssDesignHeight,
|
6
|
+
getClampParams,
|
7
|
+
clamp
|
8
|
+
} from '../../util/design-system/index.js';
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Virtual viewport component that creates a container with its own scaling
|
12
|
+
* system based on its actual dimensions.
|
13
|
+
*
|
14
|
+
* @type {{
|
15
|
+
* base?: string,
|
16
|
+
* bg?: string,
|
17
|
+
* classes?: string,
|
18
|
+
* width?: string,
|
19
|
+
* height?: string,
|
20
|
+
* overflow?: string,
|
21
|
+
* designWidth?: number,
|
22
|
+
* designHeight?: number,
|
23
|
+
* scaleViewport?: number,
|
24
|
+
* scaleW?: number,
|
25
|
+
* scaleH?: number,
|
26
|
+
* scaleUI?: number,
|
27
|
+
* scaleTextBase?: number,
|
28
|
+
* scaleTextHeading?: number,
|
29
|
+
* scaleTextUI?: number,
|
30
|
+
* children?: import('svelte').Snippet,
|
31
|
+
* [attr: string]: any
|
32
|
+
* }}
|
33
|
+
*/
|
34
|
+
let {
|
35
|
+
// Style related props first
|
36
|
+
base,
|
37
|
+
bg,
|
38
|
+
classes,
|
39
|
+
width,
|
40
|
+
height,
|
41
|
+
overflow = 'overflow-clip',
|
42
|
+
|
43
|
+
// Functional bindable props
|
44
|
+
designWidth = $bindable(0),
|
45
|
+
designHeight = $bindable(0),
|
46
|
+
scaleViewport = $bindable(0),
|
47
|
+
scaleW = $bindable(0),
|
48
|
+
scaleH = $bindable(0),
|
49
|
+
scaleUI = $bindable(0),
|
50
|
+
scaleTextBase = $bindable(0),
|
51
|
+
scaleTextHeading = $bindable(0),
|
52
|
+
scaleTextUI = $bindable(0),
|
53
|
+
|
54
|
+
// Snippets
|
55
|
+
children,
|
56
|
+
|
57
|
+
// Rest of attributes
|
58
|
+
...attrs
|
59
|
+
} = $props();
|
60
|
+
|
61
|
+
/**
|
62
|
+
* References to the container element for measurement
|
63
|
+
* @type {HTMLDivElement}
|
64
|
+
*/
|
65
|
+
let container;
|
66
|
+
|
67
|
+
/**
|
68
|
+
* Current scaling variables
|
69
|
+
*/
|
70
|
+
let scaleVars = $state('');
|
71
|
+
|
72
|
+
// No separate variables for design dimensions
|
73
|
+
|
74
|
+
/**
|
75
|
+
* Error state for CSS variable parsing
|
76
|
+
*/
|
77
|
+
let cssParsingError = $state(null);
|
78
|
+
|
79
|
+
/**
|
80
|
+
* Update scaling based on current dimensions
|
81
|
+
*/
|
82
|
+
function updateScaling() {
|
83
|
+
if (!container) return;
|
84
|
+
|
85
|
+
// Get actual container dimensions
|
86
|
+
const rect = container.getBoundingClientRect();
|
87
|
+
const containerWidth = rect.width;
|
88
|
+
const containerHeight = rect.height;
|
89
|
+
|
90
|
+
// Calculate ratios similar to root variables
|
91
|
+
scaleW = containerWidth / designWidth;
|
92
|
+
scaleH = containerHeight / designHeight;
|
93
|
+
|
94
|
+
// Use the smaller ratio to ensure content fits
|
95
|
+
scaleViewport = Math.min(scaleW, scaleH);
|
96
|
+
|
97
|
+
try {
|
98
|
+
// Get clamp parameters from CSS variables
|
99
|
+
const uiParams = getClampParams('scale-ui');
|
100
|
+
const baseParams = getClampParams('scale-text-base');
|
101
|
+
const headingParams = getClampParams('scale-text-heading');
|
102
|
+
const textUIParams = getClampParams('scale-text-ui');
|
103
|
+
|
104
|
+
// Apply scaling according to extracted clamp parameters
|
105
|
+
scaleUI = clamp(uiParams.min, scaleViewport, uiParams.max);
|
106
|
+
|
107
|
+
scaleTextBase = clamp(baseParams.min, scaleViewport, baseParams.max);
|
108
|
+
scaleTextHeading = clamp(
|
109
|
+
headingParams.min,
|
110
|
+
scaleViewport,
|
111
|
+
headingParams.max
|
112
|
+
);
|
113
|
+
scaleTextUI = clamp(textUIParams.min, scaleViewport, textUIParams.max);
|
114
|
+
|
115
|
+
// Clear any previous error
|
116
|
+
cssParsingError = null;
|
117
|
+
} catch (error) {
|
118
|
+
// Store the error for debugging
|
119
|
+
cssParsingError = error;
|
120
|
+
console.error('VirtualViewport scaling error:', error);
|
121
|
+
|
122
|
+
// Fallback to simple scaling without clamping
|
123
|
+
scaleUI = scaleViewport;
|
124
|
+
scaleTextBase = scaleViewport;
|
125
|
+
scaleTextHeading = scaleViewport;
|
126
|
+
scaleTextUI = scaleViewport;
|
127
|
+
}
|
128
|
+
|
129
|
+
// Update the style variables
|
130
|
+
scaleVars = `
|
131
|
+
--scale-w: ${scaleW};
|
132
|
+
--scale-h: ${scaleH};
|
133
|
+
--scale-viewport: ${scaleViewport};
|
134
|
+
--scale-ui: ${scaleUI};
|
135
|
+
--scale-text-base: ${scaleTextBase};
|
136
|
+
--scale-text-heading: ${scaleTextHeading};
|
137
|
+
--scale-text-ui: ${scaleTextUI};
|
138
|
+
`;
|
139
|
+
}
|
140
|
+
|
141
|
+
// Watch for changes and update scaling
|
142
|
+
$effect(() => {
|
143
|
+
updateScaling();
|
144
|
+
});
|
145
|
+
|
146
|
+
onMount(() => {
|
147
|
+
try {
|
148
|
+
// Get design dimensions from CSS variables if props are zero
|
149
|
+
if (designWidth === 0) {
|
150
|
+
designWidth = getRootCssDesignWidth() ?? 1920;
|
151
|
+
}
|
152
|
+
|
153
|
+
if (designHeight === 0) {
|
154
|
+
designHeight = getRootCssDesignHeight() ?? 1080;
|
155
|
+
}
|
156
|
+
|
157
|
+
// Initial calculation
|
158
|
+
updateScaling();
|
159
|
+
|
160
|
+
// Set up ResizeObserver to update scaling when container size changes
|
161
|
+
const resizeObserver = new ResizeObserver(() => {
|
162
|
+
updateScaling();
|
163
|
+
});
|
164
|
+
|
165
|
+
resizeObserver.observe(container);
|
166
|
+
|
167
|
+
// Clean up
|
168
|
+
return () => {
|
169
|
+
resizeObserver.disconnect();
|
170
|
+
};
|
171
|
+
} catch (error) {
|
172
|
+
cssParsingError = error;
|
173
|
+
console.error('VirtualViewport initialization error:', error);
|
174
|
+
}
|
175
|
+
});
|
176
|
+
</script>
|
177
|
+
|
178
|
+
<div
|
179
|
+
data-component="virtual-viewport"
|
180
|
+
bind:this={container}
|
181
|
+
class="{base} {bg} {width} {height} {overflow} {classes}"
|
182
|
+
style={scaleVars}
|
183
|
+
style:width={width ? width : '100%'}
|
184
|
+
style:height={height ? height : '100%'}
|
185
|
+
{...attrs}
|
186
|
+
>
|
187
|
+
{#if cssParsingError}
|
188
|
+
<!-- Add a discreet error indicator for development -->
|
189
|
+
<div
|
190
|
+
class="absolute top-0 right-0 p-1 text-red-500 text-xs bg-black bg-opacity-50 rounded-bl"
|
191
|
+
>
|
192
|
+
CSS Parsing Error
|
193
|
+
</div>
|
194
|
+
{/if}
|
195
|
+
{@render children()}
|
196
|
+
</div>
|
package/dist/zod/all.js
CHANGED
@@ -1,33 +1,33 @@
|
|
1
|
-
/**
|
2
|
-
* The following namespace style import can be used to acces the named exports
|
3
|
-
* and als the JSdoc typedefs
|
4
|
-
*
|
5
|
-
* @example
|
6
|
-
*
|
7
|
-
* import * as Zods from '<path-to>/zod/all.js';
|
8
|
-
*
|
9
|
-
* JSdoc:
|
10
|
-
* `@param {Zods.Name} name
|
11
|
-
* `@param {Zods.Timeout} t
|
12
|
-
*
|
13
|
-
* Assert style:
|
14
|
-
* Zods.String.parse(name);
|
15
|
-
*
|
16
|
-
* Parse style:
|
17
|
-
* const name = Zods.Name.parse('Jens ');
|
18
|
-
*
|
19
|
-
* Use default export 'z':
|
20
|
-
* // eslint-disable-next-line no-unused-vars
|
21
|
-
* import z, * as Zods from '<path-to>/zod/all.js';
|
22
|
-
*
|
23
|
-
* z.string().parse(name);
|
24
|
-
*/
|
25
|
-
|
26
|
-
import { z } from 'zod';
|
27
|
-
|
28
|
-
export * from './generic.js';
|
29
|
-
export * from './javascript.js';
|
30
|
-
export * from './user.js';
|
31
|
-
export * from './web.js';
|
32
|
-
|
33
|
-
export default z;
|
1
|
+
/**
|
2
|
+
* The following namespace style import can be used to acces the named exports
|
3
|
+
* and als the JSdoc typedefs
|
4
|
+
*
|
5
|
+
* @example
|
6
|
+
*
|
7
|
+
* import * as Zods from '<path-to>/zod/all.js';
|
8
|
+
*
|
9
|
+
* JSdoc:
|
10
|
+
* `@param {Zods.Name} name
|
11
|
+
* `@param {Zods.Timeout} t
|
12
|
+
*
|
13
|
+
* Assert style:
|
14
|
+
* Zods.String.parse(name);
|
15
|
+
*
|
16
|
+
* Parse style:
|
17
|
+
* const name = Zods.Name.parse('Jens ');
|
18
|
+
*
|
19
|
+
* Use default export 'z':
|
20
|
+
* // eslint-disable-next-line no-unused-vars
|
21
|
+
* import z, * as Zods from '<path-to>/zod/all.js';
|
22
|
+
*
|
23
|
+
* z.string().parse(name);
|
24
|
+
*/
|
25
|
+
|
26
|
+
import { z } from 'zod';
|
27
|
+
|
28
|
+
export * from './generic.js';
|
29
|
+
export * from './javascript.js';
|
30
|
+
export * from './user.js';
|
31
|
+
export * from './web.js';
|
32
|
+
|
33
|
+
export default z;
|
package/dist/zod/generic.js
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
// > Imports
|
2
|
-
|
3
|
-
import { z } from 'zod';
|
4
|
-
|
5
|
-
// > Exports
|
6
|
-
|
7
|
-
export const Label = z.string().min(1).max(80);
|
8
|
-
/** @typedef {string} Label */
|
9
|
-
|
10
|
-
export const LabelOrSymbol = z.union([z.string().min(1).max(80), z.symbol()]);
|
11
|
-
/** @typedef {string|Symbol} LabelOrSymbol */
|
1
|
+
// > Imports
|
2
|
+
|
3
|
+
import { z } from 'zod';
|
4
|
+
|
5
|
+
// > Exports
|
6
|
+
|
7
|
+
export const Label = z.string().min(1).max(80);
|
8
|
+
/** @typedef {string} Label */
|
9
|
+
|
10
|
+
export const LabelOrSymbol = z.union([z.string().min(1).max(80), z.symbol()]);
|
11
|
+
/** @typedef {string|Symbol} LabelOrSymbol */
|
package/dist/zod/javascript.js
CHANGED
@@ -1,32 +1,32 @@
|
|
1
|
-
/**
|
2
|
-
* The following namespace style import can be used to acces the named exports
|
3
|
-
* and als the JSdoc typedefs
|
4
|
-
*
|
5
|
-
* import z, * as Zods from '<path-to>/all.js';
|
6
|
-
*
|
7
|
-
* @example
|
8
|
-
*
|
9
|
-
* JSdoc:
|
10
|
-
* `@param {Type.Name} name
|
11
|
-
*
|
12
|
-
* Assert style:
|
13
|
-
* Type.String.parse(name);
|
14
|
-
*
|
15
|
-
* Parse style:
|
16
|
-
* const name = Type.Name.parse('Jens ');
|
17
|
-
*/
|
18
|
-
|
19
|
-
// > Imports
|
20
|
-
|
21
|
-
import { z } from 'zod';
|
22
|
-
|
23
|
-
// > Exports
|
24
|
-
|
25
|
-
export const Timeout = z.number();
|
26
|
-
/** @typedef {number|NodeJS.Timeout} Timeout */
|
27
|
-
|
28
|
-
export const TimeoutOrUndefined = z.union([z.number(), z.undefined()]);
|
29
|
-
/** @typedef {number|NodeJS.Timeout|undefined} TimeoutOrUndefined */
|
30
|
-
|
31
|
-
// Export default is required for exporting typedefs
|
32
|
-
export default {};
|
1
|
+
/**
|
2
|
+
* The following namespace style import can be used to acces the named exports
|
3
|
+
* and als the JSdoc typedefs
|
4
|
+
*
|
5
|
+
* import z, * as Zods from '<path-to>/all.js';
|
6
|
+
*
|
7
|
+
* @example
|
8
|
+
*
|
9
|
+
* JSdoc:
|
10
|
+
* `@param {Type.Name} name
|
11
|
+
*
|
12
|
+
* Assert style:
|
13
|
+
* Type.String.parse(name);
|
14
|
+
*
|
15
|
+
* Parse style:
|
16
|
+
* const name = Type.Name.parse('Jens ');
|
17
|
+
*/
|
18
|
+
|
19
|
+
// > Imports
|
20
|
+
|
21
|
+
import { z } from 'zod';
|
22
|
+
|
23
|
+
// > Exports
|
24
|
+
|
25
|
+
export const Timeout = z.number();
|
26
|
+
/** @typedef {number|NodeJS.Timeout} Timeout */
|
27
|
+
|
28
|
+
export const TimeoutOrUndefined = z.union([z.number(), z.undefined()]);
|
29
|
+
/** @typedef {number|NodeJS.Timeout|undefined} TimeoutOrUndefined */
|
30
|
+
|
31
|
+
// Export default is required for exporting typedefs
|
32
|
+
export default {};
|
package/dist/zod/user.js
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
// > Imports
|
2
|
-
|
3
|
-
import { z } from 'zod';
|
4
|
-
|
5
|
-
import { RE_FULLNAME, RE_NAME, RE_USERNAME } from '../constants/regexp/index.js';
|
6
|
-
|
7
|
-
// > Exports
|
8
|
-
|
9
|
-
export const Name = z.string().trim().regex(RE_NAME);
|
10
|
-
/** @typedef { z.infer<typeof Name> } Name */
|
11
|
-
|
12
|
-
export const Fullname = z.string().trim().regex(RE_FULLNAME);
|
13
|
-
/** @typedef { z.infer<typeof Fullname> } Fullname */
|
14
|
-
|
15
|
-
export const Username = z.string().trim().regex(RE_USERNAME);
|
16
|
-
/** @typedef { z.infer<typeof Username> } Username */
|
1
|
+
// > Imports
|
2
|
+
|
3
|
+
import { z } from 'zod';
|
4
|
+
|
5
|
+
import { RE_FULLNAME, RE_NAME, RE_USERNAME } from '../constants/regexp/index.js';
|
6
|
+
|
7
|
+
// > Exports
|
8
|
+
|
9
|
+
export const Name = z.string().trim().regex(RE_NAME);
|
10
|
+
/** @typedef { z.infer<typeof Name> } Name */
|
11
|
+
|
12
|
+
export const Fullname = z.string().trim().regex(RE_FULLNAME);
|
13
|
+
/** @typedef { z.infer<typeof Fullname> } Fullname */
|
14
|
+
|
15
|
+
export const Username = z.string().trim().regex(RE_USERNAME);
|
16
|
+
/** @typedef { z.infer<typeof Username> } Username */
|