@hkdigital/lib-sveltekit 0.2.21 → 0.2.22
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 +149 -135
- package/dist/assets/autospuiten/car-paint-picker.js +41 -41
- package/dist/assets/autospuiten/labels.js +7 -7
- package/dist/classes/cache/IndexedDbCache.js +1407 -1407
- package/dist/classes/cache/MemoryResponseCache.js +138 -138
- package/dist/classes/cache/index.js +5 -5
- package/dist/classes/cache/typedef.js +41 -41
- 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/events/EventEmitter.js +275 -275
- package/dist/classes/events/index.js +2 -2
- package/dist/classes/index.js +4 -4
- package/dist/classes/logging/Logger.js +210 -210
- package/dist/classes/logging/constants.js +16 -16
- package/dist/classes/logging/index.js +4 -4
- package/dist/classes/logging/typedef.js +17 -17
- package/dist/classes/promise/HkPromise.js +377 -377
- package/dist/classes/promise/index.js +1 -1
- package/dist/classes/services/ServiceBase.js +463 -463
- package/dist/classes/services/ServiceManager.js +614 -614
- package/dist/classes/services/index.js +5 -5
- package/dist/classes/services/service-states.js +205 -205
- package/dist/classes/services/typedef.js +179 -179
- 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 +324 -324
- 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 +45 -45
- package/dist/classes/svelte/image/ImageScene.svelte.js +249 -249
- 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 +338 -338
- 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/drag-drop/DragController.js +44 -44
- package/dist/components/drag-drop/DragDropContext.svelte +111 -111
- package/dist/components/drag-drop/Draggable.svelte +519 -519
- package/dist/components/drag-drop/{Dropzone.svelte → DropZone.svelte} +258 -258
- package/dist/components/drag-drop/DropZoneArea.svelte +119 -119
- package/dist/components/drag-drop/DropZoneList.svelte +125 -125
- package/dist/components/drag-drop/actions.js +26 -26
- package/dist/components/drag-drop/drag-state.svelte.js +322 -322
- package/dist/components/drag-drop/index.js +7 -7
- package/dist/components/drag-drop/util.js +85 -85
- 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 +63 -63
- package/dist/components/layout/grid-layers/GridLayers.svelte__heightFrom__ +372 -0
- package/dist/components/layout/grid-layers/util.js +74 -74
- 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 +11 -11
- package/dist/config/imagetools-config.js +189 -189
- package/dist/config/imagetools.d.ts +72 -72
- 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 +14 -14
- 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/drag-states.js +6 -6
- package/dist/constants/state-labels/drop-states.js +6 -6
- 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/features/button-group/ButtonGroup.svelte +82 -82
- package/dist/features/button-group/typedef.js +10 -10
- package/dist/features/compare-left-right/CompareLeftRight.svelte +179 -179
- package/dist/features/compare-left-right/index.js +1 -1
- package/dist/features/game-box/GameBox.svelte +577 -577
- package/dist/features/game-box/gamebox.util.js +83 -83
- package/dist/features/hk-app-layout/HkAppLayout.state.svelte.js +25 -25
- package/dist/features/hk-app-layout/HkAppLayout.svelte +251 -251
- package/dist/features/image-box/ImageBox.svelte +210 -210
- package/dist/features/image-box/index.js +5 -5
- package/dist/features/image-box/typedef.js +32 -32
- package/dist/features/index.js +23 -23
- package/dist/features/presenter/ImageSlide.svelte +64 -64
- package/dist/features/presenter/Presenter.state.svelte.js +638 -638
- package/dist/features/presenter/Presenter.svelte +142 -142
- package/dist/features/presenter/constants.js +7 -7
- package/dist/features/presenter/index.js +10 -10
- package/dist/features/presenter/typedef.js +106 -106
- package/dist/features/presenter/util.js +210 -210
- package/dist/features/virtual-viewport/VirtualViewport.svelte +196 -196
- package/dist/logging/adapters/console.js +114 -114
- package/dist/logging/adapters/pino.js +60 -60
- package/dist/logging/constants.js +1 -1
- package/dist/logging/factories/client.js +21 -21
- package/dist/logging/factories/server.js +22 -22
- package/dist/logging/factories/universal.js +23 -23
- package/dist/logging/index.js +8 -8
- 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 +34 -34
- package/dist/themes/hkdev/components/boxes/game-box.css +11 -11
- 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 +146 -146
- package/dist/themes/hkdev/components/buttons/skip-button.css +5 -5
- package/dist/themes/hkdev/components/drag-drop/draggable.css +73 -73
- package/dist/themes/hkdev/components/drag-drop/drop-zone.css +58 -58
- package/dist/themes/hkdev/components/icons/icon-steeze.css +15 -15
- package/dist/themes/hkdev/components/inputs/text-input.css +102 -102
- package/dist/themes/hkdev/components/panels/panel.css +25 -25
- package/dist/themes/hkdev/components/rows/panel-grid-row.css +4 -4
- package/dist/themes/hkdev/components/rows/panel-row-2.css +5 -5
- package/dist/themes/hkdev/components.css +29 -29
- package/dist/themes/hkdev/debug.css +1 -1
- package/dist/themes/hkdev/global/layout.css +32 -32
- package/dist/themes/hkdev/global/on-colors.css +32 -32
- package/dist/themes/hkdev/globals.css +3 -3
- package/dist/themes/hkdev/responsive.css +12 -12
- package/dist/themes/hkdev/theme-ext.js +12 -12
- package/dist/themes/hkdev/theme.css +218 -218
- package/dist/themes/index.js +1 -1
- package/dist/typedef/context.js +6 -6
- package/dist/typedef/drag.js +25 -25
- package/dist/typedef/drop.js +12 -12
- package/dist/typedef/image.js +38 -38
- package/dist/typedef/index.js +4 -4
- package/dist/util/array/index.js +436 -436
- 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 +102 -102
- 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/env/index.js +9 -9
- package/dist/util/exceptions/index.d.ts +11 -0
- package/dist/util/exceptions/index.js +17 -0
- 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/geo/index.js +26 -26
- package/dist/util/http/caching.js +263 -263
- package/dist/util/http/errors.js +97 -97
- package/dist/util/http/headers.js +75 -75
- package/dist/util/http/http-request.js +578 -578
- package/dist/util/http/index.js +22 -22
- package/dist/util/http/json-request.js +224 -224
- package/dist/util/http/mocks.js +65 -65
- package/dist/util/http/response.js +294 -294
- package/dist/util/http/test-data__/content-length-test-hkdigital-small.V4HfZyBQ.avif +0 -0
- package/dist/util/http/typedef.js +93 -93
- package/dist/util/http/url.js +52 -52
- package/dist/util/image/index.js +86 -86
- package/dist/util/index.d.ts +1 -0
- package/dist/util/index.js +3 -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 +117 -117
- 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/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 +133 -132
@@ -1,146 +1,146 @@
|
|
1
|
-
<script>
|
2
|
-
import { onMount } from 'svelte';
|
3
|
-
import { DESIGN, CLAMPING } from '../../../design/design-config.js';
|
4
|
-
import {
|
5
|
-
enableScalingUI,
|
6
|
-
getAllRootScalingVars
|
7
|
-
} from '../../../util/design-system/index.js';
|
8
|
-
|
9
|
-
/**
|
10
|
-
* Holds the current scaling values for the debug panel
|
11
|
-
* @type {Object}
|
12
|
-
*/
|
13
|
-
let scalingValues = $state({
|
14
|
-
scaleW: 0,
|
15
|
-
scaleH: 0,
|
16
|
-
scaleViewport: 0,
|
17
|
-
scaleUI: 0,
|
18
|
-
scaleTextBase: 0,
|
19
|
-
scaleTextHeading: 0,
|
20
|
-
scaleTextUI: 0
|
21
|
-
});
|
22
|
-
|
23
|
-
/**
|
24
|
-
* Controls visibility of the debug panel
|
25
|
-
*/
|
26
|
-
let showDebugPanel = $state(false);
|
27
|
-
|
28
|
-
/**
|
29
|
-
* Updates scaling values for the debug panel
|
30
|
-
*/
|
31
|
-
function updateDebugValues() {
|
32
|
-
// Get scaling values
|
33
|
-
scalingValues = getAllRootScalingVars();
|
34
|
-
|
35
|
-
// Update window size display if in browser context
|
36
|
-
if (typeof window !== 'undefined') {
|
37
|
-
const windowSizeElement = document.getElementById('window-size');
|
38
|
-
if (windowSizeElement) {
|
39
|
-
windowSizeElement.textContent = `${window.innerWidth}×${window.innerHeight}px`;
|
40
|
-
}
|
41
|
-
}
|
42
|
-
}
|
43
|
-
|
44
|
-
onMount(() => {
|
45
|
-
// Initialize the design scaling system
|
46
|
-
//const cleanup = () => {};
|
47
|
-
const cleanup = enableScalingUI(DESIGN, CLAMPING);
|
48
|
-
|
49
|
-
// Update debug values initially
|
50
|
-
updateDebugValues();
|
51
|
-
|
52
|
-
// Set up event listener for updating debug values on resize
|
53
|
-
window.addEventListener('resize', updateDebugValues);
|
54
|
-
|
55
|
-
// Return combined cleanup function
|
56
|
-
return () => {
|
57
|
-
cleanup();
|
58
|
-
window.removeEventListener('resize', updateDebugValues);
|
59
|
-
};
|
60
|
-
});
|
61
|
-
|
62
|
-
/**
|
63
|
-
* Toggle debug panel visibility
|
64
|
-
*/
|
65
|
-
function toggleDebugPanel() {
|
66
|
-
showDebugPanel = !showDebugPanel;
|
67
|
-
}
|
68
|
-
|
69
|
-
/**
|
70
|
-
* Format a number to 2 decimal places
|
71
|
-
* @param {number} value - The number to format
|
72
|
-
* @returns {string} Formatted number
|
73
|
-
*/
|
74
|
-
function formatNumber(value) {
|
75
|
-
return value.toFixed(2);
|
76
|
-
}
|
77
|
-
</script>
|
78
|
-
|
79
|
-
<!-- Debug Panel -->
|
80
|
-
{#if showDebugPanel}
|
81
|
-
<div
|
82
|
-
class="fixed bottom-0 right-0 bg-black bg-opacity-75 text-white p-2 text-ui-md z-50 font-mono"
|
83
|
-
>
|
84
|
-
<div class="flex justify-between items-center mb-1">
|
85
|
-
<h3 class="font-bold">Design System Scaling</h3>
|
86
|
-
<button
|
87
|
-
onclick={toggleDebugPanel}
|
88
|
-
class="ml-2 px-1.5 bg-gray-700 hover:bg-gray-600 rounded"
|
89
|
-
>
|
90
|
-
×
|
91
|
-
</button>
|
92
|
-
</div>
|
93
|
-
<div class="grid grid-cols-2 gap-x-2 gap-y-0.5">
|
94
|
-
<div class="text-gray-400">Design Width:</div>
|
95
|
-
<div>{DESIGN.width}px</div>
|
96
|
-
|
97
|
-
<div class="text-gray-400">Design Height:</div>
|
98
|
-
<div>{DESIGN.height}px</div>
|
99
|
-
|
100
|
-
<div class="text-gray-400">Window:</div>
|
101
|
-
<div id="window-size">...</div>
|
102
|
-
|
103
|
-
<div class="text-gray-400">Scale W:</div>
|
104
|
-
<div>{formatNumber(scalingValues.scaleW)}</div>
|
105
|
-
|
106
|
-
<div class="text-gray-400">Scale H:</div>
|
107
|
-
<div>{formatNumber(scalingValues.scaleH)}</div>
|
108
|
-
|
109
|
-
<div class="text-gray-400">Viewport:</div>
|
110
|
-
<div>{formatNumber(scalingValues.scaleViewport)}</div>
|
111
|
-
|
112
|
-
<div class="text-gray-400">UI:</div>
|
113
|
-
<div>{formatNumber(scalingValues.scaleUI)}</div>
|
114
|
-
|
115
|
-
<div class="text-gray-400">Text Content:</div>
|
116
|
-
<div>{formatNumber(scalingValues.scaleTextBase)}</div>
|
117
|
-
|
118
|
-
<div class="text-gray-400">Text Heading:</div>
|
119
|
-
<div>{formatNumber(scalingValues.scaleTextHeading)}</div>
|
120
|
-
|
121
|
-
<div class="text-gray-400">Text UI:</div>
|
122
|
-
<div>{formatNumber(scalingValues.scaleTextUI)}</div>
|
123
|
-
</div>
|
124
|
-
|
125
|
-
<div class="mt-1 pt-1 border-t border-gray-600 text-gray-400">
|
126
|
-
<div>Clamping:</div>
|
127
|
-
<div class="grid grid-cols-3 text-2xs">
|
128
|
-
<div>UI: {CLAMPING.ui.min} - {CLAMPING.ui.max}</div>
|
129
|
-
<div>
|
130
|
-
Content: {CLAMPING.textBase.min} - {CLAMPING.textBase.max}
|
131
|
-
</div>
|
132
|
-
<div>
|
133
|
-
Heading: {CLAMPING.textHeading.min} - {CLAMPING.textHeading.max}
|
134
|
-
</div>
|
135
|
-
</div>
|
136
|
-
</div>
|
137
|
-
</div>
|
138
|
-
{:else}
|
139
|
-
<!-- Debug Panel Toggle Button -->
|
140
|
-
<button
|
141
|
-
onclick={toggleDebugPanel}
|
142
|
-
class="fixed bottom-0 right-0 bg-black bg-opacity-75 text-white p-16ut py-8ut text-ui-md z-50 font-mono hover:bg-opacity-90"
|
143
|
-
>
|
144
|
-
Show Debug
|
145
|
-
</button>
|
146
|
-
{/if}
|
1
|
+
<script>
|
2
|
+
import { onMount } from 'svelte';
|
3
|
+
import { DESIGN, CLAMPING } from '../../../design/design-config.js';
|
4
|
+
import {
|
5
|
+
enableScalingUI,
|
6
|
+
getAllRootScalingVars
|
7
|
+
} from '../../../util/design-system/index.js';
|
8
|
+
|
9
|
+
/**
|
10
|
+
* Holds the current scaling values for the debug panel
|
11
|
+
* @type {Object}
|
12
|
+
*/
|
13
|
+
let scalingValues = $state({
|
14
|
+
scaleW: 0,
|
15
|
+
scaleH: 0,
|
16
|
+
scaleViewport: 0,
|
17
|
+
scaleUI: 0,
|
18
|
+
scaleTextBase: 0,
|
19
|
+
scaleTextHeading: 0,
|
20
|
+
scaleTextUI: 0
|
21
|
+
});
|
22
|
+
|
23
|
+
/**
|
24
|
+
* Controls visibility of the debug panel
|
25
|
+
*/
|
26
|
+
let showDebugPanel = $state(false);
|
27
|
+
|
28
|
+
/**
|
29
|
+
* Updates scaling values for the debug panel
|
30
|
+
*/
|
31
|
+
function updateDebugValues() {
|
32
|
+
// Get scaling values
|
33
|
+
scalingValues = getAllRootScalingVars();
|
34
|
+
|
35
|
+
// Update window size display if in browser context
|
36
|
+
if (typeof window !== 'undefined') {
|
37
|
+
const windowSizeElement = document.getElementById('window-size');
|
38
|
+
if (windowSizeElement) {
|
39
|
+
windowSizeElement.textContent = `${window.innerWidth}×${window.innerHeight}px`;
|
40
|
+
}
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
44
|
+
onMount(() => {
|
45
|
+
// Initialize the design scaling system
|
46
|
+
//const cleanup = () => {};
|
47
|
+
const cleanup = enableScalingUI(DESIGN, CLAMPING);
|
48
|
+
|
49
|
+
// Update debug values initially
|
50
|
+
updateDebugValues();
|
51
|
+
|
52
|
+
// Set up event listener for updating debug values on resize
|
53
|
+
window.addEventListener('resize', updateDebugValues);
|
54
|
+
|
55
|
+
// Return combined cleanup function
|
56
|
+
return () => {
|
57
|
+
cleanup();
|
58
|
+
window.removeEventListener('resize', updateDebugValues);
|
59
|
+
};
|
60
|
+
});
|
61
|
+
|
62
|
+
/**
|
63
|
+
* Toggle debug panel visibility
|
64
|
+
*/
|
65
|
+
function toggleDebugPanel() {
|
66
|
+
showDebugPanel = !showDebugPanel;
|
67
|
+
}
|
68
|
+
|
69
|
+
/**
|
70
|
+
* Format a number to 2 decimal places
|
71
|
+
* @param {number} value - The number to format
|
72
|
+
* @returns {string} Formatted number
|
73
|
+
*/
|
74
|
+
function formatNumber(value) {
|
75
|
+
return value.toFixed(2);
|
76
|
+
}
|
77
|
+
</script>
|
78
|
+
|
79
|
+
<!-- Debug Panel -->
|
80
|
+
{#if showDebugPanel}
|
81
|
+
<div
|
82
|
+
class="fixed bottom-0 right-0 bg-black bg-opacity-75 text-white p-2 text-ui-md z-50 font-mono"
|
83
|
+
>
|
84
|
+
<div class="flex justify-between items-center mb-1">
|
85
|
+
<h3 class="font-bold">Design System Scaling</h3>
|
86
|
+
<button
|
87
|
+
onclick={toggleDebugPanel}
|
88
|
+
class="ml-2 px-1.5 bg-gray-700 hover:bg-gray-600 rounded"
|
89
|
+
>
|
90
|
+
×
|
91
|
+
</button>
|
92
|
+
</div>
|
93
|
+
<div class="grid grid-cols-2 gap-x-2 gap-y-0.5">
|
94
|
+
<div class="text-gray-400">Design Width:</div>
|
95
|
+
<div>{DESIGN.width}px</div>
|
96
|
+
|
97
|
+
<div class="text-gray-400">Design Height:</div>
|
98
|
+
<div>{DESIGN.height}px</div>
|
99
|
+
|
100
|
+
<div class="text-gray-400">Window:</div>
|
101
|
+
<div id="window-size">...</div>
|
102
|
+
|
103
|
+
<div class="text-gray-400">Scale W:</div>
|
104
|
+
<div>{formatNumber(scalingValues.scaleW)}</div>
|
105
|
+
|
106
|
+
<div class="text-gray-400">Scale H:</div>
|
107
|
+
<div>{formatNumber(scalingValues.scaleH)}</div>
|
108
|
+
|
109
|
+
<div class="text-gray-400">Viewport:</div>
|
110
|
+
<div>{formatNumber(scalingValues.scaleViewport)}</div>
|
111
|
+
|
112
|
+
<div class="text-gray-400">UI:</div>
|
113
|
+
<div>{formatNumber(scalingValues.scaleUI)}</div>
|
114
|
+
|
115
|
+
<div class="text-gray-400">Text Content:</div>
|
116
|
+
<div>{formatNumber(scalingValues.scaleTextBase)}</div>
|
117
|
+
|
118
|
+
<div class="text-gray-400">Text Heading:</div>
|
119
|
+
<div>{formatNumber(scalingValues.scaleTextHeading)}</div>
|
120
|
+
|
121
|
+
<div class="text-gray-400">Text UI:</div>
|
122
|
+
<div>{formatNumber(scalingValues.scaleTextUI)}</div>
|
123
|
+
</div>
|
124
|
+
|
125
|
+
<div class="mt-1 pt-1 border-t border-gray-600 text-gray-400">
|
126
|
+
<div>Clamping:</div>
|
127
|
+
<div class="grid grid-cols-3 text-2xs">
|
128
|
+
<div>UI: {CLAMPING.ui.min} - {CLAMPING.ui.max}</div>
|
129
|
+
<div>
|
130
|
+
Content: {CLAMPING.textBase.min} - {CLAMPING.textBase.max}
|
131
|
+
</div>
|
132
|
+
<div>
|
133
|
+
Heading: {CLAMPING.textHeading.min} - {CLAMPING.textHeading.max}
|
134
|
+
</div>
|
135
|
+
</div>
|
136
|
+
</div>
|
137
|
+
</div>
|
138
|
+
{:else}
|
139
|
+
<!-- Debug Panel Toggle Button -->
|
140
|
+
<button
|
141
|
+
onclick={toggleDebugPanel}
|
142
|
+
class="fixed bottom-0 right-0 bg-black bg-opacity-75 text-white p-16ut py-8ut text-ui-md z-50 font-mono hover:bg-opacity-90"
|
143
|
+
>
|
144
|
+
Show Debug
|
145
|
+
</button>
|
146
|
+
{/if}
|
@@ -1 +1 @@
|
|
1
|
-
export { default as DebugPanelDesignScaling } from './debug-panel-design-scaling/DebugPanelDesignScaling.svelte';
|
1
|
+
export { default as DebugPanelDesignScaling } from './debug-panel-design-scaling/DebugPanelDesignScaling.svelte';
|
@@ -1,44 +1,44 @@
|
|
1
|
-
/**
|
2
|
-
* Controller for customizing drag
|
3
|
-
* E.g. set a custom preview image
|
4
|
-
*/
|
5
|
-
export class DragController {
|
6
|
-
/**
|
7
|
-
* @param {DragEvent} event - The drag event
|
8
|
-
*/
|
9
|
-
constructor(event) {
|
10
|
-
this.event = event;
|
11
|
-
this.dataTransfer = event.dataTransfer;
|
12
|
-
this.targetElement = /** @type {HTMLElement} */ (event.currentTarget);
|
13
|
-
|
14
|
-
// Calculate natural offsets by default (to prevent "jumping")
|
15
|
-
const rect = this.targetElement.getBoundingClientRect();
|
16
|
-
this.offsetX = event.clientX - rect.left;
|
17
|
-
this.offsetY = event.clientY - rect.top;
|
18
|
-
}
|
19
|
-
|
20
|
-
/**
|
21
|
-
* Apply the default preview (uses the draggable element itself)
|
22
|
-
* @returns {boolean}
|
23
|
-
*/
|
24
|
-
applyDefaultPreview() {
|
25
|
-
if (
|
26
|
-
!this.dataTransfer ||
|
27
|
-
!this.dataTransfer.setDragImage
|
28
|
-
) {
|
29
|
-
return false;
|
30
|
-
}
|
31
|
-
|
32
|
-
try {
|
33
|
-
this.dataTransfer.setDragImage(
|
34
|
-
this.targetElement,
|
35
|
-
this.offsetX,
|
36
|
-
this.offsetY
|
37
|
-
);
|
38
|
-
return true;
|
39
|
-
} catch (err) {
|
40
|
-
console.error('Failed to set default drag preview:', err);
|
41
|
-
return false;
|
42
|
-
}
|
43
|
-
}
|
44
|
-
}
|
1
|
+
/**
|
2
|
+
* Controller for customizing drag
|
3
|
+
* E.g. set a custom preview image
|
4
|
+
*/
|
5
|
+
export class DragController {
|
6
|
+
/**
|
7
|
+
* @param {DragEvent} event - The drag event
|
8
|
+
*/
|
9
|
+
constructor(event) {
|
10
|
+
this.event = event;
|
11
|
+
this.dataTransfer = event.dataTransfer;
|
12
|
+
this.targetElement = /** @type {HTMLElement} */ (event.currentTarget);
|
13
|
+
|
14
|
+
// Calculate natural offsets by default (to prevent "jumping")
|
15
|
+
const rect = this.targetElement.getBoundingClientRect();
|
16
|
+
this.offsetX = event.clientX - rect.left;
|
17
|
+
this.offsetY = event.clientY - rect.top;
|
18
|
+
}
|
19
|
+
|
20
|
+
/**
|
21
|
+
* Apply the default preview (uses the draggable element itself)
|
22
|
+
* @returns {boolean}
|
23
|
+
*/
|
24
|
+
applyDefaultPreview() {
|
25
|
+
if (
|
26
|
+
!this.dataTransfer ||
|
27
|
+
!this.dataTransfer.setDragImage
|
28
|
+
) {
|
29
|
+
return false;
|
30
|
+
}
|
31
|
+
|
32
|
+
try {
|
33
|
+
this.dataTransfer.setDragImage(
|
34
|
+
this.targetElement,
|
35
|
+
this.offsetX,
|
36
|
+
this.offsetY
|
37
|
+
);
|
38
|
+
return true;
|
39
|
+
} catch (err) {
|
40
|
+
console.error('Failed to set default drag preview:', err);
|
41
|
+
return false;
|
42
|
+
}
|
43
|
+
}
|
44
|
+
}
|
@@ -1,111 +1,111 @@
|
|
1
|
-
<script>
|
2
|
-
import { createDragState } from './drag-state.svelte.js';
|
3
|
-
|
4
|
-
import { activeTouchMove, activeDragOver, activeDrop } from './actions.js';
|
5
|
-
|
6
|
-
/**
|
7
|
-
* @type {{
|
8
|
-
* contextKey?: import('../../typedef').ContextKey,
|
9
|
-
* base?: string,
|
10
|
-
* classes?: string,
|
11
|
-
* children: import('svelte').Snippet,
|
12
|
-
* [key: string]: any
|
13
|
-
* }}
|
14
|
-
*/
|
15
|
-
let { contextKey, base = '', classes = '', children, ...attrs } = $props();
|
16
|
-
|
17
|
-
// Create the state context at this level to ensure all children
|
18
|
-
// have access to the same state instance
|
19
|
-
const dragState = createDragState(contextKey);
|
20
|
-
|
21
|
-
/**
|
22
|
-
* Handle drag enter at context level
|
23
|
-
* @param {DragEvent} event
|
24
|
-
*/
|
25
|
-
function onDragEnter(event) {
|
26
|
-
event.preventDefault();
|
27
|
-
dragState.updateActiveDropZone(event.clientX, event.clientY, event);
|
28
|
-
}
|
29
|
-
|
30
|
-
/**
|
31
|
-
* Handle drag over at context level
|
32
|
-
* @param {DragEvent} event
|
33
|
-
*/
|
34
|
-
function onDragOver(event) {
|
35
|
-
event.preventDefault();
|
36
|
-
dragState.updateActiveDropZone(event.clientX, event.clientY, event);
|
37
|
-
|
38
|
-
// Set appropriate drop effect based on current drag operation
|
39
|
-
if (dragState.isDragging()) {
|
40
|
-
const activeZone = dragState.activeDropZone;
|
41
|
-
if (activeZone) {
|
42
|
-
const config = dragState.dropZones.get(activeZone);
|
43
|
-
if (config?.canDrop) {
|
44
|
-
event.dataTransfer.dropEffect = 'move';
|
45
|
-
} else {
|
46
|
-
event.dataTransfer.dropEffect = 'none';
|
47
|
-
}
|
48
|
-
} else {
|
49
|
-
event.dataTransfer.dropEffect = 'none';
|
50
|
-
}
|
51
|
-
} else {
|
52
|
-
// No internal drag operation, might be file drag
|
53
|
-
event.dataTransfer.dropEffect = 'copy';
|
54
|
-
}
|
55
|
-
}
|
56
|
-
|
57
|
-
/**
|
58
|
-
* Handle drag leave at context level
|
59
|
-
* @param {DragEvent} event
|
60
|
-
*/
|
61
|
-
function onDragLeave(event) {
|
62
|
-
// Only handle if we're leaving the entire context
|
63
|
-
const rect =
|
64
|
-
/** @type {Element} */ (event.currentTarget).getBoundingClientRect();
|
65
|
-
|
66
|
-
|
67
|
-
const x = event.clientX;
|
68
|
-
const y = event.clientY;
|
69
|
-
|
70
|
-
// Check if we're truly leaving the context bounds
|
71
|
-
if (x < rect.left || x > rect.right || y < rect.top || y > rect.bottom) {
|
72
|
-
dragState.updateActiveDropZone(-1, -1, event);
|
73
|
-
}
|
74
|
-
}
|
75
|
-
|
76
|
-
/**
|
77
|
-
* Handle drop at context level
|
78
|
-
* @param {DragEvent} event
|
79
|
-
*/
|
80
|
-
function onDrop(event) {
|
81
|
-
event.preventDefault();
|
82
|
-
dragState.handleDropAtPoint(event.clientX, event.clientY, event);
|
83
|
-
}
|
84
|
-
|
85
|
-
/**
|
86
|
-
* Handle drag end to clean up
|
87
|
-
* @param {DragEvent} event
|
88
|
-
*/
|
89
|
-
function onDragEnd(event) {
|
90
|
-
// This will trigger cleanup in drag state
|
91
|
-
dragState.updateActiveDropZone(-1, -1, event);
|
92
|
-
}
|
93
|
-
</script>
|
94
|
-
|
95
|
-
<div
|
96
|
-
data-component="drag-drop-context"
|
97
|
-
ondragenter={onDragEnter}
|
98
|
-
use:activeDragOver={onDragOver}
|
99
|
-
ondragleave={onDragLeave}
|
100
|
-
use:activeDrop={onDrop}
|
101
|
-
ondragend={onDragEnd}
|
102
|
-
use:activeTouchMove={(e) => {
|
103
|
-
if (dragState.isDragging()) {
|
104
|
-
e.preventDefault();
|
105
|
-
}
|
106
|
-
}}
|
107
|
-
class="{base} {classes}"
|
108
|
-
{...attrs}
|
109
|
-
>
|
110
|
-
{@render children()}
|
111
|
-
</div>
|
1
|
+
<script>
|
2
|
+
import { createDragState } from './drag-state.svelte.js';
|
3
|
+
|
4
|
+
import { activeTouchMove, activeDragOver, activeDrop } from './actions.js';
|
5
|
+
|
6
|
+
/**
|
7
|
+
* @type {{
|
8
|
+
* contextKey?: import('../../typedef').ContextKey,
|
9
|
+
* base?: string,
|
10
|
+
* classes?: string,
|
11
|
+
* children: import('svelte').Snippet,
|
12
|
+
* [key: string]: any
|
13
|
+
* }}
|
14
|
+
*/
|
15
|
+
let { contextKey, base = '', classes = '', children, ...attrs } = $props();
|
16
|
+
|
17
|
+
// Create the state context at this level to ensure all children
|
18
|
+
// have access to the same state instance
|
19
|
+
const dragState = createDragState(contextKey);
|
20
|
+
|
21
|
+
/**
|
22
|
+
* Handle drag enter at context level
|
23
|
+
* @param {DragEvent} event
|
24
|
+
*/
|
25
|
+
function onDragEnter(event) {
|
26
|
+
event.preventDefault();
|
27
|
+
dragState.updateActiveDropZone(event.clientX, event.clientY, event);
|
28
|
+
}
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Handle drag over at context level
|
32
|
+
* @param {DragEvent} event
|
33
|
+
*/
|
34
|
+
function onDragOver(event) {
|
35
|
+
event.preventDefault();
|
36
|
+
dragState.updateActiveDropZone(event.clientX, event.clientY, event);
|
37
|
+
|
38
|
+
// Set appropriate drop effect based on current drag operation
|
39
|
+
if (dragState.isDragging()) {
|
40
|
+
const activeZone = dragState.activeDropZone;
|
41
|
+
if (activeZone) {
|
42
|
+
const config = dragState.dropZones.get(activeZone);
|
43
|
+
if (config?.canDrop) {
|
44
|
+
event.dataTransfer.dropEffect = 'move';
|
45
|
+
} else {
|
46
|
+
event.dataTransfer.dropEffect = 'none';
|
47
|
+
}
|
48
|
+
} else {
|
49
|
+
event.dataTransfer.dropEffect = 'none';
|
50
|
+
}
|
51
|
+
} else {
|
52
|
+
// No internal drag operation, might be file drag
|
53
|
+
event.dataTransfer.dropEffect = 'copy';
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
57
|
+
/**
|
58
|
+
* Handle drag leave at context level
|
59
|
+
* @param {DragEvent} event
|
60
|
+
*/
|
61
|
+
function onDragLeave(event) {
|
62
|
+
// Only handle if we're leaving the entire context
|
63
|
+
const rect =
|
64
|
+
/** @type {Element} */ (event.currentTarget).getBoundingClientRect();
|
65
|
+
|
66
|
+
|
67
|
+
const x = event.clientX;
|
68
|
+
const y = event.clientY;
|
69
|
+
|
70
|
+
// Check if we're truly leaving the context bounds
|
71
|
+
if (x < rect.left || x > rect.right || y < rect.top || y > rect.bottom) {
|
72
|
+
dragState.updateActiveDropZone(-1, -1, event);
|
73
|
+
}
|
74
|
+
}
|
75
|
+
|
76
|
+
/**
|
77
|
+
* Handle drop at context level
|
78
|
+
* @param {DragEvent} event
|
79
|
+
*/
|
80
|
+
function onDrop(event) {
|
81
|
+
event.preventDefault();
|
82
|
+
dragState.handleDropAtPoint(event.clientX, event.clientY, event);
|
83
|
+
}
|
84
|
+
|
85
|
+
/**
|
86
|
+
* Handle drag end to clean up
|
87
|
+
* @param {DragEvent} event
|
88
|
+
*/
|
89
|
+
function onDragEnd(event) {
|
90
|
+
// This will trigger cleanup in drag state
|
91
|
+
dragState.updateActiveDropZone(-1, -1, event);
|
92
|
+
}
|
93
|
+
</script>
|
94
|
+
|
95
|
+
<div
|
96
|
+
data-component="drag-drop-context"
|
97
|
+
ondragenter={onDragEnter}
|
98
|
+
use:activeDragOver={onDragOver}
|
99
|
+
ondragleave={onDragLeave}
|
100
|
+
use:activeDrop={onDrop}
|
101
|
+
ondragend={onDragEnd}
|
102
|
+
use:activeTouchMove={(e) => {
|
103
|
+
if (dragState.isDragging()) {
|
104
|
+
e.preventDefault();
|
105
|
+
}
|
106
|
+
}}
|
107
|
+
class="{base} {classes}"
|
108
|
+
{...attrs}
|
109
|
+
>
|
110
|
+
{@render children()}
|
111
|
+
</div>
|