@hkdigital/lib-sveltekit 0.1.62 → 0.1.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +135 -135
- package/dist/assets/autospuiten/car-paint-picker.js +41 -41
- package/dist/assets/autospuiten/labels.js +7 -7
- package/dist/classes/data/IterableTree.js +243 -243
- package/dist/classes/data/Selector.js +190 -190
- package/dist/classes/data/index.js +2 -2
- package/dist/classes/index.js +4 -4
- package/dist/classes/promise/HkPromise.js +377 -377
- package/dist/classes/promise/index.js +1 -1
- package/dist/classes/stores/SubscribersCount.js +107 -107
- package/dist/classes/stores/index.js +1 -1
- package/dist/classes/streams/LogTransformStream.js +19 -19
- package/dist/classes/streams/ServerEventsStore.js +110 -110
- package/dist/classes/streams/TimeStampSource.js +26 -26
- package/dist/classes/streams/index.js +3 -3
- package/dist/classes/svelte/audio/AudioLoader.svelte.js +58 -58
- package/dist/classes/svelte/audio/AudioScene.svelte.js +295 -295
- package/dist/classes/svelte/audio/mocks.js +35 -35
- package/dist/classes/svelte/finite-state-machine/FiniteStateMachine.svelte.js +133 -133
- package/dist/classes/svelte/finite-state-machine/index.js +1 -1
- package/dist/classes/svelte/image/ImageLoader.svelte.js +47 -47
- package/dist/classes/svelte/image/ImageScene.svelte.js +253 -253
- package/dist/classes/svelte/image/ImageVariantsLoader.svelte.js +152 -152
- package/dist/classes/svelte/image/index.js +4 -4
- package/dist/classes/svelte/image/mocks.js +35 -35
- package/dist/classes/svelte/image/typedef.js +8 -8
- package/dist/classes/svelte/index.js +14 -14
- package/dist/classes/svelte/loading-state-machine/LoadingStateMachine.svelte.js +109 -109
- package/dist/classes/svelte/loading-state-machine/constants.js +16 -16
- package/dist/classes/svelte/loading-state-machine/index.js +3 -3
- package/dist/classes/svelte/network-loader/NetworkLoader.svelte.js +331 -331
- package/dist/classes/svelte/network-loader/constants.js +3 -3
- package/dist/classes/svelte/network-loader/index.js +3 -3
- package/dist/classes/svelte/network-loader/mocks.js +30 -30
- package/dist/classes/svelte/network-loader/typedef.js +8 -8
- package/dist/components/area/HkArea.svelte +49 -49
- package/dist/components/area/HkGridArea.svelte +77 -77
- package/dist/components/area/index.js +2 -2
- package/dist/components/buttons/button/Button.svelte +82 -82
- package/dist/components/buttons/button-icon-steeze/SteezeIconButton.svelte +30 -30
- package/dist/components/buttons/button-text/TextButton.svelte +21 -21
- package/dist/components/buttons/index.js +3 -3
- package/dist/components/debug/debug-panel-design-scaling/DebugPanelDesignScaling.svelte +146 -146
- package/dist/components/debug/index.js +1 -1
- package/dist/components/hkdev/blocks/TextBlock.svelte +46 -46
- package/dist/components/hkdev/buttons/CheckButton.svelte +62 -62
- package/dist/components/icons/HkIcon.svelte +86 -86
- package/dist/components/icons/HkTabIcon.svelte +116 -116
- package/dist/components/icons/SteezeIcon.svelte +97 -97
- package/dist/components/icons/index.js +6 -6
- package/dist/components/icons/typedef.js +16 -16
- package/dist/components/index.js +2 -2
- package/dist/components/inputs/index.js +1 -1
- package/dist/components/inputs/text-input/TestTextInput.svelte__ +102 -102
- package/dist/components/inputs/text-input/TextInput.svelte +223 -223
- package/dist/components/inputs/text-input/TextInput.svelte___ +83 -83
- package/dist/components/inputs/text-input/assets/IconInvalid.svelte +14 -14
- package/dist/components/inputs/text-input/assets/IconValid.svelte +12 -12
- package/dist/components/layout/grid-layers/GridLayers.svelte +167 -167
- package/dist/components/layout/index.js +1 -1
- package/dist/components/panels/index.js +1 -1
- package/dist/components/panels/panel/Panel.svelte +43 -43
- package/dist/components/rows/index.js +3 -3
- package/dist/components/rows/panel-grid-row/PanelGridRow.svelte +104 -104
- package/dist/components/rows/panel-row-2/PanelRow2.svelte +40 -40
- package/dist/components/tab-bar/HkTabBar.state.svelte.js +149 -149
- package/dist/components/tab-bar/HkTabBar.svelte +74 -74
- package/dist/components/tab-bar/HkTabBarSelector.state.svelte.js +93 -93
- package/dist/components/tab-bar/HkTabBarSelector.svelte +49 -49
- package/dist/components/tab-bar/index.js +17 -17
- package/dist/components/tab-bar/typedef.js +8 -8
- package/dist/config/imagetools-config.js +189 -189
- package/dist/config/imagetools.d.ts +71 -71
- package/dist/config/typedef.js +8 -8
- package/dist/constants/bases.js +13 -13
- package/dist/constants/errors/api.js +9 -9
- package/dist/constants/errors/generic.js +5 -5
- package/dist/constants/errors/index.js +3 -3
- package/dist/constants/errors/jwt.js +5 -5
- package/dist/constants/http/headers.js +6 -6
- package/dist/constants/http/index.js +2 -2
- package/dist/constants/http/methods.js +2 -2
- package/dist/constants/index.js +3 -3
- package/dist/constants/mime/application.js +5 -5
- package/dist/constants/mime/audio.js +13 -13
- package/dist/constants/mime/image.js +3 -3
- package/dist/constants/mime/index.js +4 -4
- package/dist/constants/mime/text.js +2 -2
- package/dist/constants/regexp/index.js +31 -31
- package/dist/constants/regexp/inspiratie.js__ +95 -95
- package/dist/constants/regexp/text.js +49 -49
- package/dist/constants/regexp/user.js +32 -32
- package/dist/constants/regexp/web.js +3 -3
- package/dist/constants/state-labels/input-states.js +11 -11
- package/dist/constants/state-labels/submit-states.js +4 -4
- package/dist/constants/time.js +28 -28
- package/dist/css/utilities.css +43 -43
- package/dist/design/design-config.js +73 -73
- package/dist/design/tailwind-theme-extend.js +158 -158
- package/dist/schemas/index.js +1 -1
- package/dist/schemas/validate-url.js +180 -180
- package/dist/server/index.js +1 -1
- package/dist/server/logger.js +94 -94
- package/dist/states/index.js +1 -1
- package/dist/states/navigation.svelte.js +55 -55
- package/dist/stores/index.js +1 -1
- package/dist/stores/theme.js +80 -80
- package/dist/themes/hkdev/components/blocks/text-block.css +41 -41
- package/dist/themes/hkdev/components/boxes/game-box.css +12 -12
- package/dist/themes/hkdev/components/buttons/button-icon-steeze.css +22 -22
- package/dist/themes/hkdev/components/buttons/button-text.css +32 -32
- package/dist/themes/hkdev/components/buttons/button.css +142 -142
- package/dist/themes/hkdev/components/buttons/skip-button.css +6 -6
- package/dist/themes/hkdev/components/icons/icon-steeze.css +22 -22
- package/dist/themes/hkdev/components/inputs/text-input.css +104 -104
- package/dist/themes/hkdev/components/panels/panel.css +27 -27
- package/dist/themes/hkdev/components/rows/panel-grid-row.css +6 -6
- package/dist/themes/hkdev/components/rows/panel-row-2.css +7 -7
- package/dist/themes/hkdev/components.css +47 -47
- package/dist/themes/hkdev/debug.css +1 -1
- package/dist/themes/hkdev/global/layout.css +39 -39
- package/dist/themes/hkdev/global/on-colors.css +53 -53
- package/dist/themes/hkdev/globals.css +11 -11
- package/dist/themes/hkdev/responsive.css +12 -12
- package/dist/themes/hkdev/theme-ext.js +15 -15
- package/dist/themes/hkdev/theme.js +235 -235
- package/dist/themes/index.js +1 -1
- package/dist/util/array/index.js +455 -455
- package/dist/util/bases/base58.js +262 -262
- package/dist/util/bases/index.js +1 -1
- package/dist/util/compare/index.js +247 -247
- package/dist/util/css/css-vars.js +83 -83
- package/dist/util/css/index.js +1 -1
- package/dist/util/design-system/components/states.js +22 -22
- package/dist/util/design-system/css/clamp.js +66 -66
- package/dist/util/design-system/css/root-design-vars.js +100 -100
- package/dist/util/design-system/index.js +5 -5
- package/dist/util/design-system/layout/scaling.js +228 -228
- package/dist/util/design-system/skeleton.js +208 -208
- package/dist/util/design-system/tailwind.js +288 -288
- package/dist/util/expect/arrays.js +47 -47
- package/dist/util/expect/index.js +259 -259
- package/dist/util/expect/primitives.js +55 -55
- package/dist/util/expect/url.js +60 -60
- package/dist/util/function/index.js +218 -218
- package/dist/util/http/errors.js +97 -97
- package/dist/util/http/headers.js +45 -45
- package/dist/util/http/http-request.js +294 -294
- package/dist/util/http/index.js +22 -22
- package/dist/util/http/json-request.js +143 -143
- package/dist/util/http/mocks.js +65 -65
- package/dist/util/http/response.js +241 -241
- package/dist/util/http/test-data__/content-length-test-hkdigital-small.V4HfZyBQ.avif +0 -0
- package/dist/util/http/url.js +52 -52
- package/dist/util/image/index.js +86 -86
- package/dist/util/index.js +2 -2
- package/dist/util/is/index.js +140 -140
- package/dist/util/iterate/index.js +234 -234
- package/dist/util/object/index.js +1361 -1361
- package/dist/util/singleton/index.js +97 -97
- package/dist/util/string/array-path.js +75 -75
- package/dist/util/string/convert.js +54 -54
- package/dist/util/string/fs.js +226 -226
- package/dist/util/string/index.js +5 -5
- package/dist/util/string/interpolate.js +61 -61
- package/dist/util/string/pad.js +10 -10
- package/dist/util/svelte/index.js +4 -4
- package/dist/util/svelte/loading/loading-tracker.svelte.js +108 -108
- package/dist/util/svelte/observe/index.js +49 -49
- package/dist/util/svelte/state-context/index.js +83 -83
- package/dist/util/svelte/wait/index.js +38 -38
- package/dist/util/sveltekit/index.js +1 -1
- package/dist/util/sveltekit/route-folders/index.js +101 -101
- package/dist/util/time/index.js +323 -323
- package/dist/util/unique/index.js +249 -249
- package/dist/valibot/date.js__ +10 -10
- package/dist/valibot/index.js +9 -9
- package/dist/valibot/url.js +95 -95
- package/dist/valibot/user.js +23 -23
- package/dist/widgets/button-group/ButtonGroup.svelte +82 -94
- package/dist/widgets/button-group/ButtonGroup.svelte.d.ts +0 -2
- package/dist/widgets/button-group/typedef.js +10 -10
- package/dist/widgets/compare-left-right/CompareLeftRight.svelte +179 -179
- package/dist/widgets/compare-left-right/index.js +1 -1
- package/dist/widgets/game-box/GameBox.svelte +579 -186
- package/dist/widgets/game-box/GameBox.svelte.d.ts +64 -4
- package/dist/widgets/game-box/gamebox.util.js +83 -83
- package/dist/widgets/hk-app-layout/HkAppLayout.state.svelte.js +25 -25
- package/dist/widgets/hk-app-layout/HkAppLayout.svelte +251 -251
- package/dist/widgets/image-box/ImageBox.svelte +212 -212
- package/dist/widgets/image-box/index.js +5 -5
- package/dist/widgets/image-box/typedef.js +32 -32
- package/dist/widgets/index.js +23 -23
- package/dist/widgets/presenter/(broken) Presenter.state.svelte.js__ +613 -0
- package/dist/widgets/presenter/ImageSlide.svelte +64 -64
- package/dist/widgets/presenter/Presenter.state.svelte.js +636 -636
- package/dist/widgets/presenter/Presenter.svelte +140 -140
- package/dist/widgets/presenter/Presenter.svelte__ +125 -0
- package/dist/widgets/presenter/constants.js +7 -7
- package/dist/widgets/presenter/index.js +10 -10
- package/dist/widgets/presenter/typedef.js +106 -106
- package/dist/widgets/presenter/util.js +210 -210
- package/dist/widgets/virtual-viewport/VirtualViewport.svelte +196 -196
- package/dist/zod/all.js +33 -33
- package/dist/zod/generic.js +11 -11
- package/dist/zod/javascript.js +32 -32
- package/dist/zod/user.js +16 -16
- package/dist/zod/web.js +52 -52
- package/package.json +102 -102
@@ -1,210 +1,210 @@
|
|
1
|
-
import { tick } from 'svelte';
|
2
|
-
|
3
|
-
import * as expect from '../../util/expect/index.js';
|
4
|
-
|
5
|
-
import { pushNotEmpty } from '../../util/array/index.js';
|
6
|
-
|
7
|
-
import { TRANSITION_CSS, FADE_IN, FADE_OUT } from './constants.js';
|
8
|
-
|
9
|
-
/**
|
10
|
-
* @typedef {import("./typedef").Transition} Transition
|
11
|
-
*/
|
12
|
-
|
13
|
-
/**
|
14
|
-
* Ensures DOM is updated by Svelte and then painted by the browser
|
15
|
-
* before executing the callback function.
|
16
|
-
*
|
17
|
-
* @param {Function} callback - Function to execute after DOM update and paint
|
18
|
-
* @returns {Promise<void>} - Promise that resolves after the callback is executed
|
19
|
-
*/
|
20
|
-
export function waitForRender(callback) {
|
21
|
-
return tick().then(() => {
|
22
|
-
return new Promise((resolve) => {
|
23
|
-
requestAnimationFrame(() => {
|
24
|
-
requestAnimationFrame(() => {
|
25
|
-
setTimeout(() => {
|
26
|
-
callback();
|
27
|
-
resolve();
|
28
|
-
}, 20);
|
29
|
-
});
|
30
|
-
});
|
31
|
-
});
|
32
|
-
});
|
33
|
-
}
|
34
|
-
|
35
|
-
/** === Generate CSS for lists of transitions */
|
36
|
-
|
37
|
-
/**
|
38
|
-
* Generates style and class names to be used before the transitions
|
39
|
-
* become active
|
40
|
-
*
|
41
|
-
* @param {Transition[]} transitions
|
42
|
-
*
|
43
|
-
* @returns {{style: string, classes: string}}
|
44
|
-
*/
|
45
|
-
export function cssBefore(transitions) {
|
46
|
-
expect.objectArray(transitions);
|
47
|
-
|
48
|
-
/** @type {string[]} */ let propertyStyleArr = [];
|
49
|
-
/** @type {string[]} */ let transitionStyleArr = [];
|
50
|
-
/** @type {string[]} */ let classesArr = [];
|
51
|
-
|
52
|
-
for (const transition of transitions) {
|
53
|
-
const { propertyStyle, transitionStyle, classes } =
|
54
|
-
transitionCssBefore(transition);
|
55
|
-
|
56
|
-
pushNotEmpty(propertyStyleArr, propertyStyle);
|
57
|
-
pushNotEmpty(transitionStyleArr, transitionStyle);
|
58
|
-
pushNotEmpty(classesArr, classes);
|
59
|
-
}
|
60
|
-
|
61
|
-
let style = propertyStyleArr.join(';');
|
62
|
-
|
63
|
-
if (transitionStyleArr.length) {
|
64
|
-
style += `;transition: ${transitionStyleArr.join(',')}`;
|
65
|
-
}
|
66
|
-
|
67
|
-
// console.log('cssBefore', transitions, style);
|
68
|
-
|
69
|
-
return { style, classes: classesArr.join() };
|
70
|
-
}
|
71
|
-
|
72
|
-
/**
|
73
|
-
* Generates style and class names to be used when the transitions are active
|
74
|
-
*
|
75
|
-
* @param {Transition[]} transitions
|
76
|
-
*
|
77
|
-
* @returns {{style: string, classes: string}}
|
78
|
-
*/
|
79
|
-
export function cssDuring(transitions) {
|
80
|
-
expect.objectArray(transitions);
|
81
|
-
|
82
|
-
/** @type {string[]} */ let propertyStyleArr = [];
|
83
|
-
/** @type {string[]} */ let transitionStyleArr = [];
|
84
|
-
/** @type {string[]} */ let classesArr = [];
|
85
|
-
|
86
|
-
for (const transition of transitions) {
|
87
|
-
const { propertyStyle, transitionStyle, classes } =
|
88
|
-
transitionCssDuring(transition);
|
89
|
-
|
90
|
-
pushNotEmpty(propertyStyleArr, propertyStyle);
|
91
|
-
pushNotEmpty(transitionStyleArr, transitionStyle);
|
92
|
-
pushNotEmpty(classesArr, classes);
|
93
|
-
} // end for
|
94
|
-
|
95
|
-
let style = propertyStyleArr.join(';');
|
96
|
-
|
97
|
-
if (transitionStyleArr.length) {
|
98
|
-
style += `;transition: ${transitionStyleArr.join(',')}`;
|
99
|
-
}
|
100
|
-
|
101
|
-
return { style, classes: classesArr.join() };
|
102
|
-
}
|
103
|
-
|
104
|
-
/** === Generate CSS for single transitions */
|
105
|
-
|
106
|
-
/**
|
107
|
-
* Generates style and class names for specified transition for
|
108
|
-
* the stage 'stageBeforeIn'
|
109
|
-
*
|
110
|
-
* @param {Transition} transition
|
111
|
-
*
|
112
|
-
* @returns {{propertyStyle: string, transitionStyle: string, classes: string}}
|
113
|
-
*/
|
114
|
-
export function transitionCssBefore(transition) {
|
115
|
-
expect.objectNoArray(transition);
|
116
|
-
|
117
|
-
let {
|
118
|
-
type,
|
119
|
-
// @ts-ignore
|
120
|
-
property,
|
121
|
-
from
|
122
|
-
} = transition;
|
123
|
-
|
124
|
-
let propertyStyle = '';
|
125
|
-
let transitionStyle = '';
|
126
|
-
let classes = '';
|
127
|
-
|
128
|
-
switch (type) {
|
129
|
-
case FADE_IN:
|
130
|
-
type = TRANSITION_CSS;
|
131
|
-
property = 'opacity';
|
132
|
-
from = from ?? '0';
|
133
|
-
break;
|
134
|
-
|
135
|
-
case FADE_OUT:
|
136
|
-
type = TRANSITION_CSS;
|
137
|
-
property = 'opacity';
|
138
|
-
from = from ?? '1';
|
139
|
-
break;
|
140
|
-
}
|
141
|
-
|
142
|
-
if (!type || TRANSITION_CSS === type) {
|
143
|
-
expect.notEmptyString(property);
|
144
|
-
expect.string(from);
|
145
|
-
|
146
|
-
propertyStyle = `${property}: ${from}`;
|
147
|
-
} else {
|
148
|
-
throw new Error(`Unknown transition type [${type}]`);
|
149
|
-
}
|
150
|
-
|
151
|
-
// console.log('transitionCssBefore', { propertyStyle, transitionStyle });
|
152
|
-
|
153
|
-
return { propertyStyle, transitionStyle, classes };
|
154
|
-
}
|
155
|
-
|
156
|
-
/**
|
157
|
-
* Generates style and class names for specified transition for
|
158
|
-
* the stage 'stageIn'
|
159
|
-
*
|
160
|
-
* @param {Transition} transition
|
161
|
-
*
|
162
|
-
* @returns {{propertyStyle: string, transitionStyle: string, classes: string}}
|
163
|
-
*/
|
164
|
-
export function transitionCssDuring(transition) {
|
165
|
-
expect.objectNoArray(transition);
|
166
|
-
|
167
|
-
let {
|
168
|
-
type,
|
169
|
-
// @ts-ignore
|
170
|
-
property,
|
171
|
-
to,
|
172
|
-
delay = 0,
|
173
|
-
duration = 1000,
|
174
|
-
timing = 'ease'
|
175
|
-
} = transition;
|
176
|
-
|
177
|
-
let propertyStyle;
|
178
|
-
let transitionStyle;
|
179
|
-
let classes = '';
|
180
|
-
|
181
|
-
switch (type) {
|
182
|
-
case FADE_IN:
|
183
|
-
type = TRANSITION_CSS;
|
184
|
-
property = 'opacity';
|
185
|
-
to = to ?? '1';
|
186
|
-
break;
|
187
|
-
|
188
|
-
case FADE_OUT:
|
189
|
-
type = TRANSITION_CSS;
|
190
|
-
property = 'opacity';
|
191
|
-
to = to ?? '0';
|
192
|
-
break;
|
193
|
-
}
|
194
|
-
|
195
|
-
if (!type || TRANSITION_CSS === type) {
|
196
|
-
expect.notEmptyString(property);
|
197
|
-
expect.string(to);
|
198
|
-
|
199
|
-
propertyStyle = `${property}: ${to}`;
|
200
|
-
|
201
|
-
/* property name | duration | easing function | delay */
|
202
|
-
transitionStyle = `${property} ${duration}ms ${timing} ${delay}ms`;
|
203
|
-
} else {
|
204
|
-
throw new Error(`Unknown transition type [${type}]`);
|
205
|
-
}
|
206
|
-
|
207
|
-
// console.log('transitionCssDuring', { propertyStyle, transitionStyle });
|
208
|
-
|
209
|
-
return { propertyStyle, transitionStyle, classes };
|
210
|
-
}
|
1
|
+
import { tick } from 'svelte';
|
2
|
+
|
3
|
+
import * as expect from '../../util/expect/index.js';
|
4
|
+
|
5
|
+
import { pushNotEmpty } from '../../util/array/index.js';
|
6
|
+
|
7
|
+
import { TRANSITION_CSS, FADE_IN, FADE_OUT } from './constants.js';
|
8
|
+
|
9
|
+
/**
|
10
|
+
* @typedef {import("./typedef").Transition} Transition
|
11
|
+
*/
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Ensures DOM is updated by Svelte and then painted by the browser
|
15
|
+
* before executing the callback function.
|
16
|
+
*
|
17
|
+
* @param {Function} callback - Function to execute after DOM update and paint
|
18
|
+
* @returns {Promise<void>} - Promise that resolves after the callback is executed
|
19
|
+
*/
|
20
|
+
export function waitForRender(callback) {
|
21
|
+
return tick().then(() => {
|
22
|
+
return new Promise((resolve) => {
|
23
|
+
requestAnimationFrame(() => {
|
24
|
+
requestAnimationFrame(() => {
|
25
|
+
setTimeout(() => {
|
26
|
+
callback();
|
27
|
+
resolve();
|
28
|
+
}, 20);
|
29
|
+
});
|
30
|
+
});
|
31
|
+
});
|
32
|
+
});
|
33
|
+
}
|
34
|
+
|
35
|
+
/** === Generate CSS for lists of transitions */
|
36
|
+
|
37
|
+
/**
|
38
|
+
* Generates style and class names to be used before the transitions
|
39
|
+
* become active
|
40
|
+
*
|
41
|
+
* @param {Transition[]} transitions
|
42
|
+
*
|
43
|
+
* @returns {{style: string, classes: string}}
|
44
|
+
*/
|
45
|
+
export function cssBefore(transitions) {
|
46
|
+
expect.objectArray(transitions);
|
47
|
+
|
48
|
+
/** @type {string[]} */ let propertyStyleArr = [];
|
49
|
+
/** @type {string[]} */ let transitionStyleArr = [];
|
50
|
+
/** @type {string[]} */ let classesArr = [];
|
51
|
+
|
52
|
+
for (const transition of transitions) {
|
53
|
+
const { propertyStyle, transitionStyle, classes } =
|
54
|
+
transitionCssBefore(transition);
|
55
|
+
|
56
|
+
pushNotEmpty(propertyStyleArr, propertyStyle);
|
57
|
+
pushNotEmpty(transitionStyleArr, transitionStyle);
|
58
|
+
pushNotEmpty(classesArr, classes);
|
59
|
+
}
|
60
|
+
|
61
|
+
let style = propertyStyleArr.join(';');
|
62
|
+
|
63
|
+
if (transitionStyleArr.length) {
|
64
|
+
style += `;transition: ${transitionStyleArr.join(',')}`;
|
65
|
+
}
|
66
|
+
|
67
|
+
// console.log('cssBefore', transitions, style);
|
68
|
+
|
69
|
+
return { style, classes: classesArr.join() };
|
70
|
+
}
|
71
|
+
|
72
|
+
/**
|
73
|
+
* Generates style and class names to be used when the transitions are active
|
74
|
+
*
|
75
|
+
* @param {Transition[]} transitions
|
76
|
+
*
|
77
|
+
* @returns {{style: string, classes: string}}
|
78
|
+
*/
|
79
|
+
export function cssDuring(transitions) {
|
80
|
+
expect.objectArray(transitions);
|
81
|
+
|
82
|
+
/** @type {string[]} */ let propertyStyleArr = [];
|
83
|
+
/** @type {string[]} */ let transitionStyleArr = [];
|
84
|
+
/** @type {string[]} */ let classesArr = [];
|
85
|
+
|
86
|
+
for (const transition of transitions) {
|
87
|
+
const { propertyStyle, transitionStyle, classes } =
|
88
|
+
transitionCssDuring(transition);
|
89
|
+
|
90
|
+
pushNotEmpty(propertyStyleArr, propertyStyle);
|
91
|
+
pushNotEmpty(transitionStyleArr, transitionStyle);
|
92
|
+
pushNotEmpty(classesArr, classes);
|
93
|
+
} // end for
|
94
|
+
|
95
|
+
let style = propertyStyleArr.join(';');
|
96
|
+
|
97
|
+
if (transitionStyleArr.length) {
|
98
|
+
style += `;transition: ${transitionStyleArr.join(',')}`;
|
99
|
+
}
|
100
|
+
|
101
|
+
return { style, classes: classesArr.join() };
|
102
|
+
}
|
103
|
+
|
104
|
+
/** === Generate CSS for single transitions */
|
105
|
+
|
106
|
+
/**
|
107
|
+
* Generates style and class names for specified transition for
|
108
|
+
* the stage 'stageBeforeIn'
|
109
|
+
*
|
110
|
+
* @param {Transition} transition
|
111
|
+
*
|
112
|
+
* @returns {{propertyStyle: string, transitionStyle: string, classes: string}}
|
113
|
+
*/
|
114
|
+
export function transitionCssBefore(transition) {
|
115
|
+
expect.objectNoArray(transition);
|
116
|
+
|
117
|
+
let {
|
118
|
+
type,
|
119
|
+
// @ts-ignore
|
120
|
+
property,
|
121
|
+
from
|
122
|
+
} = transition;
|
123
|
+
|
124
|
+
let propertyStyle = '';
|
125
|
+
let transitionStyle = '';
|
126
|
+
let classes = '';
|
127
|
+
|
128
|
+
switch (type) {
|
129
|
+
case FADE_IN:
|
130
|
+
type = TRANSITION_CSS;
|
131
|
+
property = 'opacity';
|
132
|
+
from = from ?? '0';
|
133
|
+
break;
|
134
|
+
|
135
|
+
case FADE_OUT:
|
136
|
+
type = TRANSITION_CSS;
|
137
|
+
property = 'opacity';
|
138
|
+
from = from ?? '1';
|
139
|
+
break;
|
140
|
+
}
|
141
|
+
|
142
|
+
if (!type || TRANSITION_CSS === type) {
|
143
|
+
expect.notEmptyString(property);
|
144
|
+
expect.string(from);
|
145
|
+
|
146
|
+
propertyStyle = `${property}: ${from}`;
|
147
|
+
} else {
|
148
|
+
throw new Error(`Unknown transition type [${type}]`);
|
149
|
+
}
|
150
|
+
|
151
|
+
// console.log('transitionCssBefore', { propertyStyle, transitionStyle });
|
152
|
+
|
153
|
+
return { propertyStyle, transitionStyle, classes };
|
154
|
+
}
|
155
|
+
|
156
|
+
/**
|
157
|
+
* Generates style and class names for specified transition for
|
158
|
+
* the stage 'stageIn'
|
159
|
+
*
|
160
|
+
* @param {Transition} transition
|
161
|
+
*
|
162
|
+
* @returns {{propertyStyle: string, transitionStyle: string, classes: string}}
|
163
|
+
*/
|
164
|
+
export function transitionCssDuring(transition) {
|
165
|
+
expect.objectNoArray(transition);
|
166
|
+
|
167
|
+
let {
|
168
|
+
type,
|
169
|
+
// @ts-ignore
|
170
|
+
property,
|
171
|
+
to,
|
172
|
+
delay = 0,
|
173
|
+
duration = 1000,
|
174
|
+
timing = 'ease'
|
175
|
+
} = transition;
|
176
|
+
|
177
|
+
let propertyStyle;
|
178
|
+
let transitionStyle;
|
179
|
+
let classes = '';
|
180
|
+
|
181
|
+
switch (type) {
|
182
|
+
case FADE_IN:
|
183
|
+
type = TRANSITION_CSS;
|
184
|
+
property = 'opacity';
|
185
|
+
to = to ?? '1';
|
186
|
+
break;
|
187
|
+
|
188
|
+
case FADE_OUT:
|
189
|
+
type = TRANSITION_CSS;
|
190
|
+
property = 'opacity';
|
191
|
+
to = to ?? '0';
|
192
|
+
break;
|
193
|
+
}
|
194
|
+
|
195
|
+
if (!type || TRANSITION_CSS === type) {
|
196
|
+
expect.notEmptyString(property);
|
197
|
+
expect.string(to);
|
198
|
+
|
199
|
+
propertyStyle = `${property}: ${to}`;
|
200
|
+
|
201
|
+
/* property name | duration | easing function | delay */
|
202
|
+
transitionStyle = `${property} ${duration}ms ${timing} ${delay}ms`;
|
203
|
+
} else {
|
204
|
+
throw new Error(`Unknown transition type [${type}]`);
|
205
|
+
}
|
206
|
+
|
207
|
+
// console.log('transitionCssDuring', { propertyStyle, transitionStyle });
|
208
|
+
|
209
|
+
return { propertyStyle, transitionStyle, classes };
|
210
|
+
}
|