@studiometa/js-toolkit 2.12.0 → 3.0.0-alpha.2
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/Base/Base.d.ts +2 -2
- package/Base/Base.js +8 -45
- package/Base/Base.js.map +2 -2
- package/Base/features.d.ts +10 -2
- package/Base/features.js +23 -1
- package/Base/features.js.map +2 -2
- package/Base/managers/AbstractManager.d.ts +3 -3
- package/Base/managers/ActionManager.d.ts +4 -0
- package/Base/managers/ActionManager.js +10 -0
- package/Base/managers/ActionManager.js.map +7 -0
- package/Base/managers/ChildrenManager.d.ts +1 -1
- package/Base/managers/ChildrenManager.js +3 -3
- package/Base/managers/ChildrenManager.js.map +2 -2
- package/Base/managers/ServicesManager.d.ts +2 -4
- package/Base/managers/ServicesManager.js +2 -3
- package/Base/managers/ServicesManager.js.map +2 -2
- package/Base/utils.js +1 -1
- package/Base/utils.js.map +2 -2
- package/decorators/index.d.ts +0 -1
- package/decorators/index.js +0 -1
- package/decorators/index.js.map +2 -2
- package/decorators/withBreakpointObserver.js +1 -1
- package/decorators/withBreakpointObserver.js.map +2 -2
- package/decorators/withIntersectionObserver.js +3 -5
- package/decorators/withIntersectionObserver.js.map +2 -2
- package/decorators/withMountOnMediaQuery.js +1 -1
- package/decorators/withMountOnMediaQuery.js.map +2 -2
- package/decorators/withMountWhenInView.js +1 -1
- package/decorators/withMountWhenInView.js.map +2 -2
- package/decorators/withScrolledInView/utils.d.ts +12 -1
- package/decorators/withScrolledInView/utils.js.map +2 -2
- package/decorators/withScrolledInView/withScrolledInView.js +7 -62
- package/decorators/withScrolledInView/withScrolledInView.js.map +2 -2
- package/helpers/createApp.d.ts +2 -1
- package/helpers/createApp.js.map +2 -2
- package/package.json +2 -10
- package/services/index.d.ts +1 -1
- package/services/index.js.map +2 -2
- package/services/pointer.d.ts +1 -1
- package/services/pointer.js +3 -3
- package/services/pointer.js.map +2 -2
- package/services/raf.js +2 -4
- package/services/raf.js.map +2 -2
- package/services/resize.d.ts +7 -6
- package/services/resize.js +19 -26
- package/services/resize.js.map +2 -2
- package/services/scroll.js +8 -8
- package/services/scroll.js.map +2 -2
- package/utils/SmartQueue.d.ts +1 -1
- package/utils/SmartQueue.js +1 -1
- package/utils/SmartQueue.js.map +2 -2
- package/utils/css/animate.d.ts +33 -15
- package/utils/css/animate.js +67 -26
- package/utils/css/animate.js.map +2 -2
- package/utils/css/getOffsetSizes.js +2 -2
- package/utils/css/getOffsetSizes.js.map +1 -1
- package/utils/css/index.d.ts +2 -1
- package/utils/css/index.js +4 -4
- package/utils/css/index.js.map +2 -2
- package/utils/css/matrix.d.ts +1 -1
- package/utils/css/matrix.js.map +2 -2
- package/utils/css/transform.d.ts +1 -1
- package/utils/css/transform.js +1 -1
- package/utils/css/transform.js.map +2 -2
- package/utils/css/utils.d.ts +1 -1
- package/utils/css/utils.js +1 -1
- package/utils/css/utils.js.map +2 -2
- package/utils/index.d.ts +5 -4
- package/utils/index.js +16 -16
- package/utils/index.js.map +2 -2
- package/utils/is.d.ts +12 -0
- package/utils/is.js +17 -0
- package/utils/is.js.map +2 -2
- package/utils/math/createRange.d.ts +4 -0
- package/utils/math/createRange.js +13 -0
- package/utils/math/createRange.js.map +7 -0
- package/utils/math/ease.d.ts +1 -0
- package/utils/math/ease.js +2 -0
- package/utils/math/ease.js.map +2 -2
- package/utils/math/index.d.ts +5 -3
- package/utils/math/index.js +7 -3
- package/utils/math/index.js.map +2 -2
- package/utils/math/mean.d.ts +1 -0
- package/utils/math/mean.js +17 -0
- package/utils/math/mean.js.map +7 -0
- package/utils/nextFrame.d.ts +4 -22
- package/utils/nextFrame.js +3 -10
- package/utils/nextFrame.js.map +2 -2
- package/utils/nextMicrotask.d.ts +4 -1
- package/utils/nextMicrotask.js +3 -3
- package/utils/nextMicrotask.js.map +2 -2
- package/utils/nextTick.d.ts +4 -1
- package/utils/nextTick.js +3 -3
- package/utils/nextTick.js.map +2 -2
- package/utils/random.d.ts +15 -0
- package/utils/random.js +15 -0
- package/utils/random.js.map +7 -0
- package/utils/scrollTo.d.ts +30 -6
- package/utils/scrollTo.js +97 -43
- package/utils/scrollTo.js.map +2 -2
- package/utils/{focusTrap.d.ts → trapFocus.d.ts} +2 -10
- package/utils/{focusTrap.js → trapFocus.js} +5 -9
- package/utils/trapFocus.js.map +7 -0
- package/utils/tween.d.ts +59 -10
- package/utils/tween.js +24 -18
- package/utils/tween.js.map +2 -2
- package/Base/Base.cjs +0 -420
- package/Base/Base.cjs.map +0 -7
- package/Base/features.cjs +0 -27
- package/Base/features.cjs.map +0 -7
- package/Base/index.cjs +0 -21
- package/Base/index.cjs.map +0 -7
- package/Base/managers/AbstractManager.cjs +0 -78
- package/Base/managers/AbstractManager.cjs.map +0 -7
- package/Base/managers/ChildrenManager.cjs +0 -156
- package/Base/managers/ChildrenManager.cjs.map +0 -7
- package/Base/managers/EventsManager.cjs +0 -305
- package/Base/managers/EventsManager.cjs.map +0 -7
- package/Base/managers/OptionsManager.cjs +0 -198
- package/Base/managers/OptionsManager.cjs.map +0 -7
- package/Base/managers/RefsManager.cjs +0 -118
- package/Base/managers/RefsManager.cjs.map +0 -7
- package/Base/managers/ResponsiveOptionsManager.cjs +0 -79
- package/Base/managers/ResponsiveOptionsManager.cjs.map +0 -7
- package/Base/managers/ServicesManager.cjs +0 -161
- package/Base/managers/ServicesManager.cjs.map +0 -7
- package/Base/managers/index.cjs +0 -39
- package/Base/managers/index.cjs.map +0 -7
- package/Base/types.cjs +0 -19
- package/Base/types.cjs.map +0 -7
- package/Base/utils.cjs +0 -95
- package/Base/utils.cjs.map +0 -7
- package/decorators/index.cjs +0 -33
- package/decorators/index.cjs.map +0 -7
- package/decorators/withBreakpointManager.cjs +0 -102
- package/decorators/withBreakpointManager.cjs.map +0 -7
- package/decorators/withBreakpointObserver.cjs +0 -128
- package/decorators/withBreakpointObserver.cjs.map +0 -7
- package/decorators/withDrag.cjs +0 -56
- package/decorators/withDrag.cjs.map +0 -7
- package/decorators/withExtraConfig.cjs +0 -50
- package/decorators/withExtraConfig.cjs.map +0 -7
- package/decorators/withFreezedOptions.cjs +0 -50
- package/decorators/withFreezedOptions.cjs.map +0 -7
- package/decorators/withIntersectionObserver.cjs +0 -71
- package/decorators/withIntersectionObserver.cjs.map +0 -7
- package/decorators/withMountOnMediaQuery.cjs +0 -86
- package/decorators/withMountOnMediaQuery.cjs.map +0 -7
- package/decorators/withMountWhenInView.cjs +0 -92
- package/decorators/withMountWhenInView.cjs.map +0 -7
- package/decorators/withMountWhenPrefersMotion.cjs +0 -30
- package/decorators/withMountWhenPrefersMotion.cjs.map +0 -7
- package/decorators/withRelativePointer.cjs +0 -56
- package/decorators/withRelativePointer.cjs.map +0 -7
- package/decorators/withResponsiveOptions.cjs +0 -41
- package/decorators/withResponsiveOptions.cjs.map +0 -7
- package/decorators/withScrolledInView/index.cjs +0 -22
- package/decorators/withScrolledInView/index.cjs.map +0 -7
- package/decorators/withScrolledInView/types.cjs +0 -19
- package/decorators/withScrolledInView/types.cjs.map +0 -7
- package/decorators/withScrolledInView/utils.cjs +0 -99
- package/decorators/withScrolledInView/utils.cjs.map +0 -7
- package/decorators/withScrolledInView/withScrolledInView.cjs +0 -249
- package/decorators/withScrolledInView/withScrolledInView.cjs.map +0 -7
- package/decorators/withVue2.cjs +0 -68
- package/decorators/withVue2.cjs.map +0 -7
- package/decorators/withVue2.d.ts +0 -16
- package/decorators/withVue2.js +0 -46
- package/decorators/withVue2.js.map +0 -7
- package/helpers/createApp.cjs +0 -58
- package/helpers/createApp.cjs.map +0 -7
- package/helpers/getClosestParent.cjs +0 -45
- package/helpers/getClosestParent.cjs.map +0 -7
- package/helpers/getDirectChildren.cjs +0 -47
- package/helpers/getDirectChildren.cjs.map +0 -7
- package/helpers/getInstanceFromElement.cjs +0 -32
- package/helpers/getInstanceFromElement.cjs.map +0 -7
- package/helpers/importOnInteraction.cjs +0 -48
- package/helpers/importOnInteraction.cjs.map +0 -7
- package/helpers/importOnMediaQuery.cjs +0 -44
- package/helpers/importOnMediaQuery.cjs.map +0 -7
- package/helpers/importWhenIdle.cjs +0 -46
- package/helpers/importWhenIdle.cjs.map +0 -7
- package/helpers/importWhenPrefersMotion.cjs +0 -40
- package/helpers/importWhenPrefersMotion.cjs.map +0 -7
- package/helpers/importWhenVisible.cjs +0 -44
- package/helpers/importWhenVisible.cjs.map +0 -7
- package/helpers/index.cjs +0 -53
- package/helpers/index.cjs.map +0 -7
- package/helpers/utils.cjs +0 -37
- package/helpers/utils.cjs.map +0 -7
- package/index.cjs +0 -31
- package/index.cjs.map +0 -7
- package/services/drag.cjs +0 -231
- package/services/drag.cjs.map +0 -7
- package/services/index.cjs +0 -51
- package/services/index.cjs.map +0 -7
- package/services/key.cjs +0 -97
- package/services/key.cjs.map +0 -7
- package/services/load.cjs +0 -60
- package/services/load.cjs.map +0 -7
- package/services/pointer.cjs +0 -145
- package/services/pointer.cjs.map +0 -7
- package/services/raf.cjs +0 -80
- package/services/raf.cjs.map +0 -7
- package/services/resize.cjs +0 -107
- package/services/resize.cjs.map +0 -7
- package/services/scroll.cjs +0 -119
- package/services/scroll.cjs.map +0 -7
- package/services/service.cjs +0 -69
- package/services/service.cjs.map +0 -7
- package/utils/Queue.cjs +0 -93
- package/utils/Queue.cjs.map +0 -7
- package/utils/SmartQueue.cjs +0 -73
- package/utils/SmartQueue.cjs.map +0 -7
- package/utils/collide/boundingRectToCircle.cjs +0 -36
- package/utils/collide/boundingRectToCircle.cjs.map +0 -7
- package/utils/collide/collideCircleCircle.cjs +0 -35
- package/utils/collide/collideCircleCircle.cjs.map +0 -7
- package/utils/collide/collideCircleRect.cjs +0 -47
- package/utils/collide/collideCircleRect.cjs.map +0 -7
- package/utils/collide/collidePointCircle.cjs +0 -32
- package/utils/collide/collidePointCircle.cjs.map +0 -7
- package/utils/collide/collidePointRect.cjs +0 -32
- package/utils/collide/collidePointRect.cjs.map +0 -7
- package/utils/collide/collideRectRect.cjs +0 -32
- package/utils/collide/collideRectRect.cjs.map +0 -7
- package/utils/collide/index.cjs +0 -47
- package/utils/collide/index.cjs.map +0 -7
- package/utils/css/animate.cjs +0 -202
- package/utils/css/animate.cjs.map +0 -7
- package/utils/css/classes.cjs +0 -51
- package/utils/css/classes.cjs.map +0 -7
- package/utils/css/getOffsetSizes.cjs +0 -48
- package/utils/css/getOffsetSizes.cjs.map +0 -7
- package/utils/css/index.cjs +0 -52
- package/utils/css/index.cjs.map +0 -7
- package/utils/css/matrix.cjs +0 -30
- package/utils/css/matrix.cjs.map +0 -7
- package/utils/css/styles.cjs +0 -45
- package/utils/css/styles.cjs.map +0 -7
- package/utils/css/transform.cjs +0 -91
- package/utils/css/transform.cjs.map +0 -7
- package/utils/css/transition.cjs +0 -145
- package/utils/css/transition.cjs.map +0 -7
- package/utils/css/utils.cjs +0 -32
- package/utils/css/utils.cjs.map +0 -7
- package/utils/debounce.cjs +0 -35
- package/utils/debounce.cjs.map +0 -7
- package/utils/dom/ancestors.cjs +0 -37
- package/utils/dom/ancestors.cjs.map +0 -7
- package/utils/dom/index.cjs +0 -21
- package/utils/dom/index.cjs.map +0 -7
- package/utils/focusTrap.cjs +0 -93
- package/utils/focusTrap.cjs.map +0 -7
- package/utils/focusTrap.js.map +0 -7
- package/utils/getComponentResolver.cjs +0 -38
- package/utils/getComponentResolver.cjs.map +0 -7
- package/utils/has.cjs +0 -29
- package/utils/has.cjs.map +0 -7
- package/utils/history.cjs +0 -92
- package/utils/history.cjs.map +0 -7
- package/utils/index.cjs +0 -76
- package/utils/index.cjs.map +0 -7
- package/utils/is.cjs +0 -41
- package/utils/is.cjs.map +0 -7
- package/utils/keyCodes.cjs +0 -36
- package/utils/keyCodes.cjs.map +0 -7
- package/utils/math/clamp.cjs +0 -29
- package/utils/math/clamp.cjs.map +0 -7
- package/utils/math/clamp01.cjs +0 -40
- package/utils/math/clamp01.cjs.map +0 -7
- package/utils/math/createEases.cjs +0 -33
- package/utils/math/createEases.cjs.map +0 -7
- package/utils/math/damp.cjs +0 -29
- package/utils/math/damp.cjs.map +0 -7
- package/utils/math/ease.cjs +0 -82
- package/utils/math/ease.cjs.map +0 -7
- package/utils/math/index.cjs +0 -54
- package/utils/math/index.cjs.map +0 -7
- package/utils/math/inertiaFinalValue.cjs +0 -47
- package/utils/math/inertiaFinalValue.cjs.map +0 -7
- package/utils/math/lerp.cjs +0 -29
- package/utils/math/lerp.cjs.map +0 -7
- package/utils/math/map.cjs +0 -29
- package/utils/math/map.cjs.map +0 -7
- package/utils/math/round.cjs +0 -29
- package/utils/math/round.cjs.map +0 -7
- package/utils/memoize.cjs +0 -48
- package/utils/memoize.cjs.map +0 -7
- package/utils/nextFrame.cjs +0 -41
- package/utils/nextFrame.cjs.map +0 -7
- package/utils/nextMicrotask.cjs +0 -30
- package/utils/nextMicrotask.cjs.map +0 -7
- package/utils/nextTick.cjs +0 -31
- package/utils/nextTick.cjs.map +0 -7
- package/utils/noop.cjs +0 -32
- package/utils/noop.cjs.map +0 -7
- package/utils/object/autoBind.cjs +0 -60
- package/utils/object/autoBind.cjs.map +0 -7
- package/utils/object/autoBind.d.ts +0 -14
- package/utils/object/autoBind.js +0 -28
- package/utils/object/autoBind.js.map +0 -7
- package/utils/object/getAllProperties.cjs +0 -39
- package/utils/object/getAllProperties.cjs.map +0 -7
- package/utils/object/index.cjs +0 -39
- package/utils/object/index.cjs.map +0 -7
- package/utils/object/index.d.ts +0 -2
- package/utils/object/index.js +0 -7
- package/utils/object/index.js.map +0 -7
- package/utils/scheduler.cjs +0 -75
- package/utils/scheduler.cjs.map +0 -7
- package/utils/scrollTo.cjs +0 -88
- package/utils/scrollTo.cjs.map +0 -7
- package/utils/string/endsWith.cjs +0 -35
- package/utils/string/endsWith.cjs.map +0 -7
- package/utils/string/index.cjs +0 -58
- package/utils/string/index.cjs.map +0 -7
- package/utils/string/startsWith.cjs +0 -35
- package/utils/string/startsWith.cjs.map +0 -7
- package/utils/string/withLeadingCharacters.cjs +0 -40
- package/utils/string/withLeadingCharacters.cjs.map +0 -7
- package/utils/string/withLeadingSlash.cjs +0 -40
- package/utils/string/withLeadingSlash.cjs.map +0 -7
- package/utils/string/withTrailingCharacters.cjs +0 -40
- package/utils/string/withTrailingCharacters.cjs.map +0 -7
- package/utils/string/withTrailingSlash.cjs +0 -40
- package/utils/string/withTrailingSlash.cjs.map +0 -7
- package/utils/string/withoutLeadingCharacters.cjs +0 -29
- package/utils/string/withoutLeadingCharacters.cjs.map +0 -7
- package/utils/string/withoutLeadingCharactersRecursive.cjs +0 -45
- package/utils/string/withoutLeadingCharactersRecursive.cjs.map +0 -7
- package/utils/string/withoutLeadingSlash.cjs +0 -40
- package/utils/string/withoutLeadingSlash.cjs.map +0 -7
- package/utils/string/withoutTrailingCharacters.cjs +0 -29
- package/utils/string/withoutTrailingCharacters.cjs.map +0 -7
- package/utils/string/withoutTrailingCharactersRecursive.cjs +0 -45
- package/utils/string/withoutTrailingCharactersRecursive.cjs.map +0 -7
- package/utils/string/withoutTrailingSlash.cjs +0 -40
- package/utils/string/withoutTrailingSlash.cjs.map +0 -7
- package/utils/throttle.cjs +0 -37
- package/utils/throttle.cjs.map +0 -7
- package/utils/tween.cjs +0 -122
- package/utils/tween.cjs.map +0 -7
- package/utils/wait.cjs +0 -31
- package/utils/wait.cjs.map +0 -7
package/services/resize.js
CHANGED
|
@@ -1,24 +1,8 @@
|
|
|
1
1
|
import { useService } from "./service.js";
|
|
2
|
+
import { features } from "../Base/features.js";
|
|
2
3
|
import debounce from "../utils/debounce.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
function getBreakpointElement() {
|
|
6
|
-
if (!breakpointElement) {
|
|
7
|
-
breakpointElement = document.querySelector("[data-breakpoint]");
|
|
8
|
-
}
|
|
9
|
-
return breakpointElement;
|
|
10
|
-
}
|
|
11
|
-
function getBreakpoint() {
|
|
12
|
-
return getBreakpointElement() ? window.getComputedStyle(getBreakpointElement(), "::before").getPropertyValue("content").replaceAll('"', "") : void 0;
|
|
13
|
-
}
|
|
14
|
-
function getBreakpoints() {
|
|
15
|
-
if (!getBreakpointElement() || breakpoints.length) {
|
|
16
|
-
return breakpoints;
|
|
17
|
-
}
|
|
18
|
-
breakpoints = window.getComputedStyle(getBreakpointElement(), "::after").getPropertyValue("content").replaceAll('"', "").split(",");
|
|
19
|
-
return breakpoints;
|
|
20
|
-
}
|
|
21
|
-
function createResizeService() {
|
|
4
|
+
function createResizeService(breakpoints) {
|
|
5
|
+
const finalScreens = breakpoints ?? features.get("breakpoints");
|
|
22
6
|
function updateProps() {
|
|
23
7
|
props.width = window.innerWidth;
|
|
24
8
|
props.height = window.innerHeight;
|
|
@@ -42,10 +26,18 @@ function createResizeService() {
|
|
|
42
26
|
ratio: window.innerWidth / window.innerHeight,
|
|
43
27
|
orientation: "square",
|
|
44
28
|
get breakpoint() {
|
|
45
|
-
return
|
|
29
|
+
return Object.keys(this.activeBreakpoints).find((name) => this.activeBreakpoints[name]);
|
|
46
30
|
},
|
|
47
31
|
get breakpoints() {
|
|
48
|
-
return
|
|
32
|
+
return Object.keys(this.activeBreakpoints);
|
|
33
|
+
},
|
|
34
|
+
get activeBreakpoints() {
|
|
35
|
+
return Object.fromEntries(
|
|
36
|
+
Object.entries(finalScreens).map(([name, breakpoint]) => [
|
|
37
|
+
name,
|
|
38
|
+
window.matchMedia(`(min-width: ${breakpoint})`).matches
|
|
39
|
+
])
|
|
40
|
+
);
|
|
49
41
|
}
|
|
50
42
|
},
|
|
51
43
|
init() {
|
|
@@ -62,12 +54,13 @@ function createResizeService() {
|
|
|
62
54
|
props: () => props
|
|
63
55
|
};
|
|
64
56
|
}
|
|
65
|
-
|
|
66
|
-
function useResize() {
|
|
67
|
-
|
|
68
|
-
|
|
57
|
+
const instances = /* @__PURE__ */ new Map();
|
|
58
|
+
function useResize(breakpoints) {
|
|
59
|
+
const key = JSON.stringify(breakpoints);
|
|
60
|
+
if (!instances.has(key)) {
|
|
61
|
+
instances.set(key, createResizeService(breakpoints));
|
|
69
62
|
}
|
|
70
|
-
return
|
|
63
|
+
return instances.get(key);
|
|
71
64
|
}
|
|
72
65
|
export {
|
|
73
66
|
useResize as default
|
package/services/resize.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../packages/js-toolkit/services/resize.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable no-use-before-define, @typescript-eslint/no-use-before-define */\nimport { useService } from './service.js';\nimport debounce from '../utils/debounce.js';\nimport type {
|
|
5
|
-
"mappings": "AACA,SAAS,kBAAkB;AAC3B,
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-use-before-define, @typescript-eslint/no-use-before-define */\nimport { useService } from './service.js';\nimport { features } from '../Base/features.js';\nimport type { Features } from '../Base/features.js';\nimport debounce from '../utils/debounce.js';\nimport type { ResizeServiceInterface } from './index.js';\n\nexport interface ResizeServiceProps<U extends Features['breakpoints'] = Features['breakpoints']> {\n width: number;\n height: number;\n ratio: number;\n orientation: 'square' | 'landscape' | 'portrait';\n breakpoint: string;\n breakpoints: string[];\n activeBreakpoints: Record<keyof U, boolean>;\n}\n\n/**\n * Get resize service.\n */\nfunction createResizeService<T extends Features['breakpoints'] = Features['breakpoints']>(\n breakpoints?: T,\n): ResizeServiceInterface<T> {\n const finalScreens = breakpoints ?? features.get('breakpoints');\n /**\n * Update props.\n */\n function updateProps(): ResizeServiceProps<T> {\n props.width = window.innerWidth;\n props.height = window.innerHeight;\n props.ratio = window.innerWidth / window.innerHeight;\n props.orientation = 'square';\n\n if (props.ratio > 1) {\n props.orientation = 'landscape';\n }\n\n if (props.ratio < 1) {\n props.orientation = 'portrait';\n }\n\n return props;\n }\n\n const onResize = debounce(() => {\n trigger(updateProps());\n });\n\n const { add, remove, has, trigger, props } = useService({\n props: {\n width: window.innerWidth,\n height: window.innerHeight,\n ratio: window.innerWidth / window.innerHeight,\n orientation: 'square',\n get breakpoint() {\n return Object.keys(this.activeBreakpoints).find((name) => this.activeBreakpoints[name]);\n },\n get breakpoints() {\n return Object.keys(this.activeBreakpoints);\n },\n get activeBreakpoints() {\n return Object.fromEntries(\n Object.entries(finalScreens).map(([name, breakpoint]) => [\n name,\n window.matchMedia(`(min-width: ${breakpoint})`).matches,\n ]),\n ) as Record<keyof T, boolean>;\n },\n } as ResizeServiceProps<T>,\n init() {\n window.addEventListener('resize', onResize);\n },\n kill() {\n window.removeEventListener('resize', onResize);\n },\n });\n\n return {\n add,\n remove,\n has,\n props: () => props,\n };\n}\n\nconst instances: Map<string, ResizeServiceInterface | undefined> = new Map();\n\n/**\n * Use the resize service.\n */\nexport default function useResize<T extends Features['breakpoints'] = Features['breakpoints']>(\n breakpoints?: T,\n): ResizeServiceInterface<T> {\n const key = JSON.stringify(breakpoints);\n\n if (!instances.has(key)) {\n instances.set(key, createResizeService(breakpoints));\n }\n\n return (instances as Map<string, ResizeServiceInterface<T>>).get(key);\n}\n"],
|
|
5
|
+
"mappings": "AACA,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AAEzB,OAAO,cAAc;AAgBrB,SAAS,oBACP,aAC2B;AAC3B,QAAM,eAAe,eAAe,SAAS,IAAI,aAAa;AAI9D,WAAS,cAAqC;AAC5C,UAAM,QAAQ,OAAO;AACrB,UAAM,SAAS,OAAO;AACtB,UAAM,QAAQ,OAAO,aAAa,OAAO;AACzC,UAAM,cAAc;AAEpB,QAAI,MAAM,QAAQ,GAAG;AACnB,YAAM,cAAc;AAAA,IACtB;AAEA,QAAI,MAAM,QAAQ,GAAG;AACnB,YAAM,cAAc;AAAA,IACtB;AAEA,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,SAAS,MAAM;AAC9B,YAAQ,YAAY,CAAC;AAAA,EACvB,CAAC;AAED,QAAM,EAAE,KAAK,QAAQ,KAAK,SAAS,MAAM,IAAI,WAAW;AAAA,IACtD,OAAO;AAAA,MACL,OAAO,OAAO;AAAA,MACd,QAAQ,OAAO;AAAA,MACf,OAAO,OAAO,aAAa,OAAO;AAAA,MAClC,aAAa;AAAA,MACb,IAAI,aAAa;AACf,eAAO,OAAO,KAAK,KAAK,iBAAiB,EAAE,KAAK,CAAC,SAAS,KAAK,kBAAkB,IAAI,CAAC;AAAA,MACxF;AAAA,MACA,IAAI,cAAc;AAChB,eAAO,OAAO,KAAK,KAAK,iBAAiB;AAAA,MAC3C;AAAA,MACA,IAAI,oBAAoB;AACtB,eAAO,OAAO;AAAA,UACZ,OAAO,QAAQ,YAAY,EAAE,IAAI,CAAC,CAAC,MAAM,UAAU,MAAM;AAAA,YACvD;AAAA,YACA,OAAO,WAAW,eAAe,UAAU,GAAG,EAAE;AAAA,UAClD,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO;AACL,aAAO,iBAAiB,UAAU,QAAQ;AAAA,IAC5C;AAAA,IACA,OAAO;AACL,aAAO,oBAAoB,UAAU,QAAQ;AAAA,IAC/C;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,MAAM;AAAA,EACf;AACF;AAEA,MAAM,YAA6D,oBAAI,IAAI;AAK5D,SAAR,UACL,aAC2B;AAC3B,QAAM,MAAM,KAAK,UAAU,WAAW;AAEtC,MAAI,CAAC,UAAU,IAAI,GAAG,GAAG;AACvB,cAAU,IAAI,KAAK,oBAAoB,WAAW,CAAC;AAAA,EACrD;AAEA,SAAQ,UAAqD,IAAI,GAAG;AACtE;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/services/scroll.js
CHANGED
|
@@ -4,11 +4,11 @@ function createScrollService() {
|
|
|
4
4
|
function updateProps() {
|
|
5
5
|
const yLast = props.y;
|
|
6
6
|
const xLast = props.x;
|
|
7
|
-
if (window.
|
|
8
|
-
props.y = window.
|
|
7
|
+
if (window.scrollY !== props.y) {
|
|
8
|
+
props.y = window.scrollY;
|
|
9
9
|
}
|
|
10
|
-
if (window.
|
|
11
|
-
props.x = window.
|
|
10
|
+
if (window.scrollX !== props.x) {
|
|
11
|
+
props.x = window.scrollX;
|
|
12
12
|
}
|
|
13
13
|
props.changed.x = props.x !== xLast;
|
|
14
14
|
props.changed.y = props.y !== yLast;
|
|
@@ -33,15 +33,15 @@ function createScrollService() {
|
|
|
33
33
|
}
|
|
34
34
|
const { add, remove, has, props, trigger } = useService({
|
|
35
35
|
props: {
|
|
36
|
-
x: window.
|
|
37
|
-
y: window.
|
|
36
|
+
x: window.scrollX,
|
|
37
|
+
y: window.scrollY,
|
|
38
38
|
changed: {
|
|
39
39
|
x: false,
|
|
40
40
|
y: false
|
|
41
41
|
},
|
|
42
42
|
last: {
|
|
43
|
-
x: window.
|
|
44
|
-
y: window.
|
|
43
|
+
x: window.scrollX,
|
|
44
|
+
y: window.scrollY
|
|
45
45
|
},
|
|
46
46
|
delta: {
|
|
47
47
|
x: 0,
|
package/services/scroll.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../packages/js-toolkit/services/scroll.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable no-use-before-define, @typescript-eslint/no-use-before-define */\nimport { useService } from './service.js';\nimport debounce from '../utils/debounce.js';\nimport type { ServiceInterface } from './index.js';\n\nexport type ScrollService = ServiceInterface<ScrollServiceProps>;\n\nexport interface ScrollServiceProps {\n x: number;\n y: number;\n changed: { x: boolean; y: boolean };\n last: { x: number; y: number };\n delta: { x: number; y: number };\n progress: { x: number; y: number };\n max: { x: number; y: number };\n direction: { x: 'LEFT' | 'RIGHT' | 'NONE'; y: 'UP' | 'DOWN' | 'NONE' };\n}\n\n/**\n * Create scroll service.\n */\nfunction createScrollService(): ScrollService {\n /**\n * Update props.\n */\n function updateProps(): ScrollServiceProps {\n const yLast = props.y;\n const xLast = props.x;\n\n // Check scroll Y\n if (window.
|
|
5
|
-
"mappings": "AACA,SAAS,kBAAkB;AAC3B,OAAO,cAAc;AAmBrB,SAAS,sBAAqC;AAI5C,WAAS,cAAkC;AACzC,UAAM,QAAQ,MAAM;AACpB,UAAM,QAAQ,MAAM;AAGpB,QAAI,OAAO,
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-use-before-define, @typescript-eslint/no-use-before-define */\nimport { useService } from './service.js';\nimport debounce from '../utils/debounce.js';\nimport type { ServiceInterface } from './index.js';\n\nexport type ScrollService = ServiceInterface<ScrollServiceProps>;\n\nexport interface ScrollServiceProps {\n x: number;\n y: number;\n changed: { x: boolean; y: boolean };\n last: { x: number; y: number };\n delta: { x: number; y: number };\n progress: { x: number; y: number };\n max: { x: number; y: number };\n direction: { x: 'LEFT' | 'RIGHT' | 'NONE'; y: 'UP' | 'DOWN' | 'NONE' };\n}\n\n/**\n * Create scroll service.\n */\nfunction createScrollService(): ScrollService {\n /**\n * Update props.\n */\n function updateProps(): ScrollServiceProps {\n const yLast = props.y;\n const xLast = props.x;\n\n // Check scroll Y\n if (window.scrollY !== props.y) {\n props.y = window.scrollY;\n }\n\n // Check scroll x\n if (window.scrollX !== props.x) {\n props.x = window.scrollX;\n }\n\n props.changed.x = props.x !== xLast;\n props.changed.y = props.y !== yLast;\n props.last.x = xLast;\n props.last.y = yLast;\n props.delta.x = props.x - xLast;\n props.delta.y = props.y - yLast;\n props.max.x = (document.scrollingElement || document.body).scrollWidth - window.innerWidth;\n props.max.y = (document.scrollingElement || document.body).scrollHeight - window.innerHeight;\n props.progress.x = props.max.x === 0 ? 1 : props.x / props.max.x;\n props.progress.y = props.max.y === 0 ? 1 : props.y / props.max.y;\n /* eslint-disable no-nested-ternary */\n props.direction.x = props.x > xLast ? 'RIGHT' : props.x < xLast ? 'LEFT' : 'NONE';\n props.direction.y = props.y > yLast ? 'DOWN' : props.y < yLast ? 'UP' : 'NONE';\n /* eslint-enable no-nested-ternary */\n\n return props;\n }\n\n const onScrollDebounced = debounce(() => {\n trigger(updateProps());\n }, 100);\n\n /**\n * Scroll handler.\n */\n function onScroll() {\n trigger(updateProps());\n onScrollDebounced();\n }\n\n const { add, remove, has, props, trigger } = useService({\n props: {\n x: window.scrollX,\n y: window.scrollY,\n changed: {\n x: false,\n y: false,\n },\n last: {\n x: window.scrollX,\n y: window.scrollY,\n },\n delta: {\n x: 0,\n y: 0,\n },\n max: {\n x: (document.scrollingElement || document.body).scrollWidth - window.innerWidth,\n y: (document.scrollingElement || document.body).scrollHeight - window.innerHeight,\n },\n progress: {\n x: 0,\n y: 0,\n },\n direction: {\n x: 'NONE',\n y: 'NONE',\n },\n } as ScrollServiceProps,\n init() {\n document.addEventListener('scroll', onScroll, { passive: true, capture: true });\n },\n kill() {\n document.removeEventListener('scroll', onScroll);\n },\n });\n\n return {\n add,\n remove,\n has,\n props: () => props,\n };\n}\n\nlet scroll;\n\n/**\n * Use the scroll service.\n *\n * ```js\n * import { useScroll } from '@studiometa/js-toolkit/services';\n * const { add, remove, props } = useScroll();\n * add(key, (props) => {});\n * remove(key);\n * props();\n * ```\n */\nexport default function useScroll(): ScrollService {\n if (!scroll) {\n scroll = createScrollService();\n }\n\n return scroll;\n}\n"],
|
|
5
|
+
"mappings": "AACA,SAAS,kBAAkB;AAC3B,OAAO,cAAc;AAmBrB,SAAS,sBAAqC;AAI5C,WAAS,cAAkC;AACzC,UAAM,QAAQ,MAAM;AACpB,UAAM,QAAQ,MAAM;AAGpB,QAAI,OAAO,YAAY,MAAM,GAAG;AAC9B,YAAM,IAAI,OAAO;AAAA,IACnB;AAGA,QAAI,OAAO,YAAY,MAAM,GAAG;AAC9B,YAAM,IAAI,OAAO;AAAA,IACnB;AAEA,UAAM,QAAQ,IAAI,MAAM,MAAM;AAC9B,UAAM,QAAQ,IAAI,MAAM,MAAM;AAC9B,UAAM,KAAK,IAAI;AACf,UAAM,KAAK,IAAI;AACf,UAAM,MAAM,IAAI,MAAM,IAAI;AAC1B,UAAM,MAAM,IAAI,MAAM,IAAI;AAC1B,UAAM,IAAI,KAAK,SAAS,oBAAoB,SAAS,MAAM,cAAc,OAAO;AAChF,UAAM,IAAI,KAAK,SAAS,oBAAoB,SAAS,MAAM,eAAe,OAAO;AACjF,UAAM,SAAS,IAAI,MAAM,IAAI,MAAM,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI;AAC/D,UAAM,SAAS,IAAI,MAAM,IAAI,MAAM,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI;AAE/D,UAAM,UAAU,IAAI,MAAM,IAAI,QAAQ,UAAU,MAAM,IAAI,QAAQ,SAAS;AAC3E,UAAM,UAAU,IAAI,MAAM,IAAI,QAAQ,SAAS,MAAM,IAAI,QAAQ,OAAO;AAGxE,WAAO;AAAA,EACT;AAEA,QAAM,oBAAoB,SAAS,MAAM;AACvC,YAAQ,YAAY,CAAC;AAAA,EACvB,GAAG,GAAG;AAKN,WAAS,WAAW;AAClB,YAAQ,YAAY,CAAC;AACrB,sBAAkB;AAAA,EACpB;AAEA,QAAM,EAAE,KAAK,QAAQ,KAAK,OAAO,QAAQ,IAAI,WAAW;AAAA,IACtD,OAAO;AAAA,MACL,GAAG,OAAO;AAAA,MACV,GAAG,OAAO;AAAA,MACV,SAAS;AAAA,QACP,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,MAAM;AAAA,QACJ,GAAG,OAAO;AAAA,QACV,GAAG,OAAO;AAAA,MACZ;AAAA,MACA,OAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,KAAK;AAAA,QACH,IAAI,SAAS,oBAAoB,SAAS,MAAM,cAAc,OAAO;AAAA,QACrE,IAAI,SAAS,oBAAoB,SAAS,MAAM,eAAe,OAAO;AAAA,MACxE;AAAA,MACA,UAAU;AAAA,QACR,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,WAAW;AAAA,QACT,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,IACF;AAAA,IACA,OAAO;AACL,eAAS,iBAAiB,UAAU,UAAU,EAAE,SAAS,MAAM,SAAS,KAAK,CAAC;AAAA,IAChF;AAAA,IACA,OAAO;AACL,eAAS,oBAAoB,UAAU,QAAQ;AAAA,IACjD;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,MAAM;AAAA,EACf;AACF;AAEA,IAAI;AAaW,SAAR,YAA4C;AACjD,MAAI,CAAC,QAAQ;AACX,aAAS,oBAAoB;AAAA,EAC/B;AAEA,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/utils/SmartQueue.d.ts
CHANGED
package/utils/SmartQueue.js
CHANGED
package/utils/SmartQueue.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../packages/js-toolkit/utils/SmartQueue.ts"],
|
|
4
|
-
"sourcesContent": ["import { Queue } from './Queue.js';\nimport nextTick from './nextTick.js';\n\n/**\n * A task is considered long if it blocks the main thread for more thant 50ms.\n * By using 40ms as a limit, we make the bet that we can avoid long running\n * tasks by dispatching small tasks smartly.\n *\n * @see https://developer.mozilla.org/en-US/docs/Glossary/Long_task\n */\nconst LONG_TASK_DURATION = 40;\n\n/**\n * Manage tasks in a smart queue.\n * Tasks will be automatically batch-called inside a single event loop\n * lasting no more than 50ms, which is considered a long task.\n */\nexport class SmartQueue extends Queue {\n /**\n * A function to schedule the next batch.\n */\n waiter = nextTick;\n\n /**\n * Class constructor.\n */\n constructor() {\n super(Number.POSITIVE_INFINITY, nextTick);\n }\n\n /**\n * Flush current batch.\n */\n flush() {\n this.run(this.tasks);\n this.isScheduled = false;\n\n if (this.tasks.length > 0) {\n this.scheduleFlush();\n }\n }\n\n /**\n * Run the queue.\n */\n run(tasks: Array<(...args: unknown[]) => unknown>) {\n let task;\n const start = performance.now();\n let now = start;\n // eslint-disable-next-line no-cond-assign\n while (now - start < LONG_TASK_DURATION && (task = tasks.shift())) {\n task();\n now = performance.now();\n }\n }\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,aAAa;AACtB,
|
|
4
|
+
"sourcesContent": ["import { Queue } from './Queue.js';\nimport { nextTick } from './nextTick.js';\n\n/**\n * A task is considered long if it blocks the main thread for more thant 50ms.\n * By using 40ms as a limit, we make the bet that we can avoid long running\n * tasks by dispatching small tasks smartly.\n *\n * @see https://developer.mozilla.org/en-US/docs/Glossary/Long_task\n */\nconst LONG_TASK_DURATION = 40;\n\n/**\n * Manage tasks in a smart queue.\n * Tasks will be automatically batch-called inside a single event loop\n * lasting no more than 50ms, which is considered a long task.\n */\nexport class SmartQueue extends Queue {\n /**\n * A function to schedule the next batch.\n */\n waiter = nextTick;\n\n /**\n * Class constructor.\n */\n constructor() {\n super(Number.POSITIVE_INFINITY, nextTick);\n }\n\n /**\n * Flush current batch.\n */\n flush() {\n this.run(this.tasks);\n this.isScheduled = false;\n\n if (this.tasks.length > 0) {\n this.scheduleFlush();\n }\n }\n\n /**\n * Run the queue.\n */\n run(tasks: Array<(...args: unknown[]) => unknown>) {\n let task;\n const start = performance.now();\n let now = start;\n // eslint-disable-next-line no-cond-assign\n while (now - start < LONG_TASK_DURATION && (task = tasks.shift())) {\n task();\n now = performance.now();\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,aAAa;AACtB,SAAS,gBAAgB;AASzB,MAAM,qBAAqB;AAOpB,MAAM,mBAAmB,MAAM;AAAA;AAAA;AAAA;AAAA,EAIpC,SAAS;AAAA;AAAA;AAAA;AAAA,EAKT,cAAc;AACZ,UAAM,OAAO,mBAAmB,QAAQ;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ;AACN,SAAK,IAAI,KAAK,KAAK;AACnB,SAAK,cAAc;AAEnB,QAAI,KAAK,MAAM,SAAS,GAAG;AACzB,WAAK,cAAc;AAAA,IACrB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,OAA+C;AACjD,QAAI;AACJ,UAAM,QAAQ,YAAY,IAAI;AAC9B,QAAI,MAAM;AAEV,WAAO,MAAM,QAAQ,uBAAuB,OAAO,MAAM,MAAM,IAAI;AACjE,WAAK;AACL,YAAM,YAAY,IAAI;AAAA,IACxB;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/utils/css/animate.d.ts
CHANGED
|
@@ -1,27 +1,45 @@
|
|
|
1
1
|
import type { TransformProps } from './transform.js';
|
|
2
2
|
import type { EasingFunction } from '../math/index.js';
|
|
3
|
-
import type { BezierCurve, TweenOptions } from '../tween.js';
|
|
3
|
+
import type { BezierCurve, Tween, TweenOptions } from '../tween.js';
|
|
4
4
|
export type CSSCustomPropertyName = `--${string}`;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
transformOrigin?: string;
|
|
8
|
-
easing?: EasingFunction | BezierCurve;
|
|
9
|
-
offset?: number;
|
|
10
|
-
[key: CSSCustomPropertyName]: number;
|
|
5
|
+
type KeyframeTransforms<Type> = {
|
|
6
|
+
[Property in keyof Type]: number | [number, string];
|
|
11
7
|
};
|
|
8
|
+
export type Keyframe = Partial<KeyframeTransforms<TransformProps> & {
|
|
9
|
+
opacity: number;
|
|
10
|
+
transformOrigin: string;
|
|
11
|
+
easing: EasingFunction | BezierCurve;
|
|
12
|
+
offset: number;
|
|
13
|
+
[key: CSSCustomPropertyName]: number;
|
|
14
|
+
}>;
|
|
12
15
|
export type NormalizedKeyframe = Keyframe & {
|
|
13
16
|
easing: EasingFunction;
|
|
14
17
|
offset: number;
|
|
15
18
|
vars: string[];
|
|
16
19
|
};
|
|
17
|
-
export
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
export interface AnimateOptions extends Omit<TweenOptions, 'duration'> {
|
|
21
|
+
/**
|
|
22
|
+
* The duration of the tween, in seconds.
|
|
23
|
+
* When using multiple targets, it can be a function which will be
|
|
24
|
+
* called with the current target and its index and should return
|
|
25
|
+
* the duration in seconds for this element.
|
|
26
|
+
*
|
|
27
|
+
* Defaults to `1`.
|
|
28
|
+
*/
|
|
29
|
+
duration?: number | ((target: HTMLElement, index: number) => number);
|
|
30
|
+
/**
|
|
31
|
+
* Delay between the start of each target animation, in seconds.
|
|
32
|
+
* When using multiple targets, it can be a function which will be called
|
|
33
|
+
* with the current target and its index and should return the delay
|
|
34
|
+
* in seconds for this element's tween.
|
|
35
|
+
*
|
|
36
|
+
* Defaults to `0`.
|
|
37
|
+
*/
|
|
38
|
+
stagger?: number | ((target: HTMLElement, index: number) => number);
|
|
39
|
+
}
|
|
40
|
+
export type Animate = Tween;
|
|
24
41
|
/**
|
|
25
42
|
* Animate one or more elements.
|
|
26
43
|
*/
|
|
27
|
-
export declare function animate(elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>, keyframes: Keyframe[], options?:
|
|
44
|
+
export declare function animate(elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>, keyframes: Keyframe[], options?: AnimateOptions): Animate;
|
|
45
|
+
export {};
|
package/utils/css/animate.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { lerp, map } from "../math/index.js";
|
|
1
|
+
import { clamp01, lerp, map, mean } from "../math/index.js";
|
|
2
2
|
import { isDefined, isFunction, isNumber } from "../is.js";
|
|
3
|
-
import transform,
|
|
3
|
+
import { transform, TRANSFORM_PROPS } from "./transform.js";
|
|
4
4
|
import { domScheduler as scheduler } from "../scheduler.js";
|
|
5
5
|
import { tween, normalizeEase } from "../tween.js";
|
|
6
6
|
import { eachElements } from "./utils.js";
|
|
@@ -70,21 +70,20 @@ function render(element, from, to, progress) {
|
|
|
70
70
|
}
|
|
71
71
|
let customProperties = false;
|
|
72
72
|
if (isDefined(from.vars) && isDefined(to.vars)) {
|
|
73
|
-
customProperties =
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
stepProgress
|
|
78
|
-
);
|
|
79
|
-
|
|
80
|
-
|
|
73
|
+
customProperties = [];
|
|
74
|
+
for (const customPropertyName of from.vars) {
|
|
75
|
+
customProperties.push([
|
|
76
|
+
customPropertyName,
|
|
77
|
+
lerp(from[customPropertyName], to[customPropertyName], stepProgress)
|
|
78
|
+
]);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const props = {};
|
|
82
|
+
for (const name of TRANSFORM_PROPS) {
|
|
83
|
+
if (isDefined(from[name]) || isDefined(to[name])) {
|
|
84
|
+
props[name] = transformRenderStrategies[name](element, from[name], to[name], stepProgress);
|
|
85
|
+
}
|
|
81
86
|
}
|
|
82
|
-
const props = Object.fromEntries(
|
|
83
|
-
TRANSFORM_PROPS.filter((name) => isDefined(from[name]) || isDefined(to[name])).map((name) => [
|
|
84
|
-
name,
|
|
85
|
-
transformRenderStrategies[name](element, from[name], to[name], stepProgress)
|
|
86
|
-
])
|
|
87
|
-
);
|
|
88
87
|
scheduler.write(() => {
|
|
89
88
|
if (opacity !== false) {
|
|
90
89
|
element.style.opacity = opacity;
|
|
@@ -125,9 +124,9 @@ function singleAnimate(element, keyframes, options = {}) {
|
|
|
125
124
|
}
|
|
126
125
|
const controls = tween(callback, {
|
|
127
126
|
...options,
|
|
128
|
-
onStart() {
|
|
127
|
+
onStart(progress) {
|
|
129
128
|
if (isFunction(options.onStart)) {
|
|
130
|
-
options.onStart();
|
|
129
|
+
options.onStart(progress);
|
|
131
130
|
}
|
|
132
131
|
const runningKeys = running.get(element);
|
|
133
132
|
for (const [runningKey, runningPause] of runningKeys.entries()) {
|
|
@@ -141,18 +140,60 @@ function singleAnimate(element, keyframes, options = {}) {
|
|
|
141
140
|
return controls;
|
|
142
141
|
}
|
|
143
142
|
function animate(elementOrElements, keyframes, options = {}) {
|
|
144
|
-
|
|
145
|
-
elementOrElements,
|
|
146
|
-
|
|
147
|
-
|
|
143
|
+
if (elementOrElements instanceof HTMLElement) {
|
|
144
|
+
return singleAnimate(elementOrElements, keyframes, {
|
|
145
|
+
...options,
|
|
146
|
+
duration: isFunction(options.duration) ? options.duration(elementOrElements, 0) : options.duration
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
const stagger = options.stagger ?? 0;
|
|
150
|
+
const staggerIsFunction = isFunction(stagger);
|
|
151
|
+
const durationFn = isFunction(options.duration) ? options.duration : null;
|
|
152
|
+
const progressFn = isFunction(options.onProgress) ? options.onProgress : null;
|
|
153
|
+
const progresses = [];
|
|
154
|
+
const timings = [];
|
|
155
|
+
let duration = 0;
|
|
156
|
+
let previousTimings = [0, 0, 0];
|
|
157
|
+
const controls = eachElements(elementOrElements, (element, index) => {
|
|
158
|
+
const delay = staggerIsFunction ? stagger(element, index) : stagger * index;
|
|
159
|
+
const itemOptions = { ...options, delay };
|
|
160
|
+
if (durationFn) {
|
|
161
|
+
itemOptions.duration = durationFn(element, index);
|
|
162
|
+
} else if (!isDefined(itemOptions.duration)) {
|
|
163
|
+
itemOptions.duration = 1;
|
|
164
|
+
}
|
|
165
|
+
timings[index] = [itemOptions.duration, delay, itemOptions.duration + delay];
|
|
166
|
+
if (timings[index][2] > previousTimings[2]) {
|
|
167
|
+
duration = timings[index][2];
|
|
168
|
+
}
|
|
169
|
+
previousTimings = timings[index];
|
|
170
|
+
progresses[index] = 0;
|
|
171
|
+
itemOptions.onProgress = (itemProgress) => {
|
|
172
|
+
progresses[index] = itemProgress;
|
|
173
|
+
if (progressFn) {
|
|
174
|
+
progressFn(mean(progresses));
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
return singleAnimate(element, keyframes, itemOptions);
|
|
178
|
+
});
|
|
148
179
|
const delegate = (key) => (
|
|
149
180
|
// eslint-disable-next-line consistent-return
|
|
150
|
-
(
|
|
151
|
-
if (key === "progress"
|
|
152
|
-
|
|
181
|
+
function delegated() {
|
|
182
|
+
if (key === "progress") {
|
|
183
|
+
if (arguments.length === 1) {
|
|
184
|
+
const newProgress = arguments[0];
|
|
185
|
+
const newTime = lerp(0, duration, newProgress);
|
|
186
|
+
for (const [index, control] of controls.entries()) {
|
|
187
|
+
const controlProgress = clamp01(
|
|
188
|
+
map(newTime, timings[index][1], timings[index][2], 0, 1)
|
|
189
|
+
);
|
|
190
|
+
control.progress(controlProgress);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return mean(progresses);
|
|
153
194
|
}
|
|
154
195
|
for (const control of controls) {
|
|
155
|
-
control[key](
|
|
196
|
+
control[key].call(null, arguments);
|
|
156
197
|
}
|
|
157
198
|
}
|
|
158
199
|
);
|
package/utils/css/animate.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/js-toolkit/utils/css/animate.ts"],
|
|
4
|
-
"sourcesContent": ["import { lerp, map } from '../math/index.js';\nimport { isDefined, isFunction, isNumber } from '../is.js';\nimport transform, { TRANSFORM_PROPS } from './transform.js';\nimport { domScheduler as scheduler } from '../scheduler.js';\nimport { tween, normalizeEase } from '../tween.js';\n// eslint-disable-next-line import/extensions\nimport { eachElements } from './utils.js';\nimport { startsWith } from '../string/index.js';\nimport type { TransformProps } from './transform.js';\nimport type { EasingFunction } from '../math/index.js';\nimport type { BezierCurve, TweenOptions } from '../tween.js';\n\nexport type CSSCustomPropertyName = `--${string}`;\n\nexport type Keyframe = TransformProps & {\n opacity?: number;\n transformOrigin?: string;\n easing?: EasingFunction | BezierCurve;\n offset?: number;\n [key: CSSCustomPropertyName]: number;\n};\n\nexport type NormalizedKeyframe = Keyframe & {\n easing: EasingFunction;\n offset: number;\n vars: string[];\n};\n\nexport type Animate = {\n start: () => void;\n pause: () => void;\n play: () => void;\n finish: () => void;\n progress: (value?: number) => number;\n};\n\nlet id = 0;\nconst running = new WeakMap();\n\nconst CSSUnitConverter = {\n '%': (value, getSizeRef) => (value * getSizeRef()) / 100,\n vh: (value) => (value * window.innerHeight) / 100,\n vw: (value) => (value * window.innerWidth) / 100,\n vmin: (value) => (value * Math.min(window.innerWidth, window.innerHeight)) / 100,\n vmax: (value) => (value * Math.max(window.innerWidth, window.innerHeight)) / 100,\n};\n\n/**\n * Get the value from a step property.\n */\nfunction getAnimationStepValue(val: number | [number, string], getSizeRef: () => number): number {\n if (isNumber(val)) {\n return val;\n }\n\n if (!val[1] || !CSSUnitConverter[val[1]]) {\n return val[0];\n }\n\n return CSSUnitConverter[val[1]](val[0], getSizeRef);\n}\n\nconst generateTranslateRenderStrategy = (sizeRef) => (element, fromValue, toValue, progress) =>\n lerp(\n getAnimationStepValue(\n fromValue ?? 0,\n /* istanbul ignore next */\n () => element[sizeRef],\n ),\n getAnimationStepValue(toValue ?? 0, () => element[sizeRef]),\n progress,\n );\nconst widthBasedTranslateRenderStrategy = generateTranslateRenderStrategy('offsetWidth');\nconst heightBasedTranslateRenderStrategy = generateTranslateRenderStrategy('offsetHeight');\n\nconst generateLerpRenderStrategy = (defaultValue) => (element, fromValue, toValue, progress) =>\n lerp(fromValue ?? defaultValue, toValue ?? defaultValue, progress);\nconst scaleRenderStrategy = generateLerpRenderStrategy(1);\nconst degreesRenderStrategy = generateLerpRenderStrategy(0);\n\nconst transformRenderStrategies = {\n x: widthBasedTranslateRenderStrategy,\n y: heightBasedTranslateRenderStrategy,\n z: widthBasedTranslateRenderStrategy,\n scale: scaleRenderStrategy,\n scaleX: scaleRenderStrategy,\n scaleY: scaleRenderStrategy,\n scaleZ: scaleRenderStrategy,\n skew: degreesRenderStrategy,\n skewX: degreesRenderStrategy,\n skewY: degreesRenderStrategy,\n rotate: degreesRenderStrategy,\n rotateX: degreesRenderStrategy,\n rotateY: degreesRenderStrategy,\n rotateZ: degreesRenderStrategy,\n};\n\n/**\n * Render an element style based on 2 keyframes and a progress value.\n */\nfunction render(\n element: HTMLElement,\n from: NormalizedKeyframe,\n to: NormalizedKeyframe,\n progress: number,\n) {\n const stepProgress = to.easing(map(progress, from.offset, to.offset, 0, 1));\n\n scheduler.read(() => {\n let opacity: false | number | string = false;\n if (isDefined(from.opacity) || isDefined(to.opacity)) {\n opacity = map(stepProgress, 0, 1, from.opacity ?? 1, to.opacity ?? 1);\n } else if (element.style.opacity) {\n opacity = '';\n }\n\n let transformOrigin: false | string = false;\n if (isDefined(to.transformOrigin)) {\n transformOrigin = to.transformOrigin;\n } else if (element.style.transformOrigin) {\n transformOrigin = '';\n }\n\n let customProperties: false | [string, number][] = false;\n if (isDefined(from.vars) && isDefined(to.vars)) {\n customProperties = from.vars.map((customPropertyName) => {\n const customPropertyValue = lerp(\n from[customPropertyName],\n to[customPropertyName],\n stepProgress,\n );\n return [customPropertyName, customPropertyValue];\n });\n }\n\n const props = Object.fromEntries(\n TRANSFORM_PROPS.filter((name) => isDefined(from[name]) || isDefined(to[name])).map((name) => [\n name,\n transformRenderStrategies[name](element, from[name], to[name], stepProgress),\n ]),\n );\n scheduler.write(() => {\n if (opacity !== false) {\n // @ts-ignore\n element.style.opacity = opacity;\n }\n if (transformOrigin !== false) {\n element.style.transformOrigin = transformOrigin;\n }\n if (customProperties !== false) {\n for (const customProperty of customProperties) {\n element.style.setProperty(customProperty[0], customProperty[1].toString());\n }\n }\n transform(element, props);\n });\n });\n}\n\n/**\n * Animate an element.\n */\nfunction singleAnimate(\n element: HTMLElement,\n keyframes: Keyframe[],\n options: TweenOptions = {},\n): Animate {\n const keyframesCount = keyframes.length - 1;\n const normalizedKeyframes = keyframes.map(\n (keyframe, index): NormalizedKeyframe => ({\n ...keyframe,\n offset: keyframe.offset ?? index / keyframesCount,\n easing: normalizeEase(keyframe.easing),\n vars: Object.keys(keyframe).filter((key) => startsWith(key, '--')),\n }),\n );\n\n if (!running.has(element)) {\n running.set(element, new Map());\n }\n\n const key = `animate-${id}`;\n id += 1;\n\n /**\n * Set the progress value.\n */\n function callback(progress: number) {\n let toIndex = 0;\n while (\n normalizedKeyframes[toIndex] &&\n normalizedKeyframes[toIndex].offset <= progress &&\n normalizedKeyframes[toIndex].offset !== 1\n ) {\n toIndex += 1;\n }\n\n render(element, normalizedKeyframes[toIndex - 1], normalizedKeyframes[toIndex], progress);\n }\n\n const controls = tween(callback, {\n ...options,\n onStart() {\n if (isFunction(options.onStart)) {\n options.onStart();\n }\n // Stop running instances\n const runningKeys = running.get(element);\n for (const [runningKey, runningPause] of runningKeys.entries()) {\n runningPause();\n runningKeys.delete(runningKey);\n }\n runningKeys.set(key, controls.pause);\n running.set(element, runningKeys);\n },\n });\n\n return controls;\n}\n\n/**\n * Animate one or more elements.\n */\nexport function animate(\n elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>,\n keyframes: Keyframe[],\n options: TweenOptions = {},\n): Animate {\n const controls = eachElements(elementOrElements, (element) =>\n singleAnimate(element, keyframes, options),\n );\n\n const delegate =\n (key) =>\n // eslint-disable-next-line consistent-return\n (...args) => {\n if (key === 'progress' && args.length === 0) {\n return controls[0][key]();\n }\n\n for (const control of controls) {\n control[key](...args);\n }\n };\n\n return {\n start: delegate('start'),\n pause: delegate('pause'),\n finish: delegate('finish'),\n play: delegate('play'),\n progress: delegate('progress'),\n };\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,MAAM,
|
|
4
|
+
"sourcesContent": ["import { clamp01, lerp, map, mean } from '../math/index.js';\nimport { isDefined, isFunction, isNumber } from '../is.js';\nimport { transform, TRANSFORM_PROPS } from './transform.js';\nimport { domScheduler as scheduler } from '../scheduler.js';\nimport { tween, normalizeEase } from '../tween.js';\n// eslint-disable-next-line import/extensions\nimport { eachElements } from './utils.js';\nimport { startsWith } from '../string/index.js';\nimport type { TransformProps } from './transform.js';\nimport type { EasingFunction } from '../math/index.js';\nimport type { BezierCurve, Tween, TweenOptions } from '../tween.js';\n\nexport type CSSCustomPropertyName = `--${string}`;\n\ntype KeyframeTransforms<Type> = {\n [Property in keyof Type]: number | [number, string];\n};\n\nexport type Keyframe = Partial<\n KeyframeTransforms<TransformProps> & {\n opacity: number;\n transformOrigin: string;\n easing: EasingFunction | BezierCurve;\n offset: number;\n [key: CSSCustomPropertyName]: number;\n }\n>;\n\nexport type NormalizedKeyframe = Keyframe & {\n easing: EasingFunction;\n offset: number;\n vars: string[];\n};\n\nexport interface AnimateOptions extends Omit<TweenOptions, 'duration'> {\n /**\n * The duration of the tween, in seconds.\n * When using multiple targets, it can be a function which will be\n * called with the current target and its index and should return\n * the duration in seconds for this element.\n *\n * Defaults to `1`.\n */\n duration?: number | ((target: HTMLElement, index: number) => number);\n /**\n * Delay between the start of each target animation, in seconds.\n * When using multiple targets, it can be a function which will be called\n * with the current target and its index and should return the delay\n * in seconds for this element's tween.\n *\n * Defaults to `0`.\n */\n stagger?: number | ((target: HTMLElement, index: number) => number);\n}\n\nexport type Animate = Tween;\n\nlet id = 0;\nconst running = new WeakMap();\n\nconst CSSUnitConverter = {\n '%': (value, getSizeRef) => (value * getSizeRef()) / 100,\n vh: (value) => (value * window.innerHeight) / 100,\n vw: (value) => (value * window.innerWidth) / 100,\n vmin: (value) => (value * Math.min(window.innerWidth, window.innerHeight)) / 100,\n vmax: (value) => (value * Math.max(window.innerWidth, window.innerHeight)) / 100,\n};\n\n/**\n * Get the value from a step property.\n */\nfunction getAnimationStepValue(val: number | [number, string], getSizeRef: () => number): number {\n if (isNumber(val)) {\n return val;\n }\n\n if (!val[1] || !CSSUnitConverter[val[1]]) {\n return val[0];\n }\n\n return CSSUnitConverter[val[1]](val[0], getSizeRef);\n}\n\nconst generateTranslateRenderStrategy = (sizeRef) => (element, fromValue, toValue, progress) =>\n lerp(\n getAnimationStepValue(\n fromValue ?? 0,\n /* istanbul ignore next */\n () => element[sizeRef],\n ),\n getAnimationStepValue(toValue ?? 0, () => element[sizeRef]),\n progress,\n );\nconst widthBasedTranslateRenderStrategy = generateTranslateRenderStrategy('offsetWidth');\nconst heightBasedTranslateRenderStrategy = generateTranslateRenderStrategy('offsetHeight');\n\nconst generateLerpRenderStrategy = (defaultValue) => (element, fromValue, toValue, progress) =>\n lerp(fromValue ?? defaultValue, toValue ?? defaultValue, progress);\nconst scaleRenderStrategy = generateLerpRenderStrategy(1);\nconst degreesRenderStrategy = generateLerpRenderStrategy(0);\n\nconst transformRenderStrategies = {\n x: widthBasedTranslateRenderStrategy,\n y: heightBasedTranslateRenderStrategy,\n z: widthBasedTranslateRenderStrategy,\n scale: scaleRenderStrategy,\n scaleX: scaleRenderStrategy,\n scaleY: scaleRenderStrategy,\n scaleZ: scaleRenderStrategy,\n skew: degreesRenderStrategy,\n skewX: degreesRenderStrategy,\n skewY: degreesRenderStrategy,\n rotate: degreesRenderStrategy,\n rotateX: degreesRenderStrategy,\n rotateY: degreesRenderStrategy,\n rotateZ: degreesRenderStrategy,\n};\n\n/**\n * Render an element style based on 2 keyframes and a progress value.\n */\nfunction render(\n element: HTMLElement,\n from: NormalizedKeyframe,\n to: NormalizedKeyframe,\n progress: number,\n) {\n const stepProgress = to.easing(map(progress, from.offset, to.offset, 0, 1));\n\n scheduler.read(() => {\n let opacity: false | number | string = false;\n if (isDefined(from.opacity) || isDefined(to.opacity)) {\n opacity = map(stepProgress, 0, 1, from.opacity ?? 1, to.opacity ?? 1);\n } else if (element.style.opacity) {\n opacity = '';\n }\n\n let transformOrigin: false | string = false;\n if (isDefined(to.transformOrigin)) {\n transformOrigin = to.transformOrigin;\n } else if (element.style.transformOrigin) {\n transformOrigin = '';\n }\n\n let customProperties: false | [string, number][] = false;\n if (isDefined(from.vars) && isDefined(to.vars)) {\n customProperties = [];\n for (const customPropertyName of from.vars) {\n customProperties.push([\n customPropertyName,\n lerp(from[customPropertyName], to[customPropertyName], stepProgress),\n ]);\n }\n }\n\n const props = {};\n\n for (const name of TRANSFORM_PROPS) {\n if (isDefined(from[name]) || isDefined(to[name])) {\n props[name] = transformRenderStrategies[name](element, from[name], to[name], stepProgress);\n }\n }\n\n scheduler.write(() => {\n if (opacity !== false) {\n // @ts-ignore\n element.style.opacity = opacity;\n }\n if (transformOrigin !== false) {\n element.style.transformOrigin = transformOrigin;\n }\n if (customProperties !== false) {\n for (const customProperty of customProperties) {\n element.style.setProperty(customProperty[0], customProperty[1].toString());\n }\n }\n transform(element, props);\n });\n });\n}\n\n/**\n * Animate an element.\n */\nfunction singleAnimate(\n element: HTMLElement,\n keyframes: Keyframe[],\n options: TweenOptions = {},\n): Animate {\n const keyframesCount = keyframes.length - 1;\n const normalizedKeyframes = keyframes.map(\n (keyframe, index): NormalizedKeyframe => ({\n ...keyframe,\n offset: keyframe.offset ?? index / keyframesCount,\n easing: normalizeEase(keyframe.easing),\n vars: Object.keys(keyframe).filter((key) => startsWith(key, '--')),\n }),\n );\n\n if (!running.has(element)) {\n running.set(element, new Map());\n }\n\n const key = `animate-${id}`;\n id += 1;\n\n /**\n * Set the progress value.\n */\n function callback(progress: number) {\n let toIndex = 0;\n while (\n normalizedKeyframes[toIndex] &&\n normalizedKeyframes[toIndex].offset <= progress &&\n normalizedKeyframes[toIndex].offset !== 1\n ) {\n toIndex += 1;\n }\n\n render(element, normalizedKeyframes[toIndex - 1], normalizedKeyframes[toIndex], progress);\n }\n\n const controls = tween(callback, {\n ...options,\n onStart(progress) {\n if (isFunction(options.onStart)) {\n options.onStart(progress);\n }\n // Stop running instances\n const runningKeys = running.get(element);\n for (const [runningKey, runningPause] of runningKeys.entries()) {\n runningPause();\n runningKeys.delete(runningKey);\n }\n runningKeys.set(key, controls.pause);\n running.set(element, runningKeys);\n },\n });\n\n return controls;\n}\n\ntype Duration = number;\ntype Delay = number;\ntype DurationWithDelay = number;\n\n/**\n * Animate one or more elements.\n */\nexport function animate(\n elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>,\n keyframes: Keyframe[],\n options: AnimateOptions = {},\n): Animate {\n if (elementOrElements instanceof HTMLElement) {\n return singleAnimate(elementOrElements, keyframes, {\n ...options,\n duration: isFunction(options.duration)\n ? options.duration(elementOrElements, 0)\n : options.duration,\n });\n }\n\n const stagger = options.stagger ?? 0;\n const staggerIsFunction = isFunction(stagger);\n const durationFn = isFunction(options.duration) ? options.duration : null;\n const progressFn = isFunction(options.onProgress) ? options.onProgress : null;\n const progresses: number[] = [];\n const timings: [Duration, Delay, DurationWithDelay][] = [];\n let duration = 0;\n let previousTimings = [0, 0, 0];\n\n const controls = eachElements(elementOrElements, (element, index) => {\n const delay = staggerIsFunction ? stagger(element, index) : stagger * index;\n const itemOptions = { ...options, delay } as TweenOptions;\n\n if (durationFn) {\n itemOptions.duration = durationFn(element, index);\n } else if (!isDefined(itemOptions.duration)) {\n itemOptions.duration = 1;\n }\n\n timings[index] = [itemOptions.duration, delay, itemOptions.duration + delay];\n\n if (timings[index][2] > previousTimings[2]) {\n // eslint-disable-next-line prefer-destructuring\n duration = timings[index][2];\n }\n\n previousTimings = timings[index];\n\n progresses[index] = 0;\n itemOptions.onProgress = (itemProgress) => {\n progresses[index] = itemProgress;\n if (progressFn) {\n progressFn(mean(progresses));\n }\n };\n\n return singleAnimate(element, keyframes, itemOptions);\n });\n\n const delegate = (key) =>\n // eslint-disable-next-line consistent-return\n function delegated() {\n if (key === 'progress') {\n if (arguments.length === 1) {\n // eslint-disable-next-line prefer-rest-params\n const newProgress = arguments[0];\n const newTime = lerp(0, duration, newProgress);\n for (const [index, control] of controls.entries()) {\n const controlProgress = clamp01(\n map(newTime, timings[index][1], timings[index][2], 0, 1),\n );\n control.progress(controlProgress);\n }\n }\n\n return mean(progresses);\n }\n\n for (const control of controls) {\n // eslint-disable-next-line prefer-rest-params\n control[key].call(null, arguments);\n }\n };\n\n return {\n start: delegate('start'),\n pause: delegate('pause'),\n finish: delegate('finish'),\n play: delegate('play'),\n progress: delegate('progress'),\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["key"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/js-toolkit/utils/css/getOffsetSizes.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Get a `DOMRect` like `Object` for an element, without its transforms.\n */\nexport default function getOffsetSizes(element: HTMLElement) {\n let parent = element;\n let x = -window.
|
|
4
|
+
"sourcesContent": ["/**\n * Get a `DOMRect` like `Object` for an element, without its transforms.\n */\nexport default function getOffsetSizes(element: HTMLElement) {\n let parent = element;\n let x = -window.scrollX;\n let y = -window.scrollY;\n\n while (parent) {\n x += parent.offsetLeft;\n y += parent.offsetTop;\n // @ts-ignore\n parent = parent.offsetParent;\n }\n\n const width = element.offsetWidth;\n const height = element.offsetHeight;\n\n return {\n x,\n y,\n width,\n height,\n top: y,\n right: width + x,\n bottom: height + y,\n left: x,\n };\n}\n"],
|
|
5
5
|
"mappings": "AAGe,SAAR,eAAgC,SAAsB;AAC3D,MAAI,SAAS;AACb,MAAI,IAAI,CAAC,OAAO;AAChB,MAAI,IAAI,CAAC,OAAO;AAEhB,SAAO,QAAQ;AACb,SAAK,OAAO;AACZ,SAAK,OAAO;AAEZ,aAAS,OAAO;AAAA,EAClB;AAEA,QAAM,QAAQ,QAAQ;AACtB,QAAM,SAAS,QAAQ;AAEvB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAK;AAAA,IACL,OAAO,QAAQ;AAAA,IACf,QAAQ,SAAS;AAAA,IACjB,MAAM;AAAA,EACR;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/utils/css/index.d.ts
CHANGED
|
@@ -3,5 +3,6 @@ export { add as addClass, remove as removeClass, toggle as toggleClass } from '.
|
|
|
3
3
|
export { add as addStyle, remove as removeStyle } from './styles.js';
|
|
4
4
|
export { default as getOffsetSizes } from './getOffsetSizes.js';
|
|
5
5
|
export { default as matrix } from './matrix.js';
|
|
6
|
-
export {
|
|
6
|
+
export { transform } from './transform.js';
|
|
7
7
|
export { default as transition } from './transition.js';
|
|
8
|
+
export type { TransformProps } from './transform.js';
|
package/utils/css/index.js
CHANGED
|
@@ -3,8 +3,8 @@ import { add, remove, toggle } from "./classes.js";
|
|
|
3
3
|
import { add as add2, remove as remove2 } from "./styles.js";
|
|
4
4
|
import { default as default2 } from "./getOffsetSizes.js";
|
|
5
5
|
import { default as default3 } from "./matrix.js";
|
|
6
|
-
import {
|
|
7
|
-
import { default as
|
|
6
|
+
import { transform } from "./transform.js";
|
|
7
|
+
import { default as default4 } from "./transition.js";
|
|
8
8
|
export {
|
|
9
9
|
add as addClass,
|
|
10
10
|
add2 as addStyle,
|
|
@@ -13,7 +13,7 @@ export {
|
|
|
13
13
|
remove as removeClass,
|
|
14
14
|
remove2 as removeStyle,
|
|
15
15
|
toggle as toggleClass,
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
transform,
|
|
17
|
+
default4 as transition
|
|
18
18
|
};
|
|
19
19
|
//# sourceMappingURL=index.js.map
|
package/utils/css/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/js-toolkit/utils/css/index.ts"],
|
|
4
|
-
"sourcesContent": ["export * from './animate.js';\nexport { add as addClass, remove as removeClass, toggle as toggleClass } from './classes.js';\nexport { add as addStyle, remove as removeStyle } from './styles.js';\nexport { default as getOffsetSizes } from './getOffsetSizes.js';\nexport { default as matrix } from './matrix.js';\nexport {
|
|
5
|
-
"mappings": "AAAA,cAAc;AACd,SAAgB,KAAoB,QAAuB,cAAmB;AAC9E,SAAgB,OAAPA,MAA2B,UAAVC,eAA6B;AACvD,SAAoB,WAAXC,gBAAiC;AAC1C,SAAoB,WAAXA,gBAAyB;AAClC,
|
|
4
|
+
"sourcesContent": ["export * from './animate.js';\nexport { add as addClass, remove as removeClass, toggle as toggleClass } from './classes.js';\nexport { add as addStyle, remove as removeStyle } from './styles.js';\nexport { default as getOffsetSizes } from './getOffsetSizes.js';\nexport { default as matrix } from './matrix.js';\nexport { transform } from './transform.js';\nexport { default as transition } from './transition.js';\nexport type { TransformProps } from './transform.js';\n"],
|
|
5
|
+
"mappings": "AAAA,cAAc;AACd,SAAgB,KAAoB,QAAuB,cAAmB;AAC9E,SAAgB,OAAPA,MAA2B,UAAVC,eAA6B;AACvD,SAAoB,WAAXC,gBAAiC;AAC1C,SAAoB,WAAXA,gBAAyB;AAClC,SAAS,iBAAiB;AAC1B,SAAoB,WAAXA,gBAA6B;",
|
|
6
6
|
"names": ["add", "remove", "default"]
|
|
7
7
|
}
|
package/utils/css/matrix.d.ts
CHANGED
package/utils/css/matrix.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/js-toolkit/utils/css/matrix.ts"],
|
|
4
|
-
"sourcesContent": ["type MatrixTransform = {\n scaleX?: number;\n scaleY?: number;\n skewX?: number;\n skewY?: number;\n translateX?: number;\n translateY?: number;\n};\n\n/**\n * Format a CSS transform matrix with the given values.\n *\n * @param {Object} transform\n * @param {number} [transform.scaleX=1] The scale on the x axis.\n * @param {number} [transform.scaleY=1] The scale on the y axis.\n * @param {number} [transform.skewX=0] The skew on the x axis.\n * @param {number} [transform.skewY=0] The skew on the y axis.\n * @param {number} [transform.translateX=0] The translate on the x axis.\n * @param {number} [transform.translateY=0] The translate on the y axis.\n * @returns {string} A formatted CSS matrix transform.\n * @example\n * ```js\n * matrix({ scaleX: 0.5, scaleY: 0.5 });\n * // matrix(0.5, 0, 0, 0.5, 0, 0)\n * ```\n */\nexport default function matrix(transform
|
|
5
|
-
"mappings": "AA0Be,SAAR,OAAwB,
|
|
4
|
+
"sourcesContent": ["type MatrixTransform = {\n scaleX?: number;\n scaleY?: number;\n skewX?: number;\n skewY?: number;\n translateX?: number;\n translateY?: number;\n};\n\n/**\n * Format a CSS transform matrix with the given values.\n *\n * @param {Object} transform\n * @param {number} [transform.scaleX=1] The scale on the x axis.\n * @param {number} [transform.scaleY=1] The scale on the y axis.\n * @param {number} [transform.skewX=0] The skew on the x axis.\n * @param {number} [transform.skewY=0] The skew on the y axis.\n * @param {number} [transform.translateX=0] The translate on the x axis.\n * @param {number} [transform.translateY=0] The translate on the y axis.\n * @returns {string} A formatted CSS matrix transform.\n * @example\n * ```js\n * matrix({ scaleX: 0.5, scaleY: 0.5 });\n * // matrix(0.5, 0, 0, 0.5, 0, 0)\n * ```\n */\nexport default function matrix(transform?: MatrixTransform): string {\n // eslint-disable-next-line no-param-reassign\n transform = transform || {};\n return `matrix(${transform.scaleX ?? 1}, ${transform.skewY ?? 0}, ${transform.skewX ?? 0}, ${\n transform.scaleY ?? 1\n }, ${transform.translateX ?? 0}, ${transform.translateY ?? 0})`;\n}\n"],
|
|
5
|
+
"mappings": "AA0Be,SAAR,OAAwB,WAAqC;AAElE,cAAY,aAAa,CAAC;AAC1B,SAAO,UAAU,UAAU,UAAU,CAAC,KAAK,UAAU,SAAS,CAAC,KAAK,UAAU,SAAS,CAAC,KACtF,UAAU,UAAU,CACtB,KAAK,UAAU,cAAc,CAAC,KAAK,UAAU,cAAc,CAAC;AAC9D;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/utils/css/transform.d.ts
CHANGED
|
@@ -18,4 +18,4 @@ export declare const TRANSFORM_PROPS: string[];
|
|
|
18
18
|
/**
|
|
19
19
|
* Generate a CSS transform.
|
|
20
20
|
*/
|
|
21
|
-
export
|
|
21
|
+
export declare function transform(elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>, props: TransformProps): string;
|
package/utils/css/transform.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/js-toolkit/utils/css/transform.ts"],
|
|
4
|
-
"sourcesContent": ["import { isDefined } from '../is.js';\n// eslint-disable-next-line import/extensions\nimport { eachElements } from './utils.js';\n\nexport type TransformProps = Partial<{\n x: number;\n y: number;\n z: number;\n rotate: number;\n rotateX: number;\n rotateY: number;\n rotateZ: number;\n scale: number;\n scaleX: number;\n scaleY: number;\n scaleZ: number;\n skew: number;\n skewX: number;\n skewY: number;\n}>;\n\nexport const TRANSFORM_PROPS = [\n 'x',\n 'y',\n 'z',\n 'rotate',\n 'rotateX',\n 'rotateY',\n 'rotateZ',\n 'scale',\n 'scaleX',\n 'scaleY',\n 'scaleZ',\n 'skew',\n 'skewX',\n 'skewY',\n];\n\n/**\n * Generate a CSS transform.\n */\nexport
|
|
5
|
-
"mappings": "AAAA,SAAS,iBAAiB;AAE1B,SAAS,oBAAoB;AAmBtB,MAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;
|
|
4
|
+
"sourcesContent": ["import { isDefined } from '../is.js';\n// eslint-disable-next-line import/extensions\nimport { eachElements } from './utils.js';\n\nexport type TransformProps = Partial<{\n x: number;\n y: number;\n z: number;\n rotate: number;\n rotateX: number;\n rotateY: number;\n rotateZ: number;\n scale: number;\n scaleX: number;\n scaleY: number;\n scaleZ: number;\n skew: number;\n skewX: number;\n skewY: number;\n}>;\n\nexport const TRANSFORM_PROPS = [\n 'x',\n 'y',\n 'z',\n 'rotate',\n 'rotateX',\n 'rotateY',\n 'rotateZ',\n 'scale',\n 'scaleX',\n 'scaleY',\n 'scaleZ',\n 'skew',\n 'skewX',\n 'skewY',\n];\n\n/**\n * Generate a CSS transform.\n */\nexport function transform(\n elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>,\n props: TransformProps,\n): string {\n let value = '';\n\n if (isDefined(props.x) || isDefined(props.y) || isDefined(props.z)) {\n value += `translate3d(${props.x ?? 0}px, ${props.y ?? 0}px, ${props.z ?? 0}px) `;\n }\n\n if (isDefined(props.rotate)) {\n value += `rotate(${props.rotate}deg) `;\n } else {\n if (isDefined(props.rotateX)) {\n value += `rotateX(${props.rotateX}deg) `;\n }\n\n if (isDefined(props.rotateY)) {\n value += `rotateY(${props.rotateY}deg) `;\n }\n\n if (isDefined(props.rotateZ)) {\n value += `rotateZ(${props.rotateZ}deg) `;\n }\n }\n\n if (isDefined(props.scale)) {\n value += `scale(${props.scale}) `;\n } else {\n if (isDefined(props.scaleX)) {\n value += `scaleX(${props.scaleX}) `;\n }\n\n if (isDefined(props.scaleY)) {\n value += `scaleY(${props.scaleY}) `;\n }\n\n if (isDefined(props.scaleZ)) {\n value += `scaleZ(${props.scaleZ}) `;\n }\n }\n\n if (isDefined(props.skew)) {\n value += `skew(${props.skew}deg) `;\n } else {\n if (isDefined(props.skewX)) {\n value += `skewX(${props.skewX}deg) `;\n }\n\n if (isDefined(props.skewY)) {\n value += `skewY(${props.skewY}deg) `;\n }\n }\n\n eachElements(elementOrElements, (element) => {\n element.style.transform = value;\n });\n return value;\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,iBAAiB;AAE1B,SAAS,oBAAoB;AAmBtB,MAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAKO,SAAS,UACd,mBACA,OACQ;AACR,MAAI,QAAQ;AAEZ,MAAI,UAAU,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,GAAG;AAClE,aAAS,eAAe,MAAM,KAAK,CAAC,OAAO,MAAM,KAAK,CAAC,OAAO,MAAM,KAAK,CAAC;AAAA,EAC5E;AAEA,MAAI,UAAU,MAAM,MAAM,GAAG;AAC3B,aAAS,UAAU,MAAM,MAAM;AAAA,EACjC,OAAO;AACL,QAAI,UAAU,MAAM,OAAO,GAAG;AAC5B,eAAS,WAAW,MAAM,OAAO;AAAA,IACnC;AAEA,QAAI,UAAU,MAAM,OAAO,GAAG;AAC5B,eAAS,WAAW,MAAM,OAAO;AAAA,IACnC;AAEA,QAAI,UAAU,MAAM,OAAO,GAAG;AAC5B,eAAS,WAAW,MAAM,OAAO;AAAA,IACnC;AAAA,EACF;AAEA,MAAI,UAAU,MAAM,KAAK,GAAG;AAC1B,aAAS,SAAS,MAAM,KAAK;AAAA,EAC/B,OAAO;AACL,QAAI,UAAU,MAAM,MAAM,GAAG;AAC3B,eAAS,UAAU,MAAM,MAAM;AAAA,IACjC;AAEA,QAAI,UAAU,MAAM,MAAM,GAAG;AAC3B,eAAS,UAAU,MAAM,MAAM;AAAA,IACjC;AAEA,QAAI,UAAU,MAAM,MAAM,GAAG;AAC3B,eAAS,UAAU,MAAM,MAAM;AAAA,IACjC;AAAA,EACF;AAEA,MAAI,UAAU,MAAM,IAAI,GAAG;AACzB,aAAS,QAAQ,MAAM,IAAI;AAAA,EAC7B,OAAO;AACL,QAAI,UAAU,MAAM,KAAK,GAAG;AAC1B,eAAS,SAAS,MAAM,KAAK;AAAA,IAC/B;AAEA,QAAI,UAAU,MAAM,KAAK,GAAG;AAC1B,eAAS,SAAS,MAAM,KAAK;AAAA,IAC/B;AAAA,EACF;AAEA,eAAa,mBAAmB,CAAC,YAAY;AAC3C,YAAQ,MAAM,YAAY;AAAA,EAC5B,CAAC;AACD,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/utils/css/utils.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function eachElements<S extends Node = Node, T = void>(elementOrElements: S | S[] | NodeListOf<S>, callback: (element: S, index
|
|
1
|
+
export declare function eachElements<S extends Node = Node, T = void>(elementOrElements: S | S[] | NodeListOf<S>, callback: (element: S, index: number, elements: S[]) => T): T[];
|
package/utils/css/utils.js
CHANGED