@hkdigital/lib-sveltekit 0.2.8 → 0.2.9

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.js +44 -44
  59. package/dist/components/drag-drop/DragDropContext.svelte +112 -110
  60. package/dist/components/drag-drop/Draggable.svelte +498 -512
  61. package/dist/components/drag-drop/{Dropzone.svelte → DropZone.svelte} +258 -258
  62. package/dist/components/drag-drop/DropZoneArea.svelte +119 -119
  63. package/dist/components/drag-drop/DropZoneList.svelte +125 -125
  64. package/dist/components/drag-drop/actions.d.ts +6 -0
  65. package/dist/components/drag-drop/actions.js +18 -0
  66. package/dist/components/drag-drop/drag-state.svelte.js +319 -319
  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/GridLayers.svelte__heightFrom__ +372 -0
  85. package/dist/components/layout/grid-layers/util.js +74 -74
  86. package/dist/components/layout/index.js +1 -1
  87. package/dist/components/panels/index.js +1 -1
  88. package/dist/components/panels/panel/Panel.svelte +43 -43
  89. package/dist/components/rows/index.js +3 -3
  90. package/dist/components/rows/panel-grid-row/PanelGridRow.svelte +104 -104
  91. package/dist/components/rows/panel-row-2/PanelRow2.svelte +40 -40
  92. package/dist/components/tab-bar/HkTabBar.state.svelte.js +149 -149
  93. package/dist/components/tab-bar/HkTabBar.svelte +74 -74
  94. package/dist/components/tab-bar/HkTabBarSelector.state.svelte.js +93 -93
  95. package/dist/components/tab-bar/HkTabBarSelector.svelte +49 -49
  96. package/dist/components/tab-bar/index.js +17 -17
  97. package/dist/components/tab-bar/typedef.js +11 -11
  98. package/dist/config/imagetools-config.js +189 -189
  99. package/dist/config/imagetools.d.ts +72 -72
  100. package/dist/constants/bases.js +13 -13
  101. package/dist/constants/errors/api.js +9 -9
  102. package/dist/constants/errors/generic.js +5 -5
  103. package/dist/constants/errors/index.js +3 -3
  104. package/dist/constants/errors/jwt.js +5 -5
  105. package/dist/constants/http/headers.js +6 -6
  106. package/dist/constants/http/index.js +2 -2
  107. package/dist/constants/http/methods.js +2 -2
  108. package/dist/constants/index.js +3 -3
  109. package/dist/constants/mime/application.js +5 -5
  110. package/dist/constants/mime/audio.js +13 -13
  111. package/dist/constants/mime/image.js +3 -3
  112. package/dist/constants/mime/index.js +4 -4
  113. package/dist/constants/mime/text.js +2 -2
  114. package/dist/constants/regexp/index.js +31 -31
  115. package/dist/constants/regexp/inspiratie.js__ +95 -95
  116. package/dist/constants/regexp/text.js +49 -49
  117. package/dist/constants/regexp/user.js +32 -32
  118. package/dist/constants/regexp/web.js +3 -3
  119. package/dist/constants/state-labels/drag-states.js +6 -6
  120. package/dist/constants/state-labels/drop-states.js +6 -6
  121. package/dist/constants/state-labels/input-states.js +11 -11
  122. package/dist/constants/state-labels/submit-states.js +4 -4
  123. package/dist/constants/time.js +28 -28
  124. package/dist/css/utilities.css +43 -43
  125. package/dist/design/design-config.js +73 -73
  126. package/dist/design/tailwind-theme-extend.js +158 -158
  127. package/dist/features/button-group/ButtonGroup.svelte +82 -82
  128. package/dist/features/button-group/typedef.js +10 -10
  129. package/dist/features/compare-left-right/CompareLeftRight.svelte +179 -179
  130. package/dist/features/compare-left-right/index.js +1 -1
  131. package/dist/features/game-box/GameBox.svelte +577 -577
  132. package/dist/features/game-box/gamebox.util.js +83 -83
  133. package/dist/features/hk-app-layout/HkAppLayout.state.svelte.js +25 -25
  134. package/dist/features/hk-app-layout/HkAppLayout.svelte +251 -251
  135. package/dist/features/image-box/ImageBox.svelte +210 -210
  136. package/dist/features/image-box/index.js +5 -5
  137. package/dist/features/image-box/typedef.js +32 -32
  138. package/dist/features/index.js +23 -23
  139. package/dist/features/presenter/ImageSlide.svelte +64 -64
  140. package/dist/features/presenter/Presenter.state.svelte.js +638 -638
  141. package/dist/features/presenter/Presenter.svelte +142 -142
  142. package/dist/features/presenter/constants.js +7 -7
  143. package/dist/features/presenter/index.js +10 -10
  144. package/dist/features/presenter/typedef.js +106 -106
  145. package/dist/features/presenter/util.js +210 -210
  146. package/dist/features/virtual-viewport/VirtualViewport.svelte +196 -196
  147. package/dist/schemas/index.js +1 -1
  148. package/dist/schemas/validate-url.js +180 -180
  149. package/dist/server/index.js +1 -1
  150. package/dist/server/logger.js +94 -94
  151. package/dist/states/index.js +1 -1
  152. package/dist/states/navigation.svelte.js +55 -55
  153. package/dist/stores/index.js +1 -1
  154. package/dist/stores/theme.js +80 -80
  155. package/dist/themes/hkdev/components/blocks/text-block.css +41 -41
  156. package/dist/themes/hkdev/components/boxes/game-box.css +12 -12
  157. package/dist/themes/hkdev/components/buttons/button-icon-steeze.css +22 -22
  158. package/dist/themes/hkdev/components/buttons/button-text.css +32 -32
  159. package/dist/themes/hkdev/components/buttons/button.css +146 -146
  160. package/dist/themes/hkdev/components/buttons/skip-button.css +6 -6
  161. package/dist/themes/hkdev/components/drag-drop/draggable.css +73 -73
  162. package/dist/themes/hkdev/components/drag-drop/drop-zone.css +48 -48
  163. package/dist/themes/hkdev/components/icons/icon-steeze.css +22 -22
  164. package/dist/themes/hkdev/components/inputs/text-input.css +104 -104
  165. package/dist/themes/hkdev/components/panels/panel.css +27 -27
  166. package/dist/themes/hkdev/components/rows/panel-grid-row.css +6 -6
  167. package/dist/themes/hkdev/components/rows/panel-row-2.css +7 -7
  168. package/dist/themes/hkdev/components.css +53 -53
  169. package/dist/themes/hkdev/debug.css +1 -1
  170. package/dist/themes/hkdev/global/layout.css +39 -39
  171. package/dist/themes/hkdev/global/on-colors.css +53 -53
  172. package/dist/themes/hkdev/globals.css +11 -11
  173. package/dist/themes/hkdev/responsive.css +12 -12
  174. package/dist/themes/hkdev/theme-ext.js +15 -15
  175. package/dist/themes/hkdev/theme.js +235 -235
  176. package/dist/themes/index.js +1 -1
  177. package/dist/typedef/context.js +6 -6
  178. package/dist/typedef/drag.js +25 -25
  179. package/dist/typedef/drop.js +12 -12
  180. package/dist/typedef/image.js +38 -38
  181. package/dist/typedef/index.js +4 -4
  182. package/dist/util/array/index.js +436 -436
  183. package/dist/util/bases/base58.js +262 -262
  184. package/dist/util/bases/index.js +1 -1
  185. package/dist/util/compare/index.js +247 -247
  186. package/dist/util/css/css-vars.js +83 -83
  187. package/dist/util/css/index.js +1 -1
  188. package/dist/util/design-system/components/states.js +22 -22
  189. package/dist/util/design-system/css/clamp.js +66 -66
  190. package/dist/util/design-system/css/root-design-vars.js +102 -102
  191. package/dist/util/design-system/index.js +5 -5
  192. package/dist/util/design-system/layout/scaling.js +228 -228
  193. package/dist/util/design-system/skeleton.js +208 -208
  194. package/dist/util/design-system/tailwind.js +288 -288
  195. package/dist/util/env/index.js +9 -9
  196. package/dist/util/expect/arrays.js +47 -47
  197. package/dist/util/expect/index.js +259 -259
  198. package/dist/util/expect/primitives.js +55 -55
  199. package/dist/util/expect/url.js +60 -60
  200. package/dist/util/function/index.js +218 -218
  201. package/dist/util/geo/index.js +26 -26
  202. package/dist/util/http/caching.js +263 -263
  203. package/dist/util/http/errors.js +97 -97
  204. package/dist/util/http/headers.js +75 -75
  205. package/dist/util/http/http-request.js +379 -379
  206. package/dist/util/http/index.js +22 -22
  207. package/dist/util/http/json-request.js +224 -224
  208. package/dist/util/http/mocks.js +65 -65
  209. package/dist/util/http/response.js +294 -294
  210. package/dist/util/http/test-data__/content-length-test-hkdigital-small.V4HfZyBQ.avif +0 -0
  211. package/dist/util/http/typedef.js +93 -93
  212. package/dist/util/http/url.js +52 -52
  213. package/dist/util/image/index.js +86 -86
  214. package/dist/util/index.js +2 -2
  215. package/dist/util/is/index.js +140 -140
  216. package/dist/util/iterate/index.js +234 -234
  217. package/dist/util/object/index.js +1361 -1361
  218. package/dist/util/singleton/index.js +97 -97
  219. package/dist/util/string/array-path.js +75 -75
  220. package/dist/util/string/convert.js +54 -54
  221. package/dist/util/string/fs.js +226 -226
  222. package/dist/util/string/index.js +5 -5
  223. package/dist/util/string/interpolate.js +61 -61
  224. package/dist/util/string/pad.js +10 -10
  225. package/dist/util/svelte/index.js +4 -4
  226. package/dist/util/svelte/loading/loading-tracker.svelte.js +108 -108
  227. package/dist/util/svelte/observe/index.js +49 -49
  228. package/dist/util/svelte/state-context/index.js +117 -117
  229. package/dist/util/svelte/wait/index.js +38 -38
  230. package/dist/util/sveltekit/index.js +1 -1
  231. package/dist/util/sveltekit/route-folders/index.js +101 -101
  232. package/dist/util/time/index.js +323 -323
  233. package/dist/util/unique/index.js +249 -249
  234. package/dist/valibot/date.js__ +10 -10
  235. package/dist/valibot/index.js +9 -9
  236. package/dist/valibot/url.js +95 -95
  237. package/dist/valibot/user.js +23 -23
  238. package/dist/zod/all.js +33 -33
  239. package/dist/zod/generic.js +11 -11
  240. package/dist/zod/javascript.js +32 -32
  241. package/dist/zod/user.js +16 -16
  242. package/dist/zod/web.js +52 -52
  243. package/package.json +112 -112
@@ -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';