@studiometa/js-toolkit 2.0.0-alpha.1 → 2.0.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/Base/index.d.ts +29 -47
  2. package/Base/index.js +144 -171
  3. package/Base/managers/ChildrenManager.d.ts +6 -6
  4. package/Base/managers/ChildrenManager.js +95 -119
  5. package/Base/managers/EventsManager.d.ts +9 -9
  6. package/Base/managers/EventsManager.js +128 -161
  7. package/Base/managers/OptionsManager.d.ts +50 -5
  8. package/Base/managers/OptionsManager.js +115 -116
  9. package/Base/managers/RefsManager.js +62 -73
  10. package/Base/managers/ServicesManager.d.ts +14 -3
  11. package/Base/managers/ServicesManager.js +78 -77
  12. package/Base/utils.js +5 -8
  13. package/README.md +12 -70
  14. package/decorators/index.js +1 -2
  15. package/decorators/withBreakpointManager.d.ts +4 -4
  16. package/decorators/withBreakpointManager.js +37 -75
  17. package/decorators/withBreakpointObserver.d.ts +2 -2
  18. package/decorators/withBreakpointObserver.js +54 -77
  19. package/decorators/withDrag.d.ts +3 -3
  20. package/decorators/withDrag.js +17 -41
  21. package/decorators/withExtraConfig.d.ts +3 -3
  22. package/decorators/withExtraConfig.js +2 -24
  23. package/decorators/withIntersectionObserver.d.ts +2 -2
  24. package/decorators/withIntersectionObserver.js +17 -56
  25. package/decorators/withMountWhenInView.d.ts +3 -3
  26. package/decorators/withMountWhenInView.js +23 -51
  27. package/helpers/createApp.d.ts +3 -3
  28. package/helpers/createApp.js +10 -12
  29. package/helpers/importOnInteraction.d.ts +3 -3
  30. package/helpers/importOnInteraction.js +7 -8
  31. package/helpers/importWhenIdle.d.ts +3 -3
  32. package/helpers/importWhenIdle.js +7 -8
  33. package/helpers/importWhenVisible.d.ts +3 -3
  34. package/helpers/importWhenVisible.js +9 -16
  35. package/helpers/index.d.ts +1 -3
  36. package/helpers/index.js +1 -4
  37. package/helpers/utils.js +1 -2
  38. package/index.d.ts +14 -4
  39. package/index.js +4 -4
  40. package/index.modern.js +1 -2
  41. package/index.umd.js +1 -2
  42. package/package.json +4 -6
  43. package/services/Service.js +48 -67
  44. package/services/drag.js +143 -179
  45. package/services/index.js +1 -2
  46. package/services/key.js +55 -97
  47. package/services/load.d.ts +1 -1
  48. package/services/load.js +21 -50
  49. package/services/pointer.js +117 -156
  50. package/services/raf.js +36 -64
  51. package/services/resize.js +47 -86
  52. package/services/scroll.js +81 -120
  53. package/utils/collide/boundingRectToCircle.js +7 -6
  54. package/utils/collide/collideCircleCircle.js +1 -2
  55. package/utils/collide/collideCircleRect.js +1 -2
  56. package/utils/collide/collidePointCircle.js +1 -2
  57. package/utils/collide/collidePointRect.js +1 -2
  58. package/utils/collide/collideRectRect.js +1 -2
  59. package/utils/collide/index.js +1 -2
  60. package/utils/css/classes.js +2 -3
  61. package/utils/css/index.js +1 -2
  62. package/utils/css/matrix.js +1 -2
  63. package/utils/css/styles.js +3 -8
  64. package/utils/css/transition.js +67 -140
  65. package/utils/debounce.js +3 -4
  66. package/utils/focusTrap.js +4 -5
  67. package/utils/history.js +13 -20
  68. package/utils/index.d.ts +2 -1
  69. package/utils/index.js +2 -2
  70. package/utils/keyCodes.js +1 -2
  71. package/utils/math/clamp.js +1 -2
  72. package/utils/math/clamp01.js +1 -2
  73. package/utils/math/damp.js +1 -2
  74. package/utils/math/index.js +1 -2
  75. package/utils/math/inertiaFinalValue.js +1 -2
  76. package/utils/math/lerp.js +1 -2
  77. package/utils/math/map.js +1 -2
  78. package/utils/math/round.js +1 -2
  79. package/utils/memoize.d.ts +30 -0
  80. package/utils/memoize.js +30 -0
  81. package/utils/nextFrame.js +4 -9
  82. package/utils/object/autoBind.js +11 -19
  83. package/utils/object/getAllProperties.js +3 -11
  84. package/utils/object/index.js +1 -2
  85. package/utils/object/isObject.js +2 -4
  86. package/utils/string/index.js +1 -2
  87. package/utils/string/withLeadingCharacters.js +1 -2
  88. package/utils/string/withLeadingSlash.js +1 -2
  89. package/utils/string/withTrailingCharacters.js +1 -2
  90. package/utils/string/withTrailingSlash.js +1 -2
  91. package/utils/string/withoutLeadingCharacters.js +1 -2
  92. package/utils/string/withoutLeadingCharactersRecursive.js +1 -2
  93. package/utils/string/withoutLeadingSlash.js +1 -2
  94. package/utils/string/withoutTrailingCharacters.js +1 -2
  95. package/utils/string/withoutTrailingCharactersRecursive.js +1 -2
  96. package/utils/string/withoutTrailingSlash.js +1 -2
  97. package/utils/throttle.js +2 -3
  98. package/Base/index.js.map +0 -1
  99. package/Base/managers/ChildrenManager.js.map +0 -1
  100. package/Base/managers/EventsManager.js.map +0 -1
  101. package/Base/managers/OptionsManager.js.map +0 -1
  102. package/Base/managers/RefsManager.js.map +0 -1
  103. package/Base/managers/ServicesManager.js.map +0 -1
  104. package/Base/utils.js.map +0 -1
  105. package/components/Accordion/Accordion.d.ts +0 -83
  106. package/components/Accordion/Accordion.js +0 -121
  107. package/components/Accordion/Accordion.js.map +0 -1
  108. package/components/Accordion/AccordionItem.d.ts +0 -122
  109. package/components/Accordion/AccordionItem.js +0 -327
  110. package/components/Accordion/AccordionItem.js.map +0 -1
  111. package/components/Accordion/index.d.ts +0 -27
  112. package/components/Accordion/index.js +0 -39
  113. package/components/Accordion/index.js.map +0 -1
  114. package/components/Cursor.d.ts +0 -138
  115. package/components/Cursor.js +0 -167
  116. package/components/Cursor.js.map +0 -1
  117. package/components/Draggable.d.ts +0 -49
  118. package/components/Draggable.js +0 -77
  119. package/components/Draggable.js.map +0 -1
  120. package/components/Modal.d.ts +0 -158
  121. package/components/Modal.js +0 -270
  122. package/components/Modal.js.map +0 -1
  123. package/components/Tabs.d.ts +0 -108
  124. package/components/Tabs.js +0 -195
  125. package/components/Tabs.js.map +0 -1
  126. package/components/index.d.ts +0 -6
  127. package/components/index.js +0 -7
  128. package/components/index.js.map +0 -1
  129. package/decorators/index.js.map +0 -1
  130. package/decorators/withBreakpointManager.js.map +0 -1
  131. package/decorators/withBreakpointObserver.js.map +0 -1
  132. package/decorators/withDrag.js.map +0 -1
  133. package/decorators/withExtraConfig.js.map +0 -1
  134. package/decorators/withIntersectionObserver.js.map +0 -1
  135. package/decorators/withMountWhenInView.js.map +0 -1
  136. package/helpers/createApp.js.map +0 -1
  137. package/helpers/createBase.d.ts +0 -7
  138. package/helpers/createBase.js +0 -7
  139. package/helpers/createBase.js.map +0 -1
  140. package/helpers/defineComponent.d.ts +0 -11
  141. package/helpers/defineComponent.js +0 -68
  142. package/helpers/defineComponent.js.map +0 -1
  143. package/helpers/importOnInteraction.js.map +0 -1
  144. package/helpers/importWhenIdle.js.map +0 -1
  145. package/helpers/importWhenVisible.js.map +0 -1
  146. package/helpers/index.js.map +0 -1
  147. package/helpers/utils.js.map +0 -1
  148. package/index.js.map +0 -1
  149. package/index.modern.js.map +0 -1
  150. package/index.umd.js.map +0 -1
  151. package/services/Service.js.map +0 -1
  152. package/services/drag.js.map +0 -1
  153. package/services/index.js.map +0 -1
  154. package/services/key.js.map +0 -1
  155. package/services/load.js.map +0 -1
  156. package/services/pointer.js.map +0 -1
  157. package/services/raf.js.map +0 -1
  158. package/services/resize.js.map +0 -1
  159. package/services/scroll.js.map +0 -1
  160. package/utils/collide/boundingRectToCircle.js.map +0 -1
  161. package/utils/collide/collideCircleCircle.js.map +0 -1
  162. package/utils/collide/collideCircleRect.js.map +0 -1
  163. package/utils/collide/collidePointCircle.js.map +0 -1
  164. package/utils/collide/collidePointRect.js.map +0 -1
  165. package/utils/collide/collideRectRect.js.map +0 -1
  166. package/utils/collide/index.js.map +0 -1
  167. package/utils/css/classes.js.map +0 -1
  168. package/utils/css/index.js.map +0 -1
  169. package/utils/css/matrix.js.map +0 -1
  170. package/utils/css/styles.js.map +0 -1
  171. package/utils/css/transition.js.map +0 -1
  172. package/utils/debounce.js.map +0 -1
  173. package/utils/focusTrap.js.map +0 -1
  174. package/utils/history.js.map +0 -1
  175. package/utils/index.js.map +0 -1
  176. package/utils/keyCodes.js.map +0 -1
  177. package/utils/math/clamp.js.map +0 -1
  178. package/utils/math/clamp01.js.map +0 -1
  179. package/utils/math/damp.js.map +0 -1
  180. package/utils/math/index.js.map +0 -1
  181. package/utils/math/inertiaFinalValue.js.map +0 -1
  182. package/utils/math/lerp.js.map +0 -1
  183. package/utils/math/map.js.map +0 -1
  184. package/utils/math/round.js.map +0 -1
  185. package/utils/nextFrame.js.map +0 -1
  186. package/utils/object/autoBind.js.map +0 -1
  187. package/utils/object/getAllProperties.js.map +0 -1
  188. package/utils/object/index.js.map +0 -1
  189. package/utils/object/isObject.js.map +0 -1
  190. package/utils/string/index.js.map +0 -1
  191. package/utils/string/withLeadingCharacters.js.map +0 -1
  192. package/utils/string/withLeadingSlash.js.map +0 -1
  193. package/utils/string/withTrailingCharacters.js.map +0 -1
  194. package/utils/string/withTrailingSlash.js.map +0 -1
  195. package/utils/string/withoutLeadingCharacters.js.map +0 -1
  196. package/utils/string/withoutLeadingCharactersRecursive.js.map +0 -1
  197. package/utils/string/withoutLeadingSlash.js.map +0 -1
  198. package/utils/string/withoutTrailingCharacters.js.map +0 -1
  199. package/utils/string/withoutTrailingCharactersRecursive.js.map +0 -1
  200. package/utils/string/withoutTrailingSlash.js.map +0 -1
  201. package/utils/throttle.js.map +0 -1
@@ -3,7 +3,7 @@ export default function createApp(App, rootElement) {
3
3
  var app;
4
4
 
5
5
  if (!isLoaded) {
6
- document.addEventListener('readystatechange', function () {
6
+ document.addEventListener('readystatechange', () => {
7
7
  if (document.readyState === 'complete') {
8
8
  app = new App(rootElement).$mount();
9
9
  isLoaded = true;
@@ -13,20 +13,18 @@ export default function createApp(App, rootElement) {
13
13
  app = new App(rootElement).$mount();
14
14
  }
15
15
 
16
+ var promise = new Promise(resolve => {
17
+ document.addEventListener('readystatechange', () => {
18
+ if (document.readyState === 'complete') {
19
+ setTimeout(() => resolve(app), 0);
20
+ }
21
+ });
22
+ });
16
23
  return function useApp() {
17
24
  if (isLoaded) {
18
25
  return Promise.resolve(app);
19
26
  }
20
27
 
21
- return new Promise(function (resolve) {
22
- document.addEventListener('readystatechange', function () {
23
- if (document.readyState === 'complete') {
24
- setTimeout(function () {
25
- return resolve(app);
26
- }, 0);
27
- }
28
- });
29
- });
28
+ return promise;
30
29
  };
31
- }
32
- //# sourceMappingURL=createApp.js.map
30
+ }
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @typedef {import('../Base/index.js').BaseComponent} BaseComponent
2
+ * @typedef {import('../Base/index.js').BaseConstructor} BaseConstructor
3
3
  * @typedef {import('../Base/index.js').default} Base
4
4
  */
5
5
  /**
6
6
  * Import a component on an interaction.
7
7
  *
8
- * @template {BaseComponent} T
8
+ * @template {BaseConstructor} T
9
9
  *
10
10
  * @param {() => Promise<T|{default:T}>} fn
11
11
  * The import function.
@@ -21,5 +21,5 @@
21
21
  export default function importOnInteraction<T extends typeof import("../Base/index.js").default>(fn: () => Promise<T | {
22
22
  default: T;
23
23
  }>, nameOrSelectorOrElement: string | HTMLElement | HTMLElement[], events: string | string[], parent?: Base | undefined): Promise<T>;
24
- export type BaseComponent = import('../Base/index.js').BaseComponent;
24
+ export type BaseConstructor = import('../Base/index.js').BaseConstructor;
25
25
  export type Base = import('../Base/index.js').default;
@@ -3,14 +3,14 @@ export default function importOnInteraction(fn, nameOrSelectorOrElement, events,
3
3
  var normalizedEvents = typeof events === 'string' ? [events] : events;
4
4
  var ResolvedClass;
5
5
 
6
- var resolver = function resolver(resolve) {
7
- fn().then(function (module) {
6
+ var resolver = resolve => {
7
+ fn().then(module => {
8
8
  ResolvedClass = 'default' in module ? module.default : module;
9
9
  resolve(ResolvedClass);
10
10
  });
11
11
  };
12
12
 
13
- return new Promise(function (resolve) {
13
+ return new Promise(resolve => {
14
14
  var elements = getTargetElements(nameOrSelectorOrElement, parent === null || parent === void 0 ? void 0 : parent.$el);
15
15
  var eventListenerOptions = {
16
16
  capture: true,
@@ -18,15 +18,14 @@ export default function importOnInteraction(fn, nameOrSelectorOrElement, events,
18
18
  once: true
19
19
  };
20
20
 
21
- var handler = function handler() {
21
+ var handler = () => {
22
22
  resolver(resolve);
23
23
  };
24
24
 
25
- elements.forEach(function (element) {
26
- normalizedEvents.forEach(function (event) {
25
+ elements.forEach(element => {
26
+ normalizedEvents.forEach(event => {
27
27
  element.addEventListener(event, handler, eventListenerOptions);
28
28
  });
29
29
  });
30
30
  });
31
- }
32
- //# sourceMappingURL=importOnInteraction.js.map
31
+ }
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @typedef {import('../Base/index.js').BaseComponent} BaseComponent
2
+ * @typedef {import('../Base/index.js').BaseConstructor} BaseConstructor
3
3
  * @typedef {{ timeout?: number }} ImportWhenIdleOptions
4
4
  */
5
5
  /**
6
6
  * Import a component when user is idle.
7
7
  *
8
- * @template {BaseComponent} T
8
+ * @template {BaseConstructor} T
9
9
  *
10
10
  * @param {() => Promise<T|{default:T}>} fn
11
11
  * The import function.
@@ -17,7 +17,7 @@
17
17
  export default function importWhenIdle<T extends typeof import("../Base/index.js").default>(fn: () => Promise<T | {
18
18
  default: T;
19
19
  }>, options?: ImportWhenIdleOptions | undefined): Promise<T>;
20
- export type BaseComponent = import('../Base/index.js').BaseComponent;
20
+ export type BaseConstructor = import('../Base/index.js').BaseConstructor;
21
21
  export type ImportWhenIdleOptions = {
22
22
  timeout?: number;
23
23
  };
@@ -1,25 +1,25 @@
1
1
  export default function importWhenIdle(fn, options) {
2
2
  var ResolvedClass;
3
3
 
4
- var resolver = function resolver(resolve) {
5
- fn().then(function (module) {
4
+ var resolver = resolve => {
5
+ fn().then(module => {
6
6
  ResolvedClass = 'default' in module ? module.default : module;
7
7
  resolve(ResolvedClass);
8
8
  });
9
9
  };
10
10
 
11
- return new Promise(function (resolve) {
11
+ return new Promise(resolve => {
12
12
  var _options$timeout;
13
13
 
14
14
  var timeout = (_options$timeout = options === null || options === void 0 ? void 0 : options.timeout) !== null && _options$timeout !== void 0 ? _options$timeout : 1;
15
15
 
16
16
  if (!('requestIdleCallback' in window)) {
17
- setTimeout(function () {
17
+ setTimeout(() => {
18
18
  resolver(resolve);
19
19
  }, timeout);
20
20
  } else {
21
- window.requestIdleCallback(function () {
22
- setTimeout(function () {
21
+ window.requestIdleCallback(() => {
22
+ setTimeout(() => {
23
23
  resolver(resolve);
24
24
  }, 0);
25
25
  }, {
@@ -27,5 +27,4 @@ export default function importWhenIdle(fn, options) {
27
27
  });
28
28
  }
29
29
  });
30
- }
31
- //# sourceMappingURL=importWhenIdle.js.map
30
+ }
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * @typedef {import('../Base/index.js').default} Base
3
- * @typedef {import('../Base/index.js').BaseComponent} BaseComponent
3
+ * @typedef {import('../Base/index.js').BaseConstructor} BaseConstructor
4
4
  */
5
5
  /**
6
6
  * Import a component when it is visible.
7
7
  *
8
- * @template {BaseComponent} T
8
+ * @template {BaseConstructor} T
9
9
  *
10
10
  * @param {() => Promise<T|{default:T}>} fn
11
11
  * The import function.
@@ -22,4 +22,4 @@ export default function importWhenVisible<T extends typeof import("../Base/index
22
22
  default: T;
23
23
  }>, nameOrSelectorOrElement: string | HTMLElement | HTMLElement[], parent?: Base | undefined, observerOptions?: IntersectionObserverInit | undefined): Promise<T>;
24
24
  export type Base = import('../Base/index.js').default;
25
- export type BaseComponent = import('../Base/index.js').BaseComponent;
25
+ export type BaseConstructor = import('../Base/index.js').BaseConstructor;
@@ -3,8 +3,8 @@ export default function importWhenVisible(fn, nameOrSelectorOrElement, parent) {
3
3
  var observerOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
4
4
  var ResolvedClass;
5
5
 
6
- var resolver = function resolver(resolve, cb) {
7
- fn().then(function (module) {
6
+ var resolver = (resolve, cb) => {
7
+ fn().then(module => {
8
8
  ResolvedClass = 'default' in module ? module.default : module;
9
9
  resolve(ResolvedClass);
10
10
 
@@ -14,24 +14,17 @@ export default function importWhenVisible(fn, nameOrSelectorOrElement, parent) {
14
14
  });
15
15
  };
16
16
 
17
- return new Promise(function (resolve) {
18
- var observer = new IntersectionObserver(function (entries) {
19
- var someEntriesAreVisible = entries.some(function (entry) {
20
- return entry.isIntersecting;
21
- });
17
+ return new Promise(resolve => {
18
+ var observer = new IntersectionObserver(entries => {
19
+ var someEntriesAreVisible = entries.some(entry => entry.isIntersecting);
22
20
 
23
21
  if (someEntriesAreVisible) {
24
- setTimeout(function () {
25
- resolver(resolve, function () {
26
- return observer.disconnect();
27
- });
22
+ setTimeout(() => {
23
+ resolver(resolve, () => observer.disconnect());
28
24
  }, 0);
29
25
  }
30
26
  }, observerOptions);
31
27
  var elements = getTargetElements(nameOrSelectorOrElement, parent === null || parent === void 0 ? void 0 : parent.$el);
32
- elements.forEach(function (element) {
33
- return observer.observe(element);
34
- });
28
+ elements.forEach(element => observer.observe(element));
35
29
  });
36
- }
37
- //# sourceMappingURL=importWhenVisible.js.map
30
+ }
@@ -1,7 +1,5 @@
1
1
  import createApp from "./createApp.js";
2
- import createBase from "./createBase.js";
3
- import defineComponent from "./defineComponent.js";
4
2
  import importOnInteraction from "./importOnInteraction.js";
5
3
  import importWhenIdle from "./importWhenIdle.js";
6
4
  import importWhenVisible from "./importWhenVisible.js";
7
- export { createApp, createBase, defineComponent, importOnInteraction, importWhenIdle, importWhenVisible };
5
+ export { createApp, importOnInteraction, importWhenIdle, importWhenVisible };
package/helpers/index.js CHANGED
@@ -1,8 +1,5 @@
1
1
  import createApp from './createApp.js';
2
- import createBase from './createBase.js';
3
- import defineComponent from './defineComponent.js';
4
2
  import importOnInteraction from './importOnInteraction.js';
5
3
  import importWhenIdle from './importWhenIdle.js';
6
4
  import importWhenVisible from './importWhenVisible.js';
7
- export { createApp, createBase, defineComponent, importOnInteraction, importWhenIdle, importWhenVisible };
8
- //# sourceMappingURL=index.js.map
5
+ export { createApp, importOnInteraction, importWhenIdle, importWhenVisible };
package/helpers/utils.js CHANGED
@@ -9,5 +9,4 @@ export function getTargetElements(nameOrSelectorOrElement, context) {
9
9
  }
10
10
 
11
11
  return nameOrSelectorOrElement;
12
- }
13
- //# sourceMappingURL=utils.js.map
12
+ }
package/index.d.ts CHANGED
@@ -1,9 +1,19 @@
1
- export default Base;
2
1
  import Base from "./Base/index.js";
3
2
  import { createApp } from "./helpers/index.js";
4
- import { createBase } from "./helpers/index.js";
5
- import { defineComponent } from "./helpers/index.js";
6
3
  import { importOnInteraction } from "./helpers/index.js";
7
4
  import { importWhenIdle } from "./helpers/index.js";
8
5
  import { importWhenVisible } from "./helpers/index.js";
9
- export { Base, createApp, createBase, defineComponent, importOnInteraction, importWhenIdle, importWhenVisible };
6
+ import { useDrag } from "./services/index.js";
7
+ import { useKey } from "./services/index.js";
8
+ import { useLoad } from "./services/index.js";
9
+ import { usePointer } from "./services/index.js";
10
+ import { useRaf } from "./services/index.js";
11
+ import { useResize } from "./services/index.js";
12
+ import { useScroll } from "./services/index.js";
13
+ import { withBreakpointManager } from "./decorators/index.js";
14
+ import { withBreakpointObserver } from "./decorators/index.js";
15
+ import { withDrag } from "./decorators/index.js";
16
+ import { withExtraConfig } from "./decorators/index.js";
17
+ import { withIntersectionObserver } from "./decorators/index.js";
18
+ import { withMountWhenInView } from "./decorators/index.js";
19
+ export { Base, createApp, importOnInteraction, importWhenIdle, importWhenVisible, useDrag, useKey, useLoad, usePointer, useRaf, useResize, useScroll, withBreakpointManager, withBreakpointObserver, withDrag, withExtraConfig, withIntersectionObserver, withMountWhenInView };
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import Base from './Base/index.js';
2
- import { createApp, createBase, defineComponent, importOnInteraction, importWhenIdle, importWhenVisible } from './helpers/index.js';
3
- export { Base, createApp, createBase, defineComponent, importOnInteraction, importWhenIdle, importWhenVisible };
4
- export default Base;
5
- //# sourceMappingURL=index.js.map
2
+ import { withDrag, withBreakpointManager, withBreakpointObserver, withExtraConfig, withIntersectionObserver, withMountWhenInView } from './decorators/index.js';
3
+ import { createApp, importOnInteraction, importWhenIdle, importWhenVisible } from './helpers/index.js';
4
+ import { useDrag, useKey, useLoad, usePointer, useRaf, useResize, useScroll } from './services/index.js';
5
+ export { Base, createApp, importOnInteraction, importWhenIdle, importWhenVisible, useDrag, useKey, useLoad, usePointer, useRaf, useResize, useScroll, withBreakpointManager, withBreakpointObserver, withDrag, withExtraConfig, withIntersectionObserver, withMountWhenInView };
package/index.modern.js CHANGED
@@ -1,2 +1 @@
1
- function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e}).apply(this,arguments)}function t(e,n=[],i=null){const r=Object.getPrototypeOf(e);if(r===Object.prototype)return n;let s=Object.getOwnPropertyNames(r);return"function"==typeof i&&(s=s.filter(e=>i(e,r))),s=s.map(e=>[e,r]).reduce((e,t)=>[...e,t],n),t(r,s,i)}function n(e,t){return"function"==typeof e[t]}function i(e,t,...i){return e.__debug("callMethod",t,...i),"destroyed"===t&&!e.$isMounted||"mounted"===t&&e.$isMounted?(e.__debug("not",t,"because the method has already been triggered once."),e):(e.$emit(t,...i),n(e,t)?(e[t].call(e,...i),e.__debug(t,e,...i),e):e)}function r(e,t=document){const n=`[data-component="${e}"]`;let i=[];try{i=Array.from(t.querySelectorAll(n))}catch(e){}return 0===i.length&&(i=Array.from(t.querySelectorAll(e))),i}class s{get registeredNames(){return Object.keys(this).filter(e=>!e.startsWith("__"))}constructor(e,t,n,i){this.__base=e,this.__element=t,this.__components=n,this.__eventsManager=i}registerAll(){Object.entries(this.__components).forEach(([e,t])=>this.__register(e,t))}__register(e,t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,get:()=>{const n=r(e,this.__element);return 0===n.length?[]:n.map(n=>this.__getChild(n,t,e)).filter(e=>"terminated"!==e)}})}__getChild(e,t,n){if(e.__base__)return e.__base__;if("$isBase"in t){const n=new t(e);return Object.defineProperty(n,"$parent",{get:()=>this.__base}),n}return t(this.__base).then(t=>{var i;return this.__getChild(e,null!=(i=t.default)?i:t,n)})}mountAll(){this.__triggerHookForAll("$mount")}updateAll(){this.__triggerHookForAll("$update")}destroyAll(){this.__triggerHookForAll("$destroy")}__triggerHookForAll(e){this.registeredNames.forEach(t=>{this[t].forEach(n=>{n instanceof Promise?n.then(n=>this.__triggerHook(e,n,t)):this.__triggerHook(e,n,t)})})}__triggerHook(e,t,n){"$update"!==e||t.$isMounted||(e="$mount"),"$update"!==e&&"$destroy"!==e||this.__eventsManager.unbindChild(n,t),"$update"!==e&&"$mount"!==e||this.__eventsManager.bindChild(n,t),t[e]()}}class o{constructor(e,t,n,i){this.__element=t,this.__refs=n,this.__base=e,this.__eventsManager=i}registerAll(){this.__refs.forEach(e=>this.__register(e))}unregisterAll(){this.__refs.forEach(e=>this.__unregister(e))}__register(e){const t=e.endsWith("[]"),n=o.normalizeRefName(e),i=Array.from(this.__element.querySelectorAll(`[data-ref="${e}"]`)).filter(e=>this.__filterRefsBelongingToInstance(e));!t&&i.length>1&&console.warn(`[${this.__base.$options.name}]`,`The "${e}" ref has been found multiple times.`,"Did you forgot to add the `[]` suffix to its name?"),this.__eventsManager.bindRef(e,i),Object.defineProperty(this,n,{value:t||i.length>1?i:i[0],enumerable:!0,configurable:!0})}__unregister(e){const t=o.normalizeRefName(e),n=Array.isArray(this[t])?this[t]:[this[t]];this.__eventsManager.unbindRef(e,n)}static normalizeRefName(e){return e.endsWith("[]")?e.replace(/\[\]$/,""):e}__filterRefsBelongingToInstance(e){let t=e.parentElement;for(;t&&void 0===t.dataset.component;)t=t.parentElement;return null===t||t===this.__element}}class a{constructor(){this.callbacks=new Map,this.isInit=!1}get props(){throw new Error("The `props` getter must be implemented.")}init(){throw new Error("The `init` method must be implemented.")}kill(){throw new Error("The `kill` method must be implemented.")}add(e,t){if(this.has(e))throw new Error(`A callback with the key \`${e}\` has already been registered.`);return 0!==this.callbacks.size||this.isInit||(this.init(),this.isInit=!0),this.callbacks.set(e,t),this}has(e){return this.callbacks.has(e)}get(e){return this.callbacks.get(e)}remove(e){return this.callbacks.delete(e),0===this.callbacks.size&&this.isInit&&(this.kill(),this.isInit=!1),this}trigger(...e){return this.callbacks.forEach(function(t){t(...e)}),this}}function h(e){return"undefined"!=typeof TouchEvent&&e instanceof TouchEvent}class d extends a{constructor(...e){super(...e),this.isDown=!1,this.y=window.innerHeight/2,this.yLast=window.innerHeight/2,this.x=window.innerWidth/2,this.xLast=window.innerWidth/2,this.hasRaf=!1}init(){document.documentElement.addEventListener("mouseenter",this,{once:!0,capture:!0});const e={passive:!0,capture:!0};return document.addEventListener("mousemove",this,e),document.addEventListener("touchmove",this,e),document.addEventListener("mousedown",this,e),document.addEventListener("touchstart",this,e),document.addEventListener("mouseup",this,e),document.addEventListener("touchend",this,e),this}handleEvent(e){switch(e.type){case"mouseenter":case"mousemove":case"touchmove":this.handler(e);break;case"mousedown":case"touchstart":this.downHandler();break;case"mouseup":case"touchend":this.upHandler()}}kill(){return document.removeEventListener("mousemove",this),document.removeEventListener("touchmove",this),document.removeEventListener("mousedown",this),document.removeEventListener("touchstart",this),document.removeEventListener("mouseup",this),document.removeEventListener("touchend",this),this}handler(e){this.updateValues(e),this.trigger(this.props)}downHandler(){this.isDown=!0,this.trigger(this.props)}upHandler(){this.isDown=!1,this.trigger(this.props)}updateValues(e){var t,n;this.event=e,this.yLast=this.y,this.xLast=this.x;const i=h(e)?null==(t=e.touches[0])?void 0:t.clientY:e.clientY;i!==this.y&&(this.y=i);const r=h(e)?null==(n=e.touches[0])?void 0:n.clientX:e.clientX;r!==this.x&&(this.x=r)}get props(){return{event:this.event,isDown:this.isDown,x:this.x,y:this.y,changed:{x:this.x!==this.xLast,y:this.y!==this.yLast},last:{x:this.xLast,y:this.yLast},delta:{x:this.x-this.xLast,y:this.y-this.yLast},progress:{x:this.x/window.innerWidth,y:this.y/window.innerHeight},max:{x:window.innerWidth,y:window.innerHeight}}}}let c=null;class l extends a{constructor(){super(),this.isTicking=!1,this.id=0,this.raf="undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout,this.cancelRaf="undefined"!=typeof window&&window.cancelAnimationFrame?window.cancelAnimationFrame.bind(window):clearTimeout,this.loop=this.loop.bind(this)}init(){return this.isTicking=!0,this.loop(),this}loop(){this.trigger(this.props),this.isTicking&&(this.id=this.raf(this.loop))}kill(){return this.cancelRaf(this.id),this.isTicking=!1,this}get props(){return{time:window.performance.now()}}}let u=null;function f(e,t=300){let n;return function(...i){clearTimeout(n),n=setTimeout(()=>{e(...i)},t)}}class m extends a{init(){return this.handler=f(()=>{this.trigger(this.props)}).bind(this),window.addEventListener("resize",this.handler),this}kill(){return window.removeEventListener("resize",this.handler),this}get props(){const e={width:window.innerWidth,height:window.innerHeight,ratio:window.innerWidth/window.innerHeight,orientation:"square"};return e.ratio>1&&(e.orientation="landscape"),e.ratio<1&&(e.orientation="portrait"),this.breakpointElement&&(e.breakpoint=this.breakpoint,e.breakpoints=this.breakpoints),e}get breakpointElement(){return document.querySelector("[data-breakpoint]")||null}get breakpoint(){return window.getComputedStyle(this.breakpointElement,"::before").getPropertyValue("content").replace(/"/g,"")}get breakpoints(){return window.getComputedStyle(this.breakpointElement,"::after").getPropertyValue("content").replace(/"/g,"").split(",")}get canUseResizeObserver(){return void 0!==window.ResizeObserver}}let p=null;class _ extends a{constructor(...e){super(...e),this.y=window.pageYOffset,this.yLast=window.pageYOffset,this.x=window.pageXOffset,this.xLast=window.pageXOffset}init(){return document.addEventListener("scroll",this,{passive:!0,capture:!0}),this}get debouncedHandler(){const e=f(()=>{this.trigger(this.props)},0);return Object.defineProperty(this,"debouncedHandler",{value:e}),e}handleEvent(){this.trigger(this.props),this.debouncedHandler()}kill(){return document.removeEventListener("scroll",this),this}get props(){return this.yLast=this.y,this.xLast=this.x,window.pageYOffset!==this.y&&(this.y=window.pageYOffset),window.pageXOffset!==this.x&&(this.x=window.pageXOffset),{x:this.x,y:this.y,changed:{x:this.x!==this.xLast,y:this.y!==this.yLast},last:{x:this.xLast,y:this.yLast},delta:{x:this.x-this.xLast,y:this.y-this.yLast},progress:{x:0===this.max.x?1:this.x/this.max.x,y:0===this.max.y?1:this.y/this.max.y},direction:{x:this.x>this.xLast?"RIGHT":this.x<this.xLast?"LEFT":"NONE",y:this.y>this.yLast?"DOWN":this.y<this.yLast?"UP":"NONE"},max:this.max}}get max(){return{x:(document.scrollingElement||document.body).scrollWidth-window.innerWidth,y:(document.scrollingElement||document.body).scrollHeight-window.innerHeight}}}let g=null;var b={ENTER:13,SPACE:32,TAB:9,ESC:27,LEFT:37,UP:38,RIGHT:39,DOWN:40};class y extends a{constructor(...e){super(...e),this.event={},this.triggered=0,this.previousEvent={}}init(){return this.handler=e=>{this.event=e,this.trigger(this.props)},document.addEventListener("keydown",this.handler,{passive:!1}),document.addEventListener("keyup",this.handler,{passive:!1}),this}kill(){return document.removeEventListener("keydown",this.handler),document.removeEventListener("keyup",this.handler),this}get props(){const t=Object.entries(b).reduce((e,[t,n])=>(e[t]=n===this.event.keyCode,e),{});return this.previousEvent.type||(this.triggered=0),"keydown"===this.event.type&&"keydown"===this.previousEvent.type?this.triggered+=1:this.triggered=1,this.previousEvent=this.event,e({event:this.event,triggered:this.triggered,direction:"keydown"===this.event.type?"down":"up",isUp:"keyup"===this.event.type,isDown:"keydown"===this.event.type},t)}}let v=null;class w extends a{init(){return this.handler=()=>{this.trigger(this.props)},window.addEventListener("load",this.handler),this}kill(){return window.removeEventListener("load",this.handler),this}get props(){return{}}}let $=null;const E={scrolled:function(){return g||(g=new _),{add:g.add.bind(g),remove:g.remove.bind(g),has:g.has.bind(g),props:()=>g.props}},resized:function(){return p||(p=new m),{add:p.add.bind(p),remove:p.remove.bind(p),has:p.has.bind(p),props:()=>p.props}},ticked:function(){return u||(u=new l),{add:u.add.bind(u),remove:u.remove.bind(u),has:u.has.bind(u),props:function(){return u.props}}},moved:function(){return c||(c=new d),{add:c.add.bind(c),remove:c.remove.bind(c),has:c.has.bind(c),props:()=>c.props}},keyed:function(){return v||(v=new y),{add:v.add.bind(v),remove:v.remove.bind(v),has:v.has.bind(v),props:()=>v.props}},loaded:function(){return $||($=new w),{add:$.add.bind($),remove:$.remove.bind($),has:$.has.bind($),props:function(){return $.props}}}};class O{constructor(e){this.__base=e}has(e){if(!n(this.__base,e)&&!E[e])return!1;const{has:t}=E[e]();return t(this.__base.$id)}enable(e){if(this.has(e))return this.disable.bind(this,e);if(!n(this.__base,e)||!E[e])return function(){};const{add:t}=E[e](),r=this;return t(this.__base.$id,function(...t){i(r.__base,e,...t)}),this.disable.bind(this,e)}enableAll(){return Object.keys(E).map(e=>this.enable(e))}disableAll(){Object.keys(E).forEach(e=>{this.disable(e)})}disable(e){if(!E[e])return;const{remove:t}=E[e]();t(this.__base.$id)}register(e,t){E[e]=t}unregister(e){delete E[e]}}class A{constructor(e,t){this.__methodsCache=new WeakMap,this.__rootElementHandler={handleEvent:e=>{const t=`on${A.normalizeName(e.type)}`;"function"==typeof this.__base[t]&&this.__base[t](e)}},this.__refsHandler={handleEvent:e=>{const t=e.currentTarget,n=o.normalizeRefName(t.dataset.ref),i=`on${A.normalizeName(n)}${A.normalizeName(e.type)}`;if("function"==typeof this.__base[i]){let r=0;Array.isArray(this.__base.$refs[n])&&(r=this.__base.$refs[n].indexOf(t)),this.__base[i](e,r)}}},this.__childrenHandler={handleEvent:e=>{const t=e.currentTarget.__base__;let n,i=0;const r=this.__base.$children;r.registeredNames.find(e=>!!r[e].includes(t)&&(n=e,i=r[e].indexOf(t),!0));const s=`on${A.normalizeName(n)}${A.normalizeName(e.type)}`;if("function"==typeof this.__base[s]){var o;const t=null!=(o=e.detail)?o:[];this.__base[s](...t,i,e)}}},this.__rootElement=e,this.__base=t}__manageRef(e,t,n="add"){const i=`${n}EventListener`;this.__getEventMethodsByName(e).forEach(n=>{const r=this.__getEventNameByMethod(n,e);t.forEach(e=>e[i](r,this.__refsHandler))})}bindRef(e,t){this.__manageRef(e,t)}unbindRef(e,t){this.__manageRef(e,t,"remove")}__manageChild(e,t,n="add"){const i="add"===n?"$on":"$off";this.__getEventMethodsByName(e).forEach(n=>{const r=this.__getEventNameByMethod(n,e);t[i](r,this.__childrenHandler)})}bindChild(e,t){this.__manageChild(e,t)}unbindChild(e,t){this.__manageChild(e,t,"remove")}__manageRootElement(e="add"){const t=`${e}EventListener`;this.__getEventMethodsByName().forEach(e=>{const n=this.__getEventNameByMethod(e);this.__rootElement[t](n,this.__rootElementHandler)})}bindRootElement(){this.__manageRootElement()}unbindRootElement(){this.__manageRootElement("remove")}__getEventNameByMethod(e,t=""){const n=A.normalizeName(t),i=new RegExp(`^on${n}([A-Z].*)$`),[,r]=e.match(i);return A.normalizeEventName(r)}__getEventMethodsByName(e=""){const n=A.normalizeName(e),i=new RegExp(`^on${n}[A-Z].*$`);let r=this.__methodsCache.get(i);return r||(r=t(this.__base,[],e=>i.test(e)),this.__methodsCache.set(i,r)),r.reduce((e,[t])=>(e.includes(t)||e.push(t),e),[])}static normalizeName(e){return e.replace(/[A-Z]([A-Z].*)/g,e=>e.toLowerCase()).replace(/[^a-zA-Z\d\s:]/g," ").replace(/(^\w|\s+\w)/g,e=>e.trim().toUpperCase()).trim()}static normalizeEventName(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`).replace(/^-/,"")}}var x=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===k}(e)}(e)},k="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function j(e,t){return!1!==t.clone&&t.isMergeableObject(e)?P(Array.isArray(e)?[]:{},e,t):e}function L(e,t,n){return e.concat(t).map(function(e){return j(e,n)})}function T(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return e.propertyIsEnumerable(t)}):[]}(e))}function N(e,t){try{return t in e}catch(e){return!1}}function P(e,t,n){(n=n||{}).arrayMerge=n.arrayMerge||L,n.isMergeableObject=n.isMergeableObject||x,n.cloneUnlessOtherwiseSpecified=j;var i=Array.isArray(t);return i===Array.isArray(e)?i?n.arrayMerge(e,t,n):function(e,t,n){var i={};return n.isMergeableObject(e)&&T(e).forEach(function(t){i[t]=j(e[t],n)}),T(t).forEach(function(r){(function(e,t){return N(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))})(e,r)||(i[r]=N(e,r)&&n.isMergeableObject(t[r])?function(e,t){if(!t.customMerge)return P;var n=t.customMerge(e);return"function"==typeof n?n:P}(r,n)(e[r],t[r],n):j(t[r],n))}),i}(e,t,n):j(t,n)}P.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(e,n){return P(e,n,t)},{})};var M=P;function R(e){return e.toLowerCase()}var S=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g],H=/[^A-Z0-9]+/gi;function C(e,t,n){return t instanceof RegExp?e.replace(t,n):t.reduce(function(e,t){return e.replace(t,n)},e)}const z=(e,t,n,i)=>{if("length"===n||"prototype"===n)return;if("arguments"===n||"caller"===n)return;const r=Object.getOwnPropertyDescriptor(e,n),s=Object.getOwnPropertyDescriptor(t,n);!B(r,s)&&i||Object.defineProperty(e,n,s)},B=function(e,t){return void 0===e||e.configurable||e.writable===t.writable&&e.enumerable===t.enumerable&&e.configurable===t.configurable&&(e.writable||e.value===t.value)},D=(e,t)=>`/* Wrapped ${e}*/\n${t}`,I=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),W=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name");var F="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function q(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var V,Z=()=>{const e={};return e.promise=new Promise((t,n)=>{e.resolve=t,e.reject=n}),e},Y=q((function(e,t){var n=F&&F.__awaiter||function(e,t,n,i){return new(n||(n=Promise))(function(r,s){function o(e){try{h(i.next(e))}catch(e){s(e)}}function a(e){try{h(i.throw(e))}catch(e){s(e)}}function h(e){e.done?r(e.value):new n(function(t){t(e.value)}).then(o,a)}h((i=i.apply(e,t||[])).next())})},i=F&&F.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=i(Z);function s(e,t="maxAge"){let i,s,o;const a=()=>n(this,void 0,void 0,function*(){if(void 0!==i)return;const a=a=>n(this,void 0,void 0,function*(){o=r.default();const n=a[1][t]-Date.now();return n<=0?(e.delete(a[0]),void o.resolve()):(i=a[0],s=setTimeout(()=>{e.delete(a[0]),o&&o.resolve()},n),"function"==typeof s.unref&&s.unref(),o.promise)});try{for(const t of e)yield a(t)}catch(e){}i=void 0}),h=e.set.bind(e);return e.set=(t,n)=>{e.has(t)&&e.delete(t);const r=h(t,n);return i&&i===t&&(i=void 0,void 0!==s&&(clearTimeout(s),s=void 0),void 0!==o&&(o.reject(void 0),o=void 0)),a(),r},a(),e}t.default=s,e.exports=s,e.exports.default=s}(V={exports:{}},V.exports),V.exports));const U=new WeakMap,X=function(t,{cacheKey:n,cache:i=new Map,maxAge:r}={}){"number"==typeof r&&Y(i);const s=function(...e){const s=n?n(e):e[0],o=i.get(s);if(o)return o.data;const a=t.apply(this,e);return i.set(s,{data:a,maxAge:r?Date.now()+r:Number.POSITIVE_INFINITY}),a};return function(t,n,{ignoreNonConfigurable:i=!1}={}){const{name:r}=t;for(const e of Reflect.ownKeys(n))z(t,n,e,i);((e,t)=>{const n=Object.getPrototypeOf(t);n!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,n)})(t,n),((t,n,i)=>{const r=""===i?"":`with ${i.trim()}() `,s=D.bind(null,r,n.toString());Object.defineProperty(s,"name",W),Object.defineProperty(t,"toString",e({},I,{value:s}))})(t,n,r)}(s,t,{ignoreNonConfigurable:!0}),U.set(s,i),s}(function(e){return`data-option-${function(e,t){void 0===t&&(t={});for(var n=t.splitRegexp,i=t.stripRegexp,r=void 0===i?H:i,s=t.transform,o=void 0===s?R:s,a=t.delimiter,h=void 0===a?" ":a,d=C(C(e,void 0===n?S:n,"$1\0$2"),r,"\0"),c=0,l=d.length;"\0"===d.charAt(c);)c++;for(;"\0"===d.charAt(l-1);)l--;return d.slice(c,l).split("\0").map(o).join(h)}(e,{delimiter:"-"})}`});class J{constructor(e,t,n){var i,r;return this.__values={},this.__defaultValues={String:"",Number:0,Boolean:!1,Array:()=>[],Object:()=>({})},this.name="Base",this.debug=!1,this.log=!1,this.__element=e,this.name=n.name,t.debug={type:Boolean,default:null!=(i=n.debug)&&i},t.log={type:Boolean,default:null!=(r=n.log)&&r},Object.entries(t).forEach(([e,t])=>{const n=!J.types.includes(t),i=n?t.type:t;if(!J.types.includes(i))throw new Error(`The "${e}" option has an invalid type. The allowed types are: String, Number, Boolean, Array and Object.`);const r=n?t.default:this.__defaultValues[i.name];if((i===Array||i===Object)&&"function"!=typeof r)throw new Error(`The default value for options of type "${i.name}" must be returned by a function.`);Object.defineProperty(this,e,{get:()=>this.get(e,i,r),set:t=>{this.set(e,i,t,r)},enumerable:!0})}),this}get(e,t,n){const i=X(e),r=this.__element.hasAttribute(i);if(t===Boolean){if(n){const t=X(`no-${e}`);return!this.__element.hasAttribute(t)}return r||n}const s=this.__element.getAttribute(i);if(t===Number)return r?Number(s):n;if(t===Array||t===Object){const o=M(n(),r?JSON.parse(s):this.__defaultValues[t.name]());return this.__values[e]?o!==this.__values[e]&&setTimeout(()=>{this.__element.setAttribute(i,JSON.stringify(this.__values[e]))},0):this.__values[e]=o,this.__values[e]}return r?s:n}set(e,t,n,i){const r=X(e);if(n.constructor.name!==t.name){const i=Array.isArray(n)||function(e){return"object"==typeof e&&!!e&&"[object Object]"===e.toString()}(n)?JSON.stringify(n):n;throw new TypeError(`The "${i}" value for the "${e}" option must be of type "${t.name}"`)}switch(t){case Boolean:if(i){const t=X(`no-${e}`);n?this.__element.removeAttribute(t):this.__element.setAttribute(t,"")}else n?this.__element.setAttribute(r,""):this.__element.removeAttribute(r);break;case Array:case Object:this.__values[e]=n,this.__element.setAttribute(r,JSON.stringify(n));break;default:this.__element.setAttribute(r,n)}}}J.types=[String,Number,Boolean,Array,Object];let G=0;const K=function(){};class Q{get __excludeFromAutoBind(){return["$mount","$update","$destroy","$terminate","$log","$on","$once","$off","$emit","mounted","loaded","ticked","resized","moved","keyed","scrolled","destroyed","terminated"]}get __config(){let t=Object.getPrototypeOf(this),{config:n}=t.constructor;for(;t.constructor.config&&t.constructor.$isBase;)n=e({},t.constructor.config,n),t.constructor.config.options&&(n.options=e({},t.constructor.config.options,n.options)),t=Object.getPrototypeOf(t);return n}get $services(){const e=this.__services;return this.$emit("get:services",e),e}get $refs(){const e=this.__refs;return this.$emit("get:refs",e),e}get $options(){const e=this.__options;return this.$emit("get:options",e),e}get $children(){this.__debug("before:getChildren",this.$el,this.__config.components);const e=this.__children;return this.$emit("get:children",e),this.__debug(this,"after:getChildren",e),e}get $log(){return this.__options.log?window.console.log.bind(window,`[${this.__config.name}]`):K}get __debug(){return this.__options.debug&&void 0!==window.__DEV__&&window.__DEV__?window.console.log.bind(window,`[debug] [${this.$id}]`):K}constructor(e){if(this.$parent=null,this.$isMounted=!1,!e)throw new Error("The root element must be defined.");const{__config:n}=this;if(!n)throw new Error("The `config` static property must be defined.");if(!n.name)throw new Error("The `config.name` property is required.");return this.$id=`${n.name}-${G}`,G+=1,this.$el=e,"__base__"in this.$el||Object.defineProperty(this.$el,"__base__",{get:()=>this,configurable:!0}),this.__options=new J(e,n.options||{},n),this.__services=new O(this),this.__events=new A(e,this),this.__children=new s(this,e,n.components||{},this.__events),this.__refs=new o(this,e,n.refs||[],this.__events),function(e,n){const{exclude:i,include:r}=n||{};t(e).filter(([e])=>"constructor"!==e&&(e=>{const t=t=>"string"==typeof t?e===t:t.test(e);return r?r.some(t):!i||!i.some(t)})(e)).forEach(([t,n])=>{const i=Object.getOwnPropertyDescriptor(n,t);i&&"function"==typeof i.value&&(e[t]=e[t].bind(e))})}(this,{exclude:[...this.__excludeFromAutoBind]}),this.__debug("constructor",this),this}$mount(){return this.__debug("$mount"),this.$children.registerAll(),this.$refs.registerAll(),this.__events.bindRootElement(),this.$services.enableAll(),this.$children.mountAll(),i(this,"mounted"),this.$isMounted=!0,this}$update(){return this.__debug("$update"),this.$refs.unregisterAll(),this.$services.disableAll(),this.$children.registerAll(),this.$refs.registerAll(),this.$services.enableAll(),this.$children.updateAll(),i(this,"updated"),this}$destroy(){return this.__debug("$destroy"),this.__events.unbindRootElement(),this.$refs.unregisterAll(),this.$services.disableAll(),this.$children.destroyAll(),i(this,"destroyed"),this.$isMounted=!1,this}$terminate(){this.__debug("$terminate"),this.$destroy(),i(this,"terminated"),Object.defineProperty(this.$el,"__base__",{value:"terminated",configurable:!1,writable:!1})}static $factory(e){if(!e)throw new Error("The $factory method requires a component’s name or selector to be specified.");return r(e).map(e=>new this(e).$mount())}$on(e,t,n){return this.__debug("$on",e,t,n),this.$el.addEventListener(e,t,n),()=>{this.$off(e,t,n)}}$off(e,t,n){this.__debug("$off",e,t),this.$el.removeEventListener(e,t,n)}$emit(e,...t){this.__debug("$emit",e,t),this.$el.dispatchEvent(new CustomEvent(e,{detail:t}))}}function ee(e,t){let n,i="complete"===document.readyState;return i?n=new e(t).$mount():document.addEventListener("readystatechange",()=>{"complete"===document.readyState&&(n=new e(t).$mount(),i=!0)}),function(){return i?Promise.resolve(n):new Promise(e=>{document.addEventListener("readystatechange",()=>{"complete"===document.readyState&&setTimeout(()=>e(n),0)})})}}Q.$isBase=!0;const te=["config","methods"];function ne(e){const{config:t,methods:n}=e,i=function(e,t){if(null==e)return{};var n,i,r={},s=Object.keys(e);for(i=0;i<s.length;i++)t.indexOf(n=s[i])>=0||(r[n]=e[n]);return r}(e,te);if(!t)throw new Error("The `config` property is required.");if(!t.name)throw new Error("The `config.name` property is required.");class r extends Q{}r.config=t;const s=["mounted","loaded","ticked","resized","moved","keyed","scrolled","destroyed","terminated"],o=Object.entries(i).reduce((e,[t,n])=>{if(!s.includes(t))throw new Error(`\n The "${t}" method is not a Base lifecycle hook,\n it should be placed in the "method" property.\n The following hooks are available: ${s.join(", ")}\n `);return e[t]=n,e},{});return[...Object.entries(n||{}),...Object.entries(o)].forEach(([e,t])=>{r.prototype[e]=t}),r}function ie(e,t){return new(ne(t))("string"==typeof e?document.querySelector(e):e)}function re(e,t){return"string"==typeof e?r(e,t):Array.isArray(e)?e:[e]}function se(e,t,n,i){const r="string"==typeof n?[n]:n;let s;return new Promise(n=>{const o=re(t,null==i?void 0:i.$el),a={capture:!0,passive:!0,once:!0},h=()=>{(t=>{e().then(e=>{s="default"in e?e.default:e,t(s)})})(n)};o.forEach(e=>{r.forEach(t=>{e.addEventListener(t,h,a)})})})}function oe(e,t){let n;const i=t=>{e().then(e=>{n="default"in e?e.default:e,t(n)})};return new Promise(e=>{var n;const r=null!=(n=null==t?void 0:t.timeout)?n:1;"requestIdleCallback"in window?window.requestIdleCallback(()=>{setTimeout(()=>{i(e)},0)},{timeout:null==t?void 0:t.timeout}):setTimeout(()=>{i(e)},r)})}function ae(e,t,n,i={}){let r;return new Promise(s=>{const o=new IntersectionObserver(t=>{t.some(e=>e.isIntersecting)&&setTimeout(()=>{((t,n)=>{e().then(e=>{r="default"in e?e.default:e,t(r),o.disconnect()})})(s)},0)},i);re(t,null==n?void 0:n.$el).forEach(e=>o.observe(e))})}export default Q;export{Q as Base,ee as createApp,ie as createBase,ne as defineComponent,se as importOnInteraction,oe as importWhenIdle,ae as importWhenVisible};
2
- //# sourceMappingURL=index.modern.js.map
1
+ function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(e[s]=i[s])}return e}).apply(this,arguments)}var t=0;function i(e){return"__private_"+t+++"_"+e}function s(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw new TypeError("attempted to use private field on non-instance");return e}function n(e,t){return"function"==typeof e[t]}function r(e,t,...i){return e.__debug("callMethod",t,...i),"destroyed"===t&&!e.$isMounted||"mounted"===t&&e.$isMounted?(e.__debug("not",t,"because the method has already been triggered once."),e):(e.$emit(t,...i),n(e,t)?(e[t].call(e,...i),e.__debug(t,e,...i),e):e)}function o(e,t=document){const i=`[data-component="${e}"]`;let s=[];try{s=Array.from(t.querySelectorAll(i))}catch(e){}return 0===s.length&&(s=Array.from(t.querySelectorAll(e))),s}class a{get registeredNames(){return Object.keys(this).filter(e=>!e.startsWith("__"))}constructor(e,t,i,s){Object.defineProperties(this,{__base:{enumerable:!1,writable:!1,value:e},__element:{enumerable:!1,writable:!1,value:t},__components:{enumerable:!1,writable:!1,value:i},__eventsManager:{enumerable:!1,writable:!1,value:s}})}registerAll(){Object.entries(this.__components).forEach(([e,t])=>this.__register(e,t))}__register(e,t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,get:()=>{const i=o(e,this.__element);return 0===i.length?[]:i.map(i=>this.__getChild(i,t,e)).filter(e=>"terminated"!==e)}})}__getChild(e,t,i){if(e.__base__)return e.__base__;if("$isBase"in t){const i=new t(e);return Object.defineProperty(i,"$parent",{get:()=>this.__base}),i}return t(this.__base).then(t=>{var s;return this.__getChild(e,null!=(s=t.default)?s:t,i)})}mountAll(){this.__triggerHookForAll("$mount")}updateAll(){this.__triggerHookForAll("$update")}destroyAll(){this.__triggerHookForAll("$destroy")}__triggerHookForAll(e){this.registeredNames.forEach(t=>{this[t].forEach(i=>{i instanceof Promise?i.then(i=>this.__triggerHook(e,i,t)):this.__triggerHook(e,i,t)})})}__triggerHook(e,t,i){"$update"!==e||t.$isMounted||(e="$mount"),"$update"!==e&&"$destroy"!==e||this.__eventsManager.unbindChild(i,t),"$update"!==e&&"$mount"!==e||this.__eventsManager.bindChild(i,t),t[e]()}}class h{constructor(e,t,i,s){Object.defineProperties(this,{__element:{enumerable:!1,writable:!1,value:t},__refs:{enumerable:!1,writable:!1,value:i},__base:{enumerable:!1,writable:!1,value:e},__eventsManager:{enumerable:!1,writable:!1,value:s}})}registerAll(){this.__refs.forEach(e=>this.__register(e))}unregisterAll(){this.__refs.forEach(e=>this.__unregister(e))}__register(e){const t=e.endsWith("[]"),i=h.normalizeRefName(e),s=Array.from(this.__element.querySelectorAll(`[data-ref="${e}"]`)).filter(e=>this.__filterRefsBelongingToInstance(e));!t&&s.length>1&&console.warn(`[${this.__base.$options.name}]`,`The "${e}" ref has been found multiple times.`,"Did you forgot to add the `[]` suffix to its name?"),this.__eventsManager.bindRef(e,s),Object.defineProperty(this,i,{value:t||s.length>1?s:s[0],enumerable:!0,configurable:!0})}__unregister(e){const t=h.normalizeRefName(e),i=Array.isArray(this[t])?this[t]:[this[t]];this.__eventsManager.unbindRef(e,i)}static normalizeRefName(e){return e.endsWith("[]")?e.replace(/\[\]$/,""):e}__filterRefsBelongingToInstance(e){let t=e.parentElement;for(;t&&void 0===t.dataset.component;)t=t.parentElement;return null===t||t===this.__element}}class l{constructor(){this.callbacks=new Map,this.isInit=!1}get props(){throw new Error("The `props` getter must be implemented.")}init(){throw new Error("The `init` method must be implemented.")}kill(){throw new Error("The `kill` method must be implemented.")}add(e,t){if(this.has(e))throw new Error(`A callback with the key \`${e}\` has already been registered.`);return 0!==this.callbacks.size||this.isInit||(this.init(),this.isInit=!0),this.callbacks.set(e,t),this}has(e){return this.callbacks.has(e)}get(e){return this.callbacks.get(e)}remove(e){return this.callbacks.delete(e),0===this.callbacks.size&&this.isInit&&(this.kill(),this.isInit=!1),this}trigger(...e){return this.callbacks.forEach(function(t){t(...e)}),this}}function d(e){return"undefined"!=typeof TouchEvent&&e instanceof TouchEvent}class c extends l{constructor(...e){super(...e),this.isDown=!1,this.y=window.innerHeight/2,this.yLast=window.innerHeight/2,this.x=window.innerWidth/2,this.xLast=window.innerWidth/2,this.hasRaf=!1}init(){document.documentElement.addEventListener("mouseenter",this,{once:!0,capture:!0});const e={passive:!0,capture:!0};return document.addEventListener("mousemove",this,e),document.addEventListener("touchmove",this,e),document.addEventListener("mousedown",this,e),document.addEventListener("touchstart",this,e),document.addEventListener("mouseup",this,e),document.addEventListener("touchend",this,e),this}handleEvent(e){switch(e.type){case"mouseenter":case"mousemove":case"touchmove":this.handler(e);break;case"mousedown":case"touchstart":this.downHandler();break;case"mouseup":case"touchend":this.upHandler()}}kill(){return document.removeEventListener("mousemove",this),document.removeEventListener("touchmove",this),document.removeEventListener("mousedown",this),document.removeEventListener("touchstart",this),document.removeEventListener("mouseup",this),document.removeEventListener("touchend",this),this}handler(e){this.updateValues(e),this.trigger(this.props)}downHandler(){this.isDown=!0,this.trigger(this.props)}upHandler(){this.isDown=!1,this.trigger(this.props)}updateValues(e){var t,i;this.event=e,this.yLast=this.y,this.xLast=this.x;const s=d(e)?null==(t=e.touches[0])?void 0:t.clientY:e.clientY;s!==this.y&&(this.y=s);const n=d(e)?null==(i=e.touches[0])?void 0:i.clientX:e.clientX;n!==this.x&&(this.x=n)}get props(){return{event:this.event,isDown:this.isDown,x:this.x,y:this.y,changed:{x:this.x!==this.xLast,y:this.y!==this.yLast},last:{x:this.xLast,y:this.yLast},delta:{x:this.x-this.xLast,y:this.y-this.yLast},progress:{x:this.x/window.innerWidth,y:this.y/window.innerHeight},max:{x:window.innerWidth,y:window.innerHeight}}}}let u=null;function m(){return u||(u=new c),{add:u.add.bind(u),remove:u.remove.bind(u),has:u.has.bind(u),props:()=>u.props}}class p extends l{constructor(){super(),this.isTicking=!1,this.id=0,this.raf="undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout,this.cancelRaf="undefined"!=typeof window&&window.cancelAnimationFrame?window.cancelAnimationFrame.bind(window):clearTimeout,this.loop=this.loop.bind(this)}init(){return this.isTicking=!0,this.loop(),this}loop(){this.trigger(this.props),this.isTicking&&(this.id=this.raf(this.loop))}kill(){return this.cancelRaf(this.id),this.isTicking=!1,this}get props(){return{time:window.performance.now()}}}let _=null;function g(){return _||(_=new p),{add:_.add.bind(_),remove:_.remove.bind(_),has:_.has.bind(_),props:function(){return _.props}}}function f(e,t=300){let i;return function(...s){clearTimeout(i),i=setTimeout(()=>{e(...s)},t)}}class b extends l{init(){return this.handler=f(()=>{this.trigger(this.props)}).bind(this),window.addEventListener("resize",this.handler),this}kill(){return window.removeEventListener("resize",this.handler),this}get props(){const e={width:window.innerWidth,height:window.innerHeight,ratio:window.innerWidth/window.innerHeight,orientation:"square"};return e.ratio>1&&(e.orientation="landscape"),e.ratio<1&&(e.orientation="portrait"),this.breakpointElement&&(e.breakpoint=this.breakpoint,e.breakpoints=this.breakpoints),e}get breakpointElement(){return document.querySelector("[data-breakpoint]")||null}get breakpoint(){return window.getComputedStyle(this.breakpointElement,"::before").getPropertyValue("content").replace(/"/g,"")}get breakpoints(){return window.getComputedStyle(this.breakpointElement,"::after").getPropertyValue("content").replace(/"/g,"").split(",")}}let v=null;function y(){return v||(v=new b),{add:v.add.bind(v),remove:v.remove.bind(v),has:v.has.bind(v),props:()=>v.props}}class w extends l{constructor(...e){super(...e),this.y=window.pageYOffset,this.yLast=window.pageYOffset,this.x=window.pageXOffset,this.xLast=window.pageXOffset}init(){return document.addEventListener("scroll",this,{passive:!0,capture:!0}),this}get debouncedHandler(){const e=f(()=>{this.trigger(this.props)},0);return Object.defineProperty(this,"debouncedHandler",{value:e}),e}handleEvent(){this.trigger(this.props),this.debouncedHandler()}kill(){return document.removeEventListener("scroll",this),this}get props(){return this.yLast=this.y,this.xLast=this.x,window.pageYOffset!==this.y&&(this.y=window.pageYOffset),window.pageXOffset!==this.x&&(this.x=window.pageXOffset),{x:this.x,y:this.y,changed:{x:this.x!==this.xLast,y:this.y!==this.yLast},last:{x:this.xLast,y:this.yLast},delta:{x:this.x-this.xLast,y:this.y-this.yLast},progress:{x:0===this.max.x?1:this.x/this.max.x,y:0===this.max.y?1:this.y/this.max.y},direction:{x:this.x>this.xLast?"RIGHT":this.x<this.xLast?"LEFT":"NONE",y:this.y>this.yLast?"DOWN":this.y<this.yLast?"UP":"NONE"},max:this.max}}get max(){return{x:(document.scrollingElement||document.body).scrollWidth-window.innerWidth,y:(document.scrollingElement||document.body).scrollHeight-window.innerHeight}}}let $=null;function E(){return $||($=new w),{add:$.add.bind($),remove:$.remove.bind($),has:$.has.bind($),props:()=>$.props}}var x={ENTER:13,SPACE:32,TAB:9,ESC:27,LEFT:37,UP:38,RIGHT:39,DOWN:40};class k extends l{constructor(...e){super(...e),this.event={},this.triggered=0,this.previousEvent={}}init(){return this.handler=e=>{this.event=e,this.trigger(this.props)},document.addEventListener("keydown",this.handler,{passive:!1}),document.addEventListener("keyup",this.handler,{passive:!1}),this}kill(){return document.removeEventListener("keydown",this.handler),document.removeEventListener("keyup",this.handler),this}get props(){const t=Object.entries(x).reduce((e,[t,i])=>(e[t]=i===this.event.keyCode,e),{});return this.previousEvent.type||(this.triggered=0),"keydown"===this.event.type&&"keydown"===this.previousEvent.type?this.triggered+=1:this.triggered=1,this.previousEvent=this.event,e({event:this.event,triggered:this.triggered,direction:"keydown"===this.event.type?"down":"up",isUp:"keyup"===this.event.type,isDown:"keydown"===this.event.type},t)}}let O=null;function A(){return O||(O=new k),{add:O.add.bind(O),remove:O.remove.bind(O),has:O.has.bind(O),props:()=>O.props}}class L extends l{init(){return this.handler=()=>{this.trigger(this.props)},window.addEventListener("load",this.handler),this}kill(){return window.removeEventListener("load",this.handler),this}get props(){return{}}}let j=null;function N(){return j||(j=new L),{add:j.add.bind(j),remove:j.remove.bind(j),has:j.has.bind(j),props:function(){return j.props}}}const M={scrolled:E,resized:y,ticked:g,moved:m,keyed:A,loaded:N},T=Object.keys(M);class H{get __services(){return e({},this.__customServices,M)}constructor(e){this.__customServices={},Object.defineProperties(this,{__base:{enumerable:!1,writable:!1,value:e}})}has(e){if(!n(this.__base,e)&&!this.__services[e])return!1;const{has:t}=this.__services[e]();return t(this.__base.$id)}enable(e){if(this.has(e))return this.disable.bind(this,e);if(!n(this.__base,e)||!this.__services[e])return function(){};const{add:t}=this.__services[e](),i=this;return t(this.__base.$id,function(...t){r(i.__base,e,...t)}),this.disable.bind(this,e)}enableAll(){return Object.keys(this.__services).map(e=>this.enable(e))}disableAll(){Object.keys(this.__services).forEach(e=>{this.disable(e)})}disable(e){if(!this.__services[e])return;const{remove:t}=this.__services[e]();t(this.__base.$id)}register(e,t){this.__customServices[e]=t}unregister(e){if(T.includes(e))throw new Error(`[ServicesManager] The \`${e}\` core service can not be unregistered.`);delete this.__customServices[e]}}function P(e,t=[],i=null){const s=Object.getPrototypeOf(e);if(s===Object.prototype)return t;let n=Object.getOwnPropertyNames(s);return"function"==typeof i&&(n=n.filter(e=>i(e,s))),n=n.map(e=>[e,s]).reduce((e,t)=>[...e,t],t),P(s,n,i)}class B{constructor(e,t){this.__methodsCache=new Map,this.__rootElementHandler={handleEvent:e=>{const t=B.normalizeName(e.type);this.__base[`on${t}`](e)}},this.__refsHandler={handleEvent:e=>{const t=e.currentTarget,i=h.normalizeRefName(t.dataset.ref),s=`on${B.normalizeName(i)}${B.normalizeName(e.type)}`;let n=0;Array.isArray(this.__base.$refs[i])&&(n=this.__base.$refs[i].indexOf(t)),this.__base[s](e,n)}},this.__childrenHandler={handleEvent:e=>{const t=e.currentTarget.__base__;let i,s=0;const n=this.__base.$children;n.registeredNames.find(e=>!!n[e].includes(t)&&(i=e,s=n[e].indexOf(t),!0));const r=`on${B.normalizeName(i)}${B.normalizeName(e.type)}`,o=Array.isArray(e.detail)?e.detail:[];this.__base[r](...o,s,e)}},Object.defineProperties(this,{__rootElement:{enumerable:!1,writable:!1,value:e},__base:{enumerable:!1,writable:!1,value:t},__methodsCache:{enumerable:!1,writable:!1,value:this.__methodsCache},__rootElementHandler:{enumerable:!1,writable:!1,value:this.__rootElementHandler},__refsHandler:{enumerable:!1,writable:!1,value:this.__refsHandler},__childrenHandler:{enumerable:!1,writable:!1,value:this.__childrenHandler}})}__manageRef(e,t,i="add"){const s=`${i}EventListener`;this.__getEventMethodsByName(e).forEach(i=>{const n=this.__getEventNameByMethod(i,e);t.forEach(e=>e[s](n,this.__refsHandler))})}bindRef(e,t){this.__manageRef(e,t)}unbindRef(e,t){this.__manageRef(e,t,"remove")}__manageChild(e,t,i="add"){const s="add"===i?"$on":"$off";this.__getEventMethodsByName(e).forEach(i=>{const n=this.__getEventNameByMethod(i,e);t[s](n,this.__childrenHandler)})}bindChild(e,t){this.__manageChild(e,t)}unbindChild(e,t){this.__manageChild(e,t,"remove")}__manageRootElement(e="add"){const t=`${e}EventListener`;this.__getEventMethodsByName().forEach(e=>{const i=this.__getEventNameByMethod(e);this.__rootElement[t](i,this.__rootElementHandler)})}bindRootElement(){this.__manageRootElement()}unbindRootElement(){this.__manageRootElement("remove")}__getEventNameByMethod(e,t=""){const i=B.normalizeName(t),s=new RegExp(`^on${i}([A-Z].*)$`),[,n]=e.match(s);return B.normalizeEventName(n)}__getEventMethodsByName(e=""){const t=B.normalizeName(e),i=new RegExp(`^on${t}[A-Z].*$`),s=i.toString();let n=this.__methodsCache.get(s);return n||(n=Array.from(P(this.__base,[],e=>i.test(e)).reduce((e,[t])=>e.add(t),new Set)),this.__methodsCache.set(s,n)),n}static normalizeName(e){return e.replace(/[A-Z]([A-Z].*)/g,e=>e.toLowerCase()).replace(/[^a-zA-Z\d\s:]/g," ").replace(/(^\w|\s+\w)/g,e=>e.trim().toUpperCase()).trim()}static normalizeEventName(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`).replace(/^-/,"")}}var S=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===C}(e)}(e)},C="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function R(e,t){return!1!==t.clone&&t.isMergeableObject(e)?q(Array.isArray(e)?[]:{},e,t):e}function I(e,t,i){return e.concat(t).map(function(e){return R(e,i)})}function W(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return e.propertyIsEnumerable(t)}):[]}(e))}function z(e,t){try{return t in e}catch(e){return!1}}function q(e,t,i){(i=i||{}).arrayMerge=i.arrayMerge||I,i.isMergeableObject=i.isMergeableObject||S,i.cloneUnlessOtherwiseSpecified=R;var s=Array.isArray(t);return s===Array.isArray(e)?s?i.arrayMerge(e,t,i):function(e,t,i){var s={};return i.isMergeableObject(e)&&W(e).forEach(function(t){s[t]=R(e[t],i)}),W(t).forEach(function(n){(function(e,t){return z(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))})(e,n)||(s[n]=z(e,n)&&i.isMergeableObject(t[n])?function(e,t){if(!t.customMerge)return q;var i=t.customMerge(e);return"function"==typeof i?i:q}(n,i)(e[n],t[n],i):R(t[n],i))}),s}(e,t,i):R(t,i)}q.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(e,i){return q(e,i,t)},{})};var D=q;class V{constructor(e,t,i){var s,n;return this.__values={},this.__defaultValues={String:"",Number:0,Boolean:!1,Array:()=>[],Object:()=>({})},this.name="Base",this.debug=!1,this.log=!1,Object.defineProperties(this,{__element:{enumerable:!1,writable:!1,value:e},__values:{enumerable:!1,writable:!1,value:this.__values},__defaultValues:{enumerable:!1,writable:!1,value:this.__defaultValues}}),this.name=i.name,t.debug={type:Boolean,default:null!=(s=i.debug)&&s},t.log={type:Boolean,default:null!=(n=i.log)&&n},Object.entries(t).forEach(([e,t])=>{this.__register(e,t)}),this}__register(e,t){const i=!V.types.includes(t),s=i?t.type:t;if(!V.types.includes(s))throw new Error(`The "${e}" option has an invalid type. The allowed types are: String, Number, Boolean, Array and Object.`);const n=i?t.default:this.__defaultValues[s.name];if((s===Array||s===Object)&&"function"!=typeof n)throw new Error(`The default value for options of type "${s.name}" must be returned by a function.`);Object.defineProperty(this,e,{get:()=>this.get(e,s,n),set:t=>{this.set(e,s,t,n)},enumerable:!0})}get(e,t,i){const s=V.__getPropertyName(e),n=this.__hasProperty(s);if(t===Boolean){if(i){const t=V.__getPropertyName(e,"No");return!this.__hasProperty(t)}return n||i}const r=this.__element.dataset[s];if(t===Number)return n?Number(r):i;if(t===Array||t===Object){const s=D(i(),n?JSON.parse(r):this.__defaultValues[t.name]());return this.__values[e]||(this.__values[e]=s),this.__values[e]}return n?r:i}set(e,t,i,s){const n=V.__getPropertyName(e);if(i.constructor.name!==t.name){const s=Array.isArray(i)||function(e){return"object"==typeof e&&!!e&&"[object Object]"===e.toString()}(i)?JSON.stringify(i):i;throw new TypeError(`The "${s}" value for the "${e}" option must be of type "${t.name}"`)}switch(t){case Boolean:if(s){const t=V.__getPropertyName(e,"No");i?delete this.__element.dataset[t]:this.__element.dataset[t]=""}else i?this.__element.dataset[n]="":delete this.__element.dataset[n];break;case Array:case Object:this.__values[e]=i;break;default:this.__element.dataset[n]=i}}__hasProperty(e){return void 0!==this.__element.dataset[e]}static __getPropertyName(e,t=""){const i=e+t;if(V.__propertyNameCache.has(i))return V.__propertyNameCache.get(i);const s=`option${t}${e.replace(/^\w/,e=>e.toUpperCase())}`;return V.__propertyNameCache.set(i,s),s}}V.types=[String,Number,Boolean,Array,Object],V.__propertyNameCache=new Map;let F=0;function G(){}class Y{get $root(){if(!this.$parent)return this;let e=this.$parent,t=this.$parent;for(;e;)e.$parent||(t=e),e=e.$parent;return t}get __config(){let t=Object.getPrototypeOf(this),{config:i}=t.constructor;for(;t.constructor.config&&t.constructor.$isBase;)i=e({},t.constructor.config,i),t.constructor.config.options&&(i.options=e({},t.constructor.config.options,i.options)),t=Object.getPrototypeOf(t);return i}get $services(){const e=this.__services;return this.$emit("get:services",e),e}get $refs(){const e=this.__refs;return this.$emit("get:refs",e),e}get $options(){const e=this.__options;return this.$emit("get:options",e),e}get $children(){const e=this.__children;return this.$emit("get:children",e),e}get $log(){return this.__options.log?window.console.log.bind(window,`[${this.__config.name}]`):G}get __debug(){return this.__options.debug&&void 0!==window.__DEV__&&window.__DEV__?window.console.log.bind(window,`[debug] [${this.$id}]`):G}constructor(e){if(this.$parent=null,this.$isMounted=!1,!e)throw new Error("The root element must be defined.");const{__config:t}=this;if(!t)throw new Error("The `config` static property must be defined.");if(!t.name)throw new Error("The `config.name` property is required.");return this.$id=`${t.name}-${F}`,F+=1,this.$el=e,"__base__"in this.$el||Object.defineProperty(this.$el,"__base__",{get:()=>this,configurable:!0}),this.__options=new V(e,t.options||{},t),this.__services=new H(this),this.__events=new B(e,this),this.__children=new a(this,e,t.components||{},this.__events),this.__refs=new h(this,e,t.refs||[],this.__events),this.__debug("constructor",this),this}$mount(){return this.__debug("$mount"),this.$children.registerAll(),this.$refs.registerAll(),this.__events.bindRootElement(),this.$services.enableAll(),this.$children.mountAll(),r(this,"mounted"),this.$isMounted=!0,this}$update(){return this.__debug("$update"),this.$refs.unregisterAll(),this.$services.disableAll(),this.$children.registerAll(),this.$refs.registerAll(),this.$services.enableAll(),this.$children.updateAll(),r(this,"updated"),this}$destroy(){return this.__debug("$destroy"),this.__events.unbindRootElement(),this.$refs.unregisterAll(),this.$services.disableAll(),this.$children.destroyAll(),r(this,"destroyed"),this.$isMounted=!1,this}$terminate(){this.__debug("$terminate"),this.$destroy(),r(this,"terminated"),Object.defineProperty(this.$el,"__base__",{value:"terminated",configurable:!1,writable:!1})}static $factory(e){if(!e)throw new Error("The $factory method requires a component’s name or selector to be specified.");return o(e).map(e=>new this(e).$mount())}$on(e,t,i){return this.__debug("$on",e,t,i),this.$el.addEventListener(e,t,i),()=>{this.$off(e,t,i)}}$off(e,t,i){this.__debug("$off",e,t),this.$el.removeEventListener(e,t,i)}$emit(e,...t){this.__debug("$emit",e,t),this.$el.dispatchEvent(new CustomEvent(e,{detail:t}))}}function X(e){const{breakpoint:t}=y().props();e.forEach(([e,i])=>{e.includes(t)&&!i.$isMounted?setTimeout(()=>i.$mount(),0):!e.includes(t)&&i.$isMounted&&i.$destroy()})}Y.$isBase=!0;const U=new WeakMap;function Z(e,t){if(!Array.isArray(t))throw new Error("[withBreakpointManager] The `breakpoints` parameter must be an array.");if(t.length<2)throw new Error("[withBreakpointManager] You must define at least 2 breakpoints.");const{add:i,props:s}=y();if(!s().breakpoint)throw new Error("The `BreakpointManager` class requires breakpoints to be defined.");return class extends e{constructor(e){return super(e),U.has(this)||U.set(this,function(e,t){return t.map(([t,i])=>{const s=new i(e.$el);return Object.defineProperty(s,"$parent",{get:()=>e.$parent}),[t,s]})}(this,t)),i(`BreakpointManager-${this.$id}`,()=>{X(U.get(this))}),this.instances=U.get(this),this}$mount(){return super.$mount(),X(U.get(this)),this}$destroy(){return Array.isArray(U.get(this))&&U.get(this).forEach(([,e])=>{e.$destroy()}),super.$destroy()}}}function J(e,t=y().props().breakpoint){const{activeBreakpoints:i,inactiveBreakpoints:s}=e.$options,n=i&&i.split(" ").includes(t),r=s&&s.split(" ").includes(t);return i&&n||s&&!r?"$mount":"$destroy"}function K(e){const{activeBreakpoints:t,inactiveBreakpoints:i}=e.$options;return Boolean(t||i)}function Q(e,t){!function(e){const{activeBreakpoints:t,inactiveBreakpoints:i,name:s}=e.$options;if(t&&i)throw new Error(`[${s}] Incorrect configuration: the \`activeBreakpoints\` and \`inactiveBreakpoints\` are not compatible.`)}(t);const{add:i,has:s}=y();s(e)||i(e,function({breakpoint:e}){const i=J(t,e);"$destroy"===i&&t.$isMounted?t[i]():"$mount"!==i||t.$isMounted||setTimeout(()=>t[i](),0)})}function ee(t){var i,s,n,r,o;return s=i=class extends t{constructor(e){super(e);const{remove:t,props:i}=y(),{name:s}=this.$options;if(!i().breakpoint)throw new Error(`[${s}] The \`BreakpointObserver\` class requires breakpoints to be defined.`);const n=`BreakpointObserver-${this.$id}`;return new MutationObserver(([e])=>{if("attributes"===e.type&&("data-options"===e.attributeName||e.attributeName.startsWith("data-option-"))){if(!K(this))return this.$mount(),void t(n);Q(n,this)}}).observe(this.$el,{attributes:!0}),K(this)?(Q(n,this),this):this}$mount(){return K(this)?"$mount"===J(this)?super.$mount():this:super.$mount()}},i.config=e({},t.config||{},{name:`${null!=(n=null==t||null==(r=t.config)?void 0:r.name)?n:""}WithBreakpointObserver`,options:e({},(null==t||null==(o=t.config)?void 0:o.options)||{},{activeBreakpoints:String,inactiveBreakpoints:String})}),s}function te(e,t,i=.85){if(i>=1||i<=0)throw new Error(`The \`factor\` parameter must be a number greater than 0 and smaller than 1, \`${i}\` given.`);let s=t,n=e;for(;Math.abs(s)>.1;)n+=s,s*=i;return n}let ie=0;class se extends l{constructor(t,i={}){return super(),this.isGrabbing=!1,this.hasInertia=!1,this.x=0,this.y=0,this.delta={x:0,y:0},this.origin={x:0,y:0},this.distance={x:0,y:0},this.final={x:0,y:0},this.options={factor:.85},ie+=1,this.id=`drag-${ie}`,this.target=t,this.options=e({},this.options,i),this.pointerHandler=this.pointerHandler.bind(this),this.rafHandler=this.rafHandler.bind(this),this}init(){const e={passive:!0};return this.target.addEventListener("mousedown",this,e),this.target.addEventListener("touchstart",this,e),m().add(this.id,this.pointerHandler),this}kill(){return this.target.removeEventListener("mousemove",this),this.target.removeEventListener("touchmove",this),m().remove(this.id),this}handleEvent(e){const t=e instanceof MouseEvent?e.clientX:e.touches[0].clientX,i=e instanceof MouseEvent?e.clientY:e.touches[0].clientY;this.start(t,i)}start(e,t){this.x=e,this.y=t,this.origin.x=e,this.origin.y=t,this.delta.x=0,this.delta.y=0,this.distance.x=0,this.distance.y=0,this.final.x=e,this.final.y=t,this.mode="start",this.isGrabbing=!0,this.trigger(this.props)}drop(){this.isGrabbing=!1,this.mode="drop",this.hasInertia=!0,this.final.x=te(this.x,this.delta.x,this.options.factor),this.final.y=te(this.y,this.delta.y,this.options.factor),this.trigger(this.props),setTimeout(()=>{const e=g();e.remove(this.id),e.add(this.id,this.rafHandler)},0)}stop(){g().remove(this.id),this.hasInertia=!1,this.mode="stop",this.trigger(this.props)}rafHandler(){this.isGrabbing||(this.x+=this.delta.x,this.y+=this.delta.y,this.distance.x=this.x-this.origin.x,this.distance.y=this.y-this.origin.y,this.delta.x*=this.options.factor,this.delta.y*=this.options.factor,"inertia"!==this.mode&&(this.mode="inertia"),this.trigger(this.props),Math.abs(this.delta.x)<.1&&Math.abs(this.delta.y)<.1&&this.stop())}pointerHandler(e){this.isGrabbing&&(this.x=e.x,this.y=e.y,this.delta.x=e.delta.x,this.delta.y=e.delta.y,this.final.x=e.x,this.final.y=e.y,this.distance.x=this.x-this.origin.x,this.distance.y=this.y-this.origin.y,"drag"!==this.mode&&(this.mode="drag"),this.trigger(this.props),e.isDown||this.drop())}get props(){return{target:this.target,mode:this.mode,isGrabbing:this.isGrabbing,hasInertia:this.hasInertia,x:this.x,y:this.y,delta:this.delta,origin:this.origin,distance:this.distance,final:this.final}}}const ne=new WeakMap;function re(e,t){let i=ne.get(e);return i||(i=new se(e,t),ne.set(e,i)),{add:i.add.bind(i),remove:i.remove.bind(i),has:i.has.bind(i),props:()=>i.props}}const oe=["target"];function ae(e,t={target(){return this.$el}}){return class extends e{constructor(e){super(e),this.$on("mounted",()=>{const{target:e}=t,i=function(e,t){if(null==e)return{};var i,s,n={},r=Object.keys(e);for(s=0;s<r.length;s++)t.indexOf(i=r[s])>=0||(n[i]=e[i]);return n}(t,oe),s=re.bind(void 0,e.call(this),i);this.$services.register("dragged",s),this.$services.enable("dragged")}),this.$on("destroyed",()=>{this.$services.disable("dragged"),this.$services.unregister("dragged")})}}}function he(e,t,i={}){var s,n;const r=D(e.config,t,i);return r.name===e.config.name&&(r.name=`${e.config.name}WithExtraConfig`),n=s=class extends e{},s.config=r,n}function le(e){return[...new Array(e+1)].map((t,i)=>i/e)}function de(t,i={threshold:le(100)}){var s,n,r,o,a;return n=s=class extends t{constructor(t){if(super(t),!this.intersected||"function"!=typeof this.intersected)throw new Error("[withIntersectionObserver] The `intersected` method must be defined.");return this.$observer=new IntersectionObserver(e=>{this.__debug("intersected",e),this.$emit("intersected",e),this.intersected(e)},e({},i,this.$options.intersectionObserver||{})),this.$on("mounted",()=>{this.$observer.observe(this.$el)}),this.$on("destroyed",()=>{this.$observer.unobserve(this.$el)}),this}},s.config=e({},t.config||{},{name:`${null!=(r=null==t||null==(o=t.config)?void 0:o.name)?r:""}WithIntersectionObserver`,options:e({},(null==t||null==(a=t.config)?void 0:a.options)||{},{intersectionObserver:Object})}),n}function ce(t,n={threshold:[0,1]}){var r,o,a,h,l,d,c;return o=i("isVisible"),a=i("observer"),h=r=class extends t{constructor(t){return super(t),Object.defineProperty(this,o,{writable:!0,value:!1}),Object.defineProperty(this,a,{writable:!0,value:void 0}),s(this,a)[a]=new IntersectionObserver(e=>{const t=e.reduce((e,t)=>e||t.isIntersecting,!1);s(this,o)[o]!==t&&(s(this,o)[o]=t,this[t?"$mount":"$destroy"]())},e({},n,this.$options.intersectionObserver)),s(this,a)[a].observe(this.$el),this.$on("terminated",()=>{s(this,a)[a].disconnect()}),this}$mount(){return s(this,o)[o]&&super.$mount(),this}},r.config=e({},t.config||{},{name:`${null!=(l=null==t||null==(d=t.config)?void 0:d.name)?l:""}WithMountWhenInView`,options:e({},(null==t||null==(c=t.config)?void 0:c.options)||{},{intersectionObserver:Object})}),h}function ue(e,t){let i,s="complete"===document.readyState;s?i=new e(t).$mount():document.addEventListener("readystatechange",()=>{"complete"===document.readyState&&(i=new e(t).$mount(),s=!0)});const n=new Promise(e=>{document.addEventListener("readystatechange",()=>{"complete"===document.readyState&&setTimeout(()=>e(i),0)})});return function(){return s?Promise.resolve(i):n}}function me(e,t){return"string"==typeof e?o(e,t):Array.isArray(e)?e:[e]}function pe(e,t,i,s){const n="string"==typeof i?[i]:i;let r;return new Promise(i=>{const o=me(t,null==s?void 0:s.$el),a={capture:!0,passive:!0,once:!0},h=()=>{(t=>{e().then(e=>{r="default"in e?e.default:e,t(r)})})(i)};o.forEach(e=>{n.forEach(t=>{e.addEventListener(t,h,a)})})})}function _e(e,t){let i;const s=t=>{e().then(e=>{i="default"in e?e.default:e,t(i)})};return new Promise(e=>{var i;const n=null!=(i=null==t?void 0:t.timeout)?i:1;"requestIdleCallback"in window?window.requestIdleCallback(()=>{setTimeout(()=>{s(e)},0)},{timeout:null==t?void 0:t.timeout}):setTimeout(()=>{s(e)},n)})}function ge(e,t,i,s={}){let n;return new Promise(r=>{const o=new IntersectionObserver(t=>{t.some(e=>e.isIntersecting)&&setTimeout(()=>{((t,i)=>{e().then(e=>{n="default"in e?e.default:e,t(n),o.disconnect()})})(r)},0)},s);me(t,null==i?void 0:i.$el).forEach(e=>o.observe(e))})}export{Y as Base,ue as createApp,pe as importOnInteraction,_e as importWhenIdle,ge as importWhenVisible,re as useDrag,A as useKey,N as useLoad,m as usePointer,g as useRaf,y as useResize,E as useScroll,Z as withBreakpointManager,ee as withBreakpointObserver,ae as withDrag,he as withExtraConfig,de as withIntersectionObserver,ce as withMountWhenInView};
package/index.umd.js CHANGED
@@ -1,2 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e||self).Base={})}(this,function(e){function t(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function n(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function i(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,o(e,t)}function o(e,t){return(o=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function a(e,t,n){void 0===t&&(t=[]),void 0===n&&(n=null);var r=Object.getPrototypeOf(e);if(r===Object.prototype)return t;var i=Object.getOwnPropertyNames(r);return"function"==typeof n&&(i=i.filter(function(e){return n(e,r)})),i=i.map(function(e){return[e,r]}).reduce(function(e,t){return[].concat(e,[t])},t),a(r,i,n)}function u(e,t){return"function"==typeof e[t]}function c(e,t){var n,r=[].slice.call(arguments,2);return e.__debug.apply(e,["callMethod",t].concat(r)),"destroyed"===t&&!e.$isMounted||"mounted"===t&&e.$isMounted?(e.__debug("not",t,"because the method has already been triggered once."),e):(e.$emit.apply(e,[t].concat(r)),u(e,t)?((n=e[t]).call.apply(n,[e].concat(r)),e.__debug.apply(e,[t,e].concat(r)),e):e)}function l(e,t){void 0===t&&(t=document);var n='[data-component="'+e+'"]',r=[];try{r=Array.from(t.querySelectorAll(n))}catch(e){}return 0===r.length&&(r=Array.from(t.querySelectorAll(e))),r}var d=function(){function e(e,t,n,r){this.__base=e,this.__element=t,this.__components=n,this.__eventsManager=r}var t=e.prototype;return t.registerAll=function(){var e=this;Object.entries(this.__components).forEach(function(t){return e.__register(t[0],t[1])})},t.__register=function(e,t){var n=this;Object.defineProperty(this,e,{enumerable:!0,configurable:!0,get:function(){var r=l(e,n.__element);return 0===r.length?[]:r.map(function(r){return n.__getChild(r,t,e)}).filter(function(e){return"terminated"!==e})}})},t.__getChild=function(e,t,n){var r=this;if(e.__base__)return e.__base__;if("$isBase"in t){var i=new t(e);return Object.defineProperty(i,"$parent",{get:function(){return r.__base}}),i}return t(this.__base).then(function(t){var i;return r.__getChild(e,null!=(i=t.default)?i:t,n)})},t.mountAll=function(){this.__triggerHookForAll("$mount")},t.updateAll=function(){this.__triggerHookForAll("$update")},t.destroyAll=function(){this.__triggerHookForAll("$destroy")},t.__triggerHookForAll=function(e){var t=this;this.registeredNames.forEach(function(n){t[n].forEach(function(r){r instanceof Promise?r.then(function(r){return t.__triggerHook(e,r,n)}):t.__triggerHook(e,r,n)})})},t.__triggerHook=function(e,t,n){"$update"!==e||t.$isMounted||(e="$mount"),"$update"!==e&&"$destroy"!==e||this.__eventsManager.unbindChild(n,t),"$update"!==e&&"$mount"!==e||this.__eventsManager.bindChild(n,t),t[e]()},n(e,[{key:"registeredNames",get:function(){return Object.keys(this).filter(function(e){return!e.startsWith("__")})}}]),e}(),h=function(){function e(e,t,n,r){this.__element=t,this.__refs=n,this.__base=e,this.__eventsManager=r}var t=e.prototype;return t.registerAll=function(){var e=this;this.__refs.forEach(function(t){return e.__register(t)})},t.unregisterAll=function(){var e=this;this.__refs.forEach(function(t){return e.__unregister(t)})},t.__register=function(t){var n=this,r=t.endsWith("[]"),i=e.normalizeRefName(t),o=Array.from(this.__element.querySelectorAll('[data-ref="'+t+'"]')).filter(function(e){return n.__filterRefsBelongingToInstance(e)});!r&&o.length>1&&console.warn("["+this.__base.$options.name+"]",'The "'+t+'" ref has been found multiple times.',"Did you forgot to add the `[]` suffix to its name?"),this.__eventsManager.bindRef(t,o),Object.defineProperty(this,i,{value:r||o.length>1?o:o[0],enumerable:!0,configurable:!0})},t.__unregister=function(t){var n=e.normalizeRefName(t),r=Array.isArray(this[n])?this[n]:[this[n]];this.__eventsManager.unbindRef(t,r)},e.normalizeRefName=function(e){return e.endsWith("[]")?e.replace(/\[\]$/,""):e},t.__filterRefsBelongingToInstance=function(e){for(var t=e.parentElement;t&&void 0===t.dataset.component;)t=t.parentElement;return null===t||t===this.__element},e}(),f=function(){function e(){this.callbacks=new Map,this.isInit=!1}var t=e.prototype;return t.init=function(){throw new Error("The `init` method must be implemented.")},t.kill=function(){throw new Error("The `kill` method must be implemented.")},t.add=function(e,t){if(this.has(e))throw new Error("A callback with the key `"+e+"` has already been registered.");return 0!==this.callbacks.size||this.isInit||(this.init(),this.isInit=!0),this.callbacks.set(e,t),this},t.has=function(e){return this.callbacks.has(e)},t.get=function(e){return this.callbacks.get(e)},t.remove=function(e){return this.callbacks.delete(e),0===this.callbacks.size&&this.isInit&&(this.kill(),this.isInit=!1),this},t.trigger=function(){var e=[].slice.call(arguments);return this.callbacks.forEach(function(t){t.apply(void 0,e)}),this},n(e,[{key:"props",get:function(){throw new Error("The `props` getter must be implemented.")}}]),e}();function p(e){return"undefined"!=typeof TouchEvent&&e instanceof TouchEvent}var m=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(t=e.call.apply(e,[this].concat(r))||this).isDown=!1,t.y=window.innerHeight/2,t.yLast=window.innerHeight/2,t.x=window.innerWidth/2,t.xLast=window.innerWidth/2,t.hasRaf=!1,t}i(t,e);var r=t.prototype;return r.init=function(){document.documentElement.addEventListener("mouseenter",this,{once:!0,capture:!0});var e={passive:!0,capture:!0};return document.addEventListener("mousemove",this,e),document.addEventListener("touchmove",this,e),document.addEventListener("mousedown",this,e),document.addEventListener("touchstart",this,e),document.addEventListener("mouseup",this,e),document.addEventListener("touchend",this,e),this},r.handleEvent=function(e){switch(e.type){case"mouseenter":case"mousemove":case"touchmove":this.handler(e);break;case"mousedown":case"touchstart":this.downHandler();break;case"mouseup":case"touchend":this.upHandler()}},r.kill=function(){return document.removeEventListener("mousemove",this),document.removeEventListener("touchmove",this),document.removeEventListener("mousedown",this),document.removeEventListener("touchstart",this),document.removeEventListener("mouseup",this),document.removeEventListener("touchend",this),this},r.handler=function(e){this.updateValues(e),this.trigger(this.props)},r.downHandler=function(){this.isDown=!0,this.trigger(this.props)},r.upHandler=function(){this.isDown=!1,this.trigger(this.props)},r.updateValues=function(e){var t,n;this.event=e,this.yLast=this.y,this.xLast=this.x;var r=p(e)?null==(t=e.touches[0])?void 0:t.clientY:e.clientY;r!==this.y&&(this.y=r);var i=p(e)?null==(n=e.touches[0])?void 0:n.clientX:e.clientX;i!==this.x&&(this.x=i)},n(t,[{key:"props",get:function(){return{event:this.event,isDown:this.isDown,x:this.x,y:this.y,changed:{x:this.x!==this.xLast,y:this.y!==this.yLast},last:{x:this.xLast,y:this.yLast},delta:{x:this.x-this.xLast,y:this.y-this.yLast},progress:{x:this.x/window.innerWidth,y:this.y/window.innerHeight},max:{x:window.innerWidth,y:window.innerHeight}}}}]),t}(f),v=null,_=function(e){function t(){var t;return(t=e.call(this)||this).isTicking=!1,t.id=0,t.raf="undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout,t.cancelRaf="undefined"!=typeof window&&window.cancelAnimationFrame?window.cancelAnimationFrame.bind(window):clearTimeout,t.loop=t.loop.bind(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(t)),t}i(t,e);var r=t.prototype;return r.init=function(){return this.isTicking=!0,this.loop(),this},r.loop=function(){this.trigger(this.props),this.isTicking&&(this.id=this.raf(this.loop))},r.kill=function(){return this.cancelRaf(this.id),this.isTicking=!1,this},n(t,[{key:"props",get:function(){return{time:window.performance.now()}}}]),t}(f),y=null;function g(e,t){var n;return void 0===t&&(t=300),function(){var r=arguments;clearTimeout(n),n=setTimeout(function(){e.apply(void 0,[].slice.call(r))},t)}}var b=function(e){function t(){return e.apply(this,arguments)||this}i(t,e);var r=t.prototype;return r.init=function(){var e=this;return this.handler=g(function(){e.trigger(e.props)}).bind(this),window.addEventListener("resize",this.handler),this},r.kill=function(){return window.removeEventListener("resize",this.handler),this},n(t,[{key:"props",get:function(){var e={width:window.innerWidth,height:window.innerHeight,ratio:window.innerWidth/window.innerHeight,orientation:"square"};return e.ratio>1&&(e.orientation="landscape"),e.ratio<1&&(e.orientation="portrait"),this.breakpointElement&&(e.breakpoint=this.breakpoint,e.breakpoints=this.breakpoints),e}},{key:"breakpointElement",get:function(){return document.querySelector("[data-breakpoint]")||null}},{key:"breakpoint",get:function(){return window.getComputedStyle(this.breakpointElement,"::before").getPropertyValue("content").replace(/"/g,"")}},{key:"breakpoints",get:function(){return window.getComputedStyle(this.breakpointElement,"::after").getPropertyValue("content").replace(/"/g,"").split(",")}},{key:"canUseResizeObserver",get:function(){return void 0!==window.ResizeObserver}}]),t}(f),w=null,E=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(t=e.call.apply(e,[this].concat(r))||this).y=window.pageYOffset,t.yLast=window.pageYOffset,t.x=window.pageXOffset,t.xLast=window.pageXOffset,t}i(t,e);var r=t.prototype;return r.init=function(){return document.addEventListener("scroll",this,{passive:!0,capture:!0}),this},r.handleEvent=function(){this.trigger(this.props),this.debouncedHandler()},r.kill=function(){return document.removeEventListener("scroll",this),this},n(t,[{key:"debouncedHandler",get:function(){var e=this,t=g(function(){e.trigger(e.props)},0);return Object.defineProperty(this,"debouncedHandler",{value:t}),t}},{key:"props",get:function(){return this.yLast=this.y,this.xLast=this.x,window.pageYOffset!==this.y&&(this.y=window.pageYOffset),window.pageXOffset!==this.x&&(this.x=window.pageXOffset),{x:this.x,y:this.y,changed:{x:this.x!==this.xLast,y:this.y!==this.yLast},last:{x:this.xLast,y:this.yLast},delta:{x:this.x-this.xLast,y:this.y-this.yLast},progress:{x:0===this.max.x?1:this.x/this.max.x,y:0===this.max.y?1:this.y/this.max.y},direction:{x:this.x>this.xLast?"RIGHT":this.x<this.xLast?"LEFT":"NONE",y:this.y>this.yLast?"DOWN":this.y<this.yLast?"UP":"NONE"},max:this.max}}},{key:"max",get:function(){return{x:(document.scrollingElement||document.body).scrollWidth-window.innerWidth,y:(document.scrollingElement||document.body).scrollHeight-window.innerHeight}}}]),t}(f),O=null,$={ENTER:13,SPACE:32,TAB:9,ESC:27,LEFT:37,UP:38,RIGHT:39,DOWN:40},A=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(t=e.call.apply(e,[this].concat(r))||this).event={},t.triggered=0,t.previousEvent={},t}i(t,e);var o=t.prototype;return o.init=function(){var e=this;return this.handler=function(t){e.event=t,e.trigger(e.props)},document.addEventListener("keydown",this.handler,{passive:!1}),document.addEventListener("keyup",this.handler,{passive:!1}),this},o.kill=function(){return document.removeEventListener("keydown",this.handler),document.removeEventListener("keyup",this.handler),this},n(t,[{key:"props",get:function(){var e=this,t=Object.entries($).reduce(function(t,n){return t[n[0]]=n[1]===e.event.keyCode,t},{});return this.previousEvent.type||(this.triggered=0),"keydown"===this.event.type&&"keydown"===this.previousEvent.type?this.triggered+=1:this.triggered=1,this.previousEvent=this.event,r({event:this.event,triggered:this.triggered,direction:"keydown"===this.event.type?"down":"up",isUp:"keyup"===this.event.type,isDown:"keydown"===this.event.type},t)}}]),t}(f),k=null,x=function(e){function t(){return e.apply(this,arguments)||this}i(t,e);var r=t.prototype;return r.init=function(){var e=this;return this.handler=function(){e.trigger(e.props)},window.addEventListener("load",this.handler),this},r.kill=function(){return window.removeEventListener("load",this.handler),this},n(t,[{key:"props",get:function(){return{}}}]),t}(f),j=null,L={scrolled:function(){return O||(O=new E),{add:O.add.bind(O),remove:O.remove.bind(O),has:O.has.bind(O),props:function(){return O.props}}},resized:function(){return w||(w=new b),{add:w.add.bind(w),remove:w.remove.bind(w),has:w.has.bind(w),props:function(){return w.props}}},ticked:function(){return y||(y=new _),{add:y.add.bind(y),remove:y.remove.bind(y),has:y.has.bind(y),props:function(){return y.props}}},moved:function(){return v||(v=new m),{add:v.add.bind(v),remove:v.remove.bind(v),has:v.has.bind(v),props:function(){return v.props}}},keyed:function(){return k||(k=new A),{add:k.add.bind(k),remove:k.remove.bind(k),has:k.has.bind(k),props:function(){return k.props}}},loaded:function(){return j||(j=new x),{add:j.add.bind(j),remove:j.remove.bind(j),has:j.has.bind(j),props:function(){return j.props}}}},T=function(){function e(e){this.__base=e}var t=e.prototype;return t.has=function(e){return!(!u(this.__base,e)&&!L[e])&&(0,L[e]().has)(this.__base.$id)},t.enable=function(e){if(this.has(e))return this.disable.bind(this,e);if(!u(this.__base,e)||!L[e])return function(){};var t=L[e](),n=this;return(0,t.add)(this.__base.$id,function(){c.apply(void 0,[n.__base,e].concat([].slice.call(arguments)))}),this.disable.bind(this,e)},t.enableAll=function(){var e=this;return Object.keys(L).map(function(t){return e.enable(t)})},t.disableAll=function(){var e=this;Object.keys(L).forEach(function(t){e.disable(t)})},t.disable=function(e){L[e]&&(0,L[e]().remove)(this.__base.$id)},t.register=function(e,t){L[e]=t},t.unregister=function(e){delete L[e]},e}(),N=function(){function e(t,n){var r=this;this.__methodsCache=new WeakMap,this.__rootElementHandler={handleEvent:function(t){var n="on"+e.normalizeName(t.type);"function"==typeof r.__base[n]&&r.__base[n](t)}},this.__refsHandler={handleEvent:function(t){var n=t.currentTarget,i=h.normalizeRefName(n.dataset.ref),o="on"+e.normalizeName(i)+e.normalizeName(t.type);if("function"==typeof r.__base[o]){var s=0;Array.isArray(r.__base.$refs[i])&&(s=r.__base.$refs[i].indexOf(n)),r.__base[o](t,s)}}},this.__childrenHandler={handleEvent:function(t){var n,i=t.currentTarget.__base__,o=0,s=r.__base.$children;s.registeredNames.find(function(e){return!!s[e].includes(i)&&(n=e,o=s[e].indexOf(i),!0)});var a="on"+e.normalizeName(n)+e.normalizeName(t.type);if("function"==typeof r.__base[a]){var u,c,l=null!=(u=t.detail)?u:[];(c=r.__base)[a].apply(c,l.concat([o,t]))}}},this.__rootElement=t,this.__base=n}var t=e.prototype;return t.__manageRef=function(e,t,n){var r=this;void 0===n&&(n="add");var i=n+"EventListener";this.__getEventMethodsByName(e).forEach(function(n){var o=r.__getEventNameByMethod(n,e);t.forEach(function(e){return e[i](o,r.__refsHandler)})})},t.bindRef=function(e,t){this.__manageRef(e,t)},t.unbindRef=function(e,t){this.__manageRef(e,t,"remove")},t.__manageChild=function(e,t,n){var r=this;void 0===n&&(n="add");var i="add"===n?"$on":"$off";this.__getEventMethodsByName(e).forEach(function(n){var o=r.__getEventNameByMethod(n,e);t[i](o,r.__childrenHandler)})},t.bindChild=function(e,t){this.__manageChild(e,t)},t.unbindChild=function(e,t){this.__manageChild(e,t,"remove")},t.__manageRootElement=function(e){var t=this;void 0===e&&(e="add");var n=e+"EventListener";this.__getEventMethodsByName().forEach(function(e){var r=t.__getEventNameByMethod(e);t.__rootElement[n](r,t.__rootElementHandler)})},t.bindRootElement=function(){this.__manageRootElement()},t.unbindRootElement=function(){this.__manageRootElement("remove")},t.__getEventNameByMethod=function(t,n){void 0===n&&(n="");var r=e.normalizeName(n),i=new RegExp("^on"+r+"([A-Z].*)$"),o=t.match(i);return e.normalizeEventName(o[1])},t.__getEventMethodsByName=function(t){void 0===t&&(t="");var n=e.normalizeName(t),r=new RegExp("^on"+n+"[A-Z].*$"),i=this.__methodsCache.get(r);return i||(i=a(this.__base,[],function(e){return r.test(e)}),this.__methodsCache.set(r,i)),i.reduce(function(e,t){var n=t[0];return e.includes(n)||e.push(n),e},[])},e.normalizeName=function(e){return e.replace(/[A-Z]([A-Z].*)/g,function(e){return e.toLowerCase()}).replace(/[^a-zA-Z\d\s:]/g," ").replace(/(^\w|\s+\w)/g,function(e){return e.trim().toUpperCase()}).trim()},e.normalizeEventName=function(e){return e.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()}).replace(/^-/,"")},e}(),P=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===M}(e)}(e)},M="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function S(e,t){return!1!==t.clone&&t.isMergeableObject(e)?B(Array.isArray(e)?[]:{},e,t):e}function R(e,t,n){return e.concat(t).map(function(e){return S(e,n)})}function C(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return e.propertyIsEnumerable(t)}):[]}(e))}function H(e,t){try{return t in e}catch(e){return!1}}function B(e,t,n){(n=n||{}).arrayMerge=n.arrayMerge||R,n.isMergeableObject=n.isMergeableObject||P,n.cloneUnlessOtherwiseSpecified=S;var r=Array.isArray(t);return r===Array.isArray(e)?r?n.arrayMerge(e,t,n):function(e,t,n){var r={};return n.isMergeableObject(e)&&C(e).forEach(function(t){r[t]=S(e[t],n)}),C(t).forEach(function(i){(function(e,t){return H(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))})(e,i)||(r[i]=H(e,i)&&n.isMergeableObject(t[i])?function(e,t){if(!t.customMerge)return B;var n=t.customMerge(e);return"function"==typeof n?n:B}(i,n)(e[i],t[i],n):S(t[i],n))}),r}(e,t,n):S(t,n)}B.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(e,n){return B(e,n,t)},{})};var z=B;function I(e){return e.toLowerCase()}var D=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g],W=/[^A-Z0-9]+/gi;function F(e,t,n){return t instanceof RegExp?e.replace(t,n):t.reduce(function(e,t){return e.replace(t,n)},e)}var q=function(e,t,n,r){if("length"!==n&&"prototype"!==n&&"arguments"!==n&&"caller"!==n){var i=Object.getOwnPropertyDescriptor(e,n),o=Object.getOwnPropertyDescriptor(t,n);!V(i,o)&&r||Object.defineProperty(e,n,o)}},V=function(e,t){return void 0===e||e.configurable||e.writable===t.writable&&e.enumerable===t.enumerable&&e.configurable===t.configurable&&(e.writable||e.value===t.value)},Z=function(e,t){return"/* Wrapped "+e+"*/\n"+t},U=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),Y=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),X="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function J(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var G=()=>{const e={};return e.promise=new Promise((t,n)=>{e.resolve=t,e.reject=n}),e},K=J(function(e){var t={exports:{}};return function(e,t){var n=X&&X.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){e.done?i(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})},r=X&&X.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(G);function o(e,t="maxAge"){let r,o,s;const a=()=>n(this,void 0,void 0,function*(){if(void 0!==r)return;const a=a=>n(this,void 0,void 0,function*(){s=i.default();const n=a[1][t]-Date.now();return n<=0?(e.delete(a[0]),void s.resolve()):(r=a[0],o=setTimeout(()=>{e.delete(a[0]),s&&s.resolve()},n),"function"==typeof o.unref&&o.unref(),s.promise)});try{for(const t of e)yield a(t)}catch(e){}r=void 0}),u=e.set.bind(e);return e.set=(t,n)=>{e.has(t)&&e.delete(t);const i=u(t,n);return r&&r===t&&(r=void 0,void 0!==o&&(clearTimeout(o),o=void 0),void 0!==s&&(s.reject(void 0),s=void 0)),a(),i},a(),e}t.default=o,e.exports=o,e.exports.default=o}(t,t.exports),t.exports}()),Q=new WeakMap,ee=function(e,t){var n={},i=n.cacheKey,o=n.cache,a=void 0===o?new Map:o,u=n.maxAge;"number"==typeof u&&K(a);var c=function(){var t=[].slice.call(arguments),n=i?i(t):t[0],r=a.get(n);if(r)return r.data;var o=e.apply(this,t);return a.set(n,{data:o,maxAge:u?Date.now()+u:Number.POSITIVE_INFINITY}),o};return function(e,t,n){for(var i,o=(void 0===n?{}:n).ignoreNonConfigurable,a=void 0!==o&&o,u=e.name,c=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}(e))){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(Reflect.ownKeys(t));!(i=c()).done;)q(e,t,i.value,a);(function(e,t){var n=Object.getPrototypeOf(t);n!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,n)})(e,t),function(e,t,n){var i=""===n?"":"with "+n.trim()+"() ",o=Z.bind(null,i,t.toString());Object.defineProperty(o,"name",Y),Object.defineProperty(e,"toString",r({},U,{value:o}))}(e,t,u)}(c,e,{ignoreNonConfigurable:!0}),Q.set(c,a),c}(function(e){return"data-option-"+function(e,t){void 0===t&&(t={});for(var n=t.splitRegexp,r=t.stripRegexp,i=void 0===r?W:r,o=t.transform,s=void 0===o?I:o,a=t.delimiter,u=void 0===a?" ":a,c=F(F(e,void 0===n?D:n,"$1\0$2"),i,"\0"),l=0,d=c.length;"\0"===c.charAt(l);)l++;for(;"\0"===c.charAt(d-1);)d--;return c.slice(l,d).split("\0").map(s).join(u)}(e,{delimiter:"-"})}),te=function(){function e(t,n,r){var i,o,s=this;return this.__values={},this.__defaultValues={String:"",Number:0,Boolean:!1,Array:function(){return[]},Object:function(){return{}}},this.name="Base",this.debug=!1,this.log=!1,this.__element=t,this.name=r.name,n.debug={type:Boolean,default:null!=(i=r.debug)&&i},n.log={type:Boolean,default:null!=(o=r.log)&&o},Object.entries(n).forEach(function(t){var n=t[0],r=t[1],i=!e.types.includes(r),o=i?r.type:r;if(!e.types.includes(o))throw new Error('The "'+n+'" option has an invalid type. The allowed types are: String, Number, Boolean, Array and Object.');var a=i?r.default:s.__defaultValues[o.name];if((o===Array||o===Object)&&"function"!=typeof a)throw new Error('The default value for options of type "'+o.name+'" must be returned by a function.');Object.defineProperty(s,n,{get:function(){return s.get(n,o,a)},set:function(e){s.set(n,o,e,a)},enumerable:!0})}),this}var t=e.prototype;return t.get=function(e,t,n){var r=this,i=ee(e),o=this.__element.hasAttribute(i);if(t===Boolean){if(n){var s=ee("no-"+e);return!this.__element.hasAttribute(s)}return o||n}var a=this.__element.getAttribute(i);if(t===Number)return o?Number(a):n;if(t===Array||t===Object){var u=z(n(),o?JSON.parse(a):this.__defaultValues[t.name]());return this.__values[e]?u!==this.__values[e]&&setTimeout(function(){r.__element.setAttribute(i,JSON.stringify(r.__values[e]))},0):this.__values[e]=u,this.__values[e]}return o?a:n},t.set=function(e,t,n,r){var i=ee(e);if(n.constructor.name!==t.name){var o=Array.isArray(n)||function(e){return"object"==typeof e&&!!e&&"[object Object]"===e.toString()}(n)?JSON.stringify(n):n;throw new TypeError('The "'+o+'" value for the "'+e+'" option must be of type "'+t.name+'"')}switch(t){case Boolean:if(r){var s=ee("no-"+e);n?this.__element.removeAttribute(s):this.__element.setAttribute(s,"")}else n?this.__element.setAttribute(i,""):this.__element.removeAttribute(i);break;case Array:case Object:this.__values[e]=n,this.__element.setAttribute(i,JSON.stringify(n));break;default:this.__element.setAttribute(i,n)}},e}();te.types=[String,Number,Boolean,Array,Object];var ne=0,re=function(){},ie=function(){function e(e){var t=this;if(this.$parent=null,this.$isMounted=!1,!e)throw new Error("The root element must be defined.");var n=this.__config;if(!n)throw new Error("The `config` static property must be defined.");if(!n.name)throw new Error("The `config.name` property is required.");return this.$id=n.name+"-"+ne,ne+=1,this.$el=e,"__base__"in this.$el||Object.defineProperty(this.$el,"__base__",{get:function(){return t},configurable:!0}),this.__options=new te(e,n.options||{},n),this.__services=new T(this),this.__events=new N(e,this),this.__children=new d(this,e,n.components||{},this.__events),this.__refs=new h(this,e,n.refs||[],this.__events),function(e,t){var n=t||{},r=n.exclude,i=n.include;a(e).filter(function(e){var t=e[0];return"constructor"!==t&&function(e){var t=function(t){return"string"==typeof t?e===t:t.test(e)};return i?i.some(t):!r||!r.some(t)}(t)}).forEach(function(t){var n=t[0],r=Object.getOwnPropertyDescriptor(t[1],n);r&&"function"==typeof r.value&&(e[n]=e[n].bind(e))})}(this,{exclude:[].concat(this.__excludeFromAutoBind)}),this.__debug("constructor",this),this}var t=e.prototype;return t.$mount=function(){return this.__debug("$mount"),this.$children.registerAll(),this.$refs.registerAll(),this.__events.bindRootElement(),this.$services.enableAll(),this.$children.mountAll(),c(this,"mounted"),this.$isMounted=!0,this},t.$update=function(){return this.__debug("$update"),this.$refs.unregisterAll(),this.$services.disableAll(),this.$children.registerAll(),this.$refs.registerAll(),this.$services.enableAll(),this.$children.updateAll(),c(this,"updated"),this},t.$destroy=function(){return this.__debug("$destroy"),this.__events.unbindRootElement(),this.$refs.unregisterAll(),this.$services.disableAll(),this.$children.destroyAll(),c(this,"destroyed"),this.$isMounted=!1,this},t.$terminate=function(){this.__debug("$terminate"),this.$destroy(),c(this,"terminated"),Object.defineProperty(this.$el,"__base__",{value:"terminated",configurable:!1,writable:!1})},e.$factory=function(e){var t=this;if(!e)throw new Error("The $factory method requires a component’s name or selector to be specified.");return l(e).map(function(e){return new t(e).$mount()})},t.$on=function(e,t,n){var r=this;return this.__debug("$on",e,t,n),this.$el.addEventListener(e,t,n),function(){r.$off(e,t,n)}},t.$off=function(e,t,n){this.__debug("$off",e,t),this.$el.removeEventListener(e,t,n)},t.$emit=function(e){var t=[].slice.call(arguments,1);this.__debug("$emit",e,t),this.$el.dispatchEvent(new CustomEvent(e,{detail:t}))},n(e,[{key:"__excludeFromAutoBind",get:function(){return["$mount","$update","$destroy","$terminate","$log","$on","$once","$off","$emit","mounted","loaded","ticked","resized","moved","keyed","scrolled","destroyed","terminated"]}},{key:"__config",get:function(){for(var e=Object.getPrototypeOf(this),t=e.constructor.config;e.constructor.config&&e.constructor.$isBase;)t=r({},e.constructor.config,t),e.constructor.config.options&&(t.options=r({},e.constructor.config.options,t.options)),e=Object.getPrototypeOf(e);return t}},{key:"$services",get:function(){var e=this.__services;return this.$emit("get:services",e),e}},{key:"$refs",get:function(){var e=this.__refs;return this.$emit("get:refs",e),e}},{key:"$options",get:function(){var e=this.__options;return this.$emit("get:options",e),e}},{key:"$children",get:function(){this.__debug("before:getChildren",this.$el,this.__config.components);var e=this.__children;return this.$emit("get:children",e),this.__debug(this,"after:getChildren",e),e}},{key:"$log",get:function(){return this.__options.log?window.console.log.bind(window,"["+this.__config.name+"]"):re}},{key:"__debug",get:function(){return this.__options.debug&&void 0!==window.__DEV__&&window.__DEV__?window.console.log.bind(window,"[debug] ["+this.$id+"]"):re}}]),e}();ie.$isBase=!0;var oe=["config","methods"];function se(e){var t=e.config,n=e.methods,r=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(i[n]=e[n]);return i}(e,oe);if(!t)throw new Error("The `config` property is required.");if(!t.name)throw new Error("The `config.name` property is required.");var o=function(e){function t(){return e.apply(this,arguments)||this}return i(t,e),t}(ie);o.config=t;var s=["mounted","loaded","ticked","resized","moved","keyed","scrolled","destroyed","terminated"],a=Object.entries(r).reduce(function(e,t){var n=t[0],r=t[1];if(!s.includes(n))throw new Error('\n The "'+n+'" method is not a Base lifecycle hook,\n it should be placed in the "method" property.\n The following hooks are available: '+s.join(", ")+"\n ");return e[n]=r,e},{});return[].concat(Object.entries(n||{}),Object.entries(a)).forEach(function(e){o.prototype[e[0]]=e[1]}),o}function ae(e,t){return"string"==typeof e?l(e,t):Array.isArray(e)?e:[e]}e.Base=ie,e.createApp=function(e,t){var n,r="complete"===document.readyState;return r?n=new e(t).$mount():document.addEventListener("readystatechange",function(){"complete"===document.readyState&&(n=new e(t).$mount(),r=!0)}),function(){return r?Promise.resolve(n):new Promise(function(e){document.addEventListener("readystatechange",function(){"complete"===document.readyState&&setTimeout(function(){return e(n)},0)})})}},e.createBase=function(e,t){return new(se(t))("string"==typeof e?document.querySelector(e):e)},e.default=ie,e.defineComponent=se,e.importOnInteraction=function(e,t,n,r){var i="string"==typeof n?[n]:n;return new Promise(function(n){var o=ae(t,null==r?void 0:r.$el),s={capture:!0,passive:!0,once:!0},a=function(){!function(t){e().then(function(e){t("default"in e?e.default:e)})}(n)};o.forEach(function(e){i.forEach(function(t){e.addEventListener(t,a,s)})})})},e.importWhenIdle=function(e,t){var n=function(t){e().then(function(e){t("default"in e?e.default:e)})};return new Promise(function(e){var r,i=null!=(r=null==t?void 0:t.timeout)?r:1;"requestIdleCallback"in window?window.requestIdleCallback(function(){setTimeout(function(){n(e)},0)},{timeout:null==t?void 0:t.timeout}):setTimeout(function(){n(e)},i)})},e.importWhenVisible=function(e,t,n,r){return void 0===r&&(r={}),new Promise(function(i){var o=new IntersectionObserver(function(t){t.some(function(e){return e.isIntersecting})&&setTimeout(function(){!function(t,n){e().then(function(e){t("default"in e?e.default:e),o.disconnect()})}(i)},0)},r);ae(t,null==n?void 0:n.$el).forEach(function(e){return o.observe(e)})})}});
2
- //# sourceMappingURL=index.umd.js.map
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e||self).Base={})}(this,function(e){function t(){return(t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var r in i)Object.prototype.hasOwnProperty.call(i,r)&&(e[r]=i[r])}return e}).apply(this,arguments)}var i=0;function r(e){return"__private_"+i+++"_"+e}function s(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw new TypeError("attempted to use private field on non-instance");return e}function n(e,t){return"function"==typeof e[t]}function o(e,t){var i=[].slice.call(arguments,2);return e.__debug("callMethod",t,...i),"destroyed"===t&&!e.$isMounted||"mounted"===t&&e.$isMounted?(e.__debug("not",t,"because the method has already been triggered once."),e):(e.$emit(t,...i),n(e,t)?(e[t].call(e,...i),e.__debug(t,e,...i),e):e)}function a(e,t){void 0===t&&(t=document);var i='[data-component="'+e+'"]',r=[];try{r=Array.from(t.querySelectorAll(i))}catch(e){}return 0===r.length&&(r=Array.from(t.querySelectorAll(e))),r}class h{get registeredNames(){return Object.keys(this).filter(e=>!e.startsWith("__"))}constructor(e,t,i,r){Object.defineProperties(this,{__base:{enumerable:!1,writable:!1,value:e},__element:{enumerable:!1,writable:!1,value:t},__components:{enumerable:!1,writable:!1,value:i},__eventsManager:{enumerable:!1,writable:!1,value:r}})}registerAll(){Object.entries(this.__components).forEach(e=>{var[t,i]=e;return this.__register(t,i)})}__register(e,t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,get:()=>{var i=a(e,this.__element);return 0===i.length?[]:i.map(i=>this.__getChild(i,t,e)).filter(e=>"terminated"!==e)}})}__getChild(e,t,i){if(e.__base__)return e.__base__;if("$isBase"in t){var r=new t(e);return Object.defineProperty(r,"$parent",{get:()=>this.__base}),r}return t(this.__base).then(t=>{var r;return this.__getChild(e,null!=(r=t.default)?r:t,i)})}mountAll(){this.__triggerHookForAll("$mount")}updateAll(){this.__triggerHookForAll("$update")}destroyAll(){this.__triggerHookForAll("$destroy")}__triggerHookForAll(e){this.registeredNames.forEach(t=>{this[t].forEach(i=>{i instanceof Promise?i.then(i=>this.__triggerHook(e,i,t)):this.__triggerHook(e,i,t)})})}__triggerHook(e,t,i){"$update"!==e||t.$isMounted||(e="$mount"),"$update"!==e&&"$destroy"!==e||this.__eventsManager.unbindChild(i,t),"$update"!==e&&"$mount"!==e||this.__eventsManager.bindChild(i,t),t[e]()}}class d{constructor(e,t,i,r){Object.defineProperties(this,{__element:{enumerable:!1,writable:!1,value:t},__refs:{enumerable:!1,writable:!1,value:i},__base:{enumerable:!1,writable:!1,value:e},__eventsManager:{enumerable:!1,writable:!1,value:r}})}registerAll(){this.__refs.forEach(e=>this.__register(e))}unregisterAll(){this.__refs.forEach(e=>this.__unregister(e))}__register(e){var t=e.endsWith("[]"),i=d.normalizeRefName(e),r=Array.from(this.__element.querySelectorAll('[data-ref="'+e+'"]')).filter(e=>this.__filterRefsBelongingToInstance(e));!t&&r.length>1&&console.warn("["+this.__base.$options.name+"]",'The "'+e+'" ref has been found multiple times.',"Did you forgot to add the `[]` suffix to its name?"),this.__eventsManager.bindRef(e,r),Object.defineProperty(this,i,{value:t||r.length>1?r:r[0],enumerable:!0,configurable:!0})}__unregister(e){var t=d.normalizeRefName(e),i=Array.isArray(this[t])?this[t]:[this[t]];this.__eventsManager.unbindRef(e,i)}static normalizeRefName(e){return e.endsWith("[]")?e.replace(/\[\]$/,""):e}__filterRefsBelongingToInstance(e){for(var t=e.parentElement;t&&void 0===t.dataset.component;)t=t.parentElement;return null===t||t===this.__element}}class l{constructor(){this.callbacks=new Map,this.isInit=!1}get props(){throw new Error("The `props` getter must be implemented.")}init(){throw new Error("The `init` method must be implemented.")}kill(){throw new Error("The `kill` method must be implemented.")}add(e,t){if(this.has(e))throw new Error("A callback with the key `"+e+"` has already been registered.");return 0!==this.callbacks.size||this.isInit||(this.init(),this.isInit=!0),this.callbacks.set(e,t),this}has(e){return this.callbacks.has(e)}get(e){return this.callbacks.get(e)}remove(e){return this.callbacks.delete(e),0===this.callbacks.size&&this.isInit&&(this.kill(),this.isInit=!1),this}trigger(){var e=[].slice.call(arguments);return this.callbacks.forEach(function(t){t(...e)}),this}}function u(e){return"undefined"!=typeof TouchEvent&&e instanceof TouchEvent}class c extends l{constructor(){super(...arguments),this.isDown=!1,this.y=window.innerHeight/2,this.yLast=window.innerHeight/2,this.x=window.innerWidth/2,this.xLast=window.innerWidth/2,this.hasRaf=!1}init(){document.documentElement.addEventListener("mouseenter",this,{once:!0,capture:!0});var e={passive:!0,capture:!0};return document.addEventListener("mousemove",this,e),document.addEventListener("touchmove",this,e),document.addEventListener("mousedown",this,e),document.addEventListener("touchstart",this,e),document.addEventListener("mouseup",this,e),document.addEventListener("touchend",this,e),this}handleEvent(e){switch(e.type){case"mouseenter":case"mousemove":case"touchmove":this.handler(e);break;case"mousedown":case"touchstart":this.downHandler();break;case"mouseup":case"touchend":this.upHandler()}}kill(){return document.removeEventListener("mousemove",this),document.removeEventListener("touchmove",this),document.removeEventListener("mousedown",this),document.removeEventListener("touchstart",this),document.removeEventListener("mouseup",this),document.removeEventListener("touchend",this),this}handler(e){this.updateValues(e),this.trigger(this.props)}downHandler(){this.isDown=!0,this.trigger(this.props)}upHandler(){this.isDown=!1,this.trigger(this.props)}updateValues(e){var t,i;this.event=e,this.yLast=this.y,this.xLast=this.x;var r=u(e)?null==(t=e.touches[0])?void 0:t.clientY:e.clientY;r!==this.y&&(this.y=r);var s=u(e)?null==(i=e.touches[0])?void 0:i.clientX:e.clientX;s!==this.x&&(this.x=s)}get props(){return{event:this.event,isDown:this.isDown,x:this.x,y:this.y,changed:{x:this.x!==this.xLast,y:this.y!==this.yLast},last:{x:this.xLast,y:this.yLast},delta:{x:this.x-this.xLast,y:this.y-this.yLast},progress:{x:this.x/window.innerWidth,y:this.y/window.innerHeight},max:{x:window.innerWidth,y:window.innerHeight}}}}var p=null;function m(){return p||(p=new c),{add:p.add.bind(p),remove:p.remove.bind(p),has:p.has.bind(p),props:()=>p.props}}class v extends l{constructor(){super(),this.isTicking=!1,this.id=0,this.raf="undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout,this.cancelRaf="undefined"!=typeof window&&window.cancelAnimationFrame?window.cancelAnimationFrame.bind(window):clearTimeout,this.loop=this.loop.bind(this)}init(){return this.isTicking=!0,this.loop(),this}loop(){this.trigger(this.props),this.isTicking&&(this.id=this.raf(this.loop))}kill(){return this.cancelRaf(this.id),this.isTicking=!1,this}get props(){return{time:window.performance.now()}}}var _=null;function f(){return _||(_=new v),{add:_.add.bind(_),remove:_.remove.bind(_),has:_.has.bind(_),props:function(){return _.props}}}function g(e,t){var i;return void 0===t&&(t=300),function(){clearTimeout(i),i=setTimeout(()=>{e(...[].slice.call(arguments))},t)}}class b extends l{init(){return this.handler=g(()=>{this.trigger(this.props)}).bind(this),window.addEventListener("resize",this.handler),this}kill(){return window.removeEventListener("resize",this.handler),this}get props(){var e={width:window.innerWidth,height:window.innerHeight,ratio:window.innerWidth/window.innerHeight,orientation:"square"};return e.ratio>1&&(e.orientation="landscape"),e.ratio<1&&(e.orientation="portrait"),this.breakpointElement&&(e.breakpoint=this.breakpoint,e.breakpoints=this.breakpoints),e}get breakpointElement(){return document.querySelector("[data-breakpoint]")||null}get breakpoint(){return window.getComputedStyle(this.breakpointElement,"::before").getPropertyValue("content").replace(/"/g,"")}get breakpoints(){return window.getComputedStyle(this.breakpointElement,"::after").getPropertyValue("content").replace(/"/g,"").split(",")}}var y=null;function w(){return y||(y=new b),{add:y.add.bind(y),remove:y.remove.bind(y),has:y.has.bind(y),props:()=>y.props}}class $ extends l{constructor(){super(...arguments),this.y=window.pageYOffset,this.yLast=window.pageYOffset,this.x=window.pageXOffset,this.xLast=window.pageXOffset}init(){return document.addEventListener("scroll",this,{passive:!0,capture:!0}),this}get debouncedHandler(){var e=g(()=>{this.trigger(this.props)},0);return Object.defineProperty(this,"debouncedHandler",{value:e}),e}handleEvent(){this.trigger(this.props),this.debouncedHandler()}kill(){return document.removeEventListener("scroll",this),this}get props(){return this.yLast=this.y,this.xLast=this.x,window.pageYOffset!==this.y&&(this.y=window.pageYOffset),window.pageXOffset!==this.x&&(this.x=window.pageXOffset),{x:this.x,y:this.y,changed:{x:this.x!==this.xLast,y:this.y!==this.yLast},last:{x:this.xLast,y:this.yLast},delta:{x:this.x-this.xLast,y:this.y-this.yLast},progress:{x:0===this.max.x?1:this.x/this.max.x,y:0===this.max.y?1:this.y/this.max.y},direction:{x:this.x>this.xLast?"RIGHT":this.x<this.xLast?"LEFT":"NONE",y:this.y>this.yLast?"DOWN":this.y<this.yLast?"UP":"NONE"},max:this.max}}get max(){return{x:(document.scrollingElement||document.body).scrollWidth-window.innerWidth,y:(document.scrollingElement||document.body).scrollHeight-window.innerHeight}}}var E=null;function x(){return E||(E=new $),{add:E.add.bind(E),remove:E.remove.bind(E),has:E.has.bind(E),props:()=>E.props}}var k={ENTER:13,SPACE:32,TAB:9,ESC:27,LEFT:37,UP:38,RIGHT:39,DOWN:40};class O extends l{constructor(){super(...arguments),this.event={},this.triggered=0,this.previousEvent={}}init(){return this.handler=e=>{this.event=e,this.trigger(this.props)},document.addEventListener("keydown",this.handler,{passive:!1}),document.addEventListener("keyup",this.handler,{passive:!1}),this}kill(){return document.removeEventListener("keydown",this.handler),document.removeEventListener("keyup",this.handler),this}get props(){var e=Object.entries(k).reduce((e,t)=>{var[i,r]=t;return e[i]=r===this.event.keyCode,e},{});return this.previousEvent.type||(this.triggered=0),"keydown"===this.event.type&&"keydown"===this.previousEvent.type?this.triggered+=1:this.triggered=1,this.previousEvent=this.event,t({event:this.event,triggered:this.triggered,direction:"keydown"===this.event.type?"down":"up",isUp:"keyup"===this.event.type,isDown:"keydown"===this.event.type},e)}}var A=null;function L(){return A||(A=new O),{add:A.add.bind(A),remove:A.remove.bind(A),has:A.has.bind(A),props:()=>A.props}}class j extends l{init(){return this.handler=()=>{this.trigger(this.props)},window.addEventListener("load",this.handler),this}kill(){return window.removeEventListener("load",this.handler),this}get props(){return{}}}var M=null;function N(){return M||(M=new j),{add:M.add.bind(M),remove:M.remove.bind(M),has:M.has.bind(M),props:function(){return M.props}}}var T={scrolled:x,resized:w,ticked:f,moved:m,keyed:L,loaded:N},B=Object.keys(T);class H{get __services(){return t({},this.__customServices,T)}constructor(e){this.__customServices={},Object.defineProperties(this,{__base:{enumerable:!1,writable:!1,value:e}})}has(e){if(!n(this.__base,e)&&!this.__services[e])return!1;var{has:t}=this.__services[e]();return t(this.__base.$id)}enable(e){if(this.has(e))return this.disable.bind(this,e);if(!n(this.__base,e)||!this.__services[e])return function(){};var{add:t}=this.__services[e](),i=this;return t(this.__base.$id,function(){o(i.__base,e,...[].slice.call(arguments))}),this.disable.bind(this,e)}enableAll(){return Object.keys(this.__services).map(e=>this.enable(e))}disableAll(){Object.keys(this.__services).forEach(e=>{this.disable(e)})}disable(e){if(this.__services[e]){var{remove:t}=this.__services[e]();t(this.__base.$id)}}register(e,t){this.__customServices[e]=t}unregister(e){if(B.includes(e))throw new Error("[ServicesManager] The `"+e+"` core service can not be unregistered.");delete this.__customServices[e]}}function P(e,t,i){void 0===t&&(t=[]),void 0===i&&(i=null);var r=Object.getPrototypeOf(e);if(r===Object.prototype)return t;var s=Object.getOwnPropertyNames(r);return"function"==typeof i&&(s=s.filter(e=>i(e,r))),s=s.map(e=>[e,r]).reduce((e,t)=>[...e,t],t),P(r,s,i)}class S{constructor(e,t){this.__methodsCache=new Map,this.__rootElementHandler={handleEvent:e=>{var t=S.normalizeName(e.type);this.__base["on"+t](e)}},this.__refsHandler={handleEvent:e=>{var t=e.currentTarget,i=d.normalizeRefName(t.dataset.ref),r="on"+S.normalizeName(i)+S.normalizeName(e.type),s=0;Array.isArray(this.__base.$refs[i])&&(s=this.__base.$refs[i].indexOf(t)),this.__base[r](e,s)}},this.__childrenHandler={handleEvent:e=>{var t,i=e.currentTarget.__base__,r=0,s=this.__base.$children;s.registeredNames.find(e=>!!s[e].includes(i)&&(t=e,r=s[e].indexOf(i),!0));var n="on"+S.normalizeName(t)+S.normalizeName(e.type),o=Array.isArray(e.detail)?e.detail:[];this.__base[n](...o,r,e)}},Object.defineProperties(this,{__rootElement:{enumerable:!1,writable:!1,value:e},__base:{enumerable:!1,writable:!1,value:t},__methodsCache:{enumerable:!1,writable:!1,value:this.__methodsCache},__rootElementHandler:{enumerable:!1,writable:!1,value:this.__rootElementHandler},__refsHandler:{enumerable:!1,writable:!1,value:this.__refsHandler},__childrenHandler:{enumerable:!1,writable:!1,value:this.__childrenHandler}})}__manageRef(e,t,i){void 0===i&&(i="add");var r=i+"EventListener";this.__getEventMethodsByName(e).forEach(i=>{var s=this.__getEventNameByMethod(i,e);t.forEach(e=>e[r](s,this.__refsHandler))})}bindRef(e,t){this.__manageRef(e,t)}unbindRef(e,t){this.__manageRef(e,t,"remove")}__manageChild(e,t,i){void 0===i&&(i="add");var r="add"===i?"$on":"$off";this.__getEventMethodsByName(e).forEach(i=>{var s=this.__getEventNameByMethod(i,e);t[r](s,this.__childrenHandler)})}bindChild(e,t){this.__manageChild(e,t)}unbindChild(e,t){this.__manageChild(e,t,"remove")}__manageRootElement(e){void 0===e&&(e="add");var t=e+"EventListener";this.__getEventMethodsByName().forEach(e=>{var i=this.__getEventNameByMethod(e);this.__rootElement[t](i,this.__rootElementHandler)})}bindRootElement(){this.__manageRootElement()}unbindRootElement(){this.__manageRootElement("remove")}__getEventNameByMethod(e,t){void 0===t&&(t="");var i=S.normalizeName(t),r=new RegExp("^on"+i+"([A-Z].*)$"),[,s]=e.match(r);return S.normalizeEventName(s)}__getEventMethodsByName(e){void 0===e&&(e="");var t=S.normalizeName(e),i=new RegExp("^on"+t+"[A-Z].*$"),r=i.toString(),s=this.__methodsCache.get(r);return s||(s=Array.from(P(this.__base,[],e=>i.test(e)).reduce((e,t)=>{var[i]=t;return e.add(i)},new Set)),this.__methodsCache.set(r,s)),s}static normalizeName(e){return e.replace(/[A-Z]([A-Z].*)/g,e=>e.toLowerCase()).replace(/[^a-zA-Z\d\s:]/g," ").replace(/(^\w|\s+\w)/g,e=>e.trim().toUpperCase()).trim()}static normalizeEventName(e){return e.replace(/[A-Z]/g,e=>"-"+e.toLowerCase()).replace(/^-/,"")}}var C=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===I}(e)}(e)},I="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function R(e,t){return!1!==t.clone&&t.isMergeableObject(e)?V(Array.isArray(e)?[]:{},e,t):e}function W(e,t,i){return e.concat(t).map(function(e){return R(e,i)})}function z(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return e.propertyIsEnumerable(t)}):[]}(e))}function D(e,t){try{return t in e}catch(e){return!1}}function V(e,t,i){(i=i||{}).arrayMerge=i.arrayMerge||W,i.isMergeableObject=i.isMergeableObject||C,i.cloneUnlessOtherwiseSpecified=R;var r=Array.isArray(t);return r===Array.isArray(e)?r?i.arrayMerge(e,t,i):function(e,t,i){var r={};return i.isMergeableObject(e)&&z(e).forEach(function(t){r[t]=R(e[t],i)}),z(t).forEach(function(s){(function(e,t){return D(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))})(e,s)||(r[s]=D(e,s)&&i.isMergeableObject(t[s])?function(e,t){if(!t.customMerge)return V;var i=t.customMerge(e);return"function"==typeof i?i:V}(s,i)(e[s],t[s],i):R(t[s],i))}),r}(e,t,i):R(t,i)}V.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(e,i){return V(e,i,t)},{})};var q=V;class F{constructor(e,t,i){var r,s;return this.__values={},this.__defaultValues={String:"",Number:0,Boolean:!1,Array:()=>[],Object:()=>({})},this.name="Base",this.debug=!1,this.log=!1,Object.defineProperties(this,{__element:{enumerable:!1,writable:!1,value:e},__values:{enumerable:!1,writable:!1,value:this.__values},__defaultValues:{enumerable:!1,writable:!1,value:this.__defaultValues}}),this.name=i.name,t.debug={type:Boolean,default:null!=(r=i.debug)&&r},t.log={type:Boolean,default:null!=(s=i.log)&&s},Object.entries(t).forEach(e=>{var[t,i]=e;this.__register(t,i)}),this}__register(e,t){var i=!F.types.includes(t),r=i?t.type:t;if(!F.types.includes(r))throw new Error('The "'+e+'" option has an invalid type. The allowed types are: String, Number, Boolean, Array and Object.');var s=i?t.default:this.__defaultValues[r.name];if((r===Array||r===Object)&&"function"!=typeof s)throw new Error('The default value for options of type "'+r.name+'" must be returned by a function.');Object.defineProperty(this,e,{get:()=>this.get(e,r,s),set:t=>{this.set(e,r,t,s)},enumerable:!0})}get(e,t,i){var r=F.__getPropertyName(e),s=this.__hasProperty(r);if(t===Boolean){if(i){var n=F.__getPropertyName(e,"No");return!this.__hasProperty(n)}return s||i}var o=this.__element.dataset[r];if(t===Number)return s?Number(o):i;if(t===Array||t===Object){var a=q(i(),s?JSON.parse(o):this.__defaultValues[t.name]());return this.__values[e]||(this.__values[e]=a),this.__values[e]}return s?o:i}set(e,t,i,r){var s=F.__getPropertyName(e);if(i.constructor.name!==t.name){var n=Array.isArray(i)||function(e){return"object"==typeof e&&!!e&&"[object Object]"===e.toString()}(i)?JSON.stringify(i):i;throw new TypeError('The "'+n+'" value for the "'+e+'" option must be of type "'+t.name+'"')}switch(t){case Boolean:if(r){var o=F.__getPropertyName(e,"No");i?delete this.__element.dataset[o]:this.__element.dataset[o]=""}else i?this.__element.dataset[s]="":delete this.__element.dataset[s];break;case Array:case Object:this.__values[e]=i;break;default:this.__element.dataset[s]=i}}__hasProperty(e){return void 0!==this.__element.dataset[e]}static __getPropertyName(e,t){void 0===t&&(t="");var i=e+t;if(F.__propertyNameCache.has(i))return F.__propertyNameCache.get(i);var r="option"+t+e.replace(/^\w/,e=>e.toUpperCase());return F.__propertyNameCache.set(i,r),r}}F.types=[String,Number,Boolean,Array,Object],F.__propertyNameCache=new Map;var G=0;function Y(){}class X{get $root(){if(!this.$parent)return this;for(var e=this.$parent,t=this.$parent;e;)e.$parent||(t=e),e=e.$parent;return t}get __config(){for(var e=Object.getPrototypeOf(this),{config:i}=e.constructor;e.constructor.config&&e.constructor.$isBase;)i=t({},e.constructor.config,i),e.constructor.config.options&&(i.options=t({},e.constructor.config.options,i.options)),e=Object.getPrototypeOf(e);return i}get $services(){var e=this.__services;return this.$emit("get:services",e),e}get $refs(){var e=this.__refs;return this.$emit("get:refs",e),e}get $options(){var e=this.__options;return this.$emit("get:options",e),e}get $children(){var e=this.__children;return this.$emit("get:children",e),e}get $log(){return this.__options.log?window.console.log.bind(window,"["+this.__config.name+"]"):Y}get __debug(){return this.__options.debug&&void 0!==window.__DEV__&&window.__DEV__?window.console.log.bind(window,"[debug] ["+this.$id+"]"):Y}constructor(e){if(this.$parent=null,this.$isMounted=!1,!e)throw new Error("The root element must be defined.");var{__config:t}=this;if(!t)throw new Error("The `config` static property must be defined.");if(!t.name)throw new Error("The `config.name` property is required.");return this.$id=t.name+"-"+G,G+=1,this.$el=e,"__base__"in this.$el||Object.defineProperty(this.$el,"__base__",{get:()=>this,configurable:!0}),this.__options=new F(e,t.options||{},t),this.__services=new H(this),this.__events=new S(e,this),this.__children=new h(this,e,t.components||{},this.__events),this.__refs=new d(this,e,t.refs||[],this.__events),this.__debug("constructor",this),this}$mount(){return this.__debug("$mount"),this.$children.registerAll(),this.$refs.registerAll(),this.__events.bindRootElement(),this.$services.enableAll(),this.$children.mountAll(),o(this,"mounted"),this.$isMounted=!0,this}$update(){return this.__debug("$update"),this.$refs.unregisterAll(),this.$services.disableAll(),this.$children.registerAll(),this.$refs.registerAll(),this.$services.enableAll(),this.$children.updateAll(),o(this,"updated"),this}$destroy(){return this.__debug("$destroy"),this.__events.unbindRootElement(),this.$refs.unregisterAll(),this.$services.disableAll(),this.$children.destroyAll(),o(this,"destroyed"),this.$isMounted=!1,this}$terminate(){this.__debug("$terminate"),this.$destroy(),o(this,"terminated"),Object.defineProperty(this.$el,"__base__",{value:"terminated",configurable:!1,writable:!1})}static $factory(e){if(!e)throw new Error("The $factory method requires a component’s name or selector to be specified.");return a(e).map(e=>new this(e).$mount())}$on(e,t,i){return this.__debug("$on",e,t,i),this.$el.addEventListener(e,t,i),()=>{this.$off(e,t,i)}}$off(e,t,i){this.__debug("$off",e,t),this.$el.removeEventListener(e,t,i)}$emit(e){var t=[].slice.call(arguments,1);this.__debug("$emit",e,t),this.$el.dispatchEvent(new CustomEvent(e,{detail:t}))}}function U(e){var{breakpoint:t}=w().props();e.forEach(e=>{var[i,r]=e;i.includes(t)&&!r.$isMounted?setTimeout(()=>r.$mount(),0):!i.includes(t)&&r.$isMounted&&r.$destroy()})}X.$isBase=!0;var Z=new WeakMap;function J(e,t){void 0===t&&(t=w().props().breakpoint);var{activeBreakpoints:i,inactiveBreakpoints:r}=e.$options,s=i&&i.split(" ").includes(t),n=r&&r.split(" ").includes(t);return i&&s||r&&!n?"$mount":"$destroy"}function K(e){var{activeBreakpoints:t,inactiveBreakpoints:i}=e.$options;return Boolean(t||i)}function Q(e,t){!function(e){var{activeBreakpoints:t,inactiveBreakpoints:i,name:r}=e.$options;if(t&&i)throw new Error("["+r+"] Incorrect configuration: the `activeBreakpoints` and `inactiveBreakpoints` are not compatible.")}(t);var{add:i,has:r}=w();r(e)||i(e,function(e){var{breakpoint:i}=e,r=J(t,i);"$destroy"===r&&t.$isMounted?t[r]():"$mount"!==r||t.$isMounted||setTimeout(()=>t[r](),0)})}function ee(e,t,i){if(void 0===i&&(i=.85),i>=1||i<=0)throw new Error("The `factor` parameter must be a number greater than 0 and smaller than 1, `"+i+"` given.");for(var r=t,s=e;Math.abs(r)>.1;)s+=r,r*=i;return s}var te="drag",ie="inertia",re=0;class se extends l{constructor(e,i){return void 0===i&&(i={}),super(),this.isGrabbing=!1,this.hasInertia=!1,this.x=0,this.y=0,this.delta={x:0,y:0},this.origin={x:0,y:0},this.distance={x:0,y:0},this.final={x:0,y:0},this.options={factor:.85},this.id="drag-"+(re+=1),this.target=e,this.options=t({},this.options,i),this.pointerHandler=this.pointerHandler.bind(this),this.rafHandler=this.rafHandler.bind(this),this}init(){var e={passive:!0};return this.target.addEventListener("mousedown",this,e),this.target.addEventListener("touchstart",this,e),m().add(this.id,this.pointerHandler),this}kill(){return this.target.removeEventListener("mousemove",this),this.target.removeEventListener("touchmove",this),m().remove(this.id),this}handleEvent(e){var t=e instanceof MouseEvent?e.clientX:e.touches[0].clientX,i=e instanceof MouseEvent?e.clientY:e.touches[0].clientY;this.start(t,i)}start(e,t){this.x=e,this.y=t,this.origin.x=e,this.origin.y=t,this.delta.x=0,this.delta.y=0,this.distance.x=0,this.distance.y=0,this.final.x=e,this.final.y=t,this.mode="start",this.isGrabbing=!0,this.trigger(this.props)}drop(){this.isGrabbing=!1,this.mode="drop",this.hasInertia=!0,this.final.x=ee(this.x,this.delta.x,this.options.factor),this.final.y=ee(this.y,this.delta.y,this.options.factor),this.trigger(this.props),setTimeout(()=>{var e=f();e.remove(this.id),e.add(this.id,this.rafHandler)},0)}stop(){f().remove(this.id),this.hasInertia=!1,this.mode="stop",this.trigger(this.props)}rafHandler(){this.isGrabbing||(this.x+=this.delta.x,this.y+=this.delta.y,this.distance.x=this.x-this.origin.x,this.distance.y=this.y-this.origin.y,this.delta.x*=this.options.factor,this.delta.y*=this.options.factor,this.mode!==ie&&(this.mode=ie),this.trigger(this.props),Math.abs(this.delta.x)<.1&&Math.abs(this.delta.y)<.1&&this.stop())}pointerHandler(e){this.isGrabbing&&(this.x=e.x,this.y=e.y,this.delta.x=e.delta.x,this.delta.y=e.delta.y,this.final.x=e.x,this.final.y=e.y,this.distance.x=this.x-this.origin.x,this.distance.y=this.y-this.origin.y,this.mode!==te&&(this.mode=te),this.trigger(this.props),e.isDown||this.drop())}get props(){return{target:this.target,mode:this.mode,isGrabbing:this.isGrabbing,hasInertia:this.hasInertia,x:this.x,y:this.y,delta:this.delta,origin:this.origin,distance:this.distance,final:this.final}}}var ne=new WeakMap;function oe(e,t){var i=ne.get(e);return i||(i=new se(e,t),ne.set(e,i)),{add:i.add.bind(i),remove:i.remove.bind(i),has:i.has.bind(i),props:()=>i.props}}var ae=["target"];function he(e,t){return"string"==typeof e?a(e,t):Array.isArray(e)?e:[e]}e.Base=X,e.createApp=function(e,t){var i,r="complete"===document.readyState;r?i=new e(t).$mount():document.addEventListener("readystatechange",()=>{"complete"===document.readyState&&(i=new e(t).$mount(),r=!0)});var s=new Promise(e=>{document.addEventListener("readystatechange",()=>{"complete"===document.readyState&&setTimeout(()=>e(i),0)})});return function(){return r?Promise.resolve(i):s}},e.importOnInteraction=function(e,t,i,r){var s="string"==typeof i?[i]:i;return new Promise(i=>{var n=he(t,null==r?void 0:r.$el),o={capture:!0,passive:!0,once:!0},a=()=>{(t=>{e().then(e=>{t("default"in e?e.default:e)})})(i)};n.forEach(e=>{s.forEach(t=>{e.addEventListener(t,a,o)})})})},e.importWhenIdle=function(e,t){var i=t=>{e().then(e=>{t("default"in e?e.default:e)})};return new Promise(e=>{var r,s=null!=(r=null==t?void 0:t.timeout)?r:1;"requestIdleCallback"in window?window.requestIdleCallback(()=>{setTimeout(()=>{i(e)},0)},{timeout:null==t?void 0:t.timeout}):setTimeout(()=>{i(e)},s)})},e.importWhenVisible=function(e,t,i,r){return void 0===r&&(r={}),new Promise(s=>{var n=new IntersectionObserver(t=>{t.some(e=>e.isIntersecting)&&setTimeout(()=>{((t,i)=>{e().then(e=>{t("default"in e?e.default:e),n.disconnect()})})(s)},0)},r);he(t,null==i?void 0:i.$el).forEach(e=>n.observe(e))})},e.useDrag=oe,e.useKey=L,e.useLoad=N,e.usePointer=m,e.useRaf=f,e.useResize=w,e.useScroll=x,e.withBreakpointManager=function(e,t){if(!Array.isArray(t))throw new Error("[withBreakpointManager] The `breakpoints` parameter must be an array.");if(t.length<2)throw new Error("[withBreakpointManager] You must define at least 2 breakpoints.");var{add:i,props:r}=w();if(!r().breakpoint)throw new Error("The `BreakpointManager` class requires breakpoints to be defined.");return class extends e{constructor(e){return super(e),Z.has(this)||Z.set(this,function(e,t){return t.map(t=>{var[i,r]=t,s=new r(e.$el);return Object.defineProperty(s,"$parent",{get:()=>e.$parent}),[i,s]})}(this,t)),i("BreakpointManager-"+this.$id,()=>{U(Z.get(this))}),this.instances=Z.get(this),this}$mount(){return super.$mount(),U(Z.get(this)),this}$destroy(){return Array.isArray(Z.get(this))&&Z.get(this).forEach(e=>{var[,t]=e;t.$destroy()}),super.$destroy()}}},e.withBreakpointObserver=function(e){var i,r,s,n,o;return r=i=class extends e{constructor(e){super(e);var{remove:t,props:i}=w(),{name:r}=this.$options;if(!i().breakpoint)throw new Error("["+r+"] The `BreakpointObserver` class requires breakpoints to be defined.");var s="BreakpointObserver-"+this.$id;return new MutationObserver(e=>{var[i]=e;if("attributes"===i.type&&("data-options"===i.attributeName||i.attributeName.startsWith("data-option-"))){if(!K(this))return this.$mount(),void t(s);Q(s,this)}}).observe(this.$el,{attributes:!0}),K(this)?(Q(s,this),this):this}$mount(){return K(this)?"$mount"===J(this)?super.$mount():this:super.$mount()}},i.config=t({},e.config||{},{name:(null!=(s=null==e||null==(n=e.config)?void 0:n.name)?s:"")+"WithBreakpointObserver",options:t({},(null==e||null==(o=e.config)?void 0:o.options)||{},{activeBreakpoints:String,inactiveBreakpoints:String})}),r},e.withDrag=function(e,t){return void 0===t&&(t={target(){return this.$el}}),class extends e{constructor(e){super(e),this.$on("mounted",()=>{var{target:e}=t,i=function(e,t){if(null==e)return{};var i,r,s={},n=Object.keys(e);for(r=0;r<n.length;r++)t.indexOf(i=n[r])>=0||(s[i]=e[i]);return s}(t,ae),r=oe.bind(void 0,e.call(this),i);this.$services.register("dragged",r),this.$services.enable("dragged")}),this.$on("destroyed",()=>{this.$services.disable("dragged"),this.$services.unregister("dragged")})}}},e.withExtraConfig=function(e,t,i){var r,s;void 0===i&&(i={});var n=q(e.config,t,i);return n.name===e.config.name&&(n.name=e.config.name+"WithExtraConfig"),s=r=class extends e{},r.config=n,s},e.withIntersectionObserver=function(e,i){var r,s,n,o,a;return void 0===i&&(i={threshold:[...new Array(101)].map((e,t)=>t/100)}),s=r=class extends e{constructor(e){if(super(e),!this.intersected||"function"!=typeof this.intersected)throw new Error("[withIntersectionObserver] The `intersected` method must be defined.");return this.$observer=new IntersectionObserver(e=>{this.__debug("intersected",e),this.$emit("intersected",e),this.intersected(e)},t({},i,this.$options.intersectionObserver||{})),this.$on("mounted",()=>{this.$observer.observe(this.$el)}),this.$on("destroyed",()=>{this.$observer.unobserve(this.$el)}),this}},r.config=t({},e.config||{},{name:(null!=(n=null==e||null==(o=e.config)?void 0:o.name)?n:"")+"WithIntersectionObserver",options:t({},(null==e||null==(a=e.config)?void 0:a.options)||{},{intersectionObserver:Object})}),s},e.withMountWhenInView=function(e,i){var n,o,a,h,d,l,u;return void 0===i&&(i={threshold:[0,1]}),o=r("isVisible"),a=r("observer"),h=n=class extends e{constructor(e){return super(e),Object.defineProperty(this,o,{writable:!0,value:!1}),Object.defineProperty(this,a,{writable:!0,value:void 0}),s(this,a)[a]=new IntersectionObserver(e=>{var t=e.reduce((e,t)=>e||t.isIntersecting,!1);s(this,o)[o]!==t&&(s(this,o)[o]=t,this[t?"$mount":"$destroy"]())},t({},i,this.$options.intersectionObserver)),s(this,a)[a].observe(this.$el),this.$on("terminated",()=>{s(this,a)[a].disconnect()}),this}$mount(){return s(this,o)[o]&&super.$mount(),this}},n.config=t({},e.config||{},{name:(null!=(d=null==e||null==(l=e.config)?void 0:l.name)?d:"")+"WithMountWhenInView",options:t({},(null==e||null==(u=e.config)?void 0:u.options)||{},{intersectionObserver:Object})}),h}});