@studiometa/js-toolkit 2.0.0-beta.0 → 2.0.0-beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/Base/index.cjs +287 -0
  2. package/Base/index.d.ts +27 -1
  3. package/Base/index.js +149 -179
  4. package/Base/managers/ChildrenManager.cjs +122 -0
  5. package/Base/managers/ChildrenManager.js +29 -55
  6. package/Base/managers/EventsManager.cjs +182 -0
  7. package/Base/managers/EventsManager.d.ts +3 -1
  8. package/Base/managers/EventsManager.js +85 -127
  9. package/Base/managers/OptionsManager.cjs +167 -0
  10. package/Base/managers/OptionsManager.d.ts +2 -0
  11. package/Base/managers/OptionsManager.js +46 -88
  12. package/Base/managers/RefsManager.cjs +96 -0
  13. package/Base/managers/RefsManager.d.ts +2 -0
  14. package/Base/managers/RefsManager.js +24 -35
  15. package/Base/managers/ServicesManager.cjs +130 -0
  16. package/Base/managers/ServicesManager.d.ts +29 -4
  17. package/Base/managers/ServicesManager.js +33 -63
  18. package/Base/utils.cjs +43 -0
  19. package/Base/utils.js +12 -11
  20. package/README.md +13 -70
  21. package/decorators/index.cjs +47 -0
  22. package/decorators/index.d.ts +8 -9
  23. package/decorators/index.js +18 -9
  24. package/decorators/withBreakpointManager.cjs +89 -0
  25. package/decorators/withBreakpointManager.js +18 -39
  26. package/decorators/withBreakpointObserver.cjs +114 -0
  27. package/decorators/withBreakpointObserver.js +40 -88
  28. package/decorators/withDrag.cjs +52 -0
  29. package/decorators/withDrag.js +16 -18
  30. package/decorators/withExtraConfig.cjs +42 -0
  31. package/decorators/withExtraConfig.js +11 -12
  32. package/decorators/withIntersectionObserver.cjs +59 -0
  33. package/decorators/withIntersectionObserver.js +23 -31
  34. package/decorators/withMountWhenInView.cjs +66 -0
  35. package/decorators/withMountWhenInView.js +31 -55
  36. package/decorators/withScrolledInView.cjs +110 -0
  37. package/decorators/withScrolledInView.d.ts +4 -1
  38. package/decorators/withScrolledInView.js +77 -73
  39. package/decorators/withVue2.cjs +58 -0
  40. package/decorators/withVue2.js +21 -32
  41. package/helpers/createApp.cjs +54 -0
  42. package/helpers/createApp.js +12 -12
  43. package/helpers/importOnInteraction.cjs +54 -0
  44. package/helpers/importOnInteraction.js +17 -18
  45. package/helpers/importWhenIdle.cjs +50 -0
  46. package/helpers/importWhenIdle.js +13 -17
  47. package/helpers/importWhenVisible.cjs +52 -0
  48. package/helpers/importWhenVisible.js +16 -18
  49. package/helpers/index.cjs +39 -0
  50. package/helpers/index.d.ts +4 -5
  51. package/helpers/index.js +10 -5
  52. package/helpers/utils.cjs +37 -0
  53. package/helpers/utils.js +7 -6
  54. package/index.cjs +36 -0
  55. package/index.d.ts +4 -21
  56. package/index.js +7 -5
  57. package/package.json +14 -3
  58. package/services/Service.cjs +73 -0
  59. package/services/Service.d.ts +22 -17
  60. package/services/Service.js +14 -28
  61. package/services/drag.cjs +192 -0
  62. package/services/drag.d.ts +4 -18
  63. package/services/drag.js +103 -156
  64. package/services/index.cjs +45 -0
  65. package/services/index.d.ts +13 -10
  66. package/services/index.js +16 -8
  67. package/services/key.cjs +99 -0
  68. package/services/key.d.ts +4 -13
  69. package/services/key.js +58 -77
  70. package/services/load.cjs +68 -0
  71. package/services/load.d.ts +3 -13
  72. package/services/load.js +31 -36
  73. package/services/pointer.cjs +157 -0
  74. package/services/pointer.d.ts +4 -13
  75. package/services/pointer.js +91 -121
  76. package/services/raf.cjs +79 -0
  77. package/services/raf.d.ts +3 -13
  78. package/services/raf.js +32 -52
  79. package/services/resize.cjs +104 -0
  80. package/services/resize.d.ts +3 -13
  81. package/services/resize.js +52 -52
  82. package/services/scroll.cjs +127 -0
  83. package/services/scroll.d.ts +3 -13
  84. package/services/scroll.js +75 -89
  85. package/utils/collide/boundingRectToCircle.cjs +36 -0
  86. package/utils/collide/boundingRectToCircle.d.ts +1 -1
  87. package/utils/collide/boundingRectToCircle.js +7 -10
  88. package/utils/collide/collideCircleCircle.cjs +36 -0
  89. package/utils/collide/collideCircleCircle.js +8 -7
  90. package/utils/collide/collideCircleRect.cjs +48 -0
  91. package/utils/collide/collideCircleRect.js +10 -12
  92. package/utils/collide/collidePointCircle.cjs +33 -0
  93. package/utils/collide/collidePointCircle.js +8 -5
  94. package/utils/collide/collidePointRect.cjs +30 -0
  95. package/utils/collide/collidePointRect.js +5 -2
  96. package/utils/collide/collideRectRect.cjs +30 -0
  97. package/utils/collide/collideRectRect.js +5 -2
  98. package/utils/collide/index.cjs +43 -0
  99. package/utils/collide/index.d.ts +6 -7
  100. package/utils/collide/index.js +14 -7
  101. package/utils/css/classes.cjs +46 -0
  102. package/utils/css/classes.js +13 -12
  103. package/utils/css/index.cjs +39 -0
  104. package/utils/css/index.d.ts +4 -5
  105. package/utils/css/index.js +10 -5
  106. package/utils/css/matrix.cjs +31 -0
  107. package/utils/css/matrix.js +6 -5
  108. package/utils/css/styles.cjs +49 -0
  109. package/utils/css/styles.js +13 -12
  110. package/utils/css/transition.cjs +119 -0
  111. package/utils/css/transition.js +62 -117
  112. package/utils/debounce.cjs +36 -0
  113. package/utils/debounce.js +7 -9
  114. package/utils/focusTrap.cjs +86 -0
  115. package/utils/focusTrap.js +30 -21
  116. package/utils/history.cjs +93 -0
  117. package/utils/history.js +28 -57
  118. package/utils/index.cjs +55 -0
  119. package/utils/index.d.ts +12 -35
  120. package/utils/index.js +30 -17
  121. package/utils/keyCodes.cjs +37 -0
  122. package/utils/keyCodes.js +5 -2
  123. package/utils/math/clamp.cjs +30 -0
  124. package/utils/math/clamp.js +5 -2
  125. package/utils/math/clamp01.cjs +36 -0
  126. package/utils/math/clamp01.js +6 -3
  127. package/utils/math/damp.cjs +30 -0
  128. package/utils/math/damp.js +5 -4
  129. package/utils/math/ease.cjs +90 -0
  130. package/utils/math/ease.d.ts +78 -0
  131. package/utils/math/ease.js +66 -0
  132. package/utils/math/index.cjs +46 -0
  133. package/utils/math/index.d.ts +8 -8
  134. package/utils/math/index.js +17 -8
  135. package/utils/math/inertiaFinalValue.cjs +39 -0
  136. package/utils/math/inertiaFinalValue.js +8 -10
  137. package/utils/math/lerp.cjs +30 -0
  138. package/utils/math/lerp.js +5 -2
  139. package/utils/math/map.cjs +30 -0
  140. package/utils/math/map.js +5 -2
  141. package/utils/math/round.cjs +30 -0
  142. package/utils/math/round.js +5 -3
  143. package/utils/memoize.cjs +45 -0
  144. package/utils/memoize.js +10 -19
  145. package/utils/nextFrame.cjs +42 -0
  146. package/utils/nextFrame.js +14 -9
  147. package/utils/object/autoBind.cjs +53 -0
  148. package/utils/object/autoBind.js +12 -22
  149. package/utils/object/getAllProperties.cjs +39 -0
  150. package/utils/object/getAllProperties.js +11 -14
  151. package/utils/object/index.cjs +37 -0
  152. package/utils/object/index.d.ts +3 -4
  153. package/utils/object/index.js +8 -4
  154. package/utils/object/isObject.cjs +30 -0
  155. package/utils/object/isObject.js +6 -3
  156. package/utils/scrollTo.cjs +84 -0
  157. package/utils/scrollTo.js +20 -40
  158. package/utils/string/index.cjs +51 -0
  159. package/utils/string/index.d.ts +10 -11
  160. package/utils/string/index.js +22 -11
  161. package/utils/string/withLeadingCharacters.cjs +36 -0
  162. package/utils/string/withLeadingCharacters.js +7 -4
  163. package/utils/string/withLeadingSlash.cjs +36 -0
  164. package/utils/string/withLeadingSlash.js +7 -4
  165. package/utils/string/withTrailingCharacters.cjs +36 -0
  166. package/utils/string/withTrailingCharacters.js +7 -4
  167. package/utils/string/withTrailingSlash.cjs +36 -0
  168. package/utils/string/withTrailingSlash.js +7 -4
  169. package/utils/string/withoutLeadingCharacters.cjs +30 -0
  170. package/utils/string/withoutLeadingCharacters.js +6 -3
  171. package/utils/string/withoutLeadingCharactersRecursive.cjs +41 -0
  172. package/utils/string/withoutLeadingCharactersRecursive.js +8 -7
  173. package/utils/string/withoutLeadingSlash.cjs +36 -0
  174. package/utils/string/withoutLeadingSlash.js +7 -4
  175. package/utils/string/withoutTrailingCharacters.cjs +30 -0
  176. package/utils/string/withoutTrailingCharacters.js +6 -3
  177. package/utils/string/withoutTrailingCharactersRecursive.cjs +41 -0
  178. package/utils/string/withoutTrailingCharactersRecursive.js +8 -7
  179. package/utils/string/withoutTrailingSlash.cjs +36 -0
  180. package/utils/string/withoutTrailingSlash.js +7 -4
  181. package/utils/throttle.cjs +38 -0
  182. package/utils/throttle.js +9 -9
  183. package/index.modern.js +0 -1
  184. package/index.umd.js +0 -1
package/services/key.js CHANGED
@@ -1,89 +1,70 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
-
3
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
4
-
5
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6
-
7
- import Service from './Service.js';
8
- import keyCodes from '../utils/keyCodes.js';
9
-
1
+ import Service from "./Service.js";
2
+ import keyCodes from "../utils/keyCodes.js";
10
3
  class Key extends Service {
11
- constructor() {
12
- super(...arguments);
13
-
14
- _defineProperty(this, "event", {});
15
-
16
- _defineProperty(this, "triggered", 0);
17
-
18
- _defineProperty(this, "previousEvent", {});
19
- }
20
-
4
+ previousEvent;
5
+ props = {
6
+ event: null,
7
+ triggered: 0,
8
+ isUp: false,
9
+ isDown: false,
10
+ ENTER: false,
11
+ SPACE: false,
12
+ TAB: false,
13
+ ESC: false,
14
+ LEFT: false,
15
+ UP: false,
16
+ RIGHT: false,
17
+ DOWN: false,
18
+ direction: "none"
19
+ };
21
20
  init() {
22
- this.handler = event => {
23
- this.event = event;
24
- this.trigger(this.props);
25
- };
26
-
27
- document.addEventListener('keydown', this.handler, {
28
- passive: false
29
- });
30
- document.addEventListener('keyup', this.handler, {
31
- passive: false
32
- });
33
- return this;
21
+ document.addEventListener("keydown", this);
22
+ document.addEventListener("keyup", this);
23
+ }
24
+ handleEvent(event) {
25
+ this.updateProps(event);
26
+ this.trigger(this.props);
34
27
  }
35
-
36
28
  kill() {
37
- document.removeEventListener('keydown', this.handler);
38
- document.removeEventListener('keyup', this.handler);
39
- return this;
29
+ document.removeEventListener("keydown", this);
30
+ document.removeEventListener("keyup", this);
40
31
  }
41
-
42
- get props() {
43
- var keys = Object.entries(keyCodes).reduce((acc, _ref) => {
44
- var [name, code] = _ref;
45
- acc[name] = code === this.event.keyCode;
46
- return acc;
47
- }, {});
48
-
49
- if (!this.previousEvent.type) {
50
- this.triggered = 0;
32
+ updateProps(event) {
33
+ this.props.event = event;
34
+ Object.entries(keyCodes).forEach(([name, code]) => {
35
+ this.props[name] = code === event.keyCode;
36
+ });
37
+ if (!this.previousEvent) {
38
+ this.props.triggered = 0;
51
39
  }
52
-
53
- if (this.event.type === 'keydown' && this.previousEvent.type === 'keydown') {
54
- this.triggered += 1;
40
+ if (this.props.event.type === "keydown" && this.previousEvent?.type === "keydown") {
41
+ this.props.triggered += 1;
55
42
  } else {
56
- this.triggered = 1;
43
+ this.props.triggered = 1;
57
44
  }
58
-
59
- this.previousEvent = this.event;
60
- return _objectSpread({
61
- event: this.event,
62
- triggered: this.triggered,
63
- direction: this.event.type === 'keydown' ? 'down' : 'up',
64
- isUp: this.event.type === 'keyup',
65
- isDown: this.event.type === 'keydown'
66
- }, keys);
45
+ this.previousEvent = this.props.event;
46
+ this.props.direction = this.props.event.type === "keydown" ? "down" : "up";
47
+ this.props.isUp = this.props.event.type === "keyup";
48
+ this.props.isDown = this.props.event.type === "keydown";
49
+ return this.props;
67
50
  }
68
-
69
51
  }
70
-
71
- var key = null;
72
- export default function useKey() {
52
+ let instance;
53
+ let key;
54
+ function useKey() {
73
55
  if (!key) {
74
- key = new Key();
56
+ if (!instance) {
57
+ instance = new Key();
58
+ }
59
+ key = {
60
+ add: instance.add.bind(instance),
61
+ remove: instance.remove.bind(instance),
62
+ has: instance.has.bind(instance),
63
+ props: instance.updateProps.bind(instance)
64
+ };
75
65
  }
76
-
77
- var add = key.add.bind(key);
78
- var remove = key.remove.bind(key);
79
- var has = key.has.bind(key);
80
-
81
- var props = () => key.props;
82
-
83
- return {
84
- add,
85
- remove,
86
- has,
87
- props
88
- };
89
- }
66
+ return key;
67
+ }
68
+ export {
69
+ useKey as default
70
+ };
@@ -0,0 +1,68 @@
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
+ var load_exports = {};
29
+ __export(load_exports, {
30
+ default: () => useLoad
31
+ });
32
+ var import_Service = __toESM(require("./Service.js"), 1);
33
+ class Load extends import_Service.default {
34
+ props = {
35
+ time: window.performance.now()
36
+ };
37
+ init() {
38
+ window.addEventListener("load", this);
39
+ }
40
+ handleEvent() {
41
+ this.updateProps();
42
+ this.trigger(this.props);
43
+ }
44
+ kill() {
45
+ window.removeEventListener("load", this);
46
+ }
47
+ updateProps() {
48
+ this.props.time = window.performance.now();
49
+ return this.props;
50
+ }
51
+ }
52
+ let instance;
53
+ let load;
54
+ function useLoad() {
55
+ if (!load) {
56
+ if (!instance) {
57
+ instance = new Load();
58
+ }
59
+ load = {
60
+ add: instance.add.bind(instance),
61
+ remove: instance.remove.bind(instance),
62
+ has: instance.has.bind(instance),
63
+ props: instance.updateProps.bind(instance)
64
+ };
65
+ }
66
+ return load;
67
+ }
68
+ module.exports = __toCommonJS(load_exports);
@@ -9,20 +9,10 @@
9
9
  * props();
10
10
  * ```
11
11
  *
12
- * @return {ServiceInterface & LoadService}
12
+ * @return {LoadService}
13
13
  */
14
- export default function useLoad(): ServiceInterface & LoadService;
15
- export type ServiceInterface = import('./index').ServiceInterface;
14
+ export default function useLoad(): LoadService;
15
+ export type LoadService = import('./index').ServiceInterface<LoadServiceProps>;
16
16
  export type LoadServiceProps = {
17
17
  time: DOMHighResTimeStamp;
18
18
  };
19
- export type LoadService = {
20
- /**
21
- * Add a function to the resize service. The key must be uniq.
22
- */
23
- add: (key: string, callback: (props: LoadServiceProps) => void) => void;
24
- /**
25
- * Get the current values of the resize service props.
26
- */
27
- props: () => LoadServiceProps;
28
- };
package/services/load.js CHANGED
@@ -1,44 +1,39 @@
1
- import Service from './Service.js';
2
-
1
+ import Service from "./Service.js";
3
2
  class Load extends Service {
3
+ props = {
4
+ time: window.performance.now()
5
+ };
4
6
  init() {
5
- this.handler = () => {
6
- this.trigger(this.props);
7
- };
8
-
9
- window.addEventListener('load', this.handler);
10
- return this;
7
+ window.addEventListener("load", this);
8
+ }
9
+ handleEvent() {
10
+ this.updateProps();
11
+ this.trigger(this.props);
11
12
  }
12
-
13
13
  kill() {
14
- window.removeEventListener('load', this.handler);
15
- return this;
14
+ window.removeEventListener("load", this);
16
15
  }
17
-
18
- get props() {
19
- return {};
16
+ updateProps() {
17
+ this.props.time = window.performance.now();
18
+ return this.props;
20
19
  }
21
-
22
20
  }
23
-
24
- var instance = null;
25
- export default function useLoad() {
26
- if (!instance) {
27
- instance = new Load();
28
- }
29
-
30
- var add = instance.add.bind(instance);
31
- var remove = instance.remove.bind(instance);
32
- var has = instance.has.bind(instance);
33
-
34
- function props() {
35
- return instance.props;
21
+ let instance;
22
+ let load;
23
+ function useLoad() {
24
+ if (!load) {
25
+ if (!instance) {
26
+ instance = new Load();
27
+ }
28
+ load = {
29
+ add: instance.add.bind(instance),
30
+ remove: instance.remove.bind(instance),
31
+ has: instance.has.bind(instance),
32
+ props: instance.updateProps.bind(instance)
33
+ };
36
34
  }
37
-
38
- return {
39
- add,
40
- remove,
41
- has,
42
- props
43
- };
44
- }
35
+ return load;
36
+ }
37
+ export {
38
+ useLoad as default
39
+ };
@@ -0,0 +1,157 @@
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
+ var pointer_exports = {};
29
+ __export(pointer_exports, {
30
+ default: () => usePointer
31
+ });
32
+ var import_Service = __toESM(require("./Service.js"), 1);
33
+ function isTouchEvent(event) {
34
+ return typeof TouchEvent !== "undefined" && event instanceof TouchEvent;
35
+ }
36
+ class Pointer extends import_Service.default {
37
+ props = {
38
+ event: null,
39
+ isDown: false,
40
+ x: window.innerWidth / 2,
41
+ y: window.innerHeight / 2,
42
+ changed: {
43
+ x: false,
44
+ y: false
45
+ },
46
+ last: {
47
+ x: window.innerWidth / 2,
48
+ y: window.innerHeight / 2
49
+ },
50
+ delta: {
51
+ x: 0,
52
+ y: 0
53
+ },
54
+ progress: {
55
+ x: 0.5,
56
+ y: 0.5
57
+ },
58
+ max: {
59
+ x: window.innerWidth,
60
+ y: window.innerHeight
61
+ }
62
+ };
63
+ hasRaf = false;
64
+ init() {
65
+ document.documentElement.addEventListener("mouseenter", this, {
66
+ once: true,
67
+ capture: true
68
+ });
69
+ const options = { passive: true, capture: true };
70
+ document.addEventListener("mousemove", this, options);
71
+ document.addEventListener("touchmove", this, options);
72
+ document.addEventListener("mousedown", this, options);
73
+ document.addEventListener("touchstart", this, options);
74
+ document.addEventListener("mouseup", this, options);
75
+ document.addEventListener("touchend", this, options);
76
+ return this;
77
+ }
78
+ handleEvent(event) {
79
+ switch (event.type) {
80
+ case "mouseenter":
81
+ case "mousemove":
82
+ case "touchmove":
83
+ this.handler(event);
84
+ break;
85
+ case "mousedown":
86
+ case "touchstart":
87
+ this.downHandler();
88
+ break;
89
+ case "mouseup":
90
+ case "touchend":
91
+ this.upHandler();
92
+ break;
93
+ }
94
+ }
95
+ kill() {
96
+ document.removeEventListener("mousemove", this);
97
+ document.removeEventListener("touchmove", this);
98
+ document.removeEventListener("mousedown", this);
99
+ document.removeEventListener("touchstart", this);
100
+ document.removeEventListener("mouseup", this);
101
+ document.removeEventListener("touchend", this);
102
+ return this;
103
+ }
104
+ handler(event) {
105
+ this.updateProps(event);
106
+ this.trigger(this.props);
107
+ }
108
+ downHandler() {
109
+ this.props.isDown = true;
110
+ this.trigger(this.props);
111
+ }
112
+ upHandler() {
113
+ this.props.isDown = false;
114
+ this.trigger(this.props);
115
+ }
116
+ updateProps(event) {
117
+ this.props.event = event;
118
+ const yLast = this.props.y;
119
+ const xLast = this.props.x;
120
+ const y = isTouchEvent(event) ? event.touches[0]?.clientY : event.clientY;
121
+ if (y !== this.props.y) {
122
+ this.props.y = y;
123
+ }
124
+ const x = isTouchEvent(event) ? event.touches[0]?.clientX : event.clientX;
125
+ if (x !== this.props.x) {
126
+ this.props.x = x;
127
+ }
128
+ this.props.changed.x = this.props.x !== xLast;
129
+ this.props.changed.y = this.props.y !== yLast;
130
+ this.props.last.x = xLast;
131
+ this.props.last.y = yLast;
132
+ this.props.delta.x = this.props.x - xLast;
133
+ this.props.delta.y = this.props.y - yLast;
134
+ this.props.max.x = window.innerWidth;
135
+ this.props.max.y = window.innerHeight;
136
+ this.props.progress.x = this.props.x / this.props.max.x;
137
+ this.props.progress.y = this.props.y / this.props.max.y;
138
+ return this.props;
139
+ }
140
+ }
141
+ let instance;
142
+ let pointer;
143
+ function usePointer() {
144
+ if (!pointer) {
145
+ if (!instance) {
146
+ instance = new Pointer();
147
+ }
148
+ pointer = {
149
+ add: instance.add.bind(instance),
150
+ remove: instance.remove.bind(instance),
151
+ has: instance.has.bind(instance),
152
+ props: instance.updateProps.bind(instance)
153
+ };
154
+ }
155
+ return pointer;
156
+ }
157
+ module.exports = __toCommonJS(pointer_exports);
@@ -9,10 +9,11 @@
9
9
  * props();
10
10
  * ```
11
11
  *
12
- * @return {ServiceInterface & PointerService}
12
+ * @todo Add element as parameter to get the pointer position relatively from.
13
+ * @return {PointerService}
13
14
  */
14
- export default function usePointer(): ServiceInterface & PointerService;
15
- export type ServiceInterface = import('./index').ServiceInterface;
15
+ export default function usePointer(): PointerService;
16
+ export type PointerService = import('./index').ServiceInterface<PointerServiceProps>;
16
17
  export type PointerServiceProps = {
17
18
  event: MouseEvent | TouchEvent;
18
19
  isDown: boolean;
@@ -39,13 +40,3 @@ export type PointerServiceProps = {
39
40
  y: number;
40
41
  };
41
42
  };
42
- export type PointerService = {
43
- /**
44
- * Add a function to the resize service. The key must be uniq.
45
- */
46
- add: (key: string, callback: (props: PointerServiceProps) => void) => void;
47
- /**
48
- * Get the current values of the resize service props.
49
- */
50
- props: () => PointerServiceProps;
51
- };