@hkdigital/lib-sveltekit 0.2.8 → 0.2.10

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