@hkdigital/lib-sveltekit 0.2.6 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/README.md +135 -135
  2. package/dist/assets/autospuiten/car-paint-picker.js +41 -41
  3. package/dist/assets/autospuiten/labels.js +7 -7
  4. package/dist/classes/cache/IndexedDbCache.js +1407 -1407
  5. package/dist/classes/cache/MemoryResponseCache.js +138 -138
  6. package/dist/classes/cache/index.js +5 -5
  7. package/dist/classes/cache/typedef.js +41 -41
  8. package/dist/classes/data/IterableTree.js +243 -243
  9. package/dist/classes/data/Selector.js +190 -190
  10. package/dist/classes/data/index.js +2 -2
  11. package/dist/classes/events/EventEmitter.js +275 -275
  12. package/dist/classes/events/index.js +2 -2
  13. package/dist/classes/index.js +4 -4
  14. package/dist/classes/logging/Logger.js +158 -158
  15. package/dist/classes/logging/constants.js +18 -18
  16. package/dist/classes/logging/index.js +4 -4
  17. package/dist/classes/promise/HkPromise.js +377 -377
  18. package/dist/classes/promise/index.js +1 -1
  19. package/dist/classes/services/ServiceBase.js +409 -409
  20. package/dist/classes/services/ServiceManager.js +1114 -1114
  21. package/dist/classes/services/constants.js +12 -12
  22. package/dist/classes/services/index.js +5 -5
  23. package/dist/classes/stores/SubscribersCount.js +107 -107
  24. package/dist/classes/stores/index.js +1 -1
  25. package/dist/classes/streams/LogTransformStream.js +19 -19
  26. package/dist/classes/streams/ServerEventsStore.js +110 -110
  27. package/dist/classes/streams/TimeStampSource.js +26 -26
  28. package/dist/classes/streams/index.js +3 -3
  29. package/dist/classes/svelte/audio/AudioLoader.svelte.js +58 -58
  30. package/dist/classes/svelte/audio/AudioScene.svelte.js +324 -324
  31. package/dist/classes/svelte/audio/mocks.js +35 -35
  32. package/dist/classes/svelte/finite-state-machine/FiniteStateMachine.svelte.js +133 -133
  33. package/dist/classes/svelte/finite-state-machine/index.js +1 -1
  34. package/dist/classes/svelte/image/ImageLoader.svelte.js +45 -45
  35. package/dist/classes/svelte/image/ImageScene.svelte.js +249 -249
  36. package/dist/classes/svelte/image/ImageVariantsLoader.svelte.js +152 -152
  37. package/dist/classes/svelte/image/index.js +4 -4
  38. package/dist/classes/svelte/image/mocks.js +35 -35
  39. package/dist/classes/svelte/image/typedef.js +8 -8
  40. package/dist/classes/svelte/index.js +14 -14
  41. package/dist/classes/svelte/loading-state-machine/LoadingStateMachine.svelte.js +109 -109
  42. package/dist/classes/svelte/loading-state-machine/constants.js +16 -16
  43. package/dist/classes/svelte/loading-state-machine/index.js +3 -3
  44. package/dist/classes/svelte/network-loader/NetworkLoader.svelte.js +338 -338
  45. package/dist/classes/svelte/network-loader/constants.js +3 -3
  46. package/dist/classes/svelte/network-loader/index.js +3 -3
  47. package/dist/classes/svelte/network-loader/mocks.js +30 -30
  48. package/dist/classes/svelte/network-loader/typedef.js +8 -8
  49. package/dist/components/area/HkArea.svelte +49 -49
  50. package/dist/components/area/HkGridArea.svelte +77 -77
  51. package/dist/components/area/index.js +2 -2
  52. package/dist/components/buttons/button/Button.svelte +82 -82
  53. package/dist/components/buttons/button-icon-steeze/SteezeIconButton.svelte +30 -30
  54. package/dist/components/buttons/button-text/TextButton.svelte +21 -21
  55. package/dist/components/buttons/index.js +3 -3
  56. package/dist/components/debug/debug-panel-design-scaling/DebugPanelDesignScaling.svelte +146 -146
  57. package/dist/components/debug/index.js +1 -1
  58. package/dist/components/drag-drop/DragController.d.ts +0 -20
  59. package/dist/components/drag-drop/DragController.js +44 -113
  60. package/dist/components/drag-drop/DragDropContext.svelte +110 -103
  61. package/dist/components/drag-drop/Draggable.svelte +512 -492
  62. package/dist/components/drag-drop/Draggable.svelte.d.ts +8 -2
  63. package/dist/components/drag-drop/DropZoneArea.svelte +119 -119
  64. package/dist/components/drag-drop/DropZoneList.svelte +125 -125
  65. package/dist/components/drag-drop/{DropZone.svelte → Dropzone.svelte} +258 -258
  66. package/dist/components/drag-drop/drag-state.svelte.js +319 -323
  67. package/dist/components/drag-drop/index.js +7 -7
  68. package/dist/components/drag-drop/util.js +85 -85
  69. package/dist/components/hkdev/blocks/TextBlock.svelte +46 -46
  70. package/dist/components/hkdev/buttons/CheckButton.svelte +62 -62
  71. package/dist/components/icons/HkIcon.svelte +86 -86
  72. package/dist/components/icons/HkTabIcon.svelte +116 -116
  73. package/dist/components/icons/SteezeIcon.svelte +97 -97
  74. package/dist/components/icons/index.js +6 -6
  75. package/dist/components/icons/typedef.js +16 -16
  76. package/dist/components/index.js +2 -2
  77. package/dist/components/inputs/index.js +1 -1
  78. package/dist/components/inputs/text-input/TestTextInput.svelte__ +102 -102
  79. package/dist/components/inputs/text-input/TextInput.svelte +223 -223
  80. package/dist/components/inputs/text-input/TextInput.svelte___ +83 -83
  81. package/dist/components/inputs/text-input/assets/IconInvalid.svelte +14 -14
  82. package/dist/components/inputs/text-input/assets/IconValid.svelte +12 -12
  83. package/dist/components/layout/grid-layers/GridLayers.svelte +63 -63
  84. package/dist/components/layout/grid-layers/util.js +74 -74
  85. package/dist/components/layout/index.js +1 -1
  86. package/dist/components/panels/index.js +1 -1
  87. package/dist/components/panels/panel/Panel.svelte +43 -43
  88. package/dist/components/rows/index.js +3 -3
  89. package/dist/components/rows/panel-grid-row/PanelGridRow.svelte +104 -104
  90. package/dist/components/rows/panel-row-2/PanelRow2.svelte +40 -40
  91. package/dist/components/tab-bar/HkTabBar.state.svelte.js +149 -149
  92. package/dist/components/tab-bar/HkTabBar.svelte +74 -74
  93. package/dist/components/tab-bar/HkTabBarSelector.state.svelte.js +93 -93
  94. package/dist/components/tab-bar/HkTabBarSelector.svelte +49 -49
  95. package/dist/components/tab-bar/index.js +17 -17
  96. package/dist/components/tab-bar/typedef.js +11 -11
  97. package/dist/config/imagetools-config.js +189 -189
  98. package/dist/config/imagetools.d.ts +72 -72
  99. package/dist/constants/bases.js +13 -13
  100. package/dist/constants/errors/api.js +9 -9
  101. package/dist/constants/errors/generic.js +5 -5
  102. package/dist/constants/errors/index.js +3 -3
  103. package/dist/constants/errors/jwt.js +5 -5
  104. package/dist/constants/http/headers.js +6 -6
  105. package/dist/constants/http/index.js +2 -2
  106. package/dist/constants/http/methods.js +2 -2
  107. package/dist/constants/index.js +3 -3
  108. package/dist/constants/mime/application.js +5 -5
  109. package/dist/constants/mime/audio.js +13 -13
  110. package/dist/constants/mime/image.js +3 -3
  111. package/dist/constants/mime/index.js +4 -4
  112. package/dist/constants/mime/text.js +2 -2
  113. package/dist/constants/regexp/index.js +31 -31
  114. package/dist/constants/regexp/inspiratie.js__ +95 -95
  115. package/dist/constants/regexp/text.js +49 -49
  116. package/dist/constants/regexp/user.js +32 -32
  117. package/dist/constants/regexp/web.js +3 -3
  118. package/dist/constants/state-labels/drag-states.js +6 -6
  119. package/dist/constants/state-labels/drop-states.js +6 -6
  120. package/dist/constants/state-labels/input-states.js +11 -11
  121. package/dist/constants/state-labels/submit-states.js +4 -4
  122. package/dist/constants/time.js +28 -28
  123. package/dist/css/utilities.css +43 -43
  124. package/dist/design/design-config.js +73 -73
  125. package/dist/design/tailwind-theme-extend.js +158 -158
  126. package/dist/features/button-group/ButtonGroup.svelte +82 -82
  127. package/dist/features/button-group/typedef.js +10 -10
  128. package/dist/features/compare-left-right/CompareLeftRight.svelte +179 -179
  129. package/dist/features/compare-left-right/index.js +1 -1
  130. package/dist/features/game-box/GameBox.svelte +577 -577
  131. package/dist/features/game-box/gamebox.util.js +83 -83
  132. package/dist/features/hk-app-layout/HkAppLayout.state.svelte.js +25 -25
  133. package/dist/features/hk-app-layout/HkAppLayout.svelte +251 -251
  134. package/dist/features/image-box/ImageBox.svelte +210 -210
  135. package/dist/features/image-box/index.js +5 -5
  136. package/dist/features/image-box/typedef.js +32 -32
  137. package/dist/features/index.js +23 -23
  138. package/dist/features/presenter/ImageSlide.svelte +64 -64
  139. package/dist/features/presenter/Presenter.state.svelte.js +638 -638
  140. package/dist/features/presenter/Presenter.svelte +142 -142
  141. package/dist/features/presenter/constants.js +7 -7
  142. package/dist/features/presenter/index.js +10 -10
  143. package/dist/features/presenter/typedef.js +106 -106
  144. package/dist/features/presenter/util.js +210 -210
  145. package/dist/features/virtual-viewport/VirtualViewport.svelte +196 -196
  146. package/dist/schemas/index.js +1 -1
  147. package/dist/schemas/validate-url.js +180 -180
  148. package/dist/server/index.js +1 -1
  149. package/dist/server/logger.js +94 -94
  150. package/dist/states/index.js +1 -1
  151. package/dist/states/navigation.svelte.js +55 -55
  152. package/dist/stores/index.js +1 -1
  153. package/dist/stores/theme.js +80 -80
  154. package/dist/themes/hkdev/components/blocks/text-block.css +41 -41
  155. package/dist/themes/hkdev/components/boxes/game-box.css +12 -12
  156. package/dist/themes/hkdev/components/buttons/button-icon-steeze.css +22 -22
  157. package/dist/themes/hkdev/components/buttons/button-text.css +32 -32
  158. package/dist/themes/hkdev/components/buttons/button.css +146 -146
  159. package/dist/themes/hkdev/components/buttons/skip-button.css +6 -6
  160. package/dist/themes/hkdev/components/drag-drop/draggable.css +73 -73
  161. package/dist/themes/hkdev/components/drag-drop/drop-zone.css +48 -48
  162. package/dist/themes/hkdev/components/icons/icon-steeze.css +22 -22
  163. package/dist/themes/hkdev/components/inputs/text-input.css +104 -104
  164. package/dist/themes/hkdev/components/panels/panel.css +27 -27
  165. package/dist/themes/hkdev/components/rows/panel-grid-row.css +6 -6
  166. package/dist/themes/hkdev/components/rows/panel-row-2.css +7 -7
  167. package/dist/themes/hkdev/components.css +53 -53
  168. package/dist/themes/hkdev/debug.css +1 -1
  169. package/dist/themes/hkdev/global/layout.css +39 -39
  170. package/dist/themes/hkdev/global/on-colors.css +53 -53
  171. package/dist/themes/hkdev/globals.css +11 -11
  172. package/dist/themes/hkdev/responsive.css +12 -12
  173. package/dist/themes/hkdev/theme-ext.js +15 -15
  174. package/dist/themes/hkdev/theme.js +235 -235
  175. package/dist/themes/index.js +1 -1
  176. package/dist/typedef/context.js +6 -6
  177. package/dist/typedef/drag.js +25 -25
  178. package/dist/typedef/drop.js +12 -12
  179. package/dist/typedef/image.js +38 -38
  180. package/dist/typedef/index.js +4 -4
  181. package/dist/util/array/index.js +436 -436
  182. package/dist/util/bases/base58.js +262 -262
  183. package/dist/util/bases/index.js +1 -1
  184. package/dist/util/compare/index.js +247 -247
  185. package/dist/util/css/css-vars.js +83 -83
  186. package/dist/util/css/index.js +1 -1
  187. package/dist/util/design-system/components/states.js +22 -22
  188. package/dist/util/design-system/css/clamp.js +66 -66
  189. package/dist/util/design-system/css/root-design-vars.js +102 -102
  190. package/dist/util/design-system/index.js +5 -5
  191. package/dist/util/design-system/layout/scaling.js +228 -228
  192. package/dist/util/design-system/skeleton.js +208 -208
  193. package/dist/util/design-system/tailwind.js +288 -288
  194. package/dist/util/env/index.js +9 -9
  195. package/dist/util/expect/arrays.js +47 -47
  196. package/dist/util/expect/index.js +259 -259
  197. package/dist/util/expect/primitives.js +55 -55
  198. package/dist/util/expect/url.js +60 -60
  199. package/dist/util/function/index.js +218 -218
  200. package/dist/util/geo/index.js +26 -26
  201. package/dist/util/http/caching.js +263 -263
  202. package/dist/util/http/errors.js +97 -97
  203. package/dist/util/http/headers.js +75 -75
  204. package/dist/util/http/http-request.js +379 -379
  205. package/dist/util/http/index.js +22 -22
  206. package/dist/util/http/json-request.js +224 -224
  207. package/dist/util/http/mocks.js +65 -65
  208. package/dist/util/http/response.js +294 -294
  209. package/dist/util/http/typedef.js +93 -93
  210. package/dist/util/http/url.js +52 -52
  211. package/dist/util/image/index.js +86 -86
  212. package/dist/util/index.js +2 -2
  213. package/dist/util/is/index.js +140 -140
  214. package/dist/util/iterate/index.js +234 -234
  215. package/dist/util/object/index.js +1361 -1361
  216. package/dist/util/singleton/index.js +97 -97
  217. package/dist/util/string/array-path.js +75 -75
  218. package/dist/util/string/convert.js +54 -54
  219. package/dist/util/string/fs.js +226 -226
  220. package/dist/util/string/index.js +5 -5
  221. package/dist/util/string/interpolate.js +61 -61
  222. package/dist/util/string/pad.js +10 -10
  223. package/dist/util/svelte/index.js +4 -4
  224. package/dist/util/svelte/loading/loading-tracker.svelte.js +108 -108
  225. package/dist/util/svelte/observe/index.js +49 -49
  226. package/dist/util/svelte/state-context/index.js +117 -117
  227. package/dist/util/svelte/wait/index.js +38 -38
  228. package/dist/util/sveltekit/index.js +1 -1
  229. package/dist/util/sveltekit/route-folders/index.js +101 -101
  230. package/dist/util/time/index.js +323 -323
  231. package/dist/util/unique/index.js +249 -249
  232. package/dist/valibot/date.js__ +10 -10
  233. package/dist/valibot/index.js +9 -9
  234. package/dist/valibot/url.js +95 -95
  235. package/dist/valibot/user.js +23 -23
  236. package/dist/zod/all.js +33 -33
  237. package/dist/zod/generic.js +11 -11
  238. package/dist/zod/javascript.js +32 -32
  239. package/dist/zod/user.js +16 -16
  240. package/dist/zod/web.js +52 -52
  241. package/package.json +112 -112
  242. package/dist/components/layout/grid-layers/GridLayers.svelte__heightFrom__ +0 -372
  243. package/dist/util/http/test-data__/content-length-test-hkdigital-small.V4HfZyBQ.avif +0 -0
@@ -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
+ }
@@ -1 +1 @@
1
- export * from './css-vars.js';
1
+ export * from './css-vars.js';