@studiometa/js-toolkit 2.0.0-beta.1 → 2.0.0-beta.13
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/index.cjs +294 -0
- package/Base/index.d.ts +27 -1
- package/Base/index.js +149 -179
- package/Base/managers/ChildrenManager.cjs +124 -0
- package/Base/managers/ChildrenManager.js +29 -55
- package/Base/managers/EventsManager.cjs +184 -0
- package/Base/managers/EventsManager.d.ts +3 -1
- package/Base/managers/EventsManager.js +85 -127
- package/Base/managers/OptionsManager.cjs +175 -0
- package/Base/managers/OptionsManager.d.ts +2 -0
- package/Base/managers/OptionsManager.js +46 -88
- package/Base/managers/RefsManager.cjs +98 -0
- package/Base/managers/RefsManager.d.ts +2 -0
- package/Base/managers/RefsManager.js +24 -35
- package/Base/managers/ServicesManager.cjs +132 -0
- package/Base/managers/ServicesManager.d.ts +29 -4
- package/Base/managers/ServicesManager.js +33 -63
- package/Base/utils.cjs +45 -0
- package/Base/utils.js +12 -11
- package/README.md +13 -70
- package/decorators/index.cjs +49 -0
- package/decorators/index.d.ts +8 -9
- package/decorators/index.js +18 -9
- package/decorators/withBreakpointManager.cjs +91 -0
- package/decorators/withBreakpointManager.js +18 -39
- package/decorators/withBreakpointObserver.cjs +116 -0
- package/decorators/withBreakpointObserver.js +40 -88
- package/decorators/withDrag.cjs +54 -0
- package/decorators/withDrag.js +16 -18
- package/decorators/withExtraConfig.cjs +44 -0
- package/decorators/withExtraConfig.js +11 -12
- package/decorators/withIntersectionObserver.cjs +61 -0
- package/decorators/withIntersectionObserver.js +23 -31
- package/decorators/withMountWhenInView.cjs +68 -0
- package/decorators/withMountWhenInView.js +31 -55
- package/decorators/withScrolledInView.cjs +112 -0
- package/decorators/withScrolledInView.d.ts +4 -1
- package/decorators/withScrolledInView.js +77 -73
- package/decorators/withVue2.cjs +60 -0
- package/decorators/withVue2.js +21 -32
- package/helpers/createApp.cjs +56 -0
- package/helpers/createApp.js +12 -12
- package/helpers/importOnInteraction.cjs +56 -0
- package/helpers/importOnInteraction.js +17 -18
- package/helpers/importWhenIdle.cjs +52 -0
- package/helpers/importWhenIdle.js +13 -17
- package/helpers/importWhenVisible.cjs +54 -0
- package/helpers/importWhenVisible.js +16 -18
- package/helpers/index.cjs +41 -0
- package/helpers/index.d.ts +4 -5
- package/helpers/index.js +10 -5
- package/helpers/utils.cjs +39 -0
- package/helpers/utils.js +7 -6
- package/index.cjs +38 -0
- package/index.d.ts +4 -21
- package/index.js +7 -5
- package/package.json +14 -3
- package/services/Service.cjs +75 -0
- package/services/Service.d.ts +22 -17
- package/services/Service.js +14 -28
- package/services/drag.cjs +194 -0
- package/services/drag.d.ts +4 -18
- package/services/drag.js +103 -156
- package/services/index.cjs +47 -0
- package/services/index.d.ts +13 -10
- package/services/index.js +16 -8
- package/services/key.cjs +101 -0
- package/services/key.d.ts +4 -13
- package/services/key.js +58 -77
- package/services/load.cjs +70 -0
- package/services/load.d.ts +3 -13
- package/services/load.js +31 -36
- package/services/pointer.cjs +159 -0
- package/services/pointer.d.ts +4 -13
- package/services/pointer.js +91 -121
- package/services/raf.cjs +81 -0
- package/services/raf.d.ts +3 -13
- package/services/raf.js +32 -52
- package/services/resize.cjs +106 -0
- package/services/resize.d.ts +3 -13
- package/services/resize.js +52 -52
- package/services/scroll.cjs +129 -0
- package/services/scroll.d.ts +3 -13
- package/services/scroll.js +75 -89
- package/utils/collide/boundingRectToCircle.cjs +38 -0
- package/utils/collide/boundingRectToCircle.d.ts +1 -1
- package/utils/collide/boundingRectToCircle.js +7 -10
- package/utils/collide/collideCircleCircle.cjs +38 -0
- package/utils/collide/collideCircleCircle.js +8 -7
- package/utils/collide/collideCircleRect.cjs +50 -0
- package/utils/collide/collideCircleRect.js +10 -12
- package/utils/collide/collidePointCircle.cjs +35 -0
- package/utils/collide/collidePointCircle.js +8 -5
- package/utils/collide/collidePointRect.cjs +32 -0
- package/utils/collide/collidePointRect.js +5 -2
- package/utils/collide/collideRectRect.cjs +32 -0
- package/utils/collide/collideRectRect.js +5 -2
- package/utils/collide/index.cjs +45 -0
- package/utils/collide/index.d.ts +6 -7
- package/utils/collide/index.js +14 -7
- package/utils/css/classes.cjs +48 -0
- package/utils/css/classes.js +13 -12
- package/utils/css/index.cjs +41 -0
- package/utils/css/index.d.ts +4 -5
- package/utils/css/index.js +10 -5
- package/utils/css/matrix.cjs +33 -0
- package/utils/css/matrix.js +6 -5
- package/utils/css/styles.cjs +51 -0
- package/utils/css/styles.js +13 -12
- package/utils/css/transition.cjs +121 -0
- package/utils/css/transition.js +62 -117
- package/utils/debounce.cjs +38 -0
- package/utils/debounce.js +7 -9
- package/utils/focusTrap.cjs +88 -0
- package/utils/focusTrap.js +30 -21
- package/utils/history.cjs +95 -0
- package/utils/history.js +28 -57
- package/utils/index.cjs +57 -0
- package/utils/index.d.ts +12 -35
- package/utils/index.js +30 -17
- package/utils/keyCodes.cjs +39 -0
- package/utils/keyCodes.js +5 -2
- package/utils/math/clamp.cjs +32 -0
- package/utils/math/clamp.js +5 -2
- package/utils/math/clamp01.cjs +38 -0
- package/utils/math/clamp01.js +6 -3
- package/utils/math/damp.cjs +32 -0
- package/utils/math/damp.js +5 -4
- package/utils/math/ease.cjs +92 -0
- package/utils/math/ease.d.ts +78 -0
- package/utils/math/ease.js +66 -0
- package/utils/math/index.cjs +48 -0
- package/utils/math/index.d.ts +8 -8
- package/utils/math/index.js +17 -8
- package/utils/math/inertiaFinalValue.cjs +41 -0
- package/utils/math/inertiaFinalValue.js +8 -10
- package/utils/math/lerp.cjs +32 -0
- package/utils/math/lerp.js +5 -2
- package/utils/math/map.cjs +32 -0
- package/utils/math/map.js +5 -2
- package/utils/math/round.cjs +32 -0
- package/utils/math/round.js +5 -3
- package/utils/memoize.cjs +47 -0
- package/utils/memoize.js +10 -19
- package/utils/nextFrame.cjs +44 -0
- package/utils/nextFrame.js +14 -9
- package/utils/object/autoBind.cjs +55 -0
- package/utils/object/autoBind.js +12 -22
- package/utils/object/getAllProperties.cjs +41 -0
- package/utils/object/getAllProperties.js +11 -14
- package/utils/object/index.cjs +39 -0
- package/utils/object/index.d.ts +3 -4
- package/utils/object/index.js +8 -4
- package/utils/object/isObject.cjs +32 -0
- package/utils/object/isObject.js +6 -3
- package/utils/scrollTo.cjs +86 -0
- package/utils/scrollTo.js +20 -40
- package/utils/string/index.cjs +53 -0
- package/utils/string/index.d.ts +10 -11
- package/utils/string/index.js +22 -11
- package/utils/string/withLeadingCharacters.cjs +38 -0
- package/utils/string/withLeadingCharacters.js +7 -4
- package/utils/string/withLeadingSlash.cjs +38 -0
- package/utils/string/withLeadingSlash.js +7 -4
- package/utils/string/withTrailingCharacters.cjs +38 -0
- package/utils/string/withTrailingCharacters.js +7 -4
- package/utils/string/withTrailingSlash.cjs +38 -0
- package/utils/string/withTrailingSlash.js +7 -4
- package/utils/string/withoutLeadingCharacters.cjs +32 -0
- package/utils/string/withoutLeadingCharacters.js +6 -3
- package/utils/string/withoutLeadingCharactersRecursive.cjs +43 -0
- package/utils/string/withoutLeadingCharactersRecursive.js +8 -7
- package/utils/string/withoutLeadingSlash.cjs +38 -0
- package/utils/string/withoutLeadingSlash.js +7 -4
- package/utils/string/withoutTrailingCharacters.cjs +32 -0
- package/utils/string/withoutTrailingCharacters.js +6 -3
- package/utils/string/withoutTrailingCharactersRecursive.cjs +43 -0
- package/utils/string/withoutTrailingCharactersRecursive.js +8 -7
- package/utils/string/withoutTrailingSlash.cjs +38 -0
- package/utils/string/withoutTrailingSlash.js +7 -4
- package/utils/throttle.cjs +40 -0
- package/utils/throttle.js +9 -9
- package/index.modern.js +0 -1
- package/index.umd.js +0 -1
package/services/resize.js
CHANGED
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
import Service from
|
|
2
|
-
import debounce from
|
|
3
|
-
|
|
1
|
+
import Service from "./Service.js";
|
|
2
|
+
import debounce from "../utils/debounce.js";
|
|
4
3
|
class Resize extends Service {
|
|
4
|
+
props = {
|
|
5
|
+
width: window.innerWidth,
|
|
6
|
+
height: window.innerHeight,
|
|
7
|
+
ratio: window.innerWidth / window.innerHeight,
|
|
8
|
+
orientation: "square"
|
|
9
|
+
};
|
|
10
|
+
handler;
|
|
5
11
|
init() {
|
|
6
12
|
this.handler = debounce(() => {
|
|
13
|
+
this.updateProps();
|
|
7
14
|
this.trigger(this.props);
|
|
8
15
|
}).bind(this);
|
|
9
|
-
window.addEventListener(
|
|
16
|
+
window.addEventListener("resize", this.handler);
|
|
10
17
|
return this;
|
|
11
18
|
}
|
|
12
|
-
|
|
13
19
|
kill() {
|
|
14
|
-
window.removeEventListener(
|
|
15
|
-
return this;
|
|
20
|
+
window.removeEventListener("resize", this.handler);
|
|
16
21
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
orientation
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
if (props.ratio > 1) {
|
|
27
|
-
props.orientation = 'landscape';
|
|
22
|
+
updateProps() {
|
|
23
|
+
this.props.width = window.innerWidth;
|
|
24
|
+
this.props.height = window.innerHeight;
|
|
25
|
+
this.props.ratio = window.innerWidth / window.innerHeight;
|
|
26
|
+
this.props.orientation = "square";
|
|
27
|
+
if (this.props.ratio > 1) {
|
|
28
|
+
this.props.orientation = "landscape";
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
props.orientation = 'portrait';
|
|
30
|
+
if (this.props.ratio < 1) {
|
|
31
|
+
this.props.orientation = "portrait";
|
|
32
32
|
}
|
|
33
|
-
|
|
34
33
|
if (this.breakpointElement) {
|
|
35
|
-
props.breakpoint = this.breakpoint;
|
|
36
|
-
props.breakpoints = this.breakpoints;
|
|
34
|
+
this.props.breakpoint = this.breakpoint;
|
|
35
|
+
this.props.breakpoints = this.breakpoints;
|
|
36
|
+
} else {
|
|
37
|
+
this.props.breakpoint = void 0;
|
|
38
|
+
this.props.breakpoints = void 0;
|
|
37
39
|
}
|
|
38
|
-
|
|
39
|
-
return props;
|
|
40
|
+
return this.props;
|
|
40
41
|
}
|
|
41
|
-
|
|
42
42
|
get breakpointElement() {
|
|
43
|
-
return document.querySelector(
|
|
43
|
+
return document.querySelector("[data-breakpoint]");
|
|
44
44
|
}
|
|
45
|
-
|
|
46
45
|
get breakpoint() {
|
|
47
|
-
return window.getComputedStyle(this.breakpointElement,
|
|
46
|
+
return window.getComputedStyle(this.breakpointElement, "::before").getPropertyValue("content").replace(/"/g, "");
|
|
48
47
|
}
|
|
49
|
-
|
|
50
48
|
get breakpoints() {
|
|
51
|
-
|
|
52
|
-
return breakpoints.split(
|
|
49
|
+
const breakpoints = window.getComputedStyle(this.breakpointElement, "::after").getPropertyValue("content").replace(/"/g, "");
|
|
50
|
+
return breakpoints.split(",");
|
|
53
51
|
}
|
|
54
|
-
|
|
55
52
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
53
|
+
let instance;
|
|
54
|
+
let resize;
|
|
55
|
+
function useResize() {
|
|
59
56
|
if (!resize) {
|
|
60
|
-
|
|
57
|
+
if (!instance) {
|
|
58
|
+
instance = new Resize();
|
|
59
|
+
}
|
|
60
|
+
const add = instance.add.bind(instance);
|
|
61
|
+
const remove = instance.remove.bind(instance);
|
|
62
|
+
const has = instance.has.bind(instance);
|
|
63
|
+
const props = instance.updateProps.bind(instance);
|
|
64
|
+
resize = {
|
|
65
|
+
add,
|
|
66
|
+
remove,
|
|
67
|
+
has,
|
|
68
|
+
props
|
|
69
|
+
};
|
|
61
70
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
var props = () => resize.props;
|
|
68
|
-
|
|
69
|
-
return {
|
|
70
|
-
add,
|
|
71
|
-
remove,
|
|
72
|
-
has,
|
|
73
|
-
props
|
|
74
|
-
};
|
|
75
|
-
}
|
|
71
|
+
return resize;
|
|
72
|
+
}
|
|
73
|
+
export {
|
|
74
|
+
useResize as default
|
|
75
|
+
};
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __reExport = (target, module2, copyDefault, desc) => {
|
|
13
|
+
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(module2))
|
|
15
|
+
if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
|
|
16
|
+
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return target;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (module2, isNodeMode) => {
|
|
21
|
+
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
|
22
|
+
};
|
|
23
|
+
var __toCommonJS = /* @__PURE__ */ ((cache) => {
|
|
24
|
+
return (module2, temp) => {
|
|
25
|
+
return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
|
|
26
|
+
};
|
|
27
|
+
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
|
|
28
|
+
|
|
29
|
+
// packages/js-toolkit/services/scroll.js
|
|
30
|
+
var scroll_exports = {};
|
|
31
|
+
__export(scroll_exports, {
|
|
32
|
+
default: () => useScroll
|
|
33
|
+
});
|
|
34
|
+
var import_Service = __toESM(require("./Service.cjs"), 1);
|
|
35
|
+
var import_debounce = __toESM(require("../utils/debounce.cjs"), 1);
|
|
36
|
+
var Scroll = class extends import_Service.default {
|
|
37
|
+
props = {
|
|
38
|
+
x: window.pageXOffset,
|
|
39
|
+
y: window.pageYOffset,
|
|
40
|
+
changed: {
|
|
41
|
+
x: false,
|
|
42
|
+
y: false
|
|
43
|
+
},
|
|
44
|
+
last: {
|
|
45
|
+
x: window.pageXOffset,
|
|
46
|
+
y: window.pageYOffset
|
|
47
|
+
},
|
|
48
|
+
delta: {
|
|
49
|
+
x: 0,
|
|
50
|
+
y: 0
|
|
51
|
+
},
|
|
52
|
+
max: {
|
|
53
|
+
x: (document.scrollingElement || document.body).scrollWidth - window.innerWidth,
|
|
54
|
+
y: (document.scrollingElement || document.body).scrollHeight - window.innerHeight
|
|
55
|
+
},
|
|
56
|
+
progress: {
|
|
57
|
+
x: 0,
|
|
58
|
+
y: 0
|
|
59
|
+
},
|
|
60
|
+
direction: {
|
|
61
|
+
x: "NONE",
|
|
62
|
+
y: "NONE"
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
init() {
|
|
66
|
+
this.updateProps();
|
|
67
|
+
document.addEventListener("scroll", this, { passive: true, capture: true });
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
get debouncedHandler() {
|
|
71
|
+
const debounced = (0, import_debounce.default)(() => {
|
|
72
|
+
this.updateProps();
|
|
73
|
+
this.trigger(this.props);
|
|
74
|
+
}, 100);
|
|
75
|
+
Object.defineProperty(this, "debouncedHandler", {
|
|
76
|
+
value: debounced
|
|
77
|
+
});
|
|
78
|
+
return debounced;
|
|
79
|
+
}
|
|
80
|
+
handleEvent() {
|
|
81
|
+
this.updateProps();
|
|
82
|
+
this.trigger(this.props);
|
|
83
|
+
this.debouncedHandler();
|
|
84
|
+
}
|
|
85
|
+
kill() {
|
|
86
|
+
document.removeEventListener("scroll", this);
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
updateProps() {
|
|
90
|
+
const yLast = this.props.y;
|
|
91
|
+
const xLast = this.props.x;
|
|
92
|
+
if (window.pageYOffset !== this.props.y) {
|
|
93
|
+
this.props.y = window.pageYOffset;
|
|
94
|
+
}
|
|
95
|
+
if (window.pageXOffset !== this.props.x) {
|
|
96
|
+
this.props.x = window.pageXOffset;
|
|
97
|
+
}
|
|
98
|
+
this.props.changed.x = this.props.x !== xLast;
|
|
99
|
+
this.props.changed.y = this.props.y !== yLast;
|
|
100
|
+
this.props.last.x = xLast;
|
|
101
|
+
this.props.last.y = yLast;
|
|
102
|
+
this.props.delta.x = this.props.x - xLast;
|
|
103
|
+
this.props.delta.y = this.props.y - yLast;
|
|
104
|
+
this.props.max.x = (document.scrollingElement || document.body).scrollWidth - window.innerWidth;
|
|
105
|
+
this.props.max.y = (document.scrollingElement || document.body).scrollHeight - window.innerHeight;
|
|
106
|
+
this.props.progress.x = this.props.max.x === 0 ? 1 : this.props.x / this.props.max.x;
|
|
107
|
+
this.props.progress.y = this.props.max.y === 0 ? 1 : this.props.y / this.props.max.y;
|
|
108
|
+
this.props.direction.x = this.props.x > xLast ? "RIGHT" : this.props.x < xLast ? "LEFT" : "NONE";
|
|
109
|
+
this.props.direction.y = this.props.y > yLast ? "DOWN" : this.props.y < yLast ? "UP" : "NONE";
|
|
110
|
+
return this.props;
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
var instance;
|
|
114
|
+
var scroll;
|
|
115
|
+
function useScroll() {
|
|
116
|
+
if (!scroll) {
|
|
117
|
+
if (!instance) {
|
|
118
|
+
instance = new Scroll();
|
|
119
|
+
}
|
|
120
|
+
scroll = {
|
|
121
|
+
add: instance.add.bind(instance),
|
|
122
|
+
remove: instance.remove.bind(instance),
|
|
123
|
+
has: instance.has.bind(instance),
|
|
124
|
+
props: instance.updateProps.bind(instance)
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
return scroll;
|
|
128
|
+
}
|
|
129
|
+
module.exports = __toCommonJS(scroll_exports);
|
package/services/scroll.d.ts
CHANGED
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
* props();
|
|
10
10
|
* ```
|
|
11
11
|
*
|
|
12
|
-
* @return {
|
|
12
|
+
* @return {ScrollService}
|
|
13
13
|
*/
|
|
14
|
-
export default function useScroll():
|
|
15
|
-
export type
|
|
14
|
+
export default function useScroll(): ScrollService;
|
|
15
|
+
export type ScrollService = import('./index').ServiceInterface<ScrollServiceProps>;
|
|
16
16
|
export type ScrollServiceProps = {
|
|
17
17
|
x: number;
|
|
18
18
|
y: number;
|
|
@@ -41,13 +41,3 @@ export type ScrollServiceProps = {
|
|
|
41
41
|
y: 'UP' | 'DOWN' | 'NONE';
|
|
42
42
|
};
|
|
43
43
|
};
|
|
44
|
-
export type ScrollService = {
|
|
45
|
-
/**
|
|
46
|
-
* Add a function to the resize service. The key must be uniq.
|
|
47
|
-
*/
|
|
48
|
-
add: (key: string, callback: (props: ScrollServiceProps) => void) => void;
|
|
49
|
-
/**
|
|
50
|
-
* Get the current values of the resize service props.
|
|
51
|
-
*/
|
|
52
|
-
props: () => ScrollServiceProps;
|
|
53
|
-
};
|
package/services/scroll.js
CHANGED
|
@@ -1,112 +1,98 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import debounce from '../utils/debounce.js';
|
|
4
|
-
|
|
1
|
+
import Service from "./Service.js";
|
|
2
|
+
import debounce from "../utils/debounce.js";
|
|
5
3
|
class Scroll extends Service {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
4
|
+
props = {
|
|
5
|
+
x: window.pageXOffset,
|
|
6
|
+
y: window.pageYOffset,
|
|
7
|
+
changed: {
|
|
8
|
+
x: false,
|
|
9
|
+
y: false
|
|
10
|
+
},
|
|
11
|
+
last: {
|
|
12
|
+
x: window.pageXOffset,
|
|
13
|
+
y: window.pageYOffset
|
|
14
|
+
},
|
|
15
|
+
delta: {
|
|
16
|
+
x: 0,
|
|
17
|
+
y: 0
|
|
18
|
+
},
|
|
19
|
+
max: {
|
|
20
|
+
x: (document.scrollingElement || document.body).scrollWidth - window.innerWidth,
|
|
21
|
+
y: (document.scrollingElement || document.body).scrollHeight - window.innerHeight
|
|
22
|
+
},
|
|
23
|
+
progress: {
|
|
24
|
+
x: 0,
|
|
25
|
+
y: 0
|
|
26
|
+
},
|
|
27
|
+
direction: {
|
|
28
|
+
x: "NONE",
|
|
29
|
+
y: "NONE"
|
|
30
|
+
}
|
|
31
|
+
};
|
|
18
32
|
init() {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
capture: true
|
|
22
|
-
});
|
|
33
|
+
this.updateProps();
|
|
34
|
+
document.addEventListener("scroll", this, { passive: true, capture: true });
|
|
23
35
|
return this;
|
|
24
36
|
}
|
|
25
|
-
|
|
26
37
|
get debouncedHandler() {
|
|
27
|
-
|
|
38
|
+
const debounced = debounce(() => {
|
|
39
|
+
this.updateProps();
|
|
28
40
|
this.trigger(this.props);
|
|
29
|
-
},
|
|
30
|
-
Object.defineProperty(this,
|
|
41
|
+
}, 100);
|
|
42
|
+
Object.defineProperty(this, "debouncedHandler", {
|
|
31
43
|
value: debounced
|
|
32
44
|
});
|
|
33
45
|
return debounced;
|
|
34
46
|
}
|
|
35
|
-
|
|
36
47
|
handleEvent() {
|
|
48
|
+
this.updateProps();
|
|
37
49
|
this.trigger(this.props);
|
|
38
50
|
this.debouncedHandler();
|
|
39
51
|
}
|
|
40
|
-
|
|
41
52
|
kill() {
|
|
42
|
-
document.removeEventListener(
|
|
53
|
+
document.removeEventListener("scroll", this);
|
|
43
54
|
return this;
|
|
44
55
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
if (window.pageYOffset !== this.y) {
|
|
51
|
-
this.y = window.pageYOffset;
|
|
56
|
+
updateProps() {
|
|
57
|
+
const yLast = this.props.y;
|
|
58
|
+
const xLast = this.props.x;
|
|
59
|
+
if (window.pageYOffset !== this.props.y) {
|
|
60
|
+
this.props.y = window.pageYOffset;
|
|
52
61
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
this.x = window.pageXOffset;
|
|
62
|
+
if (window.pageXOffset !== this.props.x) {
|
|
63
|
+
this.props.x = window.pageXOffset;
|
|
56
64
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
x: this.x - this.xLast,
|
|
71
|
-
y: this.y - this.yLast
|
|
72
|
-
},
|
|
73
|
-
progress: {
|
|
74
|
-
x: this.max.x === 0 ? 1 : this.x / this.max.x,
|
|
75
|
-
y: this.max.y === 0 ? 1 : this.y / this.max.y
|
|
76
|
-
},
|
|
77
|
-
direction: {
|
|
78
|
-
x: this.x > this.xLast ? 'RIGHT' : this.x < this.xLast ? 'LEFT' : 'NONE',
|
|
79
|
-
y: this.y > this.yLast ? 'DOWN' : this.y < this.yLast ? 'UP' : 'NONE'
|
|
80
|
-
},
|
|
81
|
-
max: this.max
|
|
82
|
-
};
|
|
65
|
+
this.props.changed.x = this.props.x !== xLast;
|
|
66
|
+
this.props.changed.y = this.props.y !== yLast;
|
|
67
|
+
this.props.last.x = xLast;
|
|
68
|
+
this.props.last.y = yLast;
|
|
69
|
+
this.props.delta.x = this.props.x - xLast;
|
|
70
|
+
this.props.delta.y = this.props.y - yLast;
|
|
71
|
+
this.props.max.x = (document.scrollingElement || document.body).scrollWidth - window.innerWidth;
|
|
72
|
+
this.props.max.y = (document.scrollingElement || document.body).scrollHeight - window.innerHeight;
|
|
73
|
+
this.props.progress.x = this.props.max.x === 0 ? 1 : this.props.x / this.props.max.x;
|
|
74
|
+
this.props.progress.y = this.props.max.y === 0 ? 1 : this.props.y / this.props.max.y;
|
|
75
|
+
this.props.direction.x = this.props.x > xLast ? "RIGHT" : this.props.x < xLast ? "LEFT" : "NONE";
|
|
76
|
+
this.props.direction.y = this.props.y > yLast ? "DOWN" : this.props.y < yLast ? "UP" : "NONE";
|
|
77
|
+
return this.props;
|
|
83
78
|
}
|
|
84
|
-
|
|
85
|
-
get max() {
|
|
86
|
-
return {
|
|
87
|
-
x: (document.scrollingElement || document.body).scrollWidth - window.innerWidth,
|
|
88
|
-
y: (document.scrollingElement || document.body).scrollHeight - window.innerHeight
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
|
|
92
79
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
80
|
+
let instance;
|
|
81
|
+
let scroll;
|
|
82
|
+
function useScroll() {
|
|
96
83
|
if (!scroll) {
|
|
97
|
-
|
|
84
|
+
if (!instance) {
|
|
85
|
+
instance = new Scroll();
|
|
86
|
+
}
|
|
87
|
+
scroll = {
|
|
88
|
+
add: instance.add.bind(instance),
|
|
89
|
+
remove: instance.remove.bind(instance),
|
|
90
|
+
has: instance.has.bind(instance),
|
|
91
|
+
props: instance.updateProps.bind(instance)
|
|
92
|
+
};
|
|
98
93
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
var props = () => scroll.props;
|
|
105
|
-
|
|
106
|
-
return {
|
|
107
|
-
add,
|
|
108
|
-
remove,
|
|
109
|
-
has,
|
|
110
|
-
props
|
|
111
|
-
};
|
|
112
|
-
}
|
|
94
|
+
return scroll;
|
|
95
|
+
}
|
|
96
|
+
export {
|
|
97
|
+
useScroll as default
|
|
98
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __reExport = (target, module2, copyDefault, desc) => {
|
|
11
|
+
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(module2))
|
|
13
|
+
if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
|
|
14
|
+
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return target;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = /* @__PURE__ */ ((cache) => {
|
|
19
|
+
return (module2, temp) => {
|
|
20
|
+
return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
|
|
21
|
+
};
|
|
22
|
+
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
|
|
23
|
+
|
|
24
|
+
// packages/js-toolkit/utils/collide/boundingRectToCircle.js
|
|
25
|
+
var boundingRectToCircle_exports = {};
|
|
26
|
+
__export(boundingRectToCircle_exports, {
|
|
27
|
+
default: () => boundingRectToCircle
|
|
28
|
+
});
|
|
29
|
+
function boundingRectToCircle({ x, y, width, height }, force = false) {
|
|
30
|
+
if (width !== height && !force)
|
|
31
|
+
throw new Error("Initial DOMElement is not a square. Please use the force mode.");
|
|
32
|
+
return {
|
|
33
|
+
x: x + width / 2,
|
|
34
|
+
y: y + height / 2,
|
|
35
|
+
radius: (width + height) / 4
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
module.exports = __toCommonJS(boundingRectToCircle_exports);
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* @param {Boolean} force Force usage of non-square DOMElements
|
|
12
12
|
* @return {Circle} Circle object that can be used in collides functions
|
|
13
13
|
*/
|
|
14
|
-
export default function
|
|
14
|
+
export default function boundingRectToCircle({ x, y, width, height }: Partial<DOMRect>, force?: boolean): Circle;
|
|
15
15
|
export type Circle = {
|
|
16
16
|
/**
|
|
17
17
|
* Circle's x position
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
y,
|
|
5
|
-
width,
|
|
6
|
-
height
|
|
7
|
-
} = _ref;
|
|
8
|
-
var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
9
|
-
if (width !== height && !force) throw new Error('Initial DOMElement is not a square. Please use the force mode.');
|
|
1
|
+
function boundingRectToCircle({ x, y, width, height }, force = false) {
|
|
2
|
+
if (width !== height && !force)
|
|
3
|
+
throw new Error("Initial DOMElement is not a square. Please use the force mode.");
|
|
10
4
|
return {
|
|
11
5
|
x: x + width / 2,
|
|
12
6
|
y: y + height / 2,
|
|
13
7
|
radius: (width + height) / 4
|
|
14
8
|
};
|
|
15
|
-
}
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
boundingRectToCircle as default
|
|
12
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __reExport = (target, module2, copyDefault, desc) => {
|
|
11
|
+
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(module2))
|
|
13
|
+
if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
|
|
14
|
+
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return target;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = /* @__PURE__ */ ((cache) => {
|
|
19
|
+
return (module2, temp) => {
|
|
20
|
+
return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
|
|
21
|
+
};
|
|
22
|
+
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
|
|
23
|
+
|
|
24
|
+
// packages/js-toolkit/utils/collide/collideCircleCircle.js
|
|
25
|
+
var collideCircleCircle_exports = {};
|
|
26
|
+
__export(collideCircleCircle_exports, {
|
|
27
|
+
default: () => collideCircleCircle
|
|
28
|
+
});
|
|
29
|
+
function collideCircleCircle(circle1, circle2) {
|
|
30
|
+
const distX = circle1.x - circle2.x;
|
|
31
|
+
const distY = circle1.y - circle2.y;
|
|
32
|
+
const distance = Math.sqrt(distX * distX + distY * distY);
|
|
33
|
+
if (distance <= circle1.radius + circle2.radius) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
module.exports = __toCommonJS(collideCircleCircle_exports);
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
function collideCircleCircle(circle1, circle2) {
|
|
2
|
+
const distX = circle1.x - circle2.x;
|
|
3
|
+
const distY = circle1.y - circle2.y;
|
|
4
|
+
const distance = Math.sqrt(distX * distX + distY * distY);
|
|
6
5
|
if (distance <= circle1.radius + circle2.radius) {
|
|
7
6
|
return true;
|
|
8
7
|
}
|
|
9
|
-
|
|
10
8
|
return false;
|
|
11
|
-
}
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
collideCircleCircle as default
|
|
12
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __reExport = (target, module2, copyDefault, desc) => {
|
|
11
|
+
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(module2))
|
|
13
|
+
if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
|
|
14
|
+
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return target;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = /* @__PURE__ */ ((cache) => {
|
|
19
|
+
return (module2, temp) => {
|
|
20
|
+
return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
|
|
21
|
+
};
|
|
22
|
+
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
|
|
23
|
+
|
|
24
|
+
// packages/js-toolkit/utils/collide/collideCircleRect.js
|
|
25
|
+
var collideCircleRect_exports = {};
|
|
26
|
+
__export(collideCircleRect_exports, {
|
|
27
|
+
default: () => collideCircleRect
|
|
28
|
+
});
|
|
29
|
+
function collideCircleRect(circle, rect) {
|
|
30
|
+
let testX = circle.x;
|
|
31
|
+
let testY = circle.y;
|
|
32
|
+
if (circle.x < rect.x) {
|
|
33
|
+
testX = rect.x;
|
|
34
|
+
} else if (circle.x > rect.x + rect.width) {
|
|
35
|
+
testX = rect.x + rect.width;
|
|
36
|
+
}
|
|
37
|
+
if (circle.y < rect.y) {
|
|
38
|
+
testY = rect.y;
|
|
39
|
+
} else if (circle.y > rect.y + rect.height) {
|
|
40
|
+
testY = rect.y + rect.height;
|
|
41
|
+
}
|
|
42
|
+
const distX = circle.x - testX;
|
|
43
|
+
const distY = circle.y - testY;
|
|
44
|
+
const distance = Math.sqrt(distX * distX + distY * distY);
|
|
45
|
+
if (distance <= circle.radius) {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
module.exports = __toCommonJS(collideCircleRect_exports);
|