@hkdigital/lib-sveltekit 0.1.5 → 0.1.6
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 +127 -127
- 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 +3 -3
- 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 +282 -282
- package/dist/classes/svelte/audio/mocks.js +35 -35
- package/dist/classes/svelte/final-state-machine/FiniteStateMachine.svelte.js +133 -133
- package/dist/classes/svelte/final-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/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/HkArea.svelte.d.ts +0 -14
- package/dist/components/area/HkGridArea.svelte +77 -77
- package/dist/components/area/HkGridArea.svelte.d.ts +0 -22
- package/dist/components/area/index.js +2 -2
- package/dist/components/boxes/game-box/GameBox.svelte +112 -112
- package/dist/components/boxes/game-box/GameBox.svelte.d.ts +0 -15
- package/dist/components/boxes/game-box/gamebox.util.js +83 -83
- package/dist/components/boxes/index.js +2 -2
- package/dist/components/boxes/virtual-viewport/VirtualViewport.svelte +199 -199
- package/dist/components/boxes/virtual-viewport/VirtualViewport.svelte.d.ts +0 -22
- package/dist/components/buttons/button/Button.svelte +75 -75
- package/dist/components/buttons/button/Button.svelte.d.ts +0 -21
- package/dist/components/buttons/button-text/TextButton.svelte +21 -21
- package/dist/components/buttons/button-text/TextButton.svelte.d.ts +0 -7
- package/dist/components/buttons/index.js +2 -2
- package/dist/components/hkdev/blocks/TextBlock.svelte +46 -46
- package/dist/components/hkdev/blocks/TextBlock.svelte.d.ts +0 -13
- package/dist/components/hkdev/buttons/CheckButton.svelte +62 -62
- package/dist/components/hkdev/buttons/CheckButton.svelte.d.ts +0 -18
- package/dist/components/icon/HkIcon.svelte +86 -86
- package/dist/components/icon/HkIcon.svelte.d.ts +0 -12
- package/dist/components/icon/HkTabIcon.svelte +116 -116
- package/dist/components/icon/HkTabIcon.svelte.d.ts +0 -21
- package/dist/components/icon/index.js +4 -4
- package/dist/components/icon/typedef.js +16 -16
- package/dist/components/image/ImageBox.svelte +208 -208
- package/dist/components/image/ImageBox.svelte.d.ts +0 -19
- package/dist/components/image/index.js +5 -5
- package/dist/components/image/typedef.js +32 -32
- 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 +226 -226
- package/dist/components/inputs/text-input/TextInput.svelte.d.ts +0 -28
- 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/HkAppLayout.state.svelte.js +25 -25
- package/dist/components/layout/HkAppLayout.svelte +251 -251
- package/dist/components/layout/HkAppLayout.svelte.d.ts +0 -11
- package/dist/components/layout/HkGridLayers.svelte +82 -82
- package/dist/components/layout/HkGridLayers.svelte.d.ts +0 -23
- package/dist/components/layout/index.js +9 -9
- package/dist/components/panels/index.js +1 -1
- package/dist/components/panels/plain-panel/PlainPanel.svelte +33 -33
- package/dist/components/panels/plain-panel/PlainPanel.svelte.d.ts +0 -12
- package/dist/components/rows/index.js +3 -3
- package/dist/components/rows/panel-grid-row/PanelGridRow.svelte +104 -104
- package/dist/components/rows/panel-grid-row/PanelGridRow.svelte.d.ts +0 -14
- package/dist/components/rows/panel-row-2/PanelRow2.svelte +40 -40
- package/dist/components/rows/panel-row-2/PanelRow2.svelte.d.ts +0 -14
- 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/HkTabBar.svelte.d.ts +0 -18
- 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/HkTabBarSelector.svelte.d.ts +0 -19
- package/dist/components/tab-bar/index.js +17 -17
- package/dist/components/tab-bar/typedef.js +8 -8
- package/dist/components/widgets/compare-left-right/CompareLeftRight.svelte +179 -179
- package/dist/components/widgets/compare-left-right/CompareLeftRight.svelte.d.ts +0 -10
- package/dist/components/widgets/compare-left-right/index.js +1 -1
- package/dist/components/widgets/scale-control/index.js +1 -1
- 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/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/tw-prose.postcss__ +259 -259
- package/dist/css/utilities.postcss +43 -43
- package/dist/design/design-config.js +73 -73
- package/dist/design/tailwind-theme-extend.d.ts +4 -4
- package/dist/design/tailwind-theme-extend.js +151 -151
- 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.postcss +40 -40
- package/dist/themes/hkdev/components/boxes/game-box.postcss +13 -13
- package/dist/themes/hkdev/components/buttons/button-text.postcss +34 -34
- package/dist/themes/hkdev/components/buttons/button.postcss +138 -138
- package/dist/themes/hkdev/components/buttons/skip-button.postcss +8 -8
- package/dist/themes/hkdev/components/inputs/text-input.postcss +108 -108
- package/dist/themes/hkdev/components/panels/plain-panel.postcss +46 -46
- package/dist/themes/hkdev/components/panels/speech-bubble.postcss +52 -52
- package/dist/themes/hkdev/components/rows/panel-grid-row.postcss +7 -7
- package/dist/themes/hkdev/components/rows/panel-row-2.postcss +9 -9
- package/dist/themes/hkdev/components.postcss +55 -55
- package/dist/themes/hkdev/debug.postcss +1 -1
- package/dist/themes/hkdev/global/layout.postcss +39 -39
- package/dist/themes/hkdev/global/on-colors.postcss +53 -53
- package/dist/themes/hkdev/global/text.postcss__ +34 -34
- package/dist/themes/hkdev/global/vars.postcss__ +7 -7
- package/dist/themes/hkdev/globals.postcss +11 -11
- package/dist/themes/hkdev/responsive.postcss +12 -12
- package/dist/themes/hkdev/theme-ext.js +15 -15
- package/dist/themes/hkdev/theme.js +227 -227
- package/dist/themes/index.js +1 -1
- package/dist/util/array/index.js +455 -455
- 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.d.ts +2 -2
- 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 +97 -97
- package/dist/util/design-system/tailwind.js +289 -289
- 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 +273 -273
- 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 +228 -228
- 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/index.js +184 -184
- package/dist/util/svelte/index.js +2 -2
- 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 +82 -82
- package/dist/util/time/index.js +339 -339
- 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 +99 -99
- package/dist/themes/hkdev/components/buttons/button.postcss__ +0 -40
- package/dist/themes/hkdev/components/buttons/button.postcss___ +0 -91
@@ -1,247 +1,247 @@
|
|
1
|
-
/* ------------------------------------------------------------------ Imports */
|
2
|
-
|
3
|
-
import { objectGet } from '../object/index.js';
|
4
|
-
|
5
|
-
/* ------------------------------------------------------------------ Exports */
|
6
|
-
|
7
|
-
/**
|
8
|
-
* Check if the values of two variables should be considered the same
|
9
|
-
*
|
10
|
-
* @param {any} value1 - First value for comparison
|
11
|
-
* @param {any} value2 - Second value for comparison
|
12
|
-
*
|
13
|
-
* @return {boolean} true if the two values can be considered the same
|
14
|
-
*/
|
15
|
-
export function equals(value1, value2, _pendingComparisons) {
|
16
|
-
// -- Basic sameness comparisons
|
17
|
-
|
18
|
-
if (typeof value1 !== typeof value2) {
|
19
|
-
// Not the same [type]
|
20
|
-
return false;
|
21
|
-
}
|
22
|
-
|
23
|
-
if (!(value1 instanceof Object) && value1 !== value2) {
|
24
|
-
// [Not an object] and [not the same value]
|
25
|
-
return false;
|
26
|
-
}
|
27
|
-
|
28
|
-
if (value1 === value2) {
|
29
|
-
// [same value or same object reference]
|
30
|
-
return true;
|
31
|
-
}
|
32
|
-
|
33
|
-
if (value1 === null || value2 === null) {
|
34
|
-
// [one of the values is null, the other an object]
|
35
|
-
return false;
|
36
|
-
}
|
37
|
-
|
38
|
-
// -- Check if variables are already being compared
|
39
|
-
|
40
|
-
if (!_pendingComparisons) {
|
41
|
-
_pendingComparisons = { value1: [], value2: [] };
|
42
|
-
} else {
|
43
|
-
const values1 = _pendingComparisons.value1;
|
44
|
-
const values2 = _pendingComparisons.value2;
|
45
|
-
|
46
|
-
if (values1.length > 0) {
|
47
|
-
const foundIndex = values1.indexOf(value1);
|
48
|
-
|
49
|
-
if (-1 !== foundIndex && values2[foundIndex] === value2) {
|
50
|
-
// Objects comparison in progress (it's safe to return true),
|
51
|
-
// since equals will fail on other place if objects differ
|
52
|
-
return true;
|
53
|
-
}
|
54
|
-
}
|
55
|
-
}
|
56
|
-
|
57
|
-
// -- Compare special objects
|
58
|
-
|
59
|
-
switch (value1.constructor) {
|
60
|
-
// Implement other special objects here.
|
61
|
-
|
62
|
-
case RegExp:
|
63
|
-
if (value1.toString() === value2.toString()) {
|
64
|
-
return true;
|
65
|
-
}
|
66
|
-
return false;
|
67
|
-
|
68
|
-
case Date:
|
69
|
-
if (value1.getTime() === value2.getTime()) {
|
70
|
-
return true;
|
71
|
-
}
|
72
|
-
return false;
|
73
|
-
}
|
74
|
-
|
75
|
-
// -- Check if both objects have the same properties
|
76
|
-
|
77
|
-
for (const prop in value1) {
|
78
|
-
if (undefined === value2[prop] && undefined !== value1[prop]) {
|
79
|
-
// (defined) property found in value1 that is undefined in value2
|
80
|
-
return false;
|
81
|
-
}
|
82
|
-
}
|
83
|
-
|
84
|
-
for (const prop in value2) {
|
85
|
-
if (undefined === value1[prop] && undefined !== value2[prop]) {
|
86
|
-
// (defined) property found in value2 that is undefined in value1
|
87
|
-
return false;
|
88
|
-
}
|
89
|
-
}
|
90
|
-
|
91
|
-
// -- Check each property for sameness
|
92
|
-
|
93
|
-
_pendingComparisons.value1.push(value1);
|
94
|
-
_pendingComparisons.value2.push(value2);
|
95
|
-
|
96
|
-
for (const prop in value1) {
|
97
|
-
if (false === equals(value1[prop], value2[prop], _pendingComparisons)) {
|
98
|
-
return false;
|
99
|
-
}
|
100
|
-
}
|
101
|
-
|
102
|
-
return true;
|
103
|
-
}
|
104
|
-
|
105
|
-
// ---------------------------------------------------------------------- Method
|
106
|
-
|
107
|
-
/**
|
108
|
-
* Returns true if x is greater than y
|
109
|
-
*
|
110
|
-
* @param {any} x - First value
|
111
|
-
* @param {any} y - Second value
|
112
|
-
*/
|
113
|
-
export function isGreaterThan(x, y) {
|
114
|
-
if (typeof x === 'undefined') {
|
115
|
-
if (typeof y === 'undefined') {
|
116
|
-
return false;
|
117
|
-
}
|
118
|
-
|
119
|
-
return true;
|
120
|
-
}
|
121
|
-
|
122
|
-
if (typeof y === 'undefined') {
|
123
|
-
return false;
|
124
|
-
}
|
125
|
-
|
126
|
-
return x > y;
|
127
|
-
}
|
128
|
-
|
129
|
-
// ---------------------------------------------------------------------- Method
|
130
|
-
|
131
|
-
/**
|
132
|
-
* Returns true if x is less than y
|
133
|
-
*
|
134
|
-
* @param {any} x - First value
|
135
|
-
* @param {any} y - Second value
|
136
|
-
*/
|
137
|
-
export function isLessThan(x, y) {
|
138
|
-
if (typeof x === 'undefined') {
|
139
|
-
if (typeof y === 'undefined') {
|
140
|
-
return false;
|
141
|
-
}
|
142
|
-
|
143
|
-
return false;
|
144
|
-
}
|
145
|
-
|
146
|
-
if (typeof y === 'undefined') {
|
147
|
-
return true;
|
148
|
-
}
|
149
|
-
|
150
|
-
return x < y;
|
151
|
-
}
|
152
|
-
|
153
|
-
// ---------------------------------------------------------------------- Method
|
154
|
-
|
155
|
-
/**
|
156
|
-
* Compare function that can be used for sorting smallest values first
|
157
|
-
* - undefined values are placed at the ...???FIXME???... of the sorted array
|
158
|
-
*
|
159
|
-
* @param {any} x - First value
|
160
|
-
* @param {any} y - Second value
|
161
|
-
*
|
162
|
-
* @returns {number} 0 = keep original order,
|
163
|
-
* 1 = sort x after y,
|
164
|
-
* -1 = sort x before y
|
165
|
-
*/
|
166
|
-
export function smallestFirst(x, y) {
|
167
|
-
if (x === undefined) {
|
168
|
-
if (y === undefined) {
|
169
|
-
return 0;
|
170
|
-
}
|
171
|
-
|
172
|
-
return 1;
|
173
|
-
}
|
174
|
-
|
175
|
-
if (y === undefined) {
|
176
|
-
return -1;
|
177
|
-
}
|
178
|
-
|
179
|
-
return x < y ? -1 : x > y ? 1 : 0;
|
180
|
-
}
|
181
|
-
|
182
|
-
// ---------------------------------------------------------------------- Method
|
183
|
-
|
184
|
-
/**
|
185
|
-
* Compare function that can be used for sorting largest values first
|
186
|
-
* - undefined values are placed at the ...???FIXME???... of the sorted array
|
187
|
-
*
|
188
|
-
* @param {any} x - First value
|
189
|
-
* @param {any} y - Second value
|
190
|
-
*
|
191
|
-
* @returns {number} 0 = keep original order,
|
192
|
-
* 1 = sort x after y,
|
193
|
-
* -1 = sort x before y
|
194
|
-
*/
|
195
|
-
export function largestFirst(x, y) {
|
196
|
-
if (x === undefined) {
|
197
|
-
if (y === undefined) {
|
198
|
-
return 0;
|
199
|
-
}
|
200
|
-
|
201
|
-
return 1;
|
202
|
-
}
|
203
|
-
|
204
|
-
if (y === undefined) {
|
205
|
-
return -1;
|
206
|
-
}
|
207
|
-
|
208
|
-
return x < y ? 1 : x > y ? -1 : 0;
|
209
|
-
}
|
210
|
-
|
211
|
-
// ---------------------------------------------------------------------- Method
|
212
|
-
|
213
|
-
/**
|
214
|
-
* Comparator that can be used for sorting using an object path
|
215
|
-
*
|
216
|
-
* @param {function} compareFn - Function to use to compare the values
|
217
|
-
*
|
218
|
-
* @param {any} a - First value
|
219
|
-
* @param {any} b - Second value
|
220
|
-
*
|
221
|
-
* @param {string|string[]} path - Object path
|
222
|
-
*/
|
223
|
-
export function compareUsingPath(compareFn, a, b, path) {
|
224
|
-
// @note assume a and b are objects
|
225
|
-
|
226
|
-
const valueA = objectGet(a, path);
|
227
|
-
const valueB = objectGet(b, path);
|
228
|
-
|
229
|
-
return compareFn(valueA, valueB);
|
230
|
-
}
|
231
|
-
|
232
|
-
// ---------------------------------------------------------------------- Method
|
233
|
-
|
234
|
-
/**
|
235
|
-
* Comparator that can be used for sorting using an object key
|
236
|
-
*
|
237
|
-
* @param {function} compareFn - Function to use to compare the values
|
238
|
-
* @param {string|string[]} path - Object path
|
239
|
-
*
|
240
|
-
* @param {any} x - First value
|
241
|
-
* @param {any} y - Second value
|
242
|
-
*/
|
243
|
-
export function compareUsingKey(compareFn, key, a, b) {
|
244
|
-
// @note assume a and b are objects
|
245
|
-
|
246
|
-
return compareFn(a[key], b[key]);
|
247
|
-
}
|
1
|
+
/* ------------------------------------------------------------------ Imports */
|
2
|
+
|
3
|
+
import { objectGet } from '../object/index.js';
|
4
|
+
|
5
|
+
/* ------------------------------------------------------------------ Exports */
|
6
|
+
|
7
|
+
/**
|
8
|
+
* Check if the values of two variables should be considered the same
|
9
|
+
*
|
10
|
+
* @param {any} value1 - First value for comparison
|
11
|
+
* @param {any} value2 - Second value for comparison
|
12
|
+
*
|
13
|
+
* @return {boolean} true if the two values can be considered the same
|
14
|
+
*/
|
15
|
+
export function equals(value1, value2, _pendingComparisons) {
|
16
|
+
// -- Basic sameness comparisons
|
17
|
+
|
18
|
+
if (typeof value1 !== typeof value2) {
|
19
|
+
// Not the same [type]
|
20
|
+
return false;
|
21
|
+
}
|
22
|
+
|
23
|
+
if (!(value1 instanceof Object) && value1 !== value2) {
|
24
|
+
// [Not an object] and [not the same value]
|
25
|
+
return false;
|
26
|
+
}
|
27
|
+
|
28
|
+
if (value1 === value2) {
|
29
|
+
// [same value or same object reference]
|
30
|
+
return true;
|
31
|
+
}
|
32
|
+
|
33
|
+
if (value1 === null || value2 === null) {
|
34
|
+
// [one of the values is null, the other an object]
|
35
|
+
return false;
|
36
|
+
}
|
37
|
+
|
38
|
+
// -- Check if variables are already being compared
|
39
|
+
|
40
|
+
if (!_pendingComparisons) {
|
41
|
+
_pendingComparisons = { value1: [], value2: [] };
|
42
|
+
} else {
|
43
|
+
const values1 = _pendingComparisons.value1;
|
44
|
+
const values2 = _pendingComparisons.value2;
|
45
|
+
|
46
|
+
if (values1.length > 0) {
|
47
|
+
const foundIndex = values1.indexOf(value1);
|
48
|
+
|
49
|
+
if (-1 !== foundIndex && values2[foundIndex] === value2) {
|
50
|
+
// Objects comparison in progress (it's safe to return true),
|
51
|
+
// since equals will fail on other place if objects differ
|
52
|
+
return true;
|
53
|
+
}
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
57
|
+
// -- Compare special objects
|
58
|
+
|
59
|
+
switch (value1.constructor) {
|
60
|
+
// Implement other special objects here.
|
61
|
+
|
62
|
+
case RegExp:
|
63
|
+
if (value1.toString() === value2.toString()) {
|
64
|
+
return true;
|
65
|
+
}
|
66
|
+
return false;
|
67
|
+
|
68
|
+
case Date:
|
69
|
+
if (value1.getTime() === value2.getTime()) {
|
70
|
+
return true;
|
71
|
+
}
|
72
|
+
return false;
|
73
|
+
}
|
74
|
+
|
75
|
+
// -- Check if both objects have the same properties
|
76
|
+
|
77
|
+
for (const prop in value1) {
|
78
|
+
if (undefined === value2[prop] && undefined !== value1[prop]) {
|
79
|
+
// (defined) property found in value1 that is undefined in value2
|
80
|
+
return false;
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
for (const prop in value2) {
|
85
|
+
if (undefined === value1[prop] && undefined !== value2[prop]) {
|
86
|
+
// (defined) property found in value2 that is undefined in value1
|
87
|
+
return false;
|
88
|
+
}
|
89
|
+
}
|
90
|
+
|
91
|
+
// -- Check each property for sameness
|
92
|
+
|
93
|
+
_pendingComparisons.value1.push(value1);
|
94
|
+
_pendingComparisons.value2.push(value2);
|
95
|
+
|
96
|
+
for (const prop in value1) {
|
97
|
+
if (false === equals(value1[prop], value2[prop], _pendingComparisons)) {
|
98
|
+
return false;
|
99
|
+
}
|
100
|
+
}
|
101
|
+
|
102
|
+
return true;
|
103
|
+
}
|
104
|
+
|
105
|
+
// ---------------------------------------------------------------------- Method
|
106
|
+
|
107
|
+
/**
|
108
|
+
* Returns true if x is greater than y
|
109
|
+
*
|
110
|
+
* @param {any} x - First value
|
111
|
+
* @param {any} y - Second value
|
112
|
+
*/
|
113
|
+
export function isGreaterThan(x, y) {
|
114
|
+
if (typeof x === 'undefined') {
|
115
|
+
if (typeof y === 'undefined') {
|
116
|
+
return false;
|
117
|
+
}
|
118
|
+
|
119
|
+
return true;
|
120
|
+
}
|
121
|
+
|
122
|
+
if (typeof y === 'undefined') {
|
123
|
+
return false;
|
124
|
+
}
|
125
|
+
|
126
|
+
return x > y;
|
127
|
+
}
|
128
|
+
|
129
|
+
// ---------------------------------------------------------------------- Method
|
130
|
+
|
131
|
+
/**
|
132
|
+
* Returns true if x is less than y
|
133
|
+
*
|
134
|
+
* @param {any} x - First value
|
135
|
+
* @param {any} y - Second value
|
136
|
+
*/
|
137
|
+
export function isLessThan(x, y) {
|
138
|
+
if (typeof x === 'undefined') {
|
139
|
+
if (typeof y === 'undefined') {
|
140
|
+
return false;
|
141
|
+
}
|
142
|
+
|
143
|
+
return false;
|
144
|
+
}
|
145
|
+
|
146
|
+
if (typeof y === 'undefined') {
|
147
|
+
return true;
|
148
|
+
}
|
149
|
+
|
150
|
+
return x < y;
|
151
|
+
}
|
152
|
+
|
153
|
+
// ---------------------------------------------------------------------- Method
|
154
|
+
|
155
|
+
/**
|
156
|
+
* Compare function that can be used for sorting smallest values first
|
157
|
+
* - undefined values are placed at the ...???FIXME???... of the sorted array
|
158
|
+
*
|
159
|
+
* @param {any} x - First value
|
160
|
+
* @param {any} y - Second value
|
161
|
+
*
|
162
|
+
* @returns {number} 0 = keep original order,
|
163
|
+
* 1 = sort x after y,
|
164
|
+
* -1 = sort x before y
|
165
|
+
*/
|
166
|
+
export function smallestFirst(x, y) {
|
167
|
+
if (x === undefined) {
|
168
|
+
if (y === undefined) {
|
169
|
+
return 0;
|
170
|
+
}
|
171
|
+
|
172
|
+
return 1;
|
173
|
+
}
|
174
|
+
|
175
|
+
if (y === undefined) {
|
176
|
+
return -1;
|
177
|
+
}
|
178
|
+
|
179
|
+
return x < y ? -1 : x > y ? 1 : 0;
|
180
|
+
}
|
181
|
+
|
182
|
+
// ---------------------------------------------------------------------- Method
|
183
|
+
|
184
|
+
/**
|
185
|
+
* Compare function that can be used for sorting largest values first
|
186
|
+
* - undefined values are placed at the ...???FIXME???... of the sorted array
|
187
|
+
*
|
188
|
+
* @param {any} x - First value
|
189
|
+
* @param {any} y - Second value
|
190
|
+
*
|
191
|
+
* @returns {number} 0 = keep original order,
|
192
|
+
* 1 = sort x after y,
|
193
|
+
* -1 = sort x before y
|
194
|
+
*/
|
195
|
+
export function largestFirst(x, y) {
|
196
|
+
if (x === undefined) {
|
197
|
+
if (y === undefined) {
|
198
|
+
return 0;
|
199
|
+
}
|
200
|
+
|
201
|
+
return 1;
|
202
|
+
}
|
203
|
+
|
204
|
+
if (y === undefined) {
|
205
|
+
return -1;
|
206
|
+
}
|
207
|
+
|
208
|
+
return x < y ? 1 : x > y ? -1 : 0;
|
209
|
+
}
|
210
|
+
|
211
|
+
// ---------------------------------------------------------------------- Method
|
212
|
+
|
213
|
+
/**
|
214
|
+
* Comparator that can be used for sorting using an object path
|
215
|
+
*
|
216
|
+
* @param {function} compareFn - Function to use to compare the values
|
217
|
+
*
|
218
|
+
* @param {any} a - First value
|
219
|
+
* @param {any} b - Second value
|
220
|
+
*
|
221
|
+
* @param {string|string[]} path - Object path
|
222
|
+
*/
|
223
|
+
export function compareUsingPath(compareFn, a, b, path) {
|
224
|
+
// @note assume a and b are objects
|
225
|
+
|
226
|
+
const valueA = objectGet(a, path);
|
227
|
+
const valueB = objectGet(b, path);
|
228
|
+
|
229
|
+
return compareFn(valueA, valueB);
|
230
|
+
}
|
231
|
+
|
232
|
+
// ---------------------------------------------------------------------- Method
|
233
|
+
|
234
|
+
/**
|
235
|
+
* Comparator that can be used for sorting using an object key
|
236
|
+
*
|
237
|
+
* @param {function} compareFn - Function to use to compare the values
|
238
|
+
* @param {string|string[]} path - Object path
|
239
|
+
*
|
240
|
+
* @param {any} x - First value
|
241
|
+
* @param {any} y - Second value
|
242
|
+
*/
|
243
|
+
export function compareUsingKey(compareFn, key, a, b) {
|
244
|
+
// @note assume a and b are objects
|
245
|
+
|
246
|
+
return compareFn(a[key], b[key]);
|
247
|
+
}
|
@@ -1,83 +1,83 @@
|
|
1
|
-
let cssVarCache = {};
|
2
|
-
|
3
|
-
/**
|
4
|
-
* Normalizes a CSS variable name to ensure it has the -- prefix
|
5
|
-
*
|
6
|
-
* @param {string} varName - The CSS variable name
|
7
|
-
* @returns {string} Normalized variable name with -- prefix
|
8
|
-
*/
|
9
|
-
export function normalizeCssVarName(varName) {
|
10
|
-
if (typeof varName !== 'string') {
|
11
|
-
throw new Error('Variable name must be a string');
|
12
|
-
}
|
13
|
-
return varName.startsWith('--') ? varName : `--${varName}`;
|
14
|
-
}
|
15
|
-
|
16
|
-
/**
|
17
|
-
* Extract a CSS variable value from document root
|
18
|
-
*
|
19
|
-
* @param {string} varName - CSS variable name without '--'
|
20
|
-
* @param {boolean} [useCache=false]
|
21
|
-
*
|
22
|
-
* @returns {any} Parsed value or default
|
23
|
-
*/
|
24
|
-
export function getRootCssVar(varName, useCache = false) {
|
25
|
-
if (cssVarCache[varName] !== undefined && useCache) {
|
26
|
-
return cssVarCache[varName];
|
27
|
-
}
|
28
|
-
|
29
|
-
// Get computed style from document root
|
30
|
-
const rootStyle = getComputedStyle(document.documentElement);
|
31
|
-
const declaration = rootStyle.getPropertyValue(`--${varName}`).trim();
|
32
|
-
|
33
|
-
if (!declaration) {
|
34
|
-
return null;
|
35
|
-
}
|
36
|
-
|
37
|
-
let result;
|
38
|
-
|
39
|
-
// Try to parse as number
|
40
|
-
if (!isNaN(parseFloat(declaration))) {
|
41
|
-
result = parseFloat(declaration);
|
42
|
-
} else {
|
43
|
-
// Return string value
|
44
|
-
result = declaration;
|
45
|
-
}
|
46
|
-
|
47
|
-
// Cache the result
|
48
|
-
cssVarCache[varName] = result;
|
49
|
-
return result;
|
50
|
-
}
|
51
|
-
|
52
|
-
/**
|
53
|
-
* Sets a CSS variable in :root to a new value
|
54
|
-
*
|
55
|
-
* @param {string} varName - The CSS variable name (with or without --)
|
56
|
-
* @param {string|number} value - The new value to set
|
57
|
-
* @returns {boolean} True if successful, false otherwise
|
58
|
-
*/
|
59
|
-
export function setRootCssVar(varName, value) {
|
60
|
-
try {
|
61
|
-
if (varName === undefined || varName === null) {
|
62
|
-
throw new Error('Variable name cannot be null or undefined');
|
63
|
-
}
|
64
|
-
|
65
|
-
if (value === undefined || value === null) {
|
66
|
-
throw new Error('Value cannot be null or undefined');
|
67
|
-
}
|
68
|
-
|
69
|
-
const normalizedName = normalizeCssVarName(varName);
|
70
|
-
|
71
|
-
// Convert to string if numeric
|
72
|
-
const formattedValue = typeof value === 'number' ? `${value}` : value;
|
73
|
-
|
74
|
-
document.documentElement.style.setProperty(normalizedName, formattedValue);
|
75
|
-
|
76
|
-
delete cssVarCache[varName];
|
77
|
-
|
78
|
-
return true;
|
79
|
-
} catch (error) {
|
80
|
-
console.error(`Error setting CSS variable ${varName}:`, error);
|
81
|
-
return false;
|
82
|
-
}
|
83
|
-
}
|
1
|
+
let cssVarCache = {};
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Normalizes a CSS variable name to ensure it has the -- prefix
|
5
|
+
*
|
6
|
+
* @param {string} varName - The CSS variable name
|
7
|
+
* @returns {string} Normalized variable name with -- prefix
|
8
|
+
*/
|
9
|
+
export function normalizeCssVarName(varName) {
|
10
|
+
if (typeof varName !== 'string') {
|
11
|
+
throw new Error('Variable name must be a string');
|
12
|
+
}
|
13
|
+
return varName.startsWith('--') ? varName : `--${varName}`;
|
14
|
+
}
|
15
|
+
|
16
|
+
/**
|
17
|
+
* Extract a CSS variable value from document root
|
18
|
+
*
|
19
|
+
* @param {string} varName - CSS variable name without '--'
|
20
|
+
* @param {boolean} [useCache=false]
|
21
|
+
*
|
22
|
+
* @returns {any} Parsed value or default
|
23
|
+
*/
|
24
|
+
export function getRootCssVar(varName, useCache = false) {
|
25
|
+
if (cssVarCache[varName] !== undefined && useCache) {
|
26
|
+
return cssVarCache[varName];
|
27
|
+
}
|
28
|
+
|
29
|
+
// Get computed style from document root
|
30
|
+
const rootStyle = getComputedStyle(document.documentElement);
|
31
|
+
const declaration = rootStyle.getPropertyValue(`--${varName}`).trim();
|
32
|
+
|
33
|
+
if (!declaration) {
|
34
|
+
return null;
|
35
|
+
}
|
36
|
+
|
37
|
+
let result;
|
38
|
+
|
39
|
+
// Try to parse as number
|
40
|
+
if (!isNaN(parseFloat(declaration))) {
|
41
|
+
result = parseFloat(declaration);
|
42
|
+
} else {
|
43
|
+
// Return string value
|
44
|
+
result = declaration;
|
45
|
+
}
|
46
|
+
|
47
|
+
// Cache the result
|
48
|
+
cssVarCache[varName] = result;
|
49
|
+
return result;
|
50
|
+
}
|
51
|
+
|
52
|
+
/**
|
53
|
+
* Sets a CSS variable in :root to a new value
|
54
|
+
*
|
55
|
+
* @param {string} varName - The CSS variable name (with or without --)
|
56
|
+
* @param {string|number} value - The new value to set
|
57
|
+
* @returns {boolean} True if successful, false otherwise
|
58
|
+
*/
|
59
|
+
export function setRootCssVar(varName, value) {
|
60
|
+
try {
|
61
|
+
if (varName === undefined || varName === null) {
|
62
|
+
throw new Error('Variable name cannot be null or undefined');
|
63
|
+
}
|
64
|
+
|
65
|
+
if (value === undefined || value === null) {
|
66
|
+
throw new Error('Value cannot be null or undefined');
|
67
|
+
}
|
68
|
+
|
69
|
+
const normalizedName = normalizeCssVarName(varName);
|
70
|
+
|
71
|
+
// Convert to string if numeric
|
72
|
+
const formattedValue = typeof value === 'number' ? `${value}` : value;
|
73
|
+
|
74
|
+
document.documentElement.style.setProperty(normalizedName, formattedValue);
|
75
|
+
|
76
|
+
delete cssVarCache[varName];
|
77
|
+
|
78
|
+
return true;
|
79
|
+
} catch (error) {
|
80
|
+
console.error(`Error setting CSS variable ${varName}:`, error);
|
81
|
+
return false;
|
82
|
+
}
|
83
|
+
}
|
package/dist/util/css/index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export * from './css-vars.js';
|
1
|
+
export * from './css-vars.js';
|