@studiometa/js-toolkit 1.7.2 → 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 (237) hide show
  1. package/Base/index.d.ts +217 -0
  2. package/Base/index.js +237 -0
  3. package/Base/managers/ChildrenManager.d.ts +108 -0
  4. package/Base/managers/ChildrenManager.js +124 -0
  5. package/Base/managers/EventsManager.d.ts +190 -0
  6. package/Base/managers/EventsManager.js +195 -0
  7. package/Base/managers/OptionsManager.d.ts +120 -0
  8. package/Base/managers/OptionsManager.js +180 -0
  9. package/Base/managers/RefsManager.d.ts +84 -0
  10. package/Base/managers/RefsManager.js +83 -0
  11. package/{abstracts/Base/classes/Services.d.ts → Base/managers/ServicesManager.d.ts} +22 -7
  12. package/Base/managers/ServicesManager.js +115 -0
  13. package/{abstracts/Base → Base}/utils.d.ts +0 -30
  14. package/Base/utils.js +43 -0
  15. package/README.md +12 -70
  16. package/decorators/index.js +1 -2
  17. package/decorators/withBreakpointManager.d.ts +5 -5
  18. package/decorators/withBreakpointManager.js +41 -79
  19. package/decorators/withBreakpointObserver.d.ts +4 -4
  20. package/decorators/withBreakpointObserver.js +54 -77
  21. package/decorators/withDrag.d.ts +6 -6
  22. package/decorators/withDrag.js +17 -41
  23. package/decorators/withExtraConfig.d.ts +6 -6
  24. package/decorators/withExtraConfig.js +2 -24
  25. package/decorators/withIntersectionObserver.d.ts +4 -4
  26. package/decorators/withIntersectionObserver.js +17 -60
  27. package/decorators/withMountWhenInView.d.ts +8 -8
  28. package/decorators/withMountWhenInView.js +23 -51
  29. package/helpers/createApp.d.ts +4 -4
  30. package/helpers/createApp.js +10 -12
  31. package/helpers/importOnInteraction.d.ts +6 -6
  32. package/helpers/importOnInteraction.js +7 -8
  33. package/helpers/importWhenIdle.d.ts +4 -4
  34. package/helpers/importWhenIdle.js +7 -8
  35. package/helpers/importWhenVisible.d.ts +6 -6
  36. package/helpers/importWhenVisible.js +9 -16
  37. package/helpers/index.d.ts +1 -3
  38. package/helpers/index.js +1 -4
  39. package/helpers/utils.js +2 -3
  40. package/index.d.ts +19 -5
  41. package/index.js +5 -6
  42. package/index.modern.js +1 -3230
  43. package/index.umd.js +1 -3586
  44. package/package.json +3 -6
  45. package/{abstracts → services}/Service.d.ts +0 -0
  46. package/services/Service.js +63 -0
  47. package/services/drag.js +144 -180
  48. package/services/index.js +1 -2
  49. package/services/key.js +56 -98
  50. package/services/load.d.ts +1 -1
  51. package/services/load.js +22 -51
  52. package/services/pointer.js +118 -157
  53. package/services/raf.js +37 -65
  54. package/services/resize.js +46 -98
  55. package/services/scroll.js +81 -120
  56. package/utils/collide/boundingRectToCircle.js +7 -6
  57. package/utils/collide/collideCircleCircle.js +1 -2
  58. package/utils/collide/collideCircleRect.js +1 -2
  59. package/utils/collide/collidePointCircle.js +1 -2
  60. package/utils/collide/collidePointRect.js +1 -2
  61. package/utils/collide/collideRectRect.js +1 -2
  62. package/utils/collide/index.js +1 -2
  63. package/utils/css/classes.js +2 -3
  64. package/utils/css/index.js +1 -2
  65. package/utils/css/matrix.js +1 -2
  66. package/utils/css/styles.js +3 -8
  67. package/utils/css/transition.js +67 -140
  68. package/utils/debounce.js +3 -4
  69. package/utils/focusTrap.js +4 -5
  70. package/utils/history.js +12 -19
  71. package/utils/index.d.ts +2 -1
  72. package/utils/index.js +2 -2
  73. package/utils/keyCodes.js +1 -2
  74. package/utils/math/clamp.js +1 -2
  75. package/utils/math/clamp01.js +1 -2
  76. package/utils/math/damp.js +1 -2
  77. package/utils/math/index.js +1 -2
  78. package/utils/math/inertiaFinalValue.js +1 -2
  79. package/utils/math/lerp.js +1 -2
  80. package/utils/math/map.js +1 -2
  81. package/utils/math/round.js +1 -2
  82. package/utils/memoize.d.ts +30 -0
  83. package/utils/memoize.js +30 -0
  84. package/utils/nextFrame.js +4 -9
  85. package/utils/object/autoBind.js +11 -19
  86. package/utils/object/getAllProperties.d.ts +6 -3
  87. package/utils/object/getAllProperties.js +10 -8
  88. package/utils/object/index.js +1 -2
  89. package/utils/object/isObject.js +2 -4
  90. package/utils/string/index.js +1 -2
  91. package/utils/string/withLeadingCharacters.js +1 -2
  92. package/utils/string/withLeadingSlash.js +1 -2
  93. package/utils/string/withTrailingCharacters.js +1 -2
  94. package/utils/string/withTrailingSlash.js +1 -2
  95. package/utils/string/withoutLeadingCharacters.js +1 -2
  96. package/utils/string/withoutLeadingCharactersRecursive.js +1 -2
  97. package/utils/string/withoutLeadingSlash.js +1 -2
  98. package/utils/string/withoutTrailingCharacters.js +1 -2
  99. package/utils/string/withoutTrailingCharactersRecursive.js +1 -2
  100. package/utils/string/withoutTrailingSlash.js +1 -2
  101. package/utils/throttle.js +2 -3
  102. package/abstracts/Base/children.d.ts +0 -16
  103. package/abstracts/Base/children.js +0 -66
  104. package/abstracts/Base/children.js.map +0 -1
  105. package/abstracts/Base/classes/Options.d.ts +0 -37
  106. package/abstracts/Base/classes/Options.js +0 -182
  107. package/abstracts/Base/classes/Options.js.map +0 -1
  108. package/abstracts/Base/classes/Services.js +0 -120
  109. package/abstracts/Base/classes/Services.js.map +0 -1
  110. package/abstracts/Base/components.d.ts +0 -22
  111. package/abstracts/Base/components.js +0 -67
  112. package/abstracts/Base/components.js.map +0 -1
  113. package/abstracts/Base/events.d.ts +0 -8
  114. package/abstracts/Base/events.js +0 -185
  115. package/abstracts/Base/events.js.map +0 -1
  116. package/abstracts/Base/index.d.ts +0 -176
  117. package/abstracts/Base/index.js +0 -215
  118. package/abstracts/Base/index.js.map +0 -1
  119. package/abstracts/Base/options.d.ts +0 -17
  120. package/abstracts/Base/options.js +0 -112
  121. package/abstracts/Base/options.js.map +0 -1
  122. package/abstracts/Base/refs.d.ts +0 -30
  123. package/abstracts/Base/refs.js +0 -60
  124. package/abstracts/Base/refs.js.map +0 -1
  125. package/abstracts/Base/utils.js +0 -102
  126. package/abstracts/Base/utils.js.map +0 -1
  127. package/abstracts/EventManager.d.ts +0 -41
  128. package/abstracts/EventManager.js +0 -88
  129. package/abstracts/EventManager.js.map +0 -1
  130. package/abstracts/Service.js +0 -82
  131. package/abstracts/Service.js.map +0 -1
  132. package/abstracts/index.d.ts +0 -4
  133. package/abstracts/index.js +0 -5
  134. package/abstracts/index.js.map +0 -1
  135. package/components/Accordion/Accordion.d.ts +0 -83
  136. package/components/Accordion/Accordion.js +0 -121
  137. package/components/Accordion/Accordion.js.map +0 -1
  138. package/components/Accordion/AccordionItem.d.ts +0 -122
  139. package/components/Accordion/AccordionItem.js +0 -327
  140. package/components/Accordion/AccordionItem.js.map +0 -1
  141. package/components/Accordion/index.d.ts +0 -27
  142. package/components/Accordion/index.js +0 -39
  143. package/components/Accordion/index.js.map +0 -1
  144. package/components/Cursor.d.ts +0 -138
  145. package/components/Cursor.js +0 -167
  146. package/components/Cursor.js.map +0 -1
  147. package/components/Draggable.d.ts +0 -49
  148. package/components/Draggable.js +0 -77
  149. package/components/Draggable.js.map +0 -1
  150. package/components/Modal.d.ts +0 -158
  151. package/components/Modal.js +0 -270
  152. package/components/Modal.js.map +0 -1
  153. package/components/Tabs.d.ts +0 -108
  154. package/components/Tabs.js +0 -195
  155. package/components/Tabs.js.map +0 -1
  156. package/components/index.d.ts +0 -6
  157. package/components/index.js +0 -7
  158. package/components/index.js.map +0 -1
  159. package/decorators/index.js.map +0 -1
  160. package/decorators/withBreakpointManager.js.map +0 -1
  161. package/decorators/withBreakpointObserver.js.map +0 -1
  162. package/decorators/withDrag.js.map +0 -1
  163. package/decorators/withExtraConfig.js.map +0 -1
  164. package/decorators/withIntersectionObserver.js.map +0 -1
  165. package/decorators/withMountWhenInView.js.map +0 -1
  166. package/full.d.ts +0 -10
  167. package/full.js +0 -12
  168. package/full.js.map +0 -1
  169. package/full.modern.js +0 -7523
  170. package/full.modern.js.map +0 -1
  171. package/full.umd.js +0 -8277
  172. package/full.umd.js.map +0 -1
  173. package/helpers/createApp.js.map +0 -1
  174. package/helpers/createBase.d.ts +0 -7
  175. package/helpers/createBase.js +0 -7
  176. package/helpers/createBase.js.map +0 -1
  177. package/helpers/defineComponent.d.ts +0 -11
  178. package/helpers/defineComponent.js +0 -68
  179. package/helpers/defineComponent.js.map +0 -1
  180. package/helpers/importOnInteraction.js.map +0 -1
  181. package/helpers/importWhenIdle.js.map +0 -1
  182. package/helpers/importWhenVisible.js.map +0 -1
  183. package/helpers/index.js.map +0 -1
  184. package/helpers/utils.js.map +0 -1
  185. package/index.js.map +0 -1
  186. package/index.modern.js.map +0 -1
  187. package/index.umd.js.map +0 -1
  188. package/services/drag.js.map +0 -1
  189. package/services/index.js.map +0 -1
  190. package/services/key.js.map +0 -1
  191. package/services/load.js.map +0 -1
  192. package/services/pointer.js.map +0 -1
  193. package/services/raf.js.map +0 -1
  194. package/services/resize.js.map +0 -1
  195. package/services/scroll.js.map +0 -1
  196. package/utils/collide/boundingRectToCircle.js.map +0 -1
  197. package/utils/collide/collideCircleCircle.js.map +0 -1
  198. package/utils/collide/collideCircleRect.js.map +0 -1
  199. package/utils/collide/collidePointCircle.js.map +0 -1
  200. package/utils/collide/collidePointRect.js.map +0 -1
  201. package/utils/collide/collideRectRect.js.map +0 -1
  202. package/utils/collide/index.js.map +0 -1
  203. package/utils/css/classes.js.map +0 -1
  204. package/utils/css/index.js.map +0 -1
  205. package/utils/css/matrix.js.map +0 -1
  206. package/utils/css/styles.js.map +0 -1
  207. package/utils/css/transition.js.map +0 -1
  208. package/utils/debounce.js.map +0 -1
  209. package/utils/focusTrap.js.map +0 -1
  210. package/utils/history.js.map +0 -1
  211. package/utils/index.js.map +0 -1
  212. package/utils/keyCodes.js.map +0 -1
  213. package/utils/math/clamp.js.map +0 -1
  214. package/utils/math/clamp01.js.map +0 -1
  215. package/utils/math/damp.js.map +0 -1
  216. package/utils/math/index.js.map +0 -1
  217. package/utils/math/inertiaFinalValue.js.map +0 -1
  218. package/utils/math/lerp.js.map +0 -1
  219. package/utils/math/map.js.map +0 -1
  220. package/utils/math/round.js.map +0 -1
  221. package/utils/nextFrame.js.map +0 -1
  222. package/utils/object/autoBind.js.map +0 -1
  223. package/utils/object/getAllProperties.js.map +0 -1
  224. package/utils/object/index.js.map +0 -1
  225. package/utils/object/isObject.js.map +0 -1
  226. package/utils/string/index.js.map +0 -1
  227. package/utils/string/withLeadingCharacters.js.map +0 -1
  228. package/utils/string/withLeadingSlash.js.map +0 -1
  229. package/utils/string/withTrailingCharacters.js.map +0 -1
  230. package/utils/string/withTrailingSlash.js.map +0 -1
  231. package/utils/string/withoutLeadingCharacters.js.map +0 -1
  232. package/utils/string/withoutLeadingCharactersRecursive.js.map +0 -1
  233. package/utils/string/withoutLeadingSlash.js.map +0 -1
  234. package/utils/string/withoutTrailingCharacters.js.map +0 -1
  235. package/utils/string/withoutTrailingCharactersRecursive.js.map +0 -1
  236. package/utils/string/withoutTrailingSlash.js.map +0 -1
  237. package/utils/throttle.js.map +0 -1
package/full.umd.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"full.umd.js","sources":["../packages/js-toolkit/utils/object/getAllProperties.js","../packages/js-toolkit/utils/object/autoBind.js","../packages/js-toolkit/abstracts/EventManager.js","../packages/js-toolkit/abstracts/Base/utils.js","../packages/js-toolkit/abstracts/Base/children.js","../node_modules/deepmerge/dist/cjs.js","../node_modules/lower-case/dist.es2015/index.js","../node_modules/no-case/dist.es2015/index.js","../packages/js-toolkit/node_modules/mimic-fn/index.js","../node_modules/p-defer/index.js","../node_modules/map-age-cleaner/dist/index.js","../packages/js-toolkit/node_modules/mem/dist/index.js","../packages/js-toolkit/utils/object/isObject.js","../packages/js-toolkit/abstracts/Base/classes/Options.js","../packages/js-toolkit/abstracts/Base/options.js","../packages/js-toolkit/abstracts/Base/refs.js","../packages/js-toolkit/abstracts/Base/components.js","../packages/js-toolkit/abstracts/Service.js","../packages/js-toolkit/services/pointer.js","../packages/js-toolkit/utils/nextFrame.js","../packages/js-toolkit/services/raf.js","../packages/js-toolkit/utils/debounce.js","../packages/js-toolkit/services/resize.js","../packages/js-toolkit/services/scroll.js","../packages/js-toolkit/utils/keyCodes.js","../packages/js-toolkit/services/key.js","../packages/js-toolkit/services/load.js","../packages/js-toolkit/abstracts/Base/classes/Services.js","../packages/js-toolkit/abstracts/Base/events.js","../packages/js-toolkit/abstracts/Base/index.js","../packages/js-toolkit/helpers/defineComponent.js","../packages/js-toolkit/helpers/createBase.js","../packages/js-toolkit/components/Accordion/Accordion.js","../packages/js-toolkit/utils/css/styles.js","../packages/js-toolkit/utils/css/classes.js","../packages/js-toolkit/utils/css/transition.js","../packages/js-toolkit/components/Accordion/AccordionItem.js","../packages/js-toolkit/components/Accordion/index.js","../packages/js-toolkit/utils/math/damp.js","../packages/js-toolkit/utils/css/matrix.js","../packages/js-toolkit/components/Cursor.js","../node_modules/stylefire/node_modules/tslib/tslib.es6.js","../node_modules/hey-listen/dist/hey-listen.es.js","../node_modules/framesync/dist/framesync.es.js","../node_modules/style-value-types/node_modules/tslib/tslib.es6.js","../node_modules/style-value-types/dist/style-value-types.es.js","../node_modules/stylefire/dist/stylefire.es.js","../packages/js-toolkit/utils/math/inertiaFinalValue.js","../packages/js-toolkit/services/drag.js","../packages/js-toolkit/decorators/withDrag.js","../packages/js-toolkit/components/Draggable.js","../packages/js-toolkit/utils/focusTrap.js","../packages/js-toolkit/components/Modal.js","../packages/js-toolkit/components/Tabs.js","../packages/js-toolkit/decorators/withBreakpointManager.js","../packages/js-toolkit/decorators/withBreakpointObserver.js","../packages/js-toolkit/decorators/withExtraConfig.js","../packages/js-toolkit/decorators/withIntersectionObserver.js","../packages/js-toolkit/decorators/withMountWhenInView.js","../packages/js-toolkit/helpers/createApp.js","../packages/js-toolkit/helpers/utils.js","../packages/js-toolkit/helpers/importOnInteraction.js","../packages/js-toolkit/helpers/importWhenIdle.js","../packages/js-toolkit/helpers/importWhenVisible.js","../packages/js-toolkit/utils/collide/collidePointRect.js","../packages/js-toolkit/utils/collide/collideRectRect.js","../packages/js-toolkit/utils/collide/boundingRectToCircle.js","../packages/js-toolkit/utils/collide/collideCircleRect.js","../packages/js-toolkit/utils/collide/collideCircleCircle.js","../packages/js-toolkit/utils/collide/collidePointCircle.js","../packages/js-toolkit/utils/collide/index.js","../packages/js-toolkit/utils/history.js","../packages/js-toolkit/utils/math/clamp.js","../packages/js-toolkit/utils/math/clamp01.js","../packages/js-toolkit/utils/math/lerp.js","../packages/js-toolkit/utils/math/map.js","../packages/js-toolkit/utils/math/round.js","../packages/js-toolkit/utils/string/withoutLeadingCharacters.js","../packages/js-toolkit/utils/string/withLeadingCharacters.js","../packages/js-toolkit/utils/string/withLeadingSlash.js","../packages/js-toolkit/utils/string/withoutLeadingCharactersRecursive.js","../packages/js-toolkit/utils/string/withoutLeadingSlash.js","../packages/js-toolkit/utils/string/withoutTrailingCharacters.js","../packages/js-toolkit/utils/string/withoutTrailingCharactersRecursive.js","../packages/js-toolkit/utils/string/withoutTrailingSlash.js","../packages/js-toolkit/utils/string/withTrailingCharacters.js","../packages/js-toolkit/utils/string/withTrailingSlash.js","../packages/js-toolkit/utils/throttle.js"],"sourcesContent":["/**\n * Gets all non-builtin properties up the prototype chain.\n *\n * @param {Object} object The object to get the propeties from.\n * @param {Array=} [props=[]] The already existing properties.\n * @return {Array<[String, Object]>} An array of properties and the prototype they belong to.\n */\nexport default function getAllProperties(object, props = []) {\n const proto = Object.getPrototypeOf(object);\n\n if (proto === Object.prototype) {\n return props;\n }\n\n return getAllProperties(\n proto,\n Object.getOwnPropertyNames(proto)\n .map((name) => [name, proto])\n .reduce((acc, val) => [...acc, val], props)\n );\n}\n","import getAllProperties from './getAllProperties.js';\n\n/**\n * Auto-bind methods to an instance.\n *\n * @param {Object} instance The instance.\n * @param {Object} options Define specific methods to include or exlude.\n * @param {Array<String|RegExp>} [options.include] Methods to include.\n * @param {Array<String|RegExp>} [options.exclude] Methods to exclude.\n * @return {Object} The instance.\n */\nexport default function autoBind(instance, options) {\n const { exclude, include } = options || {};\n const filter = (key) => {\n const match = (pattern) => (typeof pattern === 'string' ? key === pattern : pattern.test(key));\n\n if (include) {\n return include.some(match);\n }\n\n if (exclude) {\n return !exclude.some(match);\n }\n\n return true;\n };\n\n getAllProperties(instance)\n .filter(([key]) => key !== 'constructor' && filter(key))\n .forEach(([key, object]) => {\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n if (descriptor && typeof descriptor.value === 'function') {\n instance[key] = instance[key].bind(instance);\n }\n });\n\n return instance;\n}\n","/* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_events\"] }] */\n/**\n * Event management class.\n */\nexport default class EventManager {\n /** @type {{[eventName:string]: Array<Function>}} An object to store the events */\n _events = {};\n\n /**\n * Bind a listener function to an event.\n *\n * @param {String} event Name of the event.\n * @param {Function} listener Function to be called.\n * @return {Function} A function to unbind the listener.\n */\n $on(event, listener) {\n if (!Array.isArray(this._events[event])) {\n this._events[event] = [];\n }\n this._events[event].push(listener);\n\n return () => {\n this.$off(event, listener);\n };\n }\n\n /**\n * Unbind a listener function from an event.\n *\n * @param {String} event Name of the event.\n * @param {Function} listener Function to be removed.\n * @return {EventManager} The current instance.\n */\n $off(event, listener) {\n // If no event specified, we remove them all.\n if (!event) {\n this._events = {};\n return this;\n }\n // If no listener have been specified, we remove all\n // the listeners for the given event.\n if (!listener) {\n this._events[event] = [];\n return this;\n }\n\n const index = this._events[event].indexOf(listener);\n\n if (index > -1) {\n this._events[event].splice(index, 1);\n }\n\n return this;\n }\n\n /**\n * Emits an event.\n *\n * @param {String} event Name of the event.\n * @param {Array} args The arguments to apply to the functions bound to this event.\n * @return {EventManager} The current instance.\n */\n $emit(event, ...args) {\n if (!Array.isArray(this._events[event])) {\n return this;\n }\n\n this._events[event].forEach((listener) => {\n listener.apply(this, args);\n });\n return this;\n }\n\n /**\n * Bind a listener function to an event for one execution only.\n *\n * @param {String} event Name of the event.\n * @param {Function} listener Function to be called.\n * @return {EventManager} The current instance.\n */\n $once(event, listener) {\n const instance = this;\n this.$on(\n event,\n /**\n * @param {...any} args\n */\n function handler(...args) {\n instance.$off(event, handler);\n listener.apply(instance, args);\n }\n );\n return this;\n }\n}\n","/**\n * @typedef {import('./index.js').default} Base\n * @typedef {import('./index.js').BaseConfig} BaseConfig\n */\n\n/**\n * Get the config from a Base instance, either the new static one or the old getter one.\n *\n * @param {Base} instance The instance to get the config from.\n * @return {BaseConfig} A Base class configuration object.\n */\nexport function getConfig(instance) {\n // @ts-ignore\n const config = instance.constructor.config || instance.config;\n\n if (!config) {\n throw new Error('The `config` property must be defined.');\n }\n\n if (!config.name) {\n throw new Error('The `config.name` property is required.');\n }\n\n // @ts-ignore\n if (instance.config && !instance.constructor.config) {\n console.warn(\n `[${config.name}]`,\n 'Defining the `config` as a getter is deprecated, replace it with a static property.'\n );\n }\n\n return config;\n}\n\n/**\n * Display a console warning for the given instance.\n *\n * @param {Base} instance A Base instance.\n * @param {...String} msg Values to display in the console.\n */\nexport function warn(instance, ...msg) {\n const { name } = getConfig(instance);\n console.warn(`[${name}]`, ...msg);\n}\n\n/**\n * Display a console log for the given instance.\n *\n * @param {Base} instance The instance to log information from.\n * @param {...any} msg The data to print to the console.\n */\nexport function log(instance, ...msg) {\n const { name } = getConfig(instance);\n console.log(`[${name}]`, ...msg);\n}\n\n/**\n * Verbose debug for the component.\n *\n * @param {Base} instance The instance to debug.\n * @param {...any} args The data to print.\n */\nexport function debug(instance, ...args) {\n if (instance.$options.debug) {\n log(instance, '[debug]', ...args);\n }\n}\n\n/**\n * Test if an object has a method.\n *\n * @param {Object} obj The object to test\n * @param {String} name The method's name\n * @return {Boolean}\n */\nexport function hasMethod(obj, name) {\n return typeof obj[name] === 'function';\n}\n\n/**\n * Call the given method while applying the given arguments.\n *\n * @param {Base} instance The Base instance on which to trigger the method.\n * @param {String} method The method to call.\n * @param {...any} args The arguments to pass to the method.\n */\nexport function callMethod(instance, method, ...args) {\n if (__DEV__) {\n debug(instance, 'callMethod', method, ...args);\n }\n\n // Prevent duplicate call of `mounted` and `destroyed`\n // methods based on the component status\n if (\n (method === 'destroyed' && !instance.$isMounted) ||\n (method === 'mounted' && instance.$isMounted)\n ) {\n if (__DEV__) {\n debug(instance, 'not', method, 'because the method has already been triggered once.');\n }\n return instance;\n }\n\n instance.$emit(method, ...args);\n\n // We always emit an event, but we do not call the method if it does not exist\n if (!hasMethod(instance, method)) {\n return instance;\n }\n\n instance[method].call(instance, ...args);\n if (__DEV__) {\n debug(instance, method, instance, ...args);\n }\n\n return instance;\n}\n\n/**\n * Get a list of elements based on the name of a component.\n *\n * @param {String} nameOrSelector\n * The name or selector to used for this component.\n * @param {HTMLElement|Document} element\n * The root element on which to query the selector, defaults to `document`.\n * @return {Array<HTMLElement>}\n * A list of elements on which the component should be mounted.\n */\nexport function getComponentElements(nameOrSelector, element = document) {\n const selector = `[data-component=\"${nameOrSelector}\"]`;\n let elements = [];\n\n try {\n elements = Array.from(element.querySelectorAll(selector));\n // eslint-disable-next-line no-empty\n } catch {}\n\n // If no child component found with the default selector, try a classic DOM selector\n if (elements.length === 0) {\n elements = Array.from(element.querySelectorAll(nameOrSelector));\n }\n\n return elements;\n}\n","import { debug, getComponentElements } from './utils.js';\n\n/**\n * @typedef {import('./index.js').default} Base\n * @typedef {import('./index.js').BaseComponent} BaseComponent\n * @typedef {import('./index.js').BaseAsyncComponent} BaseAsyncComponent\n * @typedef {import('./index.js').BaseConfigComponents} BaseConfigComponents\n */\n\n/**\n * Get a child component.\n *\n * @param {HTMLElement & { __base__?: Base | 'terminated' }} el\n * The root element of the child component.\n * @param {BaseComponent|BaseAsyncComponent} ComponentClass\n * A Base class or a Promise for async components.\n * @param {Base} parent\n * The parent component instance.\n * @return {Base|Promise|'terminated'}\n * A Base instance or a Promise resolving to a Base instance.\n */\nfunction getChild(el, ComponentClass, parent) {\n // Return existing instance if it exists\n if (el.__base__) {\n return el.__base__;\n }\n\n // Return a new instance if the component class is a child of the Base class\n if ('$isBase' in ComponentClass) {\n const child = new ComponentClass(el);\n Object.defineProperty(child, '$parent', { get: () => parent });\n return child;\n }\n\n // Resolve async components\n return ComponentClass(parent).then((module) => {\n // @ts-ignore\n return getChild(el, module.default ?? module, parent);\n });\n}\n\n/**\n * Get child components.\n * @param {Base} instance The component's instance.\n * @param {HTMLElement} element The component's root element\n * @param {BaseConfigComponents} components The children components' classes\n * @return {null|Object} Returns `null` if no child components are defined or an object of all child component instances\n */\nexport function getChildren(instance, element, components) {\n if (__DEV__) {\n debug(instance, 'before:getChildren', element, components);\n }\n const children = Object.entries(components).reduce((acc, [name, ComponentClass]) => {\n Object.defineProperty(acc, name, {\n get() {\n const elements = getComponentElements(name, element);\n\n if (elements.length === 0) {\n return [];\n }\n\n return (\n elements\n .map((el) => getChild(el, ComponentClass, instance))\n // Filter out terminated children\n // @ts-ignore\n .filter((el) => el !== 'terminated')\n );\n },\n enumerable: true,\n configurable: true,\n });\n\n return acc;\n }, {});\n\n instance.$emit('get:children', children);\n if (__DEV__) {\n debug(instance, 'after:getChildren', children);\n }\n return children;\n}\n\nexport default {\n getChildren,\n};\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/**\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n */\nvar SUPPORTED_LOCALE = {\n tr: {\n regexp: /\\u0130|\\u0049|\\u0049\\u0307/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n az: {\n regexp: /\\u0130/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n lt: {\n regexp: /\\u0049|\\u004A|\\u012E|\\u00CC|\\u00CD|\\u0128/g,\n map: {\n I: \"\\u0069\\u0307\",\n J: \"\\u006A\\u0307\",\n Į: \"\\u012F\\u0307\",\n Ì: \"\\u0069\\u0307\\u0300\",\n Í: \"\\u0069\\u0307\\u0301\",\n Ĩ: \"\\u0069\\u0307\\u0303\",\n },\n },\n};\n/**\n * Localized lower case.\n */\nexport function localeLowerCase(str, locale) {\n var lang = SUPPORTED_LOCALE[locale.toLowerCase()];\n if (lang)\n return lowerCase(str.replace(lang.regexp, function (m) { return lang.map[m]; }));\n return lowerCase(str);\n}\n/**\n * Lower case as a function.\n */\nexport function lowerCase(str) {\n return str.toLowerCase();\n}\n//# sourceMappingURL=index.js.map","import { lowerCase } from \"lower-case\";\n// Support camel case (\"camelCase\" -> \"camel Case\" and \"CAMELCase\" -> \"CAMEL Case\").\nvar DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];\n// Remove all non-word characters.\nvar DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;\n/**\n * Normalize the string into something other libraries can manipulate easier.\n */\nexport function noCase(input, options) {\n if (options === void 0) { options = {}; }\n var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? \" \" : _d;\n var result = replace(replace(input, splitRegexp, \"$1\\0$2\"), stripRegexp, \"\\0\");\n var start = 0;\n var end = result.length;\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\")\n start++;\n while (result.charAt(end - 1) === \"\\0\")\n end--;\n // Transform each token independently.\n return result.slice(start, end).split(\"\\0\").map(transform).join(delimiter);\n}\n/**\n * Replace `re` in the input string with the replacement value.\n */\nfunction replace(input, re, value) {\n if (re instanceof RegExp)\n return input.replace(re, value);\n return re.reduce(function (input, re) { return input.replace(re, value); }, input);\n}\n//# sourceMappingURL=index.js.map","const copyProperty = (to, from, property, ignoreNonConfigurable) => {\n\t// `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n\t// `Function#prototype` is non-writable and non-configurable so can never be modified.\n\tif (property === 'length' || property === 'prototype') {\n\t\treturn;\n\t}\n\n\t// `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n\tif (property === 'arguments' || property === 'caller') {\n\t\treturn;\n\t}\n\n\tconst toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n\tconst fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n\n\tif (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n\t\treturn;\n\t}\n\n\tObject.defineProperty(to, property, fromDescriptor);\n};\n\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst canCopyProperty = function (toDescriptor, fromDescriptor) {\n\treturn toDescriptor === undefined || toDescriptor.configurable || (\n\t\ttoDescriptor.writable === fromDescriptor.writable &&\n\t\ttoDescriptor.enumerable === fromDescriptor.enumerable &&\n\t\ttoDescriptor.configurable === fromDescriptor.configurable &&\n\t\t(toDescriptor.writable || toDescriptor.value === fromDescriptor.value)\n\t);\n};\n\nconst changePrototype = (to, from) => {\n\tconst fromPrototype = Object.getPrototypeOf(from);\n\tif (fromPrototype === Object.getPrototypeOf(to)) {\n\t\treturn;\n\t}\n\n\tObject.setPrototypeOf(to, fromPrototype);\n};\n\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\\n${fromBody}`;\n\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');\n\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst changeToString = (to, from, name) => {\n\tconst withName = name === '' ? '' : `with ${name.trim()}() `;\n\tconst newToString = wrappedToString.bind(null, withName, from.toString());\n\t// Ensure `to.toString.toString` is non-enumerable and has the same `same`\n\tObject.defineProperty(newToString, 'name', toStringName);\n\tObject.defineProperty(to, 'toString', {...toStringDescriptor, value: newToString});\n};\n\nexport default function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {\n\tconst {name} = to;\n\n\tfor (const property of Reflect.ownKeys(from)) {\n\t\tcopyProperty(to, from, property, ignoreNonConfigurable);\n\t}\n\n\tchangePrototype(to, from);\n\tchangeToString(to, from, name);\n\n\treturn to;\n}\n","'use strict';\nmodule.exports = () => {\n\tconst ret = {};\n\n\tret.promise = new Promise((resolve, reject) => {\n\t\tret.resolve = resolve;\n\t\tret.reject = reject;\n\t});\n\n\treturn ret;\n};\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst p_defer_1 = __importDefault(require(\"p-defer\"));\nfunction mapAgeCleaner(map, property = 'maxAge') {\n let processingKey;\n let processingTimer;\n let processingDeferred;\n const cleanup = () => __awaiter(this, void 0, void 0, function* () {\n if (processingKey !== undefined) {\n // If we are already processing an item, we can safely exit\n return;\n }\n const setupTimer = (item) => __awaiter(this, void 0, void 0, function* () {\n processingDeferred = p_defer_1.default();\n const delay = item[1][property] - Date.now();\n if (delay <= 0) {\n // Remove the item immediately if the delay is equal to or below 0\n map.delete(item[0]);\n processingDeferred.resolve();\n return;\n }\n // Keep track of the current processed key\n processingKey = item[0];\n processingTimer = setTimeout(() => {\n // Remove the item when the timeout fires\n map.delete(item[0]);\n if (processingDeferred) {\n processingDeferred.resolve();\n }\n }, delay);\n // tslint:disable-next-line:strict-type-predicates\n if (typeof processingTimer.unref === 'function') {\n // Don't hold up the process from exiting\n processingTimer.unref();\n }\n return processingDeferred.promise;\n });\n try {\n for (const entry of map) {\n yield setupTimer(entry);\n }\n }\n catch (_a) {\n // Do nothing if an error occurs, this means the timer was cleaned up and we should stop processing\n }\n processingKey = undefined;\n });\n const reset = () => {\n processingKey = undefined;\n if (processingTimer !== undefined) {\n clearTimeout(processingTimer);\n processingTimer = undefined;\n }\n if (processingDeferred !== undefined) { // tslint:disable-line:early-exit\n processingDeferred.reject(undefined);\n processingDeferred = undefined;\n }\n };\n const originalSet = map.set.bind(map);\n map.set = (key, value) => {\n if (map.has(key)) {\n // If the key already exist, remove it so we can add it back at the end of the map.\n map.delete(key);\n }\n // Call the original `map.set`\n const result = originalSet(key, value);\n // If we are already processing a key and the key added is the current processed key, stop processing it\n if (processingKey && processingKey === key) {\n reset();\n }\n // Always run the cleanup method in case it wasn't started yet\n cleanup(); // tslint:disable-line:no-floating-promises\n return result;\n };\n cleanup(); // tslint:disable-line:no-floating-promises\n return map;\n}\nexports.default = mapAgeCleaner;\n// Add support for CJS\nmodule.exports = mapAgeCleaner;\nmodule.exports.default = mapAgeCleaner;\n","import mimicFn from 'mimic-fn';\nimport mapAgeCleaner from 'map-age-cleaner';\nconst cacheStore = new WeakMap();\n/**\n[Memoize](https://en.wikipedia.org/wiki/Memoization) functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input.\n\n@param fn - Function to be memoized.\n\n@example\n```\nimport mem from 'mem';\n\nlet index = 0;\nconst counter = () => ++index;\nconst memoized = mem(counter);\n\nmemoized('foo');\n//=> 1\n\n// Cached as it's the same argument\nmemoized('foo');\n//=> 1\n\n// Not cached anymore as the arguments changed\nmemoized('bar');\n//=> 2\n\nmemoized('bar');\n//=> 2\n```\n*/\nexport default function mem(fn, { cacheKey, cache = new Map(), maxAge, } = {}) {\n if (typeof maxAge === 'number') {\n mapAgeCleaner(cache);\n }\n const memoized = function (...arguments_) {\n const key = cacheKey ? cacheKey(arguments_) : arguments_[0];\n const cacheItem = cache.get(key);\n if (cacheItem) {\n return cacheItem.data; // eslint-disable-line @typescript-eslint/no-unsafe-return\n }\n const result = fn.apply(this, arguments_);\n cache.set(key, {\n data: result,\n maxAge: maxAge ? Date.now() + maxAge : Number.POSITIVE_INFINITY,\n });\n return result; // eslint-disable-line @typescript-eslint/no-unsafe-return\n };\n mimicFn(memoized, fn, {\n ignoreNonConfigurable: true,\n });\n cacheStore.set(memoized, cache);\n return memoized;\n}\n/**\n@returns A [decorator](https://github.com/tc39/proposal-decorators) to memoize class methods or static class methods.\n\n@example\n```\nimport {memDecorator} from 'mem';\n\nclass Example {\n index = 0\n\n @memDecorator()\n counter() {\n return ++this.index;\n }\n}\n\nclass ExampleWithOptions {\n index = 0\n\n @memDecorator({maxAge: 1000})\n counter() {\n return ++this.index;\n }\n}\n```\n*/\nexport function memDecorator(options = {}) {\n const instanceMap = new WeakMap();\n return (target, propertyKey, descriptor) => {\n const input = target[propertyKey]; // eslint-disable-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n if (typeof input !== 'function') {\n throw new TypeError('The decorated value must be a function');\n }\n delete descriptor.value;\n delete descriptor.writable;\n descriptor.get = function () {\n if (!instanceMap.has(this)) {\n const value = mem(input, options);\n instanceMap.set(this, value);\n return value;\n }\n return instanceMap.get(this);\n };\n };\n}\n/**\nClear all cached data of a memoized function.\n\n@param fn - Memoized function.\n*/\nexport function memClear(fn) {\n const cache = cacheStore.get(fn);\n if (!cache) {\n throw new TypeError('Can\\'t clear a function that was not memoized!');\n }\n if (typeof cache.clear !== 'function') {\n throw new TypeError('The cache Map can\\'t be cleared!');\n }\n cache.clear();\n}\n","/**\n * Test if the given value is an object.\n *\n * @param {*} value The value to test.\n * @return {Boolean} Whether or not the value is an object.\n */\nexport default function isObject(value) {\n return typeof value === 'object' && !!value && value.toString() === '[object Object]';\n}\n","import deepmerge from 'deepmerge';\nimport { noCase } from 'no-case';\nimport mem from 'mem';\nimport isObject from '../../../utils/object/isObject.js';\n\n/**\n * @typedef {StringConstructor|NumberConstructor|BooleanConstructor|ArrayConstructor|ObjectConstructor} OptionType\n * @typedef {{ [name:string]: OptionType | { type: OptionType, default: String|Number|Boolean|(() => Array|Object)} }} OptionsSchema\n * @typedef {{ [optionName:string]: any }} OptionsInterface\n */\n\n/**\n * Get the attribute name based on the given option name.\n * @param {String} name The option name.\n */\nfunction getAttributeName(name) {\n return `data-option-${noCase(name, { delimiter: '-' })}`;\n}\n\nconst memoizedGetAttributeName = mem(getAttributeName);\n\n/**\n * Class options to manage options as data attributes on an HTML element.\n * @augments {OptionsInterface}\n */\nexport default class Options {\n /** @type {HTMLElement} The HTML element holding the options attributes. */\n #element;\n\n /** @type {Object} An object to store Array and Object values for reference. */\n #values = {};\n\n /** @type {Array} List of allowed types. */\n static types = [String, Number, Boolean, Array, Object];\n\n /**\n * The default values to return for each available type.\n * @type {Object}\n */\n #defaultValues = {\n String: '',\n Number: 0,\n Boolean: false,\n Array: () => [],\n Object: () => ({}),\n };\n\n /**\n * Class constructor.\n *\n * @param {HTMLElement} element The HTML element storing the options.\n * @param {OptionsSchema} schema A Base class config.\n */\n constructor(element, schema) {\n this.#element = element;\n\n Object.entries(schema).forEach(([name, config]) => {\n const isObjectConfig = !Options.types.includes(config);\n /** @type {OptionType} */\n // @ts-ignore\n const type = isObjectConfig ? config.type : config;\n\n if (!Options.types.includes(type)) {\n throw new Error(\n `The \"${name}\" option has an invalid type. The allowed types are: String, Number, Boolean, Array and Object.`\n );\n }\n\n // @ts-ignore\n const defaultValue = isObjectConfig ? config.default : this.#defaultValues[type.name];\n\n if ((type === Array || type === Object) && typeof defaultValue !== 'function') {\n throw new Error(\n `The default value for options of type \"${type.name}\" must be returned by a function.`\n );\n }\n\n Object.defineProperty(this, name, {\n get() {\n return this.get(name, type, defaultValue);\n },\n set(value) {\n this.set(name, type, value, defaultValue);\n },\n enumerable: true,\n });\n });\n\n return this;\n }\n\n /**\n * Get an option value.\n *\n * @param {String} name The option name.\n * @param {ArrayConstructor|ObjectConstructor|StringConstructor|NumberConstructor|BooleanConstructor} type The option data's type.\n * @param {any} defaultValue The default value for this option.\n */\n get(name, type, defaultValue) {\n const attributeName = memoizedGetAttributeName(name);\n const hasAttribute = this.#element.hasAttribute(attributeName);\n\n if (type === Boolean) {\n if (defaultValue) {\n const negatedAttributeName = memoizedGetAttributeName(`no-${name}`);\n const hasNegatedAttribute = this.#element.hasAttribute(negatedAttributeName);\n\n return !hasNegatedAttribute;\n }\n\n return hasAttribute || defaultValue;\n }\n\n const value = this.#element.getAttribute(attributeName);\n\n if (type === Number) {\n return hasAttribute ? Number(value) : defaultValue;\n }\n\n if (type === Array || type === Object) {\n const val = deepmerge(\n defaultValue(),\n hasAttribute ? JSON.parse(value) : this.#defaultValues[type.name]()\n );\n\n if (!this.#values[name]) {\n this.#values[name] = val;\n } else if (val !== this.#values[name]) {\n // When getting the value, wait for the next loop to update the data attribute\n // with the new value. This is a simple trick to avoid using a Proxy to watch\n // for any deep changes on an array or object. It should not break anything as\n // the original value is read once from the data attribute and is then read from\n // the private property `#values`.\n setTimeout(() => {\n this.#element.setAttribute(attributeName, JSON.stringify(this.#values[name]));\n }, 0);\n }\n\n return this.#values[name];\n }\n\n return hasAttribute ? value : defaultValue;\n }\n\n /**\n * Set an option value.\n *\n * @param {String} name The option name.\n * @param {ArrayConstructor|ObjectConstructor|StringConstructor|NumberConstructor|BooleanConstructor} type The option data's type.\n * @param {any} value The new value for this option.\n */\n set(name, type, value, defaultValue) {\n const attributeName = memoizedGetAttributeName(name);\n\n if (value.constructor.name !== type.name) {\n const val = Array.isArray(value) || isObject(value) ? JSON.stringify(value) : value;\n throw new TypeError(\n `The \"${val}\" value for the \"${name}\" option must be of type \"${type.name}\"`\n );\n }\n\n switch (type) {\n case Boolean:\n if (defaultValue) {\n const negatedAttributeName = memoizedGetAttributeName(`no-${name}`);\n\n if (value) {\n this.#element.removeAttribute(negatedAttributeName);\n } else {\n this.#element.setAttribute(negatedAttributeName, '');\n }\n } else if (value) {\n this.#element.setAttribute(attributeName, '');\n } else {\n this.#element.removeAttribute(attributeName);\n }\n break;\n case Array:\n case Object:\n this.#values[name] = value;\n this.#element.setAttribute(attributeName, JSON.stringify(value));\n break;\n default:\n this.#element.setAttribute(attributeName, value);\n }\n }\n}\n","import Options from './classes/Options.js';\nimport { warn } from './utils.js';\n\n/**\n * @typedef {import('./index.js').default} Base\n * @typedef {import('./index.js').BaseOptions} BaseOptions\n * @typedef {import('./classes/Options.js').OptionsSchema} OptionsSchema\n */\n\n/**\n * Get the legacy options from the `config` properties.\n *\n * @param {Base} instance The component's instance.\n * @param {Object} config The component's config.\n * @return {OptionsSchema}\n */\nfunction getLegacyOptionsSchema(instance, config) {\n // Add legacy options to the schema\n const propsToExclude = ['name', 'log', 'debug', 'components', 'refs', 'options'];\n return Object.keys(config).reduce(\n /**\n * @param {OptionsSchema} schema\n * @param {String} propName\n */\n (schema, propName) => {\n if (propsToExclude.includes(propName)) {\n return schema;\n }\n\n const value = config[propName];\n let type = value === null || value === undefined ? Object : value.constructor;\n\n // Default to object type as it should work for any values.\n if (!Options.types.includes(type)) {\n type = Object;\n }\n\n warn(\n instance,\n '\\n Options must be defined in the `config.options` property.',\n `\\n Consider moving the \\`config.${propName}\\` option to \\`config.options.${propName}\\`.`\n );\n\n if (type === Array || type === Object) {\n schema[propName] = { type, default: () => value };\n } else {\n schema[propName] = { type, default: value };\n }\n\n return schema;\n },\n {}\n );\n}\n\n/**\n * Get the inherited options values from the current instance parent classes.\n * @param {Base} instance The component's instance.\n * @return {OptionsSchema}\n */\nfunction getParentOptionsSchema(instance) {\n /** @type {OptionsSchema} [description] */\n let schema = {};\n\n /** @type {Base|false} Merge inherited options. */\n let prototype = instance;\n\n while (prototype) {\n const getterConfig = prototype.config;\n // @ts-ignore\n const staticConfig = prototype.constructor.config;\n if (getterConfig || staticConfig) {\n schema = Object.assign(\n (getterConfig || {}).options || {},\n (staticConfig || {}).options || {},\n schema\n );\n prototype = Object.getPrototypeOf(prototype);\n } else {\n prototype = false;\n }\n }\n\n return schema;\n}\n\n/**\n * Update an Options object with the legacy values from the element's `data-options` attribute.\n *\n * @param {Base} instance The component's instance.\n * @param {HTMLElement} element The component's root element.\n * @param {Options} options The component's options.\n */\nfunction updateOptionsWithLegacyValues(instance, element, options) {\n // Update legacy options with value from the `data-options` attribute\n let legacyOptionsValues = {};\n if (element.dataset.options) {\n warn(\n instance,\n 'The `data-options` attribute usage is deprecated, use multiple `data-option-...` attributes instead.'\n );\n try {\n legacyOptionsValues = JSON.parse(element.dataset.options);\n } catch (err) {\n throw new Error('Can not parse the `data-options` attribute. Is it a valid JSON string?');\n }\n }\n\n Object.entries(legacyOptionsValues).forEach(([optionName, optionValue]) => {\n options[optionName] = optionValue;\n });\n}\n\n/**\n * Get a component's options.\n *\n * @param {Base} instance The component's instance.\n * @param {HTMLElement} element The component's root element.\n * @param {Object} config The component's default config.\n * @return {Options & BaseOptions} The component's merged options.\n */\nexport function getOptions(instance, element, config) {\n /** @type {OptionsSchema} */\n const schema = {\n name: {\n type: String,\n default: config.name,\n },\n log: {\n type: Boolean,\n default: config.log ?? false,\n },\n debug: {\n type: Boolean,\n default: config.debug ?? false,\n },\n ...getParentOptionsSchema(instance),\n ...getLegacyOptionsSchema(instance, config),\n ...(config.options || {}),\n };\n\n const options = new Options(element, schema);\n\n updateOptionsWithLegacyValues(instance, element, options);\n\n instance.$emit('get:options', options);\n\n return /** @type {Options & BaseOptions} */ (options);\n}\n\nexport default {\n getOptions,\n};\n","import { getConfig, warn } from './utils.js';\n\n/**\n * @typedef {import('./index.js').default} Base\n */\n\n/**\n * A ponyfill for the CSS `:scope` selector which is not supported in IE11.\n * The following method will return an array of elements similare to the\n * `:scope ${selector}` selector.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/:scope\n * @see https://github.com/jonathantneal/element-qsa-scope\n *\n * @param {HTMLElement} element The element from which the scope is taken.\n * @param {String} selector The children selector.\n * @param {String} uniqId A uniq ID to prefix the selector with.\n * @return {Array} A list of elements.\n */\nexport function scopeSelectorPonyfill(element, selector, uniqId) {\n let list = [];\n\n try {\n list = Array.from(element.querySelectorAll(`:scope ${selector}`));\n } catch (err) {\n const attr = `data-uniq-id`;\n const scopedSelector = `[${attr}=\"${uniqId}\"] ${selector}`;\n element.setAttribute(attr, uniqId);\n list = Array.from(element.querySelectorAll(scopedSelector));\n element.removeAttribute(attr);\n }\n\n return list;\n}\n\n/**\n * Get all refs of a component.\n *\n * @param {Base} instance The component's instance.\n * @param {HTMLElement} element The component's root element.\n * @return {Object} Return an object containing all the component's refs.\n */\nexport function getRefs(instance, element) {\n const definedRefs = getConfig(instance).refs || [];\n /** @type {Array<HTMLElement>} */\n const allRefs = Array.from(element.querySelectorAll(`[data-ref]`));\n const childrenRefs = scopeSelectorPonyfill(element, '[data-component] [data-ref]', instance.$id);\n const elements = allRefs.filter((ref) => !childrenRefs.includes(ref));\n\n const refs = elements.reduce(\n /**\n * @param {Object} $refs\n * @param {HTMLElement & {__base__?: Base}} $ref\n */\n ($refs, $ref) => {\n let refName = $ref.dataset.ref;\n\n if (!definedRefs.includes(refName)) {\n warn(\n instance,\n `The \"${refName}\" ref is not defined in the class configuration.`,\n 'Did you forgot to define it?'\n );\n }\n\n const $realRef = $ref.__base__ ? $ref.__base__ : $ref;\n\n if (refName.endsWith('[]')) {\n refName = refName.replace(/\\[\\]$/, '');\n\n if (!$refs[refName]) {\n $refs[refName] = [];\n }\n }\n\n if ($refs[refName]) {\n if (Array.isArray($refs[refName])) {\n $refs[refName].push($realRef);\n } else {\n $refs[refName] = [$refs[refName], $realRef];\n warn(\n instance,\n `The \"${refName}\" ref has been found multiple times.`,\n 'Did you forgot to add the `[]` suffix to its name?'\n );\n }\n } else {\n $refs[refName] = $realRef;\n }\n\n return $refs;\n },\n {}\n );\n\n instance.$emit('get:refs', refs);\n return refs;\n}\n\nexport default {\n getRefs,\n};\n","import { debug } from './utils.js';\n\n/**\n * @typedef {import('./index.js').default} Base\n */\n\n/**\n * Mount a given component which might be async.\n *\n * @param {Base|Promise<Base>} component The component to mount.\n * @return {void}\n */\nfunction mountComponent(component) {\n if (component instanceof Promise) {\n component.then((instance) => instance.$mount());\n } else {\n component.$mount();\n }\n}\n\n/**\n * Mount children components of a given instance.\n *\n * @param {Base} instance The parent component's instance.\n * @return {void}\n */\nexport function mountComponents(instance) {\n if (__DEV__) {\n debug(instance, 'mountComponents', instance.$children);\n }\n\n Object.values(instance.$children).forEach(($child) => {\n if (__DEV__) {\n debug(instance, 'mountComponent', $child);\n }\n $child.forEach(mountComponent);\n });\n}\n\n/**\n * Mount or update the given component.\n *\n * @param {Base|Promise<Base>} component [description]\n * @return {void}\n */\nfunction mountOrUpdateComponent(component) {\n if (component instanceof Promise) {\n component.then((instance) => (instance.$isMounted ? instance.$update() : instance.$mount()));\n } else {\n const method = component.$isMounted ? '$update' : '$mount';\n component[method]();\n }\n}\n\n/**\n * Mount or updte children components of the given instance.\n *\n * @param {Base} instance The parent component's instance.\n * @return {void}\n */\nexport function mountOrUpdateComponents(instance) {\n if (__DEV__) {\n debug(instance, 'mountComponents', instance.$children);\n }\n\n Object.values(instance.$children).forEach(($child) => {\n $child.forEach(mountOrUpdateComponent);\n });\n}\n\n/**\n * Destroy a given component which might be async.\n *\n * @param {Base|Promise} component The component to destroy.\n * @return {void}\n */\nfunction destroyComponent(component) {\n if (component instanceof Promise) {\n component.then((instance) => instance.$destroy());\n } else {\n component.$destroy();\n }\n}\n\n/**\n * Destroy children components of a given instance.\n *\n * @param {Base} instance The parent component's instance.\n * @return {void}\n */\nexport function destroyComponents(instance) {\n if (__DEV__) {\n debug(instance, 'destroyComponents', instance.$children);\n }\n\n Object.values(instance.$children).forEach(\n /**\n * @param {Array<Base>} $child\n */\n ($child) => {\n $child.forEach(destroyComponent);\n }\n );\n}\n","/**\n * Service abstract class\n */\nexport default class Service {\n /**\n * Class constructor, used to test the abstract class implementation.\n */\n constructor() {\n this.callbacks = new Map();\n this.isInit = false;\n }\n\n /**\n * Getter to get the services properties.\n * This getter MUST be implementer by the service extending this class.\n * @return {Object}\n */\n get props() {\n throw new Error('The `props` getter must be implemented.');\n }\n\n /**\n * Method to initialize the service behaviors.\n * This method MUST be implemented by the service extending this class.\n *\n * @return {Service} The current instance\n */\n init() {\n throw new Error('The `init` method must be implemented.');\n }\n\n /**\n * Method to kill the service behaviors.\n * This method MUST be implemented by the service extending this class.\n *\n * @return {Service} The current instance\n */\n kill() {\n throw new Error('The `kill` method must be implemented.');\n }\n\n /**\n * Add a callback.\n *\n * @param {String} key The callback's identifier\n * @param {Function} callback The callback function\n * @return {this} The current instance\n */\n add(key, callback) {\n if (this.has(key)) {\n throw new Error(`A callback with the key \\`${key}\\` has already been registered.`);\n }\n\n // Initialize the service when we add the first callback\n if (this.callbacks.size === 0 && !this.isInit) {\n this.init();\n this.isInit = true;\n }\n\n this.callbacks.set(key, callback);\n return this;\n }\n\n /**\n * Test if a callback with the given key has already been added.\n *\n * @param {String} key The identifier to test\n * @return {Boolean} Whether or not the identifier already exists\n */\n has(key) {\n return this.callbacks.has(key);\n }\n\n /**\n * Get the callback tied to the given key.\n *\n * @param {String} key The identifier to get\n * @return {Function} The callback function\n */\n get(key) {\n return this.callbacks.get(key);\n }\n\n /**\n * Remove the callback tied to the given key.\n *\n * @param {String} key The identifier to remove\n * @return {Service} The current instance\n */\n remove(key) {\n this.callbacks.delete(key);\n\n // Kill the service when we remove the last callback\n if (this.callbacks.size === 0 && this.isInit) {\n this.kill();\n this.isInit = false;\n }\n\n return this;\n }\n\n /**\n * Trigger each added callback with the given arguments.\n *\n * @param {Array} args All the arguments to apply to the callback\n * @return {Service} The current instance\n */\n trigger(...args) {\n this.callbacks.forEach(function forEachCallback(callback) {\n callback(...args);\n });\n\n return this;\n }\n}\n","import Service from '../abstracts/Service.js';\n\n/**\n * @typedef {import('./index').ServiceInterface} ServiceInterface\n */\n\n/**\n * @typedef {Object} PointerServiceProps\n * @property {MouseEvent | TouchEvent} event\n * @property {Boolean} isDown\n * @property {Number} x\n * @property {Number} y\n * @property {{ x: Boolean, y: Boolean }} changed\n * @property {{ x: Number, y: Number }} last\n * @property {{ x: Number, y: Number }} delta\n * @property {{ x: Number, y: Number }} progress\n * @property {{ x: Number, y: Number }} max\n */\n\n/**\n * @typedef {Object} PointerService\n * @property {(key:String, callback:(props:PointerServiceProps) => void) => void} add\n * Add a function to the resize service. The key must be uniq.\n * @property {() => PointerServiceProps} props\n * Get the current values of the resize service props.\n */\n\n/**\n * Test if an event is an instance of TouchEvent.\n *\n * @param {TouchEvent|MouseEvent} event The event instance to test.\n * @return {Boolean} Is it a TouchEvent?\n */\nfunction isTouchEvent(event) {\n return typeof TouchEvent !== 'undefined' && event instanceof TouchEvent;\n}\n\n/**\n * Pointer service\n */\nclass Pointer extends Service {\n /** @type {Boolean} State of the pointer. */\n isDown = false;\n\n /** @type {Number} The y pointer position. */\n y = window.innerHeight / 2;\n\n /** @type {Number} The y previous pointer position. */\n yLast = window.innerHeight / 2;\n\n /** @type {Number} The x pointer position. */\n x = window.innerWidth / 2;\n\n /** @type {Number} The x previous pointer position. */\n xLast = window.innerWidth / 2;\n\n /** @type {MouseEvent|TouchEvent} The latest event emitted from the pointer. */\n event;\n\n /**\n * Whether or not the raf service is running.\n * @type {Boolean}\n */\n hasRaf = false;\n\n /**\n * Bind the handler to the mousemove and touchmove events.\n * Bind the up and down handler to the mousedown, mouseup, touchstart and touchend events.\n *\n * @return {Pointer}\n */\n init() {\n document.documentElement.addEventListener('mouseenter', this, {\n once: true,\n capture: true,\n });\n\n const options = { passive: true, capture: true };\n document.addEventListener('mousemove', this, options);\n document.addEventListener('touchmove', this, options);\n document.addEventListener('mousedown', this, options);\n document.addEventListener('touchstart', this, options);\n document.addEventListener('mouseup', this, options);\n document.addEventListener('touchend', this, options);\n return this;\n }\n\n /**\n * Handle events.\n * @param {MouseEvent|TouchEvent} event The event object.\n */\n handleEvent(event) {\n // eslint-disable-next-line default-case\n switch (event.type) {\n case 'mouseenter':\n case 'mousemove':\n case 'touchmove':\n this.handler(event);\n break;\n case 'mousedown':\n case 'touchstart':\n this.downHandler();\n break;\n case 'mouseup':\n case 'touchend':\n this.upHandler();\n break;\n }\n }\n\n /**\n * Unbind all handlers from their bounded event.\n *\n * @return {Pointer}\n */\n kill() {\n document.removeEventListener('mousemove', this);\n document.removeEventListener('touchmove', this);\n document.removeEventListener('mousedown', this);\n document.removeEventListener('touchstart', this);\n document.removeEventListener('mouseup', this);\n document.removeEventListener('touchend', this);\n return this;\n }\n\n /**\n * The service handler.\n * @param {MouseEvent|TouchEvent} event The mouse event object.\n */\n handler(event) {\n this.updateValues(event);\n this.trigger(this.props);\n }\n\n /**\n * Handler for the pointer's down action.\n *\n * @return {void}\n */\n downHandler() {\n this.isDown = true;\n this.trigger(this.props);\n }\n\n /**\n * Handler for the pointer's up action.\n *\n * @return {void}\n */\n upHandler() {\n this.isDown = false;\n this.trigger(this.props);\n }\n\n /**\n * Update the pointer positions.\n *\n * @param {MouseEvent|TouchEvent} event The event object.\n * @return {void}\n */\n updateValues(event) {\n this.event = event;\n this.yLast = this.y;\n this.xLast = this.x;\n\n // Check pointer Y\n // We either get data from a touch event `event.touches[0].clientY` or from\n // a mouse event `event.clientY`.\n const y = isTouchEvent(event)\n ? /** @type {TouchEvent} */ (event).touches[0]?.clientY\n : /** @type {MouseEvent} */ (event).clientY;\n if (y !== this.y) {\n this.y = y;\n }\n\n // Check pointer X\n // We either get data from a touch event `event.touches[0].clientX` or from\n // a mouse event `event.clientX`.\n const x = isTouchEvent(event)\n ? /** @type {TouchEvent} */ (event).touches[0]?.clientX\n : /** @type {MouseEvent} */ (event).clientX;\n if (x !== this.x) {\n this.x = x;\n }\n }\n\n /**\n * Get the pointer props.\n *\n * @type {Object}\n */\n get props() {\n return {\n event: this.event,\n isDown: this.isDown,\n x: this.x,\n y: this.y,\n changed: {\n x: this.x !== this.xLast,\n y: this.y !== this.yLast,\n },\n last: {\n x: this.xLast,\n y: this.yLast,\n },\n delta: {\n x: this.x - this.xLast,\n y: this.y - this.yLast,\n },\n progress: {\n x: this.x / window.innerWidth,\n y: this.y / window.innerHeight,\n },\n max: {\n x: window.innerWidth,\n y: window.innerHeight,\n },\n };\n }\n}\n\nlet pointer = null;\n\n/**\n * Use the pointer.\n *\n * ```js\n * import usePointer from '@studiometa/js-toolkit/services';\n * const { add, remove, props } = usePointer();\n * add('id', () => {});\n * remove('id');\n * props();\n * ```\n *\n * @return {ServiceInterface & PointerService}\n */\nexport default function usePointer() {\n if (!pointer) {\n pointer = new Pointer();\n }\n\n const add = pointer.add.bind(pointer);\n const remove = pointer.remove.bind(pointer);\n const has = pointer.has.bind(pointer);\n const props = () => pointer.props;\n\n return {\n add,\n remove,\n has,\n props,\n };\n}\n","/**\n * RequestAnimation frame polyfill.\n * @see https://github.com/vuejs/vue/blob/ec78fc8b6d03e59da669be1adf4b4b5abf670a34/dist/vue.runtime.esm.js#L7355\n * @return {(handler: Function) => number}\n */\nexport function getRaf() {\n return typeof window !== 'undefined' && window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout;\n}\n\n/**\n * Get a function to cancel the method returned by `getRaf()`.\n *\n * @return {(id:number) => void}\n */\nexport function getCancelRaf() {\n return typeof window !== 'undefined' && window.cancelAnimationFrame\n ? window.cancelAnimationFrame.bind(window)\n : clearTimeout;\n}\n\n/**\n * Wait for the next frame to execute a function.\n *\n * @param {Function=} [fn=() => {}] The callback function to execute.\n * @return {Promise} A Promise resolving when the next frame is reached.\n *\n * @example\n * ```js\n * nextFrame(() => console.log('hello world'));\n *\n * await nextFrame();\n * console.log('hello world');\n * ```\n */\nexport default function nextFrame(fn = () => {}) {\n const raf = getRaf();\n return new Promise((resolve) => {\n raf(() => raf(() => resolve(fn())));\n });\n}\n","import Service from '../abstracts/Service.js';\nimport { getRaf, getCancelRaf } from '../utils/nextFrame.js';\n\n/**\n * @typedef {import('./index').ServiceInterface} ServiceInterface\n */\n\n/**\n * @typedef {Object} RafServiceProps\n * @property {DOMHighResTimeStamp} time\n */\n\n/**\n * @typedef {Object} RafService\n * @property {(key:String, callback:(props:RafServiceProps) => void) => void} add\n * Add a function to the resize service. The key must be uniq.\n * @property {() => RafServiceProps} props\n * Get the current values of the resize service props.\n */\n\n/**\n * Tick service\n */\nclass Raf extends Service {\n /** @type {Boolean} Whether the loop is running or not. */\n isTicking = false;\n\n /** @type {number} */\n id = 0;\n\n raf = getRaf();\n\n cancelRaf = getCancelRaf();\n\n /**\n * Bind loop to the instance.\n */\n constructor() {\n super();\n this.loop = this.loop.bind(this);\n }\n\n /**\n * Start the requestAnimationFrame loop.\n *\n * @return {Raf}\n */\n init() {\n this.isTicking = true;\n this.loop();\n return this;\n }\n\n /**\n * Loop method.\n */\n loop() {\n this.trigger(this.props);\n\n if (!this.isTicking) {\n return;\n }\n\n this.id = this.raf(this.loop);\n }\n\n /**\n * Stop the requestAnimationFrame loop.\n *\n * @return {Raf}\n */\n kill() {\n this.cancelRaf(this.id);\n this.isTicking = false;\n return this;\n }\n\n /**\n * Get raf props.\n *\n * @todo Return elapsed time / index?\n * @type {Object}\n */\n get props() {\n return {\n time: window.performance.now(),\n };\n }\n}\n\nlet instance = null;\n\n/**\n * Use the RequestAnimationFrame (raf) service.\n *\n * ```js\n * import { useRaf } from '@studiometa/js/services';\n * const { add, remove, props } = useRag();\n * add(id, (props) => {});\n * remove(id);\n * props();\n * ```\n *\n * @return {ServiceInterface & RafService}\n */\nexport default function useRaf() {\n if (!instance) {\n instance = new Raf();\n }\n\n const add = instance.add.bind(instance);\n const remove = instance.remove.bind(instance);\n const has = instance.has.bind(instance);\n\n // eslint-disable-next-line require-jsdoc\n function props() {\n return instance.props;\n }\n\n return {\n add,\n remove,\n has,\n props,\n };\n}\n","/**\n * Returns a function, that, as long as it continues to be invoked,\n * will not be triggered. The function will be called after it stops\n * being called for N milliseconds.\n *\n * @param {(...args:any[]) => void} fn The function to call.\n * @param {Number=} [delay=300] The delay in ms to wait before calling the function.\n * @return {(...args:any[]) => void} The debounced function.\n */\nexport default function debounce(fn, delay = 300) {\n let timeout;\n return function debounced(...args) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n fn(...args);\n }, delay);\n };\n}\n","import Service from '../abstracts/Service.js';\nimport debounce from '../utils/debounce.js';\n\n/**\n * @typedef {import('./index').ServiceInterface} ServiceInterface\n */\n\n/**\n * @typedef {Object} ResizeServiceProps\n * @property {Number} width\n * @property {Number} height\n * @property {Number} ratio\n * @property {'square'|'landscape'|'portrait'} orientation\n * @property {String} [breakpoint]\n * @property {String[]} [breakpoints]\n */\n\n/**\n * @typedef {Object} ResizeService\n * @property {(key:String, callback:(props:ResizeServiceProps) => void) => void} add\n * Add a function to the resize service. The key must be uniq.\n * @property {() => ResizeServiceProps} props\n * Get the current values of the resize service props.\n */\n\n/**\n * Resize service\n *\n * ```\n * import { useResize } from '@studiometa/js/services';\n * const { add, remove, props } = useResize();\n * add(key, (props) => {});\n * remove(key);\n * props();\n * ```\n */\nclass Resize extends Service {\n /**\n * Bind the handler to the resize event.\n *\n * @return {this}\n */\n init() {\n this.handler = debounce(() => {\n this.trigger(this.props);\n }).bind(this);\n\n if (this.canUseResizeObserver) {\n this.resizeObserver = new ResizeObserver(this.handler);\n this.resizeObserver.observe(document.documentElement);\n } else {\n window.addEventListener('resize', this.handler);\n }\n\n return this;\n }\n\n /**\n * Unbind the handler from the resize event.\n *\n * @return {this}\n */\n kill() {\n if (this.canUseResizeObserver) {\n this.resizeObserver.disconnect();\n } else {\n window.removeEventListener('resize', this.handler);\n }\n delete this.resizeObserver;\n\n return this;\n }\n\n /**\n * Get resize props.\n *\n * @type {ResizeServiceProps}\n */\n get props() {\n /** @type {ResizeServiceProps} [description] */\n const props = {\n width: window.innerWidth,\n height: window.innerHeight,\n ratio: window.innerWidth / window.innerHeight,\n orientation: 'square',\n };\n\n if (props.ratio > 1) {\n props.orientation = 'landscape';\n }\n\n if (props.ratio < 1) {\n props.orientation = 'portrait';\n }\n\n if (this.breakpointElement) {\n props.breakpoint = this.breakpoint;\n props.breakpoints = this.breakpoints;\n }\n\n return props;\n }\n\n /**\n * The element holding the breakpoints data.\n * @return {HTMLElement}\n */\n get breakpointElement() {\n return document.querySelector('[data-breakpoint]') || null;\n }\n\n /**\n * Get the current breakpoint.\n * @return {String}\n */\n get breakpoint() {\n return window\n .getComputedStyle(this.breakpointElement, '::before')\n .getPropertyValue('content')\n .replace(/\"/g, '');\n }\n\n /**\n * Get all breakpoints.\n * @return {Array}\n */\n get breakpoints() {\n const breakpoints = window\n .getComputedStyle(this.breakpointElement, '::after')\n .getPropertyValue('content')\n .replace(/\"/g, '');\n\n return breakpoints.split(',');\n }\n\n /**\n * Test if we can use the `ResizeObserver` API.\n * @return {Boolean}\n */\n get canUseResizeObserver() {\n return typeof window.ResizeObserver !== 'undefined';\n }\n}\n\nlet resize = null;\n\n/**\n * Use the resize service.\n *\n * ```js\n * import useResize from '@studiometa/js-toolkit/services/resize';\n * const { add, remove, props } = useResize();\n * add(key, (props) => {});\n * remove(key);\n * props();\n * ```\n * @return {ServiceInterface & ResizeService}\n */\nexport default function useResize() {\n if (!resize) {\n resize = new Resize();\n }\n\n const add = resize.add.bind(resize);\n const remove = resize.remove.bind(resize);\n const has = resize.has.bind(resize);\n const props = () => resize.props;\n\n return {\n add,\n remove,\n has,\n props,\n };\n}\n","import Service from '../abstracts/Service.js';\nimport debounce from '../utils/debounce.js';\n\n/**\n * @typedef {import('./index').ServiceInterface} ServiceInterface\n */\n\n/**\n * @typedef {Object} ScrollServiceProps\n * @property {Number} x\n * @property {Number} y\n * @property {{ x: Boolean, y: Boolean }} changed\n * @property {{ x: Number, y: Number }} last\n * @property {{ x: Number, y: Number }} delta\n * @property {{ x: Number, y: Number }} progress\n * @property {{ x: Number, y: Number }} max\n * @property {{ x: 'LEFT'|'RIGHT'|'NONE', y: 'UP'|'DOWN'|'NONE' }} direction\n */\n\n/**\n * @typedef {Object} ScrollService\n * @property {(key:String, callback:(props:ScrollServiceProps) => void) => void} add\n * Add a function to the resize service. The key must be uniq.\n * @property {() => ScrollServiceProps} props\n * Get the current values of the resize service props.\n */\n\n/**\n * Scroll service\n */\nclass Scroll extends Service {\n /** @type {Number} The y scroll position. */\n y = window.pageYOffset;\n\n /** @type {Number} The y previous scroll position. */\n yLast = window.pageYOffset;\n\n /** @type {Number} The x scroll position. */\n x = window.pageXOffset;\n\n /** @type {Number} The x previous scroll position. */\n xLast = window.pageXOffset;\n\n /**\n * Bind the handler to the scroll event.\n *\n * @return {Scroll}\n */\n init() {\n document.addEventListener('scroll', this, { passive: true, capture: true });\n return this;\n }\n\n /**\n * Debounced handler.\n *\n * @return {() => void}\n */\n get debouncedHandler() {\n const debounced = debounce(() => {\n this.trigger(this.props);\n }, 0);\n\n // Define property to avoid multiple call to the getter\n Object.defineProperty(this, 'debouncedHandler', {\n value: debounced,\n });\n\n return debounced;\n }\n\n /**\n * Scroll event handler.\n *\n * @return {void}\n */\n handleEvent() {\n this.trigger(this.props);\n\n this.debouncedHandler();\n }\n\n /**\n * Unbind the handler from the scroll event.\n *\n * @return {Scroll}\n */\n kill() {\n document.removeEventListener('scroll', this);\n return this;\n }\n\n /**\n * Get scroll props.\n *\n * @type {Object}\n */\n get props() {\n this.yLast = this.y;\n this.xLast = this.x;\n\n // Check scroll Y\n if (window.pageYOffset !== this.y) {\n this.y = window.pageYOffset;\n }\n\n // Check scroll x\n if (window.pageXOffset !== this.x) {\n this.x = window.pageXOffset;\n }\n\n return {\n x: this.x,\n y: this.y,\n changed: {\n x: this.x !== this.xLast,\n y: this.y !== this.yLast,\n },\n last: {\n x: this.xLast,\n y: this.yLast,\n },\n delta: {\n x: this.x - this.xLast,\n y: this.y - this.yLast,\n },\n progress: {\n x: this.max.x === 0 ? 1 : this.x / this.max.x,\n y: this.max.y === 0 ? 1 : this.y / this.max.y,\n },\n direction: {\n /* eslint-disable no-nested-ternary */\n x: this.x > this.xLast ? 'RIGHT' : this.x < this.xLast ? 'LEFT' : 'NONE',\n y: this.y > this.yLast ? 'DOWN' : this.y < this.yLast ? 'UP' : 'NONE',\n /* eslint-enable no-nested-ternary */\n },\n max: this.max,\n };\n }\n\n /**\n * Get scroll max values.\n *\n * @type {Object}\n */\n get max() {\n return {\n x: (document.scrollingElement || document.body).scrollWidth - window.innerWidth,\n y: (document.scrollingElement || document.body).scrollHeight - window.innerHeight,\n };\n }\n}\n\nlet scroll = null;\n\n/**\n * Use the scroll service.\n *\n * ```js\n * import { useScroll } from '@studiometa/js-toolkit/services';\n * const { add, remove, props } = useScroll();\n * add(key, (props) => {});\n * remove(key);\n * props();\n * ```\n *\n * @return {ServiceInterface & ScrollService}\n */\nexport default function useScroll() {\n if (!scroll) {\n scroll = new Scroll();\n }\n\n const add = scroll.add.bind(scroll);\n const remove = scroll.remove.bind(scroll);\n const has = scroll.has.bind(scroll);\n const props = () => scroll.props;\n\n return {\n add,\n remove,\n has,\n props,\n };\n}\n","export default {\n ENTER: 13,\n SPACE: 32,\n TAB: 9,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n};\n","import Service from '../abstracts/Service.js';\nimport keyCodes from '../utils/keyCodes.js';\n\n/**\n * @typedef {import('./index').ServiceInterface} ServiceInterface\n */\n\n/**\n * @typedef {Object} KeyServiceProps\n * @property {KeyboardEvent} event\n * @property {Number} triggered\n * @property {Boolean} isUp\n * @property {Boolean} isDown\n * @property {Boolean} ENTER\n * @property {Boolean} SPACE\n * @property {Boolean} TAB\n * @property {Boolean} ESC\n * @property {Boolean} LEFT\n * @property {Boolean} UP\n * @property {Boolean} RIGHT\n * @property {Boolean} DOWN\n */\n\n/**\n * @typedef {Object} KeyService\n * @property {(key:String, callback:(props:KeyServiceProps) => void) => void} add\n * Add a function to the resize service. The key must be uniq.\n * @property {() => KeyServiceProps} props\n * Get the current values of the resize service props.\n */\n\n/**\n * Scroll service\n */\nclass Key extends Service {\n /** @type {Object} The event object. */\n event = {};\n\n /**\n * Used to accumulate the number of times the `keydown` event has been triggered.\n * @type {Number}\n */\n triggered = 0;\n\n /** @type {Object} The previous event object. */\n previousEvent = {};\n\n /**\n * Bind the handler to the keyboard event.\n *\n * @return {Key}\n */\n init() {\n this.handler = (event) => {\n this.event = event;\n this.trigger(this.props);\n };\n document.addEventListener('keydown', this.handler, { passive: false });\n document.addEventListener('keyup', this.handler, { passive: false });\n return this;\n }\n\n /**\n * Unbind the handler from the keyboard event.\n *\n * @return {Key}\n */\n kill() {\n document.removeEventListener('keydown', this.handler);\n document.removeEventListener('keyup', this.handler);\n return this;\n }\n\n /**\n * Get keyboard props.\n *\n * @type {Object}\n */\n get props() {\n const keys = Object.entries(keyCodes).reduce((acc, [name, code]) => {\n acc[name] = code === this.event.keyCode;\n return acc;\n }, {});\n\n if (!this.previousEvent.type) {\n this.triggered = 0;\n }\n\n if (this.event.type === 'keydown' && this.previousEvent.type === 'keydown') {\n this.triggered += 1;\n } else {\n this.triggered = 1;\n }\n\n this.previousEvent = this.event;\n\n return {\n event: this.event,\n triggered: this.triggered,\n direction: this.event.type === 'keydown' ? 'down' : 'up',\n isUp: this.event.type === 'keyup',\n isDown: this.event.type === 'keydown',\n ...keys,\n };\n }\n}\n\nlet key = null;\n\n/**\n * Use the keyboard service.\n *\n * ```js\n * import { useKey } from '@studiometa/js-toolkit/services';\n * const { add, remove, props } = useKey();\n * add(key, (props) => {});\n * remove(key);\n * props();\n * ```\n *\n * @return {ServiceInterface & KeyService}\n */\nexport default function useKey() {\n if (!key) {\n key = new Key();\n }\n\n const add = key.add.bind(key);\n const remove = key.remove.bind(key);\n const has = key.has.bind(key);\n const props = () => key.props;\n\n return {\n add,\n remove,\n has,\n props,\n };\n}\n","import Service from '../abstracts/Service.js';\n\n/**\n * @typedef {import('./index').ServiceInterface} ServiceInterface\n */\n\n/**\n * @typedef {Object} LoadServiceProps\n * @property {DOMHighResTimeStamp} time\n */\n\n/**\n * @typedef {Object} LoadService\n * @property {(key:String, callback:(props:LoadServiceProps) => void) => void} add\n * Add a function to the resize service. The key must be uniq.\n * @property {() => LoadServiceProps} props\n * Get the current values of the resize service props.\n */\n\n/**\n * Load service\n */\nclass Load extends Service {\n /**\n * Start the requestAnimationFrame loop.\n *\n * @return {Load}\n */\n init() {\n this.handler = () => {\n this.trigger(this.props);\n };\n\n window.addEventListener('load', this.handler);\n return this;\n }\n\n /**\n * Stop the requestAnimationFrame loop.\n *\n * @return {Load}\n */\n kill() {\n window.removeEventListener('load', this.handler);\n return this;\n }\n\n /**\n * Get raf props.\n *\n * @todo Return elapsed time / index?\n * @type {Object}\n */\n get props() {\n return {};\n }\n}\n\nlet instance = null;\n\n/**\n * Use the load service.\n *\n * ```js\n * import { useLoad } from '@studiometa/js/services';\n * const { add, remove, props } = useRag();\n * add(id, (props) => {});\n * remove(id);\n * props();\n * ```\n *\n * @return {ServiceInterface & LoadService}\n */\nexport default function useRaf() {\n if (!instance) {\n instance = new Load();\n }\n\n const add = instance.add.bind(instance);\n const remove = instance.remove.bind(instance);\n const has = instance.has.bind(instance);\n\n // eslint-disable-next-line require-jsdoc\n function props() {\n return instance.props;\n }\n\n return {\n add,\n remove,\n has,\n props,\n };\n}\n","import usePointer from '../../../services/pointer.js';\nimport useRaf from '../../../services/raf.js';\nimport useResize from '../../../services/resize.js';\nimport useScroll from '../../../services/scroll.js';\nimport useKey from '../../../services/key.js';\nimport useLoad from '../../../services/load.js';\nimport { hasMethod, callMethod } from '../utils.js';\n\n/**\n * @typedef {import('../index').default} Base\n * @typedef {import('../../../services').ServiceInterface} ServiceInterface\n */\n\n/**\n * @type {Record<string, () => ServiceInterface>}\n */\nconst SERVICES_MAP = {\n scrolled: useScroll,\n resized: useResize,\n ticked: useRaf,\n moved: usePointer,\n keyed: useKey,\n loaded: useLoad,\n};\n\n/**\n * @typedef {keyof SERVICES_MAP} ServiceName\n */\n\n/**\n * Services management for the Base class.\n */\nexport default class Services {\n /** @type {Base} */\n #base;\n\n /**\n * Class constructor.\n * @param {Base} instance The Base instance.\n */\n constructor(instance) {\n this.#base = instance;\n }\n\n /**\n * Test if the given service is registered.\n *\n * @param {ServiceName} service The name of the service.\n * @return {Boolean}\n */\n has(service) {\n if (!hasMethod(this.#base, service) && !SERVICES_MAP[service]) {\n return false;\n }\n\n const { has } = SERVICES_MAP[service]();\n return has(this.#base.$id);\n }\n\n /**\n * Init the given service and bind it to the given instance.\n *\n * @param {ServiceName} service The name of the service.\n * @return {() => void} A function to unbind the service.\n */\n enable(service) {\n if (this.has(service)) {\n return this.disable.bind(this, service);\n }\n\n if (!hasMethod(this.#base, service) || !SERVICES_MAP[service]) {\n return function noop() {};\n }\n\n const { add } = SERVICES_MAP[service]();\n const self = this;\n\n /**\n * @param {any[]} args\n */\n function serviceHandler(...args) {\n callMethod(self.#base, service, ...args);\n }\n\n add(this.#base.$id, serviceHandler);\n\n return this.disable.bind(this, service);\n }\n\n /**\n * Enable all services and return methods to disable them.\n *\n * @return {Function[]}\n */\n enableAll() {\n return Object.keys(SERVICES_MAP).map(\n /** @param {ServiceName} serviceName */\n (serviceName) => this.enable(serviceName)\n );\n }\n\n /**\n * Disable all services.\n *\n * @return {void}\n */\n disableAll() {\n Object.keys(SERVICES_MAP).forEach(\n /** @param {ServiceName} serviceName */\n (serviceName) => {\n this.disable(serviceName);\n }\n );\n }\n\n /**\n * Disable a service.\n *\n * @param {String} service The name of the service.\n * @return {void}\n */\n disable(service) {\n if (!SERVICES_MAP[service]) {\n return;\n }\n\n const { remove } = SERVICES_MAP[service]();\n remove(this.#base.$id);\n }\n\n /**\n * Register a new service to be enabled/disabled.\n *\n * @param {string} name The name of the service hook.\n * @param {() => ServiceInterface} useFunction The `use...` function for the service.\n */\n register(name, useFunction) {\n SERVICES_MAP[name] = useFunction;\n }\n\n /**\n * Unregister a new service to be enabled disabled.\n *\n * @param {string} name The name of the service hooK\n */\n unregister(name) {\n delete SERVICES_MAP[name];\n }\n}\n","import getAllProperties from '../../utils/object/getAllProperties.js';\nimport { debug } from './utils.js';\n\n/**\n * @typedef {import('./index.js').default} Base\n */\n\n/**\n * Bind event handler methods to the root HTML element.\n *\n * @param {Base} instance A Base instance.\n * @param {Array} eventMethods A list of methods to bind.\n * @return {Array} A list of unbind functions.\n */\nfunction bindRootEvents(instance, eventMethods) {\n return eventMethods.map((eventMethod) => {\n const eventName = eventMethod.replace(/^on/, '').toLowerCase();\n\n const handler = (...args) => {\n if (__DEV__) {\n debug(instance, eventMethod, instance.$el, ...args);\n }\n instance[eventMethod](...args);\n };\n\n instance.$el.addEventListener(eventName, handler);\n\n return () => {\n instance.$el.removeEventListener(eventName, handler);\n };\n });\n}\n\n/**\n * Bind event handler methods to refs HTML element.\n *\n * @param {Base} instance A Base instance.\n * @param {Array} eventMethods A list of methods to bind.\n * @return {Array} A list of unbind functions.\n */\nfunction bindRefsEvents(instance, eventMethods) {\n const unbindMethods = [];\n\n Object.entries(instance.$refs).forEach(([refName, $refOrRefs]) => {\n const $refs = Array.isArray($refOrRefs) ? $refOrRefs : [$refOrRefs];\n const refEventMethod = `on${refName.replace(/^\\w/, (c) => c.toUpperCase())}`;\n\n eventMethods\n .filter((eventMethod) => eventMethod.startsWith(refEventMethod))\n .forEach((eventMethod) => {\n $refs.forEach(($ref, index) => {\n const eventName = eventMethod.replace(refEventMethod, '').toLowerCase();\n const handler = (...args) => {\n if (__DEV__) {\n debug(instance, eventMethod, $ref, ...args, index);\n }\n instance[eventMethod](...args, index);\n };\n\n if (__DEV__) {\n debug(instance, 'binding ref event', refName, eventName);\n }\n\n if ($ref instanceof instance.constructor) {\n // @ts-ignore\n $ref = $ref.$el; // eslint-disable-line no-param-reassign\n }\n\n /** @type {HTMLElement} */ ($ref).addEventListener(eventName, handler);\n const unbindMethod = () => {\n if (__DEV__) {\n debug(instance, 'unbinding ref event', refName, eventMethod);\n }\n /** @type {HTMLElement} */ ($ref).removeEventListener(eventName, handler);\n };\n\n unbindMethods.push(unbindMethod);\n });\n });\n });\n\n return unbindMethods;\n}\n\n/**\n * Bind event handler methods to children Base instance.\n * @param {Base} instance A Base instance.\n * @param {Array} eventMethods A list of methods to bind.\n * @return {Array} A list of unbind functions.\n */\nfunction bindChildrenEvents(instance, eventMethods) {\n const unbindMethods = [];\n\n Object.entries(instance.$children).forEach(([childName, $children]) => {\n const childEventMethod = `on${childName.replace(/^\\w/, (c) => c.toUpperCase())}`;\n\n eventMethods\n .filter((eventMethod) => eventMethod.startsWith(childEventMethod))\n .forEach((eventMethod) => {\n $children.forEach(\n /**\n * @param {Base|Promise<Base>} $child\n * @param {Number} index\n */\n async ($child, index) => {\n const eventName = eventMethod.replace(childEventMethod, '').toLowerCase();\n const handler = (...args) => {\n if (__DEV__) {\n debug(instance, eventMethod, $child, ...args, index);\n }\n instance[eventMethod](...args, index);\n };\n\n if (__DEV__) {\n debug(instance, 'binding child event', childName, eventName);\n }\n\n if ($child instanceof Promise) {\n // eslint-disable-next-line no-param-reassign\n $child = await $child;\n }\n\n const unbindMethod = $child.$on(eventName, handler);\n unbindMethods.push(() => {\n if (__DEV__) {\n debug(instance, 'unbinding child event', childName, eventName);\n }\n unbindMethod();\n });\n }\n );\n });\n });\n\n return unbindMethods;\n}\n\n/**\n * Bind ref and children component's events to their corresponding method.\n *\n * @param {Base} instance A Base instance.\n * @return {Array} A list of methods to unbind the events.\n */\nexport default function bindEvents(instance) {\n const ROOT_EVENT_REGEX = /^on[A-Z][a-z]+$/;\n const REFS_CHILDREN_EVENT_REGEX = /^on([A-Z]([a-z]+)?)([A-Z][a-z]+)+$/;\n\n // Get all event methods\n const eventMethods = getAllProperties(instance).reduce(\n (acc, [name]) => {\n // Testing camelCase with one word: onEvent.\n if (ROOT_EVENT_REGEX.test(name) && !acc.root.includes(name)) {\n acc.root.push(name);\n return acc;\n }\n\n // Testing camelCase with more than two words: onRefEvent.\n if (REFS_CHILDREN_EVENT_REGEX.test(name) && !acc.refsOrChildren.includes(name)) {\n acc.refsOrChildren.push(name);\n }\n\n return acc;\n },\n { root: [], refsOrChildren: [] }\n );\n\n const unbindMethods = [\n ...bindRootEvents(instance, eventMethods.root),\n ...bindRefsEvents(instance, eventMethods.refsOrChildren),\n ...bindChildrenEvents(instance, eventMethods.refsOrChildren),\n ];\n\n return unbindMethods;\n}\n","import autoBind from '../../utils/object/autoBind.js';\nimport EventManager from '../EventManager.js';\nimport { callMethod, debug, getConfig, getComponentElements } from './utils.js';\nimport { getChildren } from './children.js';\nimport { getOptions } from './options.js';\nimport { getRefs } from './refs.js';\nimport { mountComponents, mountOrUpdateComponents, destroyComponents } from './components.js';\nimport Services from './classes/Services.js';\nimport bindEvents from './events.js';\n\n// Define the __DEV__ constant if not defined\nif (typeof __DEV__ === 'undefined') {\n if (typeof globalThis !== 'undefined') {\n globalThis.__DEV__ = false;\n } else if (typeof window !== 'undefined') {\n window.__DEV__ = false;\n }\n}\n\nlet id = 0;\n\n/**\n * @typedef {typeof Base} BaseComponent\n * @typedef {(Base) => Promise<BaseComponent | { default: BaseComponent }>} BaseAsyncComponent\n * @typedef {{ name: string, debug: boolean, log: boolean, [name:string]: any }} BaseOptions\n * @typedef {{ [name:string]: HTMLElement | HTMLElement[] | Base | Base[] | Promise<Base> | Promise<Base>[] }} BaseRefs\n * @typedef {{ [nameOrSelector:string]: Base[] | Promise<Base>[] }} BaseChildren\n * @typedef {{ [nameOrSelector:string]: BaseComponent | BaseAsyncComponent }} BaseConfigComponents\n * @typedef {import('./classes/Options').OptionsSchema} BaseConfigOptions\n */\n\n/**\n * @typedef {Object} BaseConfig\n * @property {String} name\n * @property {Boolean} [debug]\n * @property {Boolean} [log]\n * @property {String[]} [refs]\n * @property {BaseConfigComponents} [components]\n * @property {BaseConfigOptions} [options]\n */\n\n/**\n * @typedef {import('./classes/Services.js').ServiceName} ServiceName\n */\n\n/**\n * Base class to easily create components.\n *\n * @example\n * ```js\n * class Component extends Base {\n * static config = {\n * name: 'Component',\n * log: true,\n * };\n *\n * mounted() {\n * this.$log('Component is mounted!');\n * }\n * }\n *\n * class App extends Base {\n * static config = {\n * name: 'App',\n * components: {\n * Component,\n * },\n * };\n * }\n *\n * new App(document.body).$mount();\n * ```\n */\nexport default class Base extends EventManager {\n /**\n * The instance parent.\n * @type {Base}\n */\n $parent = null;\n\n /**\n * The instance id.\n * @type {string}\n */\n $id;\n\n /**\n * The root element.\n * @type {HTMLElement}\n */\n $el;\n\n /**\n * The instance options.\n * @type {BaseOptions}\n */\n $options;\n\n /**\n * The instance children components.\n * @type {BaseChildren}\n */\n $children;\n\n /**\n * The instance services.\n * @type {Services}\n */\n $services;\n\n /**\n * The state of the component.\n * @type {Boolean}\n */\n $isMounted = false;\n\n /**\n * This is a Base instance.\n * @type {Boolean}\n */\n static $isBase = true;\n\n /**\n * Get properties to exclude from the autobind call.\n * @return {Array<String|RegExp>}\n */\n get _excludeFromAutoBind() {\n return [\n '$mount',\n '$update',\n '$destroy',\n '$terminate',\n '$log',\n '$on',\n '$once',\n '$off',\n '$emit',\n 'mounted',\n 'loaded',\n 'ticked',\n 'resized',\n 'moved',\n 'keyed',\n 'scrolled',\n 'destroyed',\n 'terminated',\n ];\n }\n\n /**\n * @deprecated Use the static `config` property instead.\n * @return {BaseConfig}\n */\n get config() {\n return null;\n }\n\n /** @type {BaseConfig} */\n static config;\n\n /**\n * Get the component's refs.\n * @return {BaseRefs}\n */\n get $refs() {\n return getRefs(this, this.$el);\n }\n\n /**\n * Class constructor where all the magic takes place.\n *\n * @param {HTMLElement} element The component's root element dd.\n */\n constructor(element) {\n super();\n\n if (!element) {\n throw new Error('The root element must be defined.');\n }\n\n const { name } = getConfig(this);\n\n /** @type {String} */\n this.$id = `${name}-${id}`;\n id += 1;\n\n /** @type {HTMLElement} */\n this.$el = element;\n\n this.$options = getOptions(this, element, getConfig(this));\n this.$children = getChildren(this, this.$el, getConfig(this).components || {});\n this.$services = new Services(this);\n\n if (!('__base__' in this.$el)) {\n Object.defineProperty(this.$el, '__base__', {\n get: () => this,\n configurable: true,\n });\n }\n\n // Autobind all methods to the instance\n autoBind(this, {\n exclude: [...this._excludeFromAutoBind],\n });\n\n let unbindMethods = [];\n this.$on('mounted', () => {\n this.$services.enableAll();\n unbindMethods = [...bindEvents(this)];\n mountComponents(this);\n this.$isMounted = true;\n });\n\n this.$on('updated', () => {\n this.$services.disableAll();\n unbindMethods.forEach((method) => method());\n unbindMethods = [...bindEvents(this)];\n this.$services.enableAll();\n mountOrUpdateComponents(this);\n });\n\n this.$on('destroyed', () => {\n this.$isMounted = false;\n this.$services.disableAll();\n unbindMethods.forEach((method) => method());\n destroyComponents(this);\n });\n\n if (__DEV__) {\n debug(this, 'constructor', this);\n }\n return this;\n }\n\n /**\n * Small helper to log stuff.\n *\n * @return {(...args: any) => void} A log function if the log options is active.\n */\n get $log() {\n return this.$options.log\n ? window.console.log.bind(window, `[${this.$options.name}]`)\n : function noop() {};\n }\n\n /**\n * Trigger the `mounted` callback.\n */\n $mount() {\n if (__DEV__) {\n debug(this, '$mount');\n }\n\n callMethod(this, 'mounted');\n return this;\n }\n\n /**\n * Update the instance children.\n */\n $update() {\n if (__DEV__) {\n debug(this, '$update');\n }\n\n callMethod(this, 'updated');\n return this;\n }\n\n /**\n * Trigger the `destroyed` callback.\n */\n $destroy() {\n if (__DEV__) {\n debug(this, '$destroy');\n }\n\n callMethod(this, 'destroyed');\n return this;\n }\n\n /**\n * Terminate a child instance when it is not needed anymore.\n * @return {void}\n */\n $terminate() {\n if (__DEV__) {\n debug(this, '$terminate');\n }\n\n // First, destroy the component.\n this.$destroy();\n\n // Execute the `terminated` hook if it exists\n callMethod(this, 'terminated');\n\n // Delete the reference to the instance\n // delete this.$el.__base__;\n\n // And update its status to prevent re-instantiation when accessing the\n // parent's `$children` property\n Object.defineProperty(this.$el, '__base__', {\n value: 'terminated',\n configurable: false,\n writable: false,\n });\n }\n\n /**\n * Factory method to generate multiple instance of the class.\n *\n * @param {String} nameOrSelector The selector on which to mount each instance.\n * @return {Array<Base>} A list of the created instance.\n */\n static $factory(nameOrSelector) {\n if (!nameOrSelector) {\n throw new Error(\n 'The $factory method requires a component’s name or selector to be specified.'\n );\n }\n\n return getComponentElements(nameOrSelector).map((el) => new this(el).$mount());\n }\n}\n","import Base from '../abstracts/Base/index.js';\n\n/**\n * @typedef {import('../abstracts/Base').BaseComponent} BaseComponent\n */\n\n/**\n * Define a component without a class.\n *\n * @param {Object} options The component's object\n * @return {BaseComponent} A component's class.\n */\nexport default function defineComponent(options) {\n const { config, methods, ...hooks } = options;\n\n if (!config) {\n throw new Error('The `config` property is required.');\n }\n\n if (!config.name) {\n throw new Error('The `config.name` property is required.');\n }\n\n /**\n * Component class.\n */\n class Component extends Base {\n /**\n * Component config.\n */\n static config = config;\n }\n\n const allowedHooks = [\n 'mounted',\n 'loaded',\n 'ticked',\n 'resized',\n 'moved',\n 'keyed',\n 'scrolled',\n 'destroyed',\n 'terminated',\n ];\n\n const filteredHooks = Object.entries(hooks).reduce((acc, [name, fn]) => {\n if (allowedHooks.includes(name)) {\n acc[name] = fn;\n } else {\n throw new Error(\n `\n The \"${name}\" method is not a Base lifecycle hook,\n it should be placed in the \"method\" property.\n The following hooks are available: ${allowedHooks.join(', ')}\n `\n );\n }\n\n return acc;\n }, {});\n\n [...Object.entries(methods || {}), ...Object.entries(filteredHooks)].forEach(([name, fn]) => {\n Component.prototype[name] = fn;\n });\n\n return Component;\n}\n","import defineComponent from './defineComponent.js';\n\n/**\n * Create a Base instance with the given object configuration.\n *\n * @param {HTMLElement|String} elementOrSelector The instance root HTML element.\n * @param {Object} options The Base class configuration.\n */\nexport default function createBase(elementOrSelector, options) {\n const Component = defineComponent(options);\n /** @type {HTMLElement} */\n const element =\n typeof elementOrSelector === 'string'\n ? document.querySelector(elementOrSelector)\n : elementOrSelector;\n return new Component(element);\n}\n","import Base from '../../abstracts/Base/index.js';\n\n/**\n * @typedef {import('./AccordionItem').default} AccordionItem\n * @typedef {import('./AccordionItem').AccordionItemOptions} AccordionItemOptions\n */\n\n/**\n * @typedef {Object} AccordionRefs\n * @property {HTMLElement[]} btn\n * @property {HTMLElement[]} content\n */\n\n/**\n * @typedef {Object} AccordionOptions\n * @property {Boolean} autoclose\n * @property {AccordionItemOptions} item\n */\n\n/**\n * @typedef {Object} AccordionChildren\n * @property {AccordionItem[]} AccordionItem\n */\n\n/**\n * @typedef {Object} AccordionPrivateInterface\n * @property {AccordionOptions} $options\n * @property {AccordionRefs} $refs\n * @property {AccordionChildren} $children\n */\n\n/**\n * @typedef {Accordion & AccordionPrivateInterface} AccordionInterface\n */\n\n/**\n * Accordion class.\n */\nexport default class Accordion extends Base {\n /**\n * Accordion config.\n */\n static config = {\n name: 'Accordion',\n options: {\n autoclose: Boolean,\n item: {\n type: Object,\n /**\n * @return {Partial<AccordionItemOptions>}\n */\n default: () => ({}),\n },\n },\n };\n\n /**\n * @type {Array<Function>}\n */\n unbindMethods = [];\n\n /**\n * Init autoclose behavior on mounted.\n * @this {AccordionInterface}\n * @return {Promise<void>}\n */\n async mounted() {\n if (!Array.isArray(this.$children.AccordionItem)) {\n throw new Error('The Accordion component must be used with the AccordionItem component.');\n }\n\n this.unbindMethods = this.$children.AccordionItem.map((item, index) => {\n if (item instanceof Promise) {\n throw new Error('The AccordionItem component can not be used asynchronously.');\n }\n\n const unbindOpen = item.$on('open', () => {\n this.$emit('open', item, index);\n if (this.$options.autoclose) {\n this.$children.AccordionItem.filter((el, i) => index !== i).forEach((it) => it.close());\n }\n });\n const unbindClose = item.$on('close', () => {\n this.$emit('close', item, index);\n });\n\n return () => {\n unbindOpen();\n unbindClose();\n };\n });\n }\n\n /**\n * Destroy autoclose behavior on destroyed.\n * @return {void}\n */\n destroyed() {\n this.unbindMethods.forEach((unbind) => unbind());\n }\n}\n","import isObject from '../object/isObject.js';\n\n/**\n * @typedef {Record<string, string | null> & Partial<CSSStyleDeclaration>} CssStyleObject\n */\n\n/**\n * Manage a list of style properties on an element.\n *\n * @param {HTMLElement} element The element to update.\n * @param {CssStyleObject} styles An object of styles properties and values.\n * @param {String} method The method to use: add or remove.\n */\nexport default function setStyles(element, styles, method = 'add') {\n if (!element || !styles || !isObject(styles)) {\n return;\n }\n\n Object.entries(styles).forEach(([prop, value]) => {\n element.style[prop] = method === 'add' ? value : '';\n });\n}\n\n/**\n * Add styles to an element.\n *\n * @param {HTMLElement} element The element to update.\n * @param {CssStyleObject} styles A string of class names.\n * @return {void}\n */\nexport function add(element, styles) {\n setStyles(element, styles);\n}\n\n/**\n * Remove class names from an element.\n *\n * @param {HTMLElement} element The element to update.\n * @param {CssStyleObject} styles A string of class names.\n * @return {void}\n */\nexport function remove(element, styles) {\n setStyles(element, styles, 'remove');\n}\n","/**\n * Manage a list of classes as string on an element.\n *\n * @param {HTMLElement} element The element to update.\n * @param {String} classNames A string of class names.\n * @param {String=} [method='add'] The method to use: add, remove or toggle.\n */\nfunction setClasses(element, classNames, method = 'add') {\n if (!element || !classNames) {\n return;\n }\n\n classNames.split(' ').forEach((className) => {\n element.classList[method](className);\n });\n}\n\n/**\n * Add class names to an element.\n *\n * @param {HTMLElement} element The element to update.\n * @param {String} classNames A string of class names.\n * @return {void}\n */\nexport function add(element, classNames) {\n setClasses(element, classNames);\n}\n\n/**\n * Remove class names from an element.\n *\n * @param {HTMLElement} element The element to update.\n * @param {String} classNames A string of class names.\n * @return {void}\n */\nexport function remove(element, classNames) {\n setClasses(element, classNames, 'remove');\n}\n\n/**\n * Toggle class names from an element.\n *\n * @param {HTMLElement} element The element to update.\n * @param {String} classNames A string of class names.\n * @return {void}\n */\nexport function toggle(element, classNames) {\n setClasses(element, classNames, 'toggle');\n}\n","/* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"__isTransitioning__\", \"__transitionEndHandler__\"] }] */\nimport nextFrame from '../nextFrame.js';\nimport * as classes from './classes.js';\nimport * as styles from './styles.js';\n\n/** WeakMap to hold the transition instances. */\nconst cache = new WeakMap();\n\n/**\n * Transition class.\n */\nclass Transition {\n /**\n * Is a transition currently running?\n * @type {Boolean}\n */\n isTransitioning = false;\n\n /**\n * A callback to execute when the transition ends.\n * @type {EventListenerOrEventListenerObject|null}\n */\n transitionEndHandler = null;\n\n /**\n * Instantiate and save the instance to the cache.\n * @param {HTMLElement} element The HTML element.\n */\n constructor(element) {\n cache.set(element, this);\n }\n\n /**\n * Get the transition class attached to the given element.\n * @param {HTMLElement} element The HTML element concerned by the transition.\n * @return {Transition} The transition instance tied to the given element.\n */\n static getInstance(element) {\n let instance = cache.get(element);\n\n if (!instance) {\n instance = new this(element);\n }\n\n return instance;\n }\n}\n\n/**\n * Update either the classes or the styles of an element with the given method.\n *\n * @param {HTMLElement} element The element to update.\n * @param {String|Object} classesOrStyles The classes or styles to apply.\n * @param {String} method The method to use, one of `add` or `remove`.\n */\nexport function setClassesOrStyles(element, classesOrStyles, method = 'add') {\n if (typeof classesOrStyles === 'string') {\n classes[method](element, classesOrStyles, method);\n } else {\n styles[method](element, classesOrStyles, method);\n }\n}\n\n/**\n * Test if the given element has a transition duration.\n *\n * @param {HTMLElement} element The element to test.\n * @return {Boolean} The result of the test.\n */\nfunction testTransition(element) {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const { transitionDuration } = window.getComputedStyle(element);\n return !!transitionDuration && transitionDuration !== '0s';\n}\n\n/**\n * Apply the from state.\n *\n * @param {HTMLElement} element The target element.\n * @param {String|Object} classesOrStyles The classes or styles definition.\n * @return {Promise}\n */\nasync function start(element, classesOrStyles) {\n const trs = Transition.getInstance(element);\n trs.isTransitioning = true;\n setClassesOrStyles(element, classesOrStyles.from);\n await nextFrame();\n setClassesOrStyles(element, classesOrStyles.active);\n await nextFrame();\n}\n\n/**\n * Apply the active state.\n *\n * @param {HTMLElement} element The target element.\n * @param {String|Object} classesOrStyles The classes or styles definition.\n * @return {Promise}\n */\nasync function next(element, classesOrStyles) {\n const hasTransition = testTransition(element);\n\n /* eslint-disable-next-line */\n return new Promise(async resolve => {\n if (hasTransition) {\n const trs = Transition.getInstance(element);\n trs.transitionEndHandler = resolve;\n element.addEventListener('transitionend', trs.transitionEndHandler, false);\n }\n setClassesOrStyles(element, classesOrStyles.from, 'remove');\n setClassesOrStyles(element, classesOrStyles.to);\n await nextFrame();\n if (!hasTransition) {\n resolve();\n }\n });\n}\n\n/**\n * Apply the final state.\n *\n * @param {HTMLElement} element The target element.\n * @param {String|Object} classesOrStyles The classes or styles definition.\n * @param {String} mode Whether to remove or keep the `to` classes/styles.\n * @return {void}\n */\nfunction end(element, classesOrStyles, mode = 'remove') {\n const trs = Transition.getInstance(element);\n element.removeEventListener('transitionend', trs.transitionEndHandler, false);\n if (mode === 'remove') {\n setClassesOrStyles(element, classesOrStyles.to, 'remove');\n }\n setClassesOrStyles(element, classesOrStyles.active, 'remove');\n trs.isTransitioning = false;\n trs.transitionEndHandler = null;\n}\n\n/**\n * Manage CSS transition with class.\n *\n * This is heavily inspired by the Vue `<transition>` component\n * and the `@barba/css` package, many thanks to them!\n *\n * @param {HTMLElement} element The target element.\n * @param {String|Object} name The name of the transition or an object with the hooks classesOrStyles.\n * @param {String} endMode Whether to remove or keep the `to` classes/styles\n * @return {Promise} A promise resolving at the end of the transition.\n */\nexport default async function transition(element, name, endMode = 'remove') {\n const classesOrStyles =\n typeof name === 'string'\n ? {\n from: `${name}-from`,\n active: `${name}-active`,\n to: `${name}-to`,\n }\n : {\n from: '',\n active: '',\n to: '',\n ...name,\n };\n\n const trs = Transition.getInstance(element);\n // End any previous transition running on the element.\n if (trs.isTransitioning) {\n end(element, classesOrStyles);\n }\n\n await start(element, classesOrStyles);\n await next(element, classesOrStyles);\n end(element, classesOrStyles, endMode);\n return Promise.resolve();\n}\n","import deepmerge from 'deepmerge';\nimport Base from '../../abstracts/Base/index.js';\nimport Accordion from './Accordion.js';\nimport * as styles from '../../utils/css/styles.js';\nimport transition from '../../utils/css/transition.js';\n\n/**\n * @typedef {import('../../abstracts/Base').BaseOptions} BaseOptions\n * @typedef {import('./Accordion.js').AccordionInterface} AccordionInterface\n */\n\n/**\n * @typedef {Object} AccordionItemRefs\n * @property {HTMLElement} btn\n * @property {HTMLElement} content\n * @property {HTMLElement} container\n */\n\n/**\n * @typedef {Object} StylesOption\n * @property {String|CssStyleObject} open\n * @property {String|CssStyleObject} active\n * @property {String|CssStyleObject} closed\n */\n\n/**\n * @typedef {import('../../utils/css/styles.js').CssStyleObject} CssStyleObject\n * @typedef {Partial<Record<'open'|'active'|'closed', string|CssStyleObject>>} AccordionItemStates\n * @typedef {Partial<Record<keyof AccordionItemRefs, AccordionItemStates>>} AccordionItemStylesOption\n */\n\n/**\n * @typedef {Object} AccordionItemOptions\n * @property {Boolean} isOpen\n * @property {AccordionItemStylesOption} styles\n */\n\n/**\n * @typedef {Object} AccordionItemPrivateInterface\n * @property {AccordionItemOptions} $options\n * @property {AccordionItemRefs} $refs\n * @property {Accordion & AccordionInterface} $parent\n */\n\n/**\n * @typedef {AccordionItem & AccordionItemPrivateInterface} AccordionItemInterface\n */\n\n/**\n * AccordionItem class.\n */\nexport default class AccordionItem extends Base {\n /**\n * AccordionItem config\n * @return {Object}\n */\n static config = {\n name: 'AccordionItem',\n refs: ['btn', 'content', 'container'],\n options: {\n isOpen: Boolean,\n styles: {\n type: Object,\n /**\n * @return {AccordionItemStylesOption}\n */\n default: () => ({\n container: {\n open: '',\n active: '',\n closed: '',\n },\n }),\n },\n },\n };\n\n /**\n * Add aria-attributes on mounted.\n * @this {AccordionItemInterface}\n */\n mounted() {\n if (this.$parent && this.$parent instanceof Accordion && this.$parent.$options.item) {\n Object.entries(this.$parent.$options.item).forEach(([key, value]) => {\n if (key in this.$options) {\n const type = AccordionItem.config.options[key].type || AccordionItem.config.options[key];\n if (type === Array || type === Object) {\n this.$options[key] = deepmerge(this.$options[key], /** @type {any} */ (value));\n } else {\n this.$options[key] = value;\n }\n }\n });\n }\n\n this.$refs.btn.setAttribute('id', this.$id);\n this.$refs.btn.setAttribute('aria-controls', this.contentId);\n this.$refs.content.setAttribute('aria-labelledby', this.$id);\n this.$refs.content.setAttribute('id', this.contentId);\n\n const { isOpen } = this.$options;\n this.updateAttributes(isOpen);\n\n if (!isOpen) {\n styles.add(this.$refs.container, { visibility: 'invisible', height: '0' });\n }\n\n // Update refs styles on mount\n const { container, ...otherStyles } = this.$options.styles;\n /** @type {AccordionItemRefs} */\n const refs = this.$refs;\n Object.entries(otherStyles)\n .filter(([refName]) => refs[refName])\n .forEach(([refName, { open, closed } = { open: '', closed: '' }]) => {\n transition(refs[refName], { to: isOpen ? open : closed }, 'keep');\n });\n }\n\n /**\n * Remove styles on destroy.\n * @this {AccordionItemInterface}\n */\n destroyed() {\n styles.remove(this.$refs.container, { visibility: '', height: '' });\n }\n\n /**\n * Handler for the click event on the `btn` ref.\n * @this {AccordionItemInterface}\n */\n onBtnClick() {\n if (this.$options.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * Get the content ID.\n * @return {String}\n */\n get contentId() {\n return `content-${this.$id}`;\n }\n\n /**\n * Update the refs' attributes according to the given type.\n *\n * @this {AccordionItemInterface}\n * @param {Boolean} isOpen The state of the item.\n */\n updateAttributes(isOpen) {\n this.$refs.content.setAttribute('aria-hidden', isOpen ? 'false' : 'true');\n this.$refs.btn.setAttribute('aria-expanded', isOpen ? 'true' : 'false');\n }\n\n /**\n * Open an item.\n * @this {AccordionItemInterface}\n */\n async open() {\n if (this.$options.isOpen) {\n return;\n }\n\n this.$log('open');\n this.$emit('open');\n\n this.$options.isOpen = true;\n this.updateAttributes(this.$options.isOpen);\n\n styles.remove(this.$refs.container, { visibility: 'invisible' });\n const { container, ...otherStyles } = this.$options.styles;\n\n /** @type {AccordionItemRefs} */\n const refs = this.$refs;\n\n await Promise.all([\n transition(refs.container, {\n from: { height: 0 },\n active: container.active,\n to: { height: `${refs.content.offsetHeight}px` },\n }).then(() => {\n // Remove style only if the item has not been closed before the end\n if (this.$options.isOpen) {\n styles.remove(refs.content, { position: 'absolute' });\n }\n\n return Promise.resolve();\n }),\n ...Object.entries(otherStyles)\n .filter(([refName]) => refs[refName])\n .map(([refName, { open, active, closed } = { open: '', active: '', closed: '' }]) =>\n transition(\n refs[refName],\n {\n from: closed,\n active,\n to: open,\n },\n 'keep'\n )\n ),\n ]);\n }\n\n /**\n * Close an item.\n * @this {AccordionItemInterface}\n */\n async close() {\n if (!this.$options.isOpen) {\n return;\n }\n\n this.$log('close');\n this.$emit('close');\n\n this.$options.isOpen = false;\n\n const height = this.$refs.container.offsetHeight;\n styles.add(this.$refs.content, { position: 'absolute' });\n const { container, ...otherStyles } = this.$options.styles;\n\n /** @type {AccordionItemRefs} */\n const refs = this.$refs;\n\n await Promise.all([\n transition(refs.container, {\n from: { height: `${height}px` },\n active: container.active,\n to: { height: '0' },\n }).then(() => {\n // Add end styles only if the item has not been re-opened before the end\n if (!this.$options.isOpen) {\n styles.add(refs.container, { height: '0', visibility: 'invisible' });\n this.updateAttributes(this.$options.isOpen);\n }\n return Promise.resolve();\n }),\n ...Object.entries(otherStyles)\n .filter(([refName]) => refs[refName])\n .map(([refName, { open, active, closed } = { open: '', active: '', closed: '' }]) =>\n transition(\n refs[refName],\n {\n from: open,\n active,\n to: closed,\n },\n 'keep'\n )\n ),\n ]);\n }\n}\n","import AccordionCore from './Accordion.js';\nimport AccordionItem from './AccordionItem.js';\n\n/**\n * @typedef {import('./Accordion.js').AccordionInterface} AccordionInterface\n * @typedef {import('./AccordionItem.js').AccordionItemInterface} AccordionItemInterface\n */\n\n/**\n * Accordion class.\n */\nclass Accordion extends AccordionCore {\n static config = {\n ...AccordionCore.config,\n components: {\n AccordionItem,\n },\n };\n}\n\nexport default Accordion;\n","/**\n * Get the next damped value for a given factor.\n *\n * @param {Number} targetValue The final value.\n * @param {Number} currentValue The current value.\n * @param {Number=} [factor=0.5] The factor used to reach the target value.\n * @return {Number} The next value.\n */\nexport default function damp(targetValue, currentValue, factor = 0.5) {\n return Math.abs(targetValue - currentValue) < 0.001\n ? targetValue\n : currentValue + (targetValue - currentValue) * factor;\n}\n","/**\n * Format a CSS transform matrix with the given values.\n *\n * @param {Object} transform\n * @param {Number=} [transform.scaleX=1] The scale on the x axis.\n * @param {Number=} [transform.scaleY=1] The scale on the y axis.\n * @param {Number=} [transform.skewX=0] The skew on the x axis.\n * @param {Number=} [transform.skewY=0] The skew on the y axis.\n * @param {Number=} [transform.translateX=0] The translate on the x axis.\n * @param {Number=} [transform.translateY=0] The translate on the y axis.\n * @return {String} A formatted CSS matrix transform.\n *\n * @example\n * ```js\n * matrix({ scaleX: 0.5, scaleY: 0.5 });\n * // matrix(0.5, 0, 0, 0.5, 0, 0)\n * ```\n */\nexport default function matrix(transform) {\n // eslint-disable-next-line no-param-reassign\n transform = transform || {};\n return `matrix(${transform.scaleX ?? 1}, ${transform.skewY ?? 0}, ${transform.skewX ?? 0}, ${\n transform.scaleY ?? 1\n }, ${transform.translateX ?? 0}, ${transform.translateY ?? 0})`;\n}\n","import Base from '../abstracts/Base/index.js';\nimport damp from '../utils/math/damp.js';\nimport matrix from '../utils/css/matrix.js';\n\n/**\n * @typedef {import('../services/pointer').PointerServiceProps} PointerServiceProps\n * @typedef {import('../abstracts/Base').BaseOptions} BaseOptions\n */\n\n/**\n * @typedef {Object} CursorOptions\n * @property {string} growSelectors\n * @property {string} shrinkSelectors\n * @property {number} growTo\n * @property {number} shrinkTo\n * @property {number} translateDampFactor\n * @property {number} growDampFactor\n * @property {number} shrinkDampFactor\n */\n\n/**\n * @typedef {Object} CursorPrivateInterface\n * @property {BaseOptions & CursorOptions} $options\n */\n\n/**\n * @typedef {Cursor & CursorPrivateInterface} CursorInterface\n */\n\n/**\n * Custom cursor component.\n */\nexport default class Cursor extends Base {\n /**\n * Class config.\n */\n static config = {\n name: 'Cursor',\n options: {\n growSelectors: {\n type: String,\n default: 'a, a *, button, button *, [data-cursor-grow], [data-cursor-grow] *',\n },\n shrinkSelectors: {\n type: String,\n default: '[data-cursor-shrink], [data-cursor-shrink] *',\n },\n growTo: {\n type: Number,\n default: 2,\n },\n shrinkTo: {\n type: Number,\n default: 0.5,\n },\n translateDampFactor: {\n type: Number,\n default: 0.25,\n },\n growDampFactor: {\n type: Number,\n default: 0.25,\n },\n shrinkDampFactor: {\n type: Number,\n default: 0.25,\n },\n },\n };\n\n /**\n * @type {Number}\n */\n x = 0;\n\n /**\n * @type {Number}\n */\n y = 0;\n\n /**\n * @type {Number}\n */\n scale = 0;\n\n /**\n * @type {Number}\n */\n pointerX = 0;\n\n /**\n * @type {Number}\n */\n pointerY = 0;\n\n /**\n * @type {Number}\n */\n pointerScale = 0;\n\n /**\n * Mounted hook.\n * @return {void}\n */\n mounted() {\n this.x = 0;\n this.y = 0;\n this.scale = 0;\n this.pointerX = 0;\n this.pointerY = 0;\n this.pointerScale = 0;\n this.render({ x: this.x, y: this.y, scale: this.scale });\n }\n\n /**\n * Moved hook.\n *\n * @this {CursorInterface}\n *\n * @param {PointerServiceProps} options\n * @return {void}\n */\n moved({ event, x, y, isDown }) {\n if (!this.$services.has('ticked')) {\n this.$services.enable('ticked');\n }\n\n this.pointerX = x;\n this.pointerY = y;\n\n let scale = 1;\n\n if (!event) {\n this.pointerScale = scale;\n return;\n }\n\n const shouldGrow =\n (event.target instanceof Element && event.target.matches(this.$options.growSelectors)) ||\n false;\n const shouldReduce =\n isDown ||\n (event.target instanceof Element && event.target.matches(this.$options.shrinkSelectors)) ||\n false;\n\n if (shouldGrow) {\n scale = this.$options.growTo;\n }\n\n if (shouldReduce) {\n scale = this.$options.shrinkTo;\n }\n\n this.pointerScale = scale;\n }\n\n /**\n * RequestAnimationFrame hook.\n *\n * @this {CursorInterface}\n *\n * @return {void}\n */\n ticked() {\n this.x = damp(this.pointerX, this.x, this.$options.translateDampFactor);\n this.y = damp(this.pointerY, this.y, this.$options.translateDampFactor);\n this.scale = damp(\n this.pointerScale,\n this.scale,\n this.pointerScale < this.scale ? this.$options.shrinkDampFactor : this.$options.growDampFactor\n );\n\n this.render({ x: this.x, y: this.y, scale: this.scale });\n\n if (this.x === this.pointerX && this.y === this.pointerY && this.scale === this.pointerScale) {\n this.$services.disable('ticked');\n }\n }\n\n /**\n * Render the cursor.\n *\n * @param {Object} options\n * @param {Number} options.x\n * @param {Number} options.y\n * @param {Number} options.scale\n * @return {void}\n */\n render({ x, y, scale }) {\n const transform = matrix({\n translateX: x,\n translateY: y,\n scaleX: scale,\n scaleY: scale,\n });\n this.$el.style.transform = `translateZ(0) ${transform}`;\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","var warning = function () { };\r\nvar invariant = function () { };\r\nif (process.env.NODE_ENV !== 'production') {\r\n warning = function (check, message) {\r\n if (!check && typeof console !== 'undefined') {\r\n console.warn(message);\r\n }\r\n };\r\n invariant = function (check, message) {\r\n if (!check) {\r\n throw new Error(message);\r\n }\r\n };\r\n}\n\nexport { invariant, warning };\n","import { invariant } from 'hey-listen';\n\nvar prevTime = 0;\nvar onNextFrame = typeof window !== 'undefined' && window.requestAnimationFrame !== undefined ? function (callback) {\n return window.requestAnimationFrame(callback);\n} : function (callback) {\n var timestamp = Date.now();\n var timeToCall = Math.max(0, 16.7 - (timestamp - prevTime));\n prevTime = timestamp + timeToCall;\n setTimeout(function () {\n return callback(prevTime);\n }, timeToCall);\n};\n\nvar createStep = function (setRunNextFrame) {\n var processToRun = [];\n var processToRunNextFrame = [];\n var numThisFrame = 0;\n var isProcessing = false;\n var i = 0;\n var cancelled = new WeakSet();\n var toKeepAlive = new WeakSet();\n var renderStep = {\n cancel: function (process) {\n var indexOfCallback = processToRunNextFrame.indexOf(process);\n cancelled.add(process);\n if (indexOfCallback !== -1) {\n processToRunNextFrame.splice(indexOfCallback, 1);\n }\n },\n process: function (frame) {\n var _a;\n isProcessing = true;\n _a = [processToRunNextFrame, processToRun], processToRun = _a[0], processToRunNextFrame = _a[1];\n processToRunNextFrame.length = 0;\n numThisFrame = processToRun.length;\n if (numThisFrame) {\n var process_1;\n for (i = 0; i < numThisFrame; i++) {\n process_1 = processToRun[i];\n process_1(frame);\n if (toKeepAlive.has(process_1) === true && !cancelled.has(process_1)) {\n renderStep.schedule(process_1);\n setRunNextFrame(true);\n }\n }\n }\n isProcessing = false;\n },\n schedule: function (process, keepAlive, immediate) {\n if (keepAlive === void 0) {\n keepAlive = false;\n }\n if (immediate === void 0) {\n immediate = false;\n }\n invariant(typeof process === \"function\", \"Argument must be a function\");\n var addToCurrentBuffer = immediate && isProcessing;\n var buffer = addToCurrentBuffer ? processToRun : processToRunNextFrame;\n cancelled.delete(process);\n if (keepAlive) toKeepAlive.add(process);\n if (buffer.indexOf(process) === -1) {\n buffer.push(process);\n if (addToCurrentBuffer) numThisFrame = processToRun.length;\n }\n }\n };\n return renderStep;\n};\n\nvar maxElapsed = 40;\nvar defaultElapsed = 1 / 60 * 1000;\nvar useDefaultElapsed = true;\nvar willRunNextFrame = false;\nvar isProcessing = false;\nvar frame = {\n delta: 0,\n timestamp: 0\n};\nvar stepsOrder = [\"read\", \"update\", \"preRender\", \"render\", \"postRender\"];\nvar setWillRunNextFrame = function (willRun) {\n return willRunNextFrame = willRun;\n};\nvar steps = /*#__PURE__*/stepsOrder.reduce(function (acc, key) {\n acc[key] = createStep(setWillRunNextFrame);\n return acc;\n}, {});\nvar sync = /*#__PURE__*/stepsOrder.reduce(function (acc, key) {\n var step = steps[key];\n acc[key] = function (process, keepAlive, immediate) {\n if (keepAlive === void 0) {\n keepAlive = false;\n }\n if (immediate === void 0) {\n immediate = false;\n }\n if (!willRunNextFrame) startLoop();\n step.schedule(process, keepAlive, immediate);\n return process;\n };\n return acc;\n}, {});\nvar cancelSync = /*#__PURE__*/stepsOrder.reduce(function (acc, key) {\n acc[key] = steps[key].cancel;\n return acc;\n}, {});\nvar processStep = function (stepId) {\n return steps[stepId].process(frame);\n};\nvar processFrame = function (timestamp) {\n willRunNextFrame = false;\n frame.delta = useDefaultElapsed ? defaultElapsed : Math.max(Math.min(timestamp - frame.timestamp, maxElapsed), 1);\n if (!useDefaultElapsed) defaultElapsed = frame.delta;\n frame.timestamp = timestamp;\n isProcessing = true;\n stepsOrder.forEach(processStep);\n isProcessing = false;\n if (willRunNextFrame) {\n useDefaultElapsed = false;\n onNextFrame(processFrame);\n }\n};\nvar startLoop = function () {\n willRunNextFrame = true;\n useDefaultElapsed = true;\n if (!isProcessing) onNextFrame(processFrame);\n};\nvar getFrameData = function () {\n return frame;\n};\n\nexport default sync;\nexport { cancelSync, getFrameData };\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { __assign } from 'tslib';\n\nvar clamp = function (min, max) { return function (v) {\r\n return Math.max(Math.min(v, max), min);\r\n}; };\r\nvar sanitize = function (v) { return (v % 1 ? Number(v.toFixed(5)) : v); };\r\nvar floatRegex = /(-)?(\\d[\\d\\.]*)/g;\r\nvar colorRegex = /(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2,3}\\s*\\/*\\s*[\\d\\.]+%?\\))/gi;\r\nvar singleColorRegex = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2,3}\\s*\\/*\\s*[\\d\\.]+%?\\))$/i;\n\nvar number = {\r\n test: function (v) { return typeof v === 'number'; },\r\n parse: parseFloat,\r\n transform: function (v) { return v; }\r\n};\r\nvar alpha = __assign(__assign({}, number), { transform: clamp(0, 1) });\r\nvar scale = __assign(__assign({}, number), { default: 1 });\n\nvar createUnitType = function (unit) { return ({\r\n test: function (v) {\r\n return typeof v === 'string' && v.endsWith(unit) && v.split(' ').length === 1;\r\n },\r\n parse: parseFloat,\r\n transform: function (v) { return \"\" + v + unit; }\r\n}); };\r\nvar degrees = createUnitType('deg');\r\nvar percent = createUnitType('%');\r\nvar px = createUnitType('px');\r\nvar vh = createUnitType('vh');\r\nvar vw = createUnitType('vw');\r\nvar progressPercentage = __assign(__assign({}, percent), { parse: function (v) { return percent.parse(v) / 100; }, transform: function (v) { return percent.transform(v * 100); } });\n\nvar getValueFromFunctionString = function (value) {\r\n return value.substring(value.indexOf('(') + 1, value.lastIndexOf(')'));\r\n};\r\nvar clampRgbUnit = clamp(0, 255);\r\nvar isRgba = function (v) { return v.red !== undefined; };\r\nvar isHsla = function (v) { return v.hue !== undefined; };\r\nfunction getValuesAsArray(value) {\r\n return getValueFromFunctionString(value)\r\n .replace(/(,|\\/)/g, ' ')\r\n .split(/ \\s*/);\r\n}\r\nvar splitColorValues = function (terms) {\r\n return function (v) {\r\n if (typeof v !== 'string')\r\n return v;\r\n var values = {};\r\n var valuesArray = getValuesAsArray(v);\r\n for (var i = 0; i < 4; i++) {\r\n values[terms[i]] =\r\n valuesArray[i] !== undefined ? parseFloat(valuesArray[i]) : 1;\r\n }\r\n return values;\r\n };\r\n};\r\nvar rgbaTemplate = function (_a) {\r\n var red = _a.red, green = _a.green, blue = _a.blue, _b = _a.alpha, alpha = _b === void 0 ? 1 : _b;\r\n return \"rgba(\" + red + \", \" + green + \", \" + blue + \", \" + alpha + \")\";\r\n};\r\nvar hslaTemplate = function (_a) {\r\n var hue = _a.hue, saturation = _a.saturation, lightness = _a.lightness, _b = _a.alpha, alpha = _b === void 0 ? 1 : _b;\r\n return \"hsla(\" + hue + \", \" + saturation + \", \" + lightness + \", \" + alpha + \")\";\r\n};\r\nvar rgbUnit = __assign(__assign({}, number), { transform: function (v) { return Math.round(clampRgbUnit(v)); } });\r\nfunction isColorString(color, colorType) {\r\n return color.startsWith(colorType) && singleColorRegex.test(color);\r\n}\r\nvar rgba = {\r\n test: function (v) { return (typeof v === 'string' ? isColorString(v, 'rgb') : isRgba(v)); },\r\n parse: splitColorValues(['red', 'green', 'blue', 'alpha']),\r\n transform: function (_a) {\r\n var red = _a.red, green = _a.green, blue = _a.blue, _b = _a.alpha, alpha$1 = _b === void 0 ? 1 : _b;\r\n return rgbaTemplate({\r\n red: rgbUnit.transform(red),\r\n green: rgbUnit.transform(green),\r\n blue: rgbUnit.transform(blue),\r\n alpha: sanitize(alpha.transform(alpha$1))\r\n });\r\n }\r\n};\r\nvar hsla = {\r\n test: function (v) { return (typeof v === 'string' ? isColorString(v, 'hsl') : isHsla(v)); },\r\n parse: splitColorValues(['hue', 'saturation', 'lightness', 'alpha']),\r\n transform: function (_a) {\r\n var hue = _a.hue, saturation = _a.saturation, lightness = _a.lightness, _b = _a.alpha, alpha$1 = _b === void 0 ? 1 : _b;\r\n return hslaTemplate({\r\n hue: Math.round(hue),\r\n saturation: percent.transform(sanitize(saturation)),\r\n lightness: percent.transform(sanitize(lightness)),\r\n alpha: sanitize(alpha.transform(alpha$1))\r\n });\r\n }\r\n};\r\nvar hex = __assign(__assign({}, rgba), { test: function (v) { return typeof v === 'string' && isColorString(v, '#'); }, parse: function (v) {\r\n var r = '';\r\n var g = '';\r\n var b = '';\r\n if (v.length > 4) {\r\n r = v.substr(1, 2);\r\n g = v.substr(3, 2);\r\n b = v.substr(5, 2);\r\n }\r\n else {\r\n r = v.substr(1, 1);\r\n g = v.substr(2, 1);\r\n b = v.substr(3, 1);\r\n r += r;\r\n g += g;\r\n b += b;\r\n }\r\n return {\r\n red: parseInt(r, 16),\r\n green: parseInt(g, 16),\r\n blue: parseInt(b, 16),\r\n alpha: 1\r\n };\r\n } });\r\nvar color = {\r\n test: function (v) {\r\n return (typeof v === 'string' && singleColorRegex.test(v)) ||\r\n isRgba(v) ||\r\n isHsla(v);\r\n },\r\n parse: function (v) {\r\n if (rgba.test(v)) {\r\n return rgba.parse(v);\r\n }\r\n else if (hsla.test(v)) {\r\n return hsla.parse(v);\r\n }\r\n else if (hex.test(v)) {\r\n return hex.parse(v);\r\n }\r\n return v;\r\n },\r\n transform: function (v) {\r\n if (isRgba(v)) {\r\n return rgba.transform(v);\r\n }\r\n else if (isHsla(v)) {\r\n return hsla.transform(v);\r\n }\r\n return v;\r\n }\r\n};\n\nvar COLOR_TOKEN = '${c}';\r\nvar NUMBER_TOKEN = '${n}';\r\nvar convertNumbersToZero = function (v) {\r\n return typeof v === 'number' ? 0 : v;\r\n};\r\nvar complex = {\r\n test: function (v) {\r\n if (typeof v !== 'string' || !isNaN(v))\r\n return false;\r\n var numValues = 0;\r\n var foundNumbers = v.match(floatRegex);\r\n var foundColors = v.match(colorRegex);\r\n if (foundNumbers)\r\n numValues += foundNumbers.length;\r\n if (foundColors)\r\n numValues += foundColors.length;\r\n return numValues > 0;\r\n },\r\n parse: function (v) {\r\n var input = v;\r\n var parsed = [];\r\n var foundColors = input.match(colorRegex);\r\n if (foundColors) {\r\n input = input.replace(colorRegex, COLOR_TOKEN);\r\n parsed.push.apply(parsed, foundColors.map(color.parse));\r\n }\r\n var foundNumbers = input.match(floatRegex);\r\n if (foundNumbers) {\r\n parsed.push.apply(parsed, foundNumbers.map(number.parse));\r\n }\r\n return parsed;\r\n },\r\n createTransformer: function (prop) {\r\n var template = prop;\r\n var token = 0;\r\n var foundColors = prop.match(colorRegex);\r\n var numColors = foundColors ? foundColors.length : 0;\r\n if (foundColors) {\r\n for (var i = 0; i < numColors; i++) {\r\n template = template.replace(foundColors[i], COLOR_TOKEN);\r\n token++;\r\n }\r\n }\r\n var foundNumbers = template.match(floatRegex);\r\n var numNumbers = foundNumbers ? foundNumbers.length : 0;\r\n if (foundNumbers) {\r\n for (var i = 0; i < numNumbers; i++) {\r\n template = template.replace(foundNumbers[i], NUMBER_TOKEN);\r\n token++;\r\n }\r\n }\r\n return function (v) {\r\n var output = template;\r\n for (var i = 0; i < token; i++) {\r\n output = output.replace(i < numColors ? COLOR_TOKEN : NUMBER_TOKEN, i < numColors ? color.transform(v[i]) : sanitize(v[i]));\r\n }\r\n return output;\r\n };\r\n },\r\n getAnimatableNone: function (target) {\r\n var parsedTarget = complex.parse(target);\r\n var targetTransformer = complex.createTransformer(target);\r\n return targetTransformer(parsedTarget.map(convertNumbersToZero));\r\n }\r\n};\n\nexport { alpha, color, complex, degrees, hex, hsla, number, percent, progressPercentage, px, rgbUnit, rgba, scale, vh, vw };\n","import { __rest, __assign } from 'tslib';\nimport sync from 'framesync';\nimport { number, color, px, degrees, scale, alpha, progressPercentage } from 'style-value-types';\nimport { invariant } from 'hey-listen';\n\nvar createStyler = function (_a) {\n var onRead = _a.onRead,\n onRender = _a.onRender,\n _b = _a.uncachedValues,\n uncachedValues = _b === void 0 ? new Set() : _b,\n _c = _a.useCache,\n useCache = _c === void 0 ? true : _c;\n return function (_a) {\n if (_a === void 0) {\n _a = {};\n }\n var props = __rest(_a, []);\n var state = {};\n var changedValues = [];\n var hasChanged = false;\n function setValue(key, value) {\n if (key.startsWith('--')) {\n props.hasCSSVariable = true;\n }\n var currentValue = state[key];\n state[key] = value;\n if (state[key] === currentValue) return;\n if (changedValues.indexOf(key) === -1) {\n changedValues.push(key);\n }\n if (!hasChanged) {\n hasChanged = true;\n sync.render(styler.render);\n }\n }\n var styler = {\n get: function (key, forceRead) {\n if (forceRead === void 0) {\n forceRead = false;\n }\n var useCached = !forceRead && useCache && !uncachedValues.has(key) && state[key] !== undefined;\n return useCached ? state[key] : onRead(key, props);\n },\n set: function (values, value) {\n if (typeof values === 'string') {\n setValue(values, value);\n } else {\n for (var key in values) {\n setValue(key, values[key]);\n }\n }\n return this;\n },\n render: function (forceRender) {\n if (forceRender === void 0) {\n forceRender = false;\n }\n if (hasChanged || forceRender === true) {\n onRender(state, props, changedValues);\n hasChanged = false;\n changedValues.length = 0;\n }\n return this;\n }\n };\n return styler;\n };\n};\n\nvar CAMEL_CASE_PATTERN = /([a-z])([A-Z])/g;\nvar REPLACE_TEMPLATE = '$1-$2';\nvar camelToDash = function (str) {\n return str.replace(CAMEL_CASE_PATTERN, REPLACE_TEMPLATE).toLowerCase();\n};\n\nvar camelCache = /*#__PURE__*/new Map();\nvar dashCache = /*#__PURE__*/new Map();\nvar prefixes = ['Webkit', 'Moz', 'O', 'ms', ''];\nvar numPrefixes = prefixes.length;\nvar isBrowser = typeof document !== 'undefined';\nvar testElement;\nvar setDashPrefix = function (key, prefixed) {\n return dashCache.set(key, camelToDash(prefixed));\n};\nvar testPrefix = function (key) {\n testElement = testElement || document.createElement('div');\n for (var i = 0; i < numPrefixes; i++) {\n var prefix = prefixes[i];\n var noPrefix = prefix === '';\n var prefixedPropertyName = noPrefix ? key : prefix + key.charAt(0).toUpperCase() + key.slice(1);\n if (prefixedPropertyName in testElement.style || noPrefix) {\n if (noPrefix && key === 'clipPath' && dashCache.has(key)) {\n return;\n }\n camelCache.set(key, prefixedPropertyName);\n setDashPrefix(key, \"\" + (noPrefix ? '' : '-') + camelToDash(prefixedPropertyName));\n }\n }\n};\nvar setServerProperty = function (key) {\n return setDashPrefix(key, key);\n};\nvar prefixer = function (key, asDashCase) {\n if (asDashCase === void 0) {\n asDashCase = false;\n }\n var cache = asDashCase ? dashCache : camelCache;\n if (!cache.has(key)) {\n isBrowser ? testPrefix(key) : setServerProperty(key);\n }\n return cache.get(key) || key;\n};\n\nvar axes = ['', 'X', 'Y', 'Z'];\nvar order = ['translate', 'scale', 'rotate', 'skew', 'transformPerspective'];\nvar transformProps = /*#__PURE__*/order.reduce(function (acc, key) {\n return axes.reduce(function (axesAcc, axesKey) {\n axesAcc.push(key + axesKey);\n return axesAcc;\n }, acc);\n}, ['x', 'y', 'z']);\nvar transformPropDictionary = /*#__PURE__*/transformProps.reduce(function (dict, key) {\n dict[key] = true;\n return dict;\n}, {});\nfunction isTransformProp(key) {\n return transformPropDictionary[key] === true;\n}\nfunction sortTransformProps(a, b) {\n return transformProps.indexOf(a) - transformProps.indexOf(b);\n}\nvar transformOriginProps = /*#__PURE__*/new Set(['originX', 'originY', 'originZ']);\nfunction isTransformOriginProp(key) {\n return transformOriginProps.has(key);\n}\n\nvar int = /*#__PURE__*/__assign( /*#__PURE__*/__assign({}, number), { transform: Math.round });\nvar valueTypes = {\n color: color,\n backgroundColor: color,\n outlineColor: color,\n fill: color,\n stroke: color,\n borderColor: color,\n borderTopColor: color,\n borderRightColor: color,\n borderBottomColor: color,\n borderLeftColor: color,\n borderWidth: px,\n borderTopWidth: px,\n borderRightWidth: px,\n borderBottomWidth: px,\n borderLeftWidth: px,\n borderRadius: px,\n radius: px,\n borderTopLeftRadius: px,\n borderTopRightRadius: px,\n borderBottomRightRadius: px,\n borderBottomLeftRadius: px,\n width: px,\n maxWidth: px,\n height: px,\n maxHeight: px,\n size: px,\n top: px,\n right: px,\n bottom: px,\n left: px,\n padding: px,\n paddingTop: px,\n paddingRight: px,\n paddingBottom: px,\n paddingLeft: px,\n margin: px,\n marginTop: px,\n marginRight: px,\n marginBottom: px,\n marginLeft: px,\n rotate: degrees,\n rotateX: degrees,\n rotateY: degrees,\n rotateZ: degrees,\n scale: scale,\n scaleX: scale,\n scaleY: scale,\n scaleZ: scale,\n skew: degrees,\n skewX: degrees,\n skewY: degrees,\n distance: px,\n translateX: px,\n translateY: px,\n translateZ: px,\n x: px,\n y: px,\n z: px,\n perspective: px,\n opacity: alpha,\n originX: progressPercentage,\n originY: progressPercentage,\n originZ: px,\n zIndex: int,\n fillOpacity: alpha,\n strokeOpacity: alpha,\n numOctaves: int\n};\nvar getValueType = function (key) {\n return valueTypes[key];\n};\nvar getValueAsType = function (value, type) {\n return type && typeof value === 'number' ? type.transform(value) : value;\n};\n\nvar SCROLL_LEFT = 'scrollLeft';\nvar SCROLL_TOP = 'scrollTop';\nvar scrollKeys = /*#__PURE__*/new Set([SCROLL_LEFT, SCROLL_TOP]);\n\nvar blacklist = /*#__PURE__*/new Set([SCROLL_LEFT, SCROLL_TOP, 'transform']);\nvar translateAlias = {\n x: 'translateX',\n y: 'translateY',\n z: 'translateZ'\n};\nfunction isCustomTemplate(v) {\n return typeof v === 'function';\n}\nfunction buildTransform(state, transform, transformKeys, transformIsDefault, enableHardwareAcceleration, allowTransformNone) {\n if (allowTransformNone === void 0) {\n allowTransformNone = true;\n }\n var transformString = '';\n var transformHasZ = false;\n transformKeys.sort(sortTransformProps);\n var numTransformKeys = transformKeys.length;\n for (var i = 0; i < numTransformKeys; i++) {\n var key = transformKeys[i];\n transformString += (translateAlias[key] || key) + \"(\" + transform[key] + \") \";\n transformHasZ = key === 'z' ? true : transformHasZ;\n }\n if (!transformHasZ && enableHardwareAcceleration) {\n transformString += 'translateZ(0)';\n } else {\n transformString = transformString.trim();\n }\n if (isCustomTemplate(state.transform)) {\n transformString = state.transform(transform, transformIsDefault ? '' : transformString);\n } else if (allowTransformNone && transformIsDefault) {\n transformString = 'none';\n }\n return transformString;\n}\nfunction buildStyleProperty(state, enableHardwareAcceleration, styles, transform, transformOrigin, transformKeys, isDashCase, allowTransformNone) {\n if (enableHardwareAcceleration === void 0) {\n enableHardwareAcceleration = true;\n }\n if (styles === void 0) {\n styles = {};\n }\n if (transform === void 0) {\n transform = {};\n }\n if (transformOrigin === void 0) {\n transformOrigin = {};\n }\n if (transformKeys === void 0) {\n transformKeys = [];\n }\n if (isDashCase === void 0) {\n isDashCase = false;\n }\n if (allowTransformNone === void 0) {\n allowTransformNone = true;\n }\n var transformIsDefault = true;\n var hasTransform = false;\n var hasTransformOrigin = false;\n for (var key in state) {\n var value = state[key];\n var valueType = getValueType(key);\n var valueAsType = getValueAsType(value, valueType);\n if (isTransformProp(key)) {\n hasTransform = true;\n transform[key] = valueAsType;\n transformKeys.push(key);\n if (transformIsDefault) {\n if (valueType.default && value !== valueType.default || !valueType.default && value !== 0) {\n transformIsDefault = false;\n }\n }\n } else if (isTransformOriginProp(key)) {\n transformOrigin[key] = valueAsType;\n hasTransformOrigin = true;\n } else if (!blacklist.has(key) || !isCustomTemplate(valueAsType)) {\n styles[prefixer(key, isDashCase)] = valueAsType;\n }\n }\n if (hasTransform || typeof state.transform === 'function') {\n styles.transform = buildTransform(state, transform, transformKeys, transformIsDefault, enableHardwareAcceleration, allowTransformNone);\n }\n if (hasTransformOrigin) {\n styles.transformOrigin = (transformOrigin.originX || '50%') + \" \" + (transformOrigin.originY || '50%') + \" \" + (transformOrigin.originZ || 0);\n }\n return styles;\n}\nfunction createStyleBuilder(_a) {\n var _b = _a === void 0 ? {} : _a,\n _c = _b.enableHardwareAcceleration,\n enableHardwareAcceleration = _c === void 0 ? true : _c,\n _d = _b.isDashCase,\n isDashCase = _d === void 0 ? true : _d,\n _e = _b.allowTransformNone,\n allowTransformNone = _e === void 0 ? true : _e;\n var styles = {};\n var transform = {};\n var transformOrigin = {};\n var transformKeys = [];\n return function (state) {\n transformKeys.length = 0;\n buildStyleProperty(state, enableHardwareAcceleration, styles, transform, transformOrigin, transformKeys, isDashCase, allowTransformNone);\n return styles;\n };\n}\n\nfunction onRead(key, options) {\n var element = options.element,\n preparseOutput = options.preparseOutput;\n var defaultValueType = getValueType(key);\n if (isTransformProp(key)) {\n return defaultValueType ? defaultValueType.default || 0 : 0;\n } else if (scrollKeys.has(key)) {\n return element[key];\n } else {\n var domValue = window.getComputedStyle(element, null).getPropertyValue(prefixer(key, true)) || 0;\n return preparseOutput && defaultValueType && defaultValueType.test(domValue) && defaultValueType.parse ? defaultValueType.parse(domValue) : domValue;\n }\n}\nfunction onRender(state, _a, changedValues) {\n var element = _a.element,\n buildStyles = _a.buildStyles,\n hasCSSVariable = _a.hasCSSVariable;\n Object.assign(element.style, buildStyles(state));\n if (hasCSSVariable) {\n var numChangedValues = changedValues.length;\n for (var i = 0; i < numChangedValues; i++) {\n var key = changedValues[i];\n if (key.startsWith('--')) {\n element.style.setProperty(key, state[key]);\n }\n }\n }\n if (changedValues.indexOf(SCROLL_LEFT) !== -1) {\n element[SCROLL_LEFT] = state[SCROLL_LEFT];\n }\n if (changedValues.indexOf(SCROLL_TOP) !== -1) {\n element[SCROLL_TOP] = state[SCROLL_TOP];\n }\n}\nvar cssStyler = /*#__PURE__*/createStyler({\n onRead: onRead,\n onRender: onRender,\n uncachedValues: scrollKeys\n});\nfunction createCssStyler(element, _a) {\n if (_a === void 0) {\n _a = {};\n }\n var enableHardwareAcceleration = _a.enableHardwareAcceleration,\n allowTransformNone = _a.allowTransformNone,\n props = __rest(_a, [\"enableHardwareAcceleration\", \"allowTransformNone\"]);\n return cssStyler(__assign({ element: element, buildStyles: createStyleBuilder({\n enableHardwareAcceleration: enableHardwareAcceleration,\n allowTransformNone: allowTransformNone\n }), preparseOutput: true }, props));\n}\n\nvar camelCaseAttributes = /*#__PURE__*/new Set(['baseFrequency', 'diffuseConstant', 'kernelMatrix', 'kernelUnitLength', 'keySplines', 'keyTimes', 'limitingConeAngle', 'markerHeight', 'markerWidth', 'numOctaves', 'targetX', 'targetY', 'surfaceScale', 'specularConstant', 'specularExponent', 'stdDeviation', 'tableValues']);\n\nvar defaultOrigin = 0.5;\nvar svgAttrsTemplate = function () {\n return {\n style: {}\n };\n};\nvar progressToPixels = function (progress, length) {\n return px.transform(progress * length);\n};\nvar unmeasured = { x: 0, y: 0, width: 0, height: 0 };\nfunction calcOrigin(origin, offset, size) {\n return typeof origin === 'string' ? origin : px.transform(offset + size * origin);\n}\nfunction calculateSVGTransformOrigin(dimensions, originX, originY) {\n return calcOrigin(originX, dimensions.x, dimensions.width) + \" \" + calcOrigin(originY, dimensions.y, dimensions.height);\n}\nvar svgStyleConfig = {\n enableHardwareAcceleration: false,\n isDashCase: false\n};\nfunction buildSVGAttrs(_a, dimensions, totalPathLength, cssBuilder, attrs, isDashCase) {\n if (dimensions === void 0) {\n dimensions = unmeasured;\n }\n if (cssBuilder === void 0) {\n cssBuilder = createStyleBuilder(svgStyleConfig);\n }\n if (attrs === void 0) {\n attrs = svgAttrsTemplate();\n }\n if (isDashCase === void 0) {\n isDashCase = true;\n }\n var attrX = _a.attrX,\n attrY = _a.attrY,\n originX = _a.originX,\n originY = _a.originY,\n pathLength = _a.pathLength,\n _b = _a.pathSpacing,\n pathSpacing = _b === void 0 ? 1 : _b,\n _c = _a.pathOffset,\n pathOffset = _c === void 0 ? 0 : _c,\n state = __rest(_a, [\"attrX\", \"attrY\", \"originX\", \"originY\", \"pathLength\", \"pathSpacing\", \"pathOffset\"]);\n var style = cssBuilder(state);\n for (var key in style) {\n if (key === 'transform') {\n attrs.style.transform = style[key];\n } else {\n var attrKey = isDashCase && !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n attrs[attrKey] = style[key];\n }\n }\n if (originX !== undefined || originY !== undefined || style.transform) {\n attrs.style.transformOrigin = calculateSVGTransformOrigin(dimensions, originX !== undefined ? originX : defaultOrigin, originY !== undefined ? originY : defaultOrigin);\n }\n if (attrX !== undefined) attrs.x = attrX;\n if (attrY !== undefined) attrs.y = attrY;\n if (totalPathLength !== undefined && pathLength !== undefined) {\n attrs[isDashCase ? 'stroke-dashoffset' : 'strokeDashoffset'] = progressToPixels(-pathOffset, totalPathLength);\n attrs[isDashCase ? 'stroke-dasharray' : 'strokeDasharray'] = progressToPixels(pathLength, totalPathLength) + \" \" + progressToPixels(pathSpacing, totalPathLength);\n }\n return attrs;\n}\nfunction createAttrBuilder(dimensions, totalPathLength, isDashCase) {\n if (isDashCase === void 0) {\n isDashCase = true;\n }\n var attrs = svgAttrsTemplate();\n var cssBuilder = createStyleBuilder(svgStyleConfig);\n return function (state) {\n return buildSVGAttrs(state, dimensions, totalPathLength, cssBuilder, attrs, isDashCase);\n };\n}\n\nvar getDimensions = function (element) {\n return typeof element.getBBox === 'function' ? element.getBBox() : element.getBoundingClientRect();\n};\nvar getSVGElementDimensions = function (element) {\n try {\n return getDimensions(element);\n } catch (e) {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n};\n\nvar isPath = function (element) {\n return element.tagName === 'path';\n};\nvar svgStyler = /*#__PURE__*/createStyler({\n onRead: function (key, _a) {\n var element = _a.element;\n key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n if (!isTransformProp(key)) {\n return element.getAttribute(key);\n } else {\n var valueType = getValueType(key);\n return valueType ? valueType.default || 0 : 0;\n }\n },\n onRender: function (state, _a) {\n var element = _a.element,\n buildAttrs = _a.buildAttrs;\n var attrs = buildAttrs(state);\n for (var key in attrs) {\n if (key === 'style') {\n Object.assign(element.style, attrs.style);\n } else {\n element.setAttribute(key, attrs[key]);\n }\n }\n }\n});\nvar svg = function (element) {\n var dimensions = getSVGElementDimensions(element);\n var pathLength = isPath(element) && element.getTotalLength ? element.getTotalLength() : undefined;\n return svgStyler({\n element: element,\n buildAttrs: createAttrBuilder(dimensions, pathLength)\n });\n};\n\nvar viewport = /*#__PURE__*/createStyler({\n useCache: false,\n onRead: function (key) {\n return key === 'scrollTop' ? window.pageYOffset : window.pageXOffset;\n },\n onRender: function (_a) {\n var _b = _a.scrollTop,\n scrollTop = _b === void 0 ? 0 : _b,\n _c = _a.scrollLeft,\n scrollLeft = _c === void 0 ? 0 : _c;\n return window.scrollTo(scrollLeft, scrollTop);\n }\n});\n\nvar cache = /*#__PURE__*/new WeakMap();\nvar isHTMLElement = function (node) {\n return node instanceof HTMLElement || typeof node.click === 'function';\n};\nvar isSVGElement = function (node) {\n return node instanceof SVGElement || 'ownerSVGElement' in node;\n};\nvar createDOMStyler = function (node, props) {\n var styler;\n if (node === window) {\n styler = viewport(node);\n } else if (isHTMLElement(node)) {\n styler = createCssStyler(node, props);\n } else if (isSVGElement(node)) {\n styler = svg(node);\n }\n invariant(styler !== undefined, 'No valid node provided. Node must be HTMLElement, SVGElement or window.');\n cache.set(node, styler);\n return styler;\n};\nvar getStyler = function (node, props) {\n return cache.has(node) ? cache.get(node) : createDOMStyler(node, props);\n};\nfunction index(nodeOrSelector, props) {\n var node = typeof nodeOrSelector === 'string' ? document.querySelector(nodeOrSelector) : nodeOrSelector;\n return getStyler(node, props);\n}\n\nexport default index;\nexport { buildSVGAttrs, buildStyleProperty, createStyler as createStylerFactory, isTransformProp, transformProps };\n","/**\n * Get the final damped value for a given factor.\n *\n * @param {Number} initialValue The final value.\n * @param {Number} initialDelta The current value.\n * @param {Number=} [factor=0.85] The speed to reach the target value.\n * @return {Number} The next value.\n */\nexport default function inertiaFinalValue(initialValue, initialDelta, factor = 0.85) {\n if (factor >= 1 || factor <= 0) {\n throw new Error(\n `The \\`factor\\` parameter must be a number greater than 0 and smaller than 1, \\`${factor}\\` given.`\n );\n }\n\n let delta = initialDelta;\n let finalValue = initialValue;\n\n while (Math.abs(delta) > 0.1) {\n finalValue += delta;\n delta *= factor;\n }\n\n return finalValue;\n}\n","import Service from '../abstracts/Service.js';\nimport usePointer from './pointer.js';\nimport useRaf from './raf.js';\nimport inertiaFinalValue from '../utils/math/inertiaFinalValue.js';\n\n/**\n * @typedef {import('./index').ServiceInterface} ServiceInterface\n */\n\n/**\n * @typedef {import('./pointer.js').PointerServiceProps} PointerServiceProps\n */\n\n/**\n * @type {Record<Uppercase<DragLifecycle>, DragLifecycle>}\n */\nconst MODES = {\n START: 'start',\n DRAG: 'drag',\n DROP: 'drop',\n INERTIA: 'inertia',\n STOP: 'stop',\n};\n\n/**\n * @typedef {'start'|'drag'|'drop'|'inertia'|'stop'} DragLifecycle\n */\n\n/**\n * @typedef {Object} DragServiceProps\n * @property {DragLifecycle} mode\n * The current mode of the dragging logic.\n * @property {HTMLElement} target\n * The target element of the drag.\n * @property {boolean} isGrabbing\n * Whether the user is currently grabbing the targeted element or not.\n * @property {boolean} hasInertia\n * Whether the drag currently has inertia or not.\n * @property {number} x\n * The current horizontal position in the viewport.\n * @property {number} y\n * The current vertical position in the viewport.\n * @property {{ x: number, y: number }} delta\n * The delta between the current position and the last.\n * @property {{ x: number, y: number }} origin\n * The initial position where the dragging started.\n * @property {{ x: number, y: number }} distance\n * The distance from the current position to the origin.\n * @property {{ x: number, y: number }} final\n * The final position that will be reached at the end of the inertia.\n */\n\n/**\n * @typedef {Object} DragServiceOptions\n * @property {number=} [factor]\n */\n\n/**\n * @typedef {Object} DragService\n * @property {(target:HTMLElement, callback:(props:DragServiceProps) => void, options?:DragServiceOptions) => void} add\n * Add a callback function to the service. The key must be the HTML element targeted by the drag.\n * @property {(target:HTMLElement) => void} remove\n * Remove a callback function to the service.\n * @property {() => DragServiceProps} props\n * Get the current values of the resize service props.\n */\n\nlet instanceIds = 0;\n\n/**\n * Drag service\n */\nclass Drag extends Service {\n /**\n * The instance ID.\n * @type {string}\n */\n id;\n\n /**\n * The target element\n * @type {HTMLElement}\n */\n target;\n\n /**\n * The drag mode, use it to follow the different parts of the drag.\n * @type {DragLifecycle}\n */\n mode;\n\n /**\n * Whether we are currently dragging or not.\n * @type {Boolean}\n */\n isGrabbing = false;\n\n /**\n * Whether we are currently runnnig with inertia.\n * @type {Boolean}\n */\n hasInertia = false;\n\n /**\n * The horizontal position of the drag.\n * @type {Number}\n */\n x = 0;\n\n /**\n * The vertical position of the drag.\n * @type {Number}\n */\n y = 0;\n\n /**\n * The velocity of the drag.\n * @type {{ x: number, y: number }}\n */\n delta = {\n x: 0,\n y: 0,\n };\n\n /**\n * The origin of the drag.\n * @type {{ x: number, y: number }}\n */\n origin = {\n x: 0,\n y: 0,\n };\n\n /**\n * The origin of the drag.\n * @type {{ x: number, y: number }}\n */\n distance = {\n x: 0,\n y: 0,\n };\n\n /**\n * The final position of the inertia.\n * @type {{ x: number, y: number }}\n */\n final = {\n x: 0,\n y: 0,\n };\n\n /**\n * Options.\n * @type {DragServiceOptions}\n */\n options = {\n factor: 0.85,\n };\n\n /**\n * Class constructor.\n * @param {HTMLElement} target The drag target.\n * @param {DragServiceOptions} options The drag options.\n */\n constructor(target, options = {}) {\n super();\n instanceIds += 1;\n this.id = `drag-${instanceIds}`;\n this.target = target;\n this.options = { ...this.options, ...options };\n this.pointerHandler = this.pointerHandler.bind(this);\n this.rafHandler = this.rafHandler.bind(this);\n return this;\n }\n\n /**\n * Bind the handler to the mousemove and touchmove events.\n * Bind the up and down handler to the mousedown, mouseup, touchstart and touchend events.\n *\n * @return {this}\n */\n init() {\n const options = { passive: true };\n this.target.addEventListener('mousedown', this, options);\n this.target.addEventListener('touchstart', this, options);\n\n const pointer = usePointer();\n pointer.add(this.id, this.pointerHandler);\n\n return this;\n }\n\n /**\n * Unbind all handlers from their bounded event.\n *\n * @return {this}\n */\n kill() {\n this.target.removeEventListener('mousemove', this);\n this.target.removeEventListener('touchmove', this);\n\n const pointer = usePointer();\n pointer.remove(this.id);\n return this;\n }\n\n /**\n * Handle any event.\n * @param {MouseEvent|TouchEvent} event [description]\n */\n handleEvent(event) {\n const x = event instanceof MouseEvent ? event.clientX : event.touches[0].clientX;\n const y = event instanceof MouseEvent ? event.clientY : event.touches[0].clientY;\n this.start(x, y);\n }\n\n /**\n * Start the drag.\n * @param {number} x The initial horizontal position.\n * @param {number} y The initial vertical position.\n * @return {void}\n */\n start(x, y) {\n // Reset state\n this.x = x;\n this.y = y;\n this.origin.x = x;\n this.origin.y = y;\n this.delta.x = 0;\n this.delta.y = 0;\n this.distance.x = 0;\n this.distance.y = 0;\n this.final.x = x;\n this.final.y = y;\n\n this.mode = MODES.START;\n\n // Enable grabbing\n this.isGrabbing = true;\n\n this.trigger(this.props);\n }\n\n /**\n * Stop the drag, or drop.\n * @return {void}\n */\n drop() {\n this.isGrabbing = false;\n this.mode = MODES.DROP;\n\n this.hasInertia = true;\n this.final.x = inertiaFinalValue(this.x, this.delta.x, this.options.factor);\n this.final.y = inertiaFinalValue(this.y, this.delta.y, this.options.factor);\n\n this.trigger(this.props);\n\n setTimeout(() => {\n const raf = useRaf();\n raf.remove(this.id);\n raf.add(this.id, this.rafHandler);\n }, 0);\n }\n\n /**\n * Stop the drag.\n */\n stop() {\n useRaf().remove(this.id);\n this.hasInertia = false;\n this.mode = MODES.STOP;\n this.trigger(this.props);\n }\n\n /**\n * Raf service handler.\n * @return {void}\n */\n rafHandler() {\n if (!this.isGrabbing) {\n this.x += this.delta.x;\n this.y += this.delta.y;\n this.distance.x = this.x - this.origin.x;\n this.distance.y = this.y - this.origin.y;\n\n this.delta.x *= this.options.factor;\n this.delta.y *= this.options.factor;\n\n if (this.mode !== MODES.INERTIA) {\n this.mode = MODES.INERTIA;\n }\n\n this.trigger(this.props);\n\n if (Math.abs(this.delta.x) < 0.1 && Math.abs(this.delta.y) < 0.1) {\n this.stop();\n }\n }\n }\n\n /**\n * Pointer service handler.\n * @param {PointerServiceProps} props\n * @return {void}\n */\n pointerHandler(props) {\n if (this.isGrabbing) {\n this.x = props.x;\n this.y = props.y;\n this.delta.x = props.delta.x;\n this.delta.y = props.delta.y;\n this.final.x = props.x;\n this.final.y = props.y;\n this.distance.x = this.x - this.origin.x;\n this.distance.y = this.y - this.origin.y;\n\n if (this.mode !== MODES.DRAG) {\n this.mode = MODES.DRAG;\n }\n\n this.trigger(this.props);\n\n if (!props.isDown) {\n this.drop();\n }\n }\n }\n\n /**\n * Get the pointer props.\n *\n * @type {Object}\n */\n get props() {\n return {\n target: this.target,\n mode: this.mode,\n isGrabbing: this.isGrabbing,\n hasInertia: this.hasInertia,\n x: this.x,\n y: this.y,\n delta: this.delta,\n origin: this.origin,\n distance: this.distance,\n final: this.final,\n };\n }\n}\n\nconst instances = new WeakMap();\n\n/**\n * Use the pointer.\n *\n * ```js\n * import { useDrag } from '@studiometa/js-toolkit/services';\n * const { add, remove, props } = useDrag();\n * const draggableElement = document.querySelector('.draggable');\n * add(draggableElement, (props) => {}, { factor: 0.8 });\n * remove(draggableElement);\n * props(draggableElement);\n * ```\n *\n * @param {HTMLElement} target\n * @param {DragServiceOptions} options\n * @return {ServiceInterface & DragService}\n */\nexport default function useDrag(target, options) {\n let drag = instances.get(target);\n\n if (!drag) {\n drag = new Drag(target, options);\n instances.set(target, drag);\n }\n\n const add = drag.add.bind(drag);\n const remove = drag.remove.bind(drag);\n const has = drag.has.bind(drag);\n const props = () => drag.props;\n\n return {\n add,\n remove,\n has,\n props,\n };\n}\n","import useDrag from '../services/drag.js';\n\n/**\n * @typedef {import('../abstracts/Base').default} Base\n * @typedef {import('../abstracts/Base').BaseComponent} BaseComponent\n * @typedef {import('../services/drag').DragServiceOptions} DragServiceOptions\n */\n\n/**\n * @typedef {DragServiceOptions & { target: (this:Base) => HTMLElement }} DragDecoratorOptions\n */\n\n/**\n * Add dragging capabilities to a component.\n *\n * @template {BaseComponent} T\n * @param {T} BaseClass\n * @param {DragDecoratorOptions} options\n * @return {T}\n */\nexport default function withDrag(\n BaseClass,\n options = {\n target() {\n return this.$el;\n },\n }\n) {\n // @ts-ignore\n return class extends BaseClass {\n /**\n * Class constructor.\n * @param {HTMLElement} el\n */\n constructor(el) {\n super(el);\n\n this.$on('mounted', () => {\n const { target, ...otherOptions } = options;\n const boundUseDrag = useDrag.bind(undefined, target.call(this), otherOptions);\n this.$services.register('dragged', boundUseDrag);\n this.$services.enable('dragged');\n });\n\n this.$on('destroyed', () => {\n this.$services.disable('dragged');\n this.$services.unregister('dragged');\n });\n }\n };\n}\n","import styler from 'stylefire';\nimport Base from '../abstracts/Base/index.js';\nimport withDrag from '../decorators/withDrag.js';\n\n/**\n * @typedef {import('stylefire').Styler} Styler\n * @typedef {import('../services/drag.js').DragServiceProps} DragServiceProps\n */\n\n/**\n * @typedef {Draggable} DraggableInterface\n */\n\n/**\n * Draggable class.\n *\n * @link https://jsfiddle.net/soulwire/znj683b9/\n */\nexport default class Draggable extends withDrag(Base) {\n static config = {\n name: 'DraggableElement',\n };\n\n /**\n * The origin of the element.\n * @type {{ x: number, y: number }}\n */\n elementOrigin = {\n x: 0,\n y: 0,\n };\n\n /**\n * The element styler for performant style update.\n * @type {Styler}\n */\n styler;\n\n /**\n * Mounted hook.\n * @return {void}\n */\n mounted() {\n this.styler = styler(this.$el);\n }\n\n /**\n * Destroyed hook.\n * @return {void}\n */\n destroyed() {\n this.styler = undefined;\n }\n\n /**\n * Drag service hook.\n * @param {DragServiceProps} props\n */\n dragged(props) {\n if (props.mode === 'start') {\n this.elementOrigin.x = this.styler.get('x');\n this.elementOrigin.y = this.styler.get('y');\n return;\n }\n\n this.styler.set({\n x: this.elementOrigin.x + props.x - props.origin.x,\n y: this.elementOrigin.y + props.y - props.origin.y,\n });\n }\n}\n","import keyCodes from './keyCodes.js';\n\nconst FOCUSABLE_ELEMENTS = [\n 'a[href]:not([tabindex^=\"-\"]):not([inert])',\n 'area[href]:not([tabindex^=\"-\"]):not([inert])',\n 'input:not([disabled]):not([inert])',\n 'select:not([disabled]):not([inert])',\n 'textarea:not([disabled]):not([inert])',\n 'button:not([disabled]):not([inert])',\n 'iframe:not([tabindex^=\"-\"]):not([inert])',\n 'audio:not([tabindex^=\"-\"]):not([inert])',\n 'video:not([tabindex^=\"-\"]):not([inert])',\n '[contenteditable]:not([tabindex^=\"-\"]):not([inert])',\n '[tabindex]:not([tabindex^=\"-\"]):not([inert])',\n];\n\nlet focusedBefore;\n\n/**\n * Save the current active element.\n */\nexport function saveActiveElement() {\n focusedBefore = document.activeElement;\n}\n\n/**\n * Trap tab navigation inside the given element.\n * @param {HTMLElement} element The element in which to trap the tabulations.\n * @param {KeyboardEvent} event The keydown or keyup event.\n */\nexport function trap(element, event) {\n if (event.keyCode !== keyCodes.TAB) {\n return;\n }\n\n // Save the previous focused element\n if (!focusedBefore) {\n focusedBefore = document.activeElement;\n }\n\n /** @type {Array<HTMLElement>} */\n const focusableChildren = Array.from(element.querySelectorAll(FOCUSABLE_ELEMENTS.join(', ')));\n const focusedItemIndex =\n document.activeElement instanceof HTMLElement\n ? focusableChildren.indexOf(document.activeElement)\n : -1;\n\n if (!focusableChildren.length) {\n return;\n }\n\n if (focusedItemIndex < 0) {\n focusableChildren[0].focus();\n event.preventDefault();\n }\n\n // If the SHIFT key is being pressed while tabbing (moving backwards) and\n // the currently focused item is the first one, move the focus to the last\n // focusable item from the dialog element\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableChildren[focusableChildren.length - 1].focus();\n event.preventDefault();\n }\n\n // If the SHIFT key is not being pressed (moving forwards) and the currently\n // focused item is the last one, move the focus to the first focusable item\n // from the dialog element\n else if (!event.shiftKey && focusedItemIndex === focusableChildren.length - 1) {\n focusableChildren[0].focus();\n event.preventDefault();\n }\n}\n\n/**\n * Untrap the tab navigation.\n */\nexport function untrap() {\n if (focusedBefore && typeof focusedBefore.focus === 'function') {\n focusedBefore.focus();\n focusedBefore = null;\n }\n}\n\n/**\n * Use a trap/untrap tabs logic.\n */\nexport default function useFocusTrap() {\n return { trap, untrap, saveActiveElement };\n}\n","import Base from '../abstracts/Base/index.js';\nimport transition from '../utils/css/transition.js';\nimport { trap, untrap, saveActiveElement } from '../utils/focusTrap.js';\n\n/**\n * @typedef {Object} ModalRefs\n * @property {HTMLElement} close\n * @property {HTMLElement} container\n * @property {HTMLElement} content\n * @property {HTMLElement} modal\n * @property {HTMLElement} open\n * @property {HTMLElement} overlay\n */\n\n/**\n * @typedef {import('../utils/css/styles.js').CssStyleObject} CssStyleObject\n * @typedef {Partial<Record<'open'|'active'|'closed', string|CssStyleObject>>} ModalStates\n * @typedef {Partial<Record<keyof ModalRefs, ModalStates>>} ModalStylesOption\n */\n\n/**\n * @typedef {Object} ModalOptions\n * @property {String} move A selector where to move the modal to.\n * @property {String} autofocus A selector for the element to set the focus to when the modal opens.\n * @property {ModalStylesOption} styles The styles for the different state of the modal.\n */\n\n/**\n * @typedef {Object} ModalPrivateInterface\n * @property {ModalRefs} $refs\n * @property {ModalOptions} $options\n * @property {Boolean} isOpen\n * @property {Comment} refModalPlaceholder\n * @property {HTMLElement} refModalParentBackup\n * @property {Function} refModalUnbindGetRefFilter\n */\n\n/**\n * @typedef {Modal & ModalPrivateInterface} ModalInterface\n */\n\n/**\n * Modal class.\n */\nexport default class Modal extends Base {\n /**\n * Modal options.\n */\n static config = {\n name: 'Modal',\n refs: ['close', 'container', 'content', 'modal', 'open', 'overlay'],\n options: {\n move: String,\n autofocus: { type: String, default: '[autofocus]' },\n styles: {\n type: Object,\n /**\n * @return {ModalStylesOption}\n */\n default: () => ({\n modal: {\n closed: {\n opacity: '0',\n pointerEvents: 'none',\n visibility: 'hidden',\n },\n },\n }),\n },\n },\n };\n\n /**\n * Open the modal on click on the `open` ref.\n *\n * @return {Function} The component's `open` method.\n */\n get onOpenClick() {\n return this.open;\n }\n\n /**\n * Close the modal on click on the `close` ref.\n *\n * @return {Function} The component's `close` method.\n */\n get onCloseClick() {\n return this.close;\n }\n\n /**\n * Close the modal on click on the `overlay` ref.\n *\n * @return {Function} The component's `close` method.\n */\n get onOverlayClick() {\n return this.close;\n }\n\n /**\n * Initialize the component's behaviours.\n *\n * @this {ModalInterface}\n */\n mounted() {\n this.isOpen = false;\n this.close();\n\n if (this.$options.move) {\n const target = document.querySelector(this.$options.move) || document.body;\n const refsBackup = this.$refs;\n\n this.refModalPlaceholder = document.createComment('');\n this.refModalParentBackup = this.$refs.modal.parentElement || this.$el;\n this.refModalParentBackup.insertBefore(this.refModalPlaceholder, this.$refs.modal);\n\n this.refModalUnbindGetRefFilter = this.$on(\n 'get:refs',\n /**\n * @param {ModalRefs} refs\n */\n (refs) => {\n Object.entries(refsBackup).forEach(([key, ref]) => {\n if (!refs[key]) {\n refs[key] = ref;\n }\n });\n }\n );\n target.appendChild(this.$refs.modal);\n }\n\n return this;\n }\n\n /**\n * Unbind all events on destroy.\n *\n * @this {ModalInterface}\n * @return {Modal} The Modal instance.\n */\n destroyed() {\n this.close();\n\n if (this.$options.move && this.refModalParentBackup) {\n this.refModalParentBackup.insertBefore(this.$refs.modal, this.refModalPlaceholder);\n this.refModalUnbindGetRefFilter();\n this.refModalPlaceholder.remove();\n delete this.refModalPlaceholder;\n delete this.refModalParentBackup;\n delete this.refModalUnbindGetRefFilter;\n }\n\n return this;\n }\n\n /**\n * Close the modal on `ESC` and trap the tabulation.\n *\n * @this {ModalInterface}\n * @param {Object} options\n * @param {KeyboardEvent} options.event The original keyboard event\n * @param {Boolean} options.isUp Is it a keyup event?\n * @param {Boolean} options.isDown Is it a keydown event?\n * @param {Boolean} options.ESC Is it the ESC key?\n */\n keyed({ event, isUp, isDown, ESC }) {\n if (!this.isOpen) {\n return;\n }\n\n if (isDown) {\n trap(this.$refs.modal, event);\n }\n\n if (ESC && isUp) {\n this.close();\n }\n }\n\n /**\n * Open the modal.\n *\n * @this {ModalInterface}\n * @return {Promise<ModalInterface>} The Modal instance.\n */\n async open() {\n if (this.isOpen) {\n return Promise.resolve(this);\n }\n\n this.$refs.modal.setAttribute('aria-hidden', 'false');\n document.documentElement.style.overflow = 'hidden';\n\n this.isOpen = true;\n this.$emit('open');\n\n /** @type {ModalRefs} */\n const refs = this.$refs;\n\n return Promise.all(\n Object.entries(this.$options.styles).map(\n ([refName, { open, active, closed } = { open: '', active: '', closed: '' }]) =>\n transition(\n refs[refName],\n {\n from: closed,\n active,\n to: open,\n },\n 'keep'\n )\n )\n ).then(() => {\n if (this.$options.autofocus && this.$refs.modal.querySelector(this.$options.autofocus)) {\n saveActiveElement();\n /** @type {HTMLElement} */\n const autofocusElement = this.$refs.modal.querySelector(this.$options.autofocus);\n autofocusElement.focus();\n }\n return Promise.resolve(this);\n });\n }\n\n /**\n * Close the modal.\n *\n * @this {ModalInterface}\n * @return {Promise<ModalInterface>} The Modal instance.\n */\n async close() {\n if (!this.isOpen) {\n return Promise.resolve(this);\n }\n\n this.$refs.modal.setAttribute('aria-hidden', 'true');\n document.documentElement.style.overflow = '';\n\n this.isOpen = false;\n untrap();\n this.$emit('close');\n\n /** @type {ModalRefs} */\n const refs = this.$refs;\n\n return Promise.all(\n Object.entries(this.$options.styles).map(\n ([refName, { open, active, closed } = { open: '', active: '', closed: '' }]) =>\n transition(\n refs[refName],\n {\n from: open,\n active,\n to: closed,\n },\n 'keep'\n )\n )\n ).then(() => Promise.resolve(this));\n }\n}\n","import Base from '../abstracts/Base/index.js';\nimport transition from '../utils/css/transition.js';\n\n/**\n * @typedef {import('../abstracts/Base').BaseOptions} BaseOptions\n */\n\n/**\n * @typedef {Object} TabItem\n * @property {HTMLElement} btn\n * @property {HTMLElement} content\n * @property {Boolean} isEnabled\n */\n\n/**\n * @typedef {Object} TabsRefs\n * @property {HTMLElement[]} btn\n * @property {HTMLElement[]} content\n */\n\n/**\n * @typedef {import('../utils/css/styles.js').CssStyleObject} CssStyleObject\n * @typedef {Partial<Record<'open'|'active'|'closed', string|CssStyleObject>>} TabsStates\n * @typedef {Partial<Record<keyof TabsRefs, TabsStates>>} TabsStylesOption\n */\n\n/**\n * @typedef {Object} TabsOptions\n * @property {TabsStylesOption} styles\n */\n\n/**\n * @typedef {Object} TabsPrivateInterface\n * @property {TabsOptions} $options\n * @property {TabsRefs} $refs\n * @property {Array<TabItem>} items\n */\n\n/**\n * @typedef {Tabs & TabsPrivateInterface} TabsInterface\n */\n\n/**\n * Tabs class.\n */\nexport default class Tabs extends Base {\n /**\n * Tabs config.\n */\n static config = {\n name: 'Tabs',\n refs: ['btn[]', 'content[]'],\n options: {\n styles: {\n type: Object,\n /**\n * @return {TabsStylesOption}\n */\n default: () => ({\n content: {\n closed: {\n position: 'absolute',\n opacity: '0',\n pointerEvents: 'none',\n visibility: 'hidden',\n },\n },\n }),\n },\n },\n };\n\n /**\n * Initialize the component's behaviours.\n * @this {TabsInterface}\n * @return {void}\n */\n mounted() {\n this.items = this.$refs.btn.map((btn, index) => {\n const id = `${this.$id}-${index}`;\n const content = this.$refs.content[index];\n btn.setAttribute('id', id);\n content.setAttribute('aria-labelledby', id);\n\n const item = { btn, content, isEnabled: index > 0 };\n if (index > 0) {\n this.disableItem(item);\n } else {\n this.enableItem(item);\n }\n return item;\n });\n }\n\n /**\n * Switch tab on button click.\n *\n * @this {TabsInterface}\n * @param {Event} event The click event object.\n * @param {Number} index The index of the clicked button.\n * @return {void}\n */\n onBtnClick(event, index) {\n this.items.forEach((item, i) => {\n if (i !== index) {\n this.disableItem(item);\n }\n });\n\n this.enableItem(this.items[index]);\n }\n\n /**\n * Enable the given tab and its associated content.\n *\n * @this {TabsInterface}\n * @param {TabItem} item The item to enable.\n * @return {Promise<TabsInterface>} Tabs instance.\n */\n async enableItem(item) {\n if (!item || item.isEnabled) {\n return Promise.resolve(this);\n }\n\n item.isEnabled = true;\n const { btn, content } = item;\n const btnStyles = this.$options.styles.btn || {};\n const contentStyles = this.$options.styles.content || {};\n\n content.setAttribute('aria-hidden', 'false');\n this.$emit('enable', item);\n\n return Promise.all([\n transition(\n btn,\n {\n from: btnStyles.closed,\n active: btnStyles.active,\n to: btnStyles.open,\n },\n 'keep'\n ),\n transition(\n content,\n {\n from: contentStyles.closed,\n active: contentStyles.active,\n to: contentStyles.open,\n },\n 'keep'\n ),\n ]).then(() => Promise.resolve(this));\n }\n\n /**\n * Disable the given tab and its associated content.\n *\n * @this {TabsInterface}\n * @param {TabItem} item The item to disable.\n * @return {Promise<TabsInterface>} The Tabs instance.\n */\n async disableItem(item) {\n if (!item || !item.isEnabled) {\n return Promise.resolve(this);\n }\n\n item.isEnabled = false;\n const { btn, content } = item;\n const btnStyles = this.$options.styles.btn || {};\n const contentStyles = this.$options.styles.content || {};\n\n content.setAttribute('aria-hidden', 'true');\n this.$emit('disable', item);\n\n return Promise.all([\n transition(\n btn,\n {\n from: btnStyles.open,\n active: btnStyles.active,\n to: btnStyles.closed,\n },\n 'keep'\n ),\n transition(\n content,\n {\n from: contentStyles.open,\n active: contentStyles.active,\n to: contentStyles.closed,\n },\n 'keep'\n ),\n ]).then(() => Promise.resolve(this));\n }\n}\n","import useResize from '../services/resize.js';\n\n/**\n * @typedef {import('../abstracts/Base').default} Base\n * @typedef {import('../abstracts/Base').BaseComponent} BaseComponent\n */\n\n/**\n * Test the breakpoins of the given Base instance and return the hook to call.\n *\n * @param {Array<[String[], Base]>} breakpoints The breakpoints's data.\n */\nfunction testBreakpoints(breakpoints) {\n const { breakpoint } = useResize().props();\n breakpoints.forEach(([breakpointKeys, instance]) => {\n if (breakpointKeys.includes(breakpoint)) {\n instance.$mount();\n } else {\n instance.$destroy();\n }\n });\n}\n\n/**\n * Prepare the components.\n * @param {Base} instance\n * @param {Array<[String, BaseComponent]>} breakpoints\n * @return {Array<[String, Base]>}\n */\nfunction mountComponents(instance, breakpoints) {\n return breakpoints.map(([bk, ComponentClass]) => {\n const child = new ComponentClass(instance.$el);\n Object.defineProperty(child, '$parent', { get: () => instance });\n return [bk, child];\n });\n}\n\n/**\n * A cache object to hold each Base sub-instances.\n * @type {Object}\n */\nconst instances = {};\n\n/**\n * BreakpointManager class.\n * @template {BaseComponent} T\n * @param {T} BaseClass\n * @param {Array<[String, BaseComponent]>} breakpoints\n * @return {T}\n */\nexport default function withBreakpointManager(BaseClass, breakpoints) {\n if (!Array.isArray(breakpoints)) {\n throw new Error('[withBreakpointManager] The `breakpoints` parameter must be an array.');\n }\n\n if (breakpoints.length < 2) {\n throw new Error('[withBreakpointManager] You must define at least 2 breakpoints.');\n }\n\n const { add, props } = useResize();\n\n // Do nothing if no breakpoint has been defined.\n // @see https://js-toolkit.meta.fr/services/resize.html#breakpoint\n if (!props().breakpoint) {\n throw new Error(`The \\`BreakpointManager\\` class requires breakpoints to be defined.`);\n }\n\n // @ts-ignore\n return class extends BaseClass {\n /**\n * Watch for the document resize to test the breakpoints.\n * @param {HTMLElement} element The component's root element.\n */\n constructor(element) {\n super(element);\n\n if (!instances[this.$id]) {\n instances[this.$id] = mountComponents(this, breakpoints);\n }\n\n testBreakpoints(instances[this.$id]);\n\n add(`BreakpointManager-${this.$id}`, () => {\n testBreakpoints(instances[this.$id]);\n });\n\n return this;\n }\n\n /**\n * Override the default $mount method to prevent component's from being\n * mounted when they should not.\n *\n * @return {this}\n */\n $mount() {\n if (!instances[this.$id]) {\n instances[this.$id] = mountComponents(this, breakpoints);\n }\n\n testBreakpoints(instances[this.$id]);\n\n return super.$mount();\n }\n\n /**\n * Destroy all instances when the main one is destroyed.\n *\n * @return {this}\n */\n $destroy() {\n if (Array.isArray(instances[this.$id])) {\n instances[this.$id].forEach(([, instance]) => {\n instance.$destroy();\n });\n }\n\n return super.$destroy();\n }\n };\n}\n","import useResize from '../services/resize.js';\n\n/**\n * @typedef {import('../abstracts/Base').default} Base\n * @typedef {import('../abstracts/Base').BaseComponent} BaseComponent\n */\n\n/**\n * @typedef {Object} WithBreakpointObserverOptions\n * @property {String} [activeBreakpoints]\n * @property {String} [inactiveBreakpoints]\n */\n\n/**\n * @typedef {Object} WithBreakpointObserverInterface\n * @property {WithBreakpointObserverOptions} $options\n */\n\n/**\n * Test the breakpoins of the given Base instance and return the hook to call.\n *\n * @param {Base & WithBreakpointObserverInterface} instance The component's instance.\n * @return {String} The action to trigger.\n */\nfunction testBreakpoints(instance, breakpoint = useResize().props().breakpoint) {\n const { activeBreakpoints, inactiveBreakpoints } = instance.$options;\n const isInActiveBreakpoint =\n activeBreakpoints && activeBreakpoints.split(' ').includes(breakpoint);\n const isInInactiveBreakpoint =\n inactiveBreakpoints && inactiveBreakpoints.split(' ').includes(breakpoint);\n\n if (\n (activeBreakpoints && isInActiveBreakpoint) ||\n (inactiveBreakpoints && !isInInactiveBreakpoint)\n ) {\n return '$mount';\n }\n\n return '$destroy';\n}\n\n/**\n * Test if the given instance is configured for breakpoints.\n * @param {Base & WithBreakpointObserverInterface} instance A Base class instance.\n * @return {Boolean} True if configured correctly, false otherwise.\n */\nfunction hasBreakpointConfiguration(instance) {\n const { activeBreakpoints, inactiveBreakpoints } = instance.$options;\n return Boolean(activeBreakpoints || inactiveBreakpoints);\n}\n\n/**\n * Test if the given instance has a conflicting configuration for breakpoints.\n * @param {Base & WithBreakpointObserverInterface} instance A Base class instance.\n * @return {void}\n */\nfunction testConflictingBreakpointConfiguration(instance) {\n const { activeBreakpoints, inactiveBreakpoints, name } = instance.$options;\n if (activeBreakpoints && inactiveBreakpoints) {\n throw new Error(\n `[${name}] Incorrect configuration: the \\`activeBreakpoints\\` and \\`inactiveBreakpoints\\` are not compatible.`\n );\n }\n}\n\n/**\n * Add the current instance to the resize service.\n * @param {String} key The key for the resize service callback.\n * @param {Base} instance The instance to observe.\n */\nfunction addToResize(key, instance) {\n testConflictingBreakpointConfiguration(instance);\n const { add, has } = useResize();\n\n if (!has(key)) {\n add(key, function onResize({ breakpoint }) {\n const action = testBreakpoints(instance, breakpoint);\n\n // Always destroy before mounting\n if (action === '$destroy' && instance.$isMounted) {\n instance[action]();\n } else if (action === '$mount' && !instance.$isMounted) {\n setTimeout(() => instance[action](), 0);\n }\n });\n }\n}\n\n/**\n * BreakpointObserver class.\n *\n * @template {BaseComponent} T\n * @param {T} BaseClass The Base class to extend from.\n * @return {T}\n */\nexport default function withBreakpointObserver(BaseClass) {\n // @ts-ignore\n return class extends BaseClass {\n static config = {\n ...(BaseClass.config || {}),\n name: `${BaseClass?.config?.name ?? ''}WithBreakpointObserver`,\n options: {\n ...(BaseClass?.config?.options || {}),\n activeBreakpoints: String,\n inactiveBreakpoints: String,\n },\n };\n\n /**\n * Watch for the document resize to test the breakpoints.\n * @this {Base & WithBreakpointObserverInterface}\n * @param {HTMLElement} element The component's root element.\n */\n constructor(element) {\n super(element);\n\n const { remove, props } = useResize();\n const { name } = this.$options;\n\n // Do nothing if no breakpoint has been defined.\n // @see https://js-toolkit.meta.fr/services/resize.html#breakpoint\n if (!props().breakpoint) {\n throw new Error(\n `[${name}] The \\`BreakpointObserver\\` class requires breakpoints to be defined.`\n );\n }\n\n const key = `BreakpointObserver-${this.$id}`;\n\n // Watch change on the `data-options` attribute to emit the `set:options` event.\n const mutationObserver = new MutationObserver(([mutation]) => {\n if (\n mutation.type === 'attributes' &&\n (mutation.attributeName === 'data-options' ||\n mutation.attributeName.startsWith('data-option-'))\n ) {\n // Stop here silently when no breakpoint configuration given.\n if (!hasBreakpointConfiguration(this)) {\n this.$mount();\n remove(key);\n return;\n }\n\n addToResize(key, this);\n }\n });\n mutationObserver.observe(this.$el, { attributes: true });\n\n // Stop here silently when no breakpoint configuration given.\n if (!hasBreakpointConfiguration(this)) {\n return this;\n }\n\n addToResize(key, this);\n return this;\n }\n\n /**\n * Override the default $mount method to prevent component's from being\n * mounted when they should not.\n * @return {this}\n */\n $mount() {\n // Execute normal behavior when no breakpoint configuration given.\n if (!hasBreakpointConfiguration(this)) {\n return super.$mount();\n }\n\n const action = testBreakpoints(this);\n if (action === '$mount') {\n return super.$mount();\n }\n\n return this;\n }\n };\n}\n","import merge from 'deepmerge';\n\n/**\n * @typedef {import('deepmerge').Options} DeepmergeOptions\n * @typedef {import('../abstracts/Base').BaseConfig} BaseConfig\n * @typedef {import('../abstracts/Base').BaseComponent} BaseComponent\n */\n\n/**\n * Extends the configuration of an existing class.\n *\n * @template {BaseComponent} T\n * @param {T} BaseClass The Base class to extend.\n * @param {Partial<BaseConfig>} config Extra configuration to merge.\n * @param {DeepmergeOptions} options Options for the `deepmerge` function. {@link https://github.com/TehShrike/deepmerge#options}\n * @return {T}\n */\nexport default function withExtraConfig(BaseClass, config, options = {}) {\n const newConfig = merge(BaseClass.config, config, options);\n\n if (newConfig.name === BaseClass.config.name) {\n newConfig.name = `${BaseClass.config.name}WithExtraConfig`;\n }\n\n // @ts-ignore\n return class extends BaseClass {\n /**\n * Class config.\n * @type {BaseConfig}\n */\n static config = newConfig;\n };\n}\n","import { debug } from '../abstracts/Base/utils.js';\n\n/**\n * @typedef {import('../abstracts/Base').default} Base\n * @typedef {import('../abstracts/Base').BaseComponent} BaseComponent\n */\n\n/**\n * @typedef {Object} WithIntersectionObserverOptions\n * @property {Object} intersectionObserver\n */\n\n/**\n * @typedef {Object} WithIntersectionObserverInterface\n * @property {WithIntersectionObserverOptions} $options\n * @property {IntersectionObserver} $observer\n * @property {(entries: IntersectionObserverEntry[]) => void} intersected\n */\n\n/**\n * Create an array of number between 0 and 1 from the given length.\n * @param {Number} length The length of the array.\n * @return {Array} An array of number.\n */\nfunction createArrayOfNumber(length) {\n return [...new Array(length + 1)].map((val, index) => index / length);\n}\n\n/**\n * IntersectionObserver decoration.\n *\n * @template {BaseComponent} T\n * @param {T} BaseClass The Base class to extend.\n * @param {Object} [defaultOptions] The options for the IntersectionObserver instance.\n * @return {T & { new: (element:HTMLElement) => { $observer: IntersectionObserver }}}\n */\nexport default function withIntersectionObserver(\n BaseClass,\n defaultOptions = { threshold: createArrayOfNumber(100) }\n) {\n // @ts-ignore\n return class extends BaseClass {\n /**\n * Add the `intersected` method to the list of method to exclude from the `autoBind` call.\n */\n get _excludeFromAutoBind() {\n return [...(super._excludeFromAutoBind || []), 'intersected'];\n }\n\n static config = {\n ...(BaseClass.config || {}),\n name: `${BaseClass?.config?.name ?? ''}WithIntersectionObserver`,\n options: {\n ...(BaseClass?.config?.options || {}),\n intersectionObserver: Object,\n },\n };\n\n /**\n * Create an observer when the class in instantiated.\n *\n * @this {Base & WithIntersectionObserverInterface}\n * @param {HTMLElement} element The component's root element.\n */\n constructor(element) {\n super(element);\n\n if (!this.intersected || typeof this.intersected !== 'function') {\n throw new Error('[withIntersectionObserver] The `intersected` method must be defined.');\n }\n\n this.$observer = new IntersectionObserver(\n (entries) => {\n if (__DEV__) {\n debug(this, 'intersected', entries);\n }\n this.$emit('intersected', entries);\n this.intersected(entries);\n },\n { ...defaultOptions, ...(this.$options.intersectionObserver || {}) }\n );\n\n if (this.$isMounted) {\n this.$observer.observe(this.$el);\n }\n\n this.$on('mounted', () => {\n this.$observer.observe(this.$el);\n });\n\n this.$on('destroyed', () => {\n this.$observer.unobserve(this.$el);\n });\n\n return this;\n }\n };\n}\n","/**\n * @typedef {import('../abstracts/Base').default} Base\n * @typedef {import('../abstracts/Base').BaseOptions} BaseOptions\n * @typedef {import('../abstracts/Base').BaseComponent} BaseComponent\n */\n\n/**\n * @typedef {Object} WithMountWhenInViewOptions\n * @property {Object} intersectionObserver\n */\n\n/**\n * @typedef {Object} WithMountWhenInViewInterface\n * @property {() => void} terminated\n * @property {WithMountWhenInViewOptions & BaseOptions} $options\n */\n\n/**\n * IntersectionObserver decoration.\n *\n * @template {BaseComponent} T\n * @param {T} BaseClass The Base class to extend.\n * @param {Object} [defaultOptions] The options for the IntersectionObserver instance.\n * @return {T}\n */\nexport default function withMountWhenInView(BaseClass, defaultOptions = { threshold: [0, 1] }) {\n // @ts-ignore\n return class extends BaseClass {\n /**\n * Class config.\n * @type {Object}\n */\n static config = {\n ...(BaseClass.config || {}),\n name: `${BaseClass?.config?.name ?? ''}WithMountWhenInView`,\n options: {\n ...(BaseClass?.config?.options || {}),\n intersectionObserver: Object,\n },\n };\n\n /**\n * Is the component visible?\n * @type {Boolean}\n */\n #isVisible = false;\n\n /**\n * The component's observer.\n * @type {IntersectionObserver}\n */\n #observer;\n\n /**\n * Create an observer when the class in instantiated.\n *\n * @param {HTMLElement} element The component's root element.\n */\n constructor(element) {\n super(element);\n\n this.#observer = new IntersectionObserver(\n (entries) => {\n const isVisible = entries.reduce((acc, entry) => acc || entry.isIntersecting, false);\n if (this.#isVisible !== isVisible) {\n this.#isVisible = isVisible;\n\n const method = isVisible ? '$mount' : '$destroy';\n this[method]();\n }\n },\n { ...defaultOptions, ...this.$options.intersectionObserver }\n );\n\n this.#observer.observe(this.$el);\n\n this.$on('terminated', () => {\n this.#observer.disconnect();\n });\n\n return this;\n }\n\n /**\n * Override the mounting of the component.\n *\n * @return {this}\n */\n $mount() {\n if (this.#isVisible) {\n super.$mount();\n }\n\n return this;\n }\n };\n}\n","/**\n * @typedef {import('../abstracts/Base/index.js').BaseComponent} BaseComponent\n */\n\n/**\n * Instantiate and mount the given component on the given root element when the page has been loaded\n * and return a function to use the app instance when it is ready.\n *\n * @usage\n * ```js\n * // app.js\n * import Base, { createApp } from '@studiometa/js-toolkit';\n *\n * class App extends Base {\n * static config = {\n * name: 'App',\n * }\n * }\n *\n * export default createApp(App, document.body);\n * ```\n * ```js\n * // other.js\n * import useApp from './app.js';\n *\n * const app = await useApp();\n * console.log(app.$options.name); // 'App'\n * ```\n *\n * @template {BaseComponent} T\n * @param {T} App\n * @param {HTMLElement} rootElement\n *\n * @return {() => Promise<InstanceType<T>>}\n *\n */\nexport default function createApp(App, rootElement) {\n let isLoaded = document.readyState === 'complete';\n let app;\n\n if (!isLoaded) {\n document.addEventListener('readystatechange', () => {\n if (document.readyState === 'complete') {\n app = new App(rootElement).$mount();\n isLoaded = true;\n }\n });\n } else {\n app = new App(rootElement).$mount();\n }\n\n return function useApp() {\n if (isLoaded) {\n return Promise.resolve(app);\n }\n\n return new Promise((resolve) => {\n document.addEventListener('readystatechange', () => {\n if (document.readyState === 'complete') {\n setTimeout(() => resolve(app), 0);\n }\n });\n });\n };\n}\n","/* eslint-disable import/prefer-default-export */\nimport { getComponentElements } from '../abstracts/Base/utils.js';\n\n/**\n * Get the target elements for the lazy import helper functions.\n *\n * @param {string|HTMLElement|HTMLElement[]} nameOrSelectorOrElement\n * The original selector or element, or list of elements.\n * @param {HTMLElement=} [context]\n * The optional context to use to query for elements.\n *\n * @return {HTMLElement[]} A normalized list of elements.\n */\nexport function getTargetElements(nameOrSelectorOrElement, context) {\n if (typeof nameOrSelectorOrElement === 'string') {\n return getComponentElements(nameOrSelectorOrElement, context);\n }\n\n if (!Array.isArray(nameOrSelectorOrElement)) {\n return [nameOrSelectorOrElement];\n }\n\n return nameOrSelectorOrElement;\n}\n","import { getTargetElements } from './utils.js';\n\n/**\n * @typedef {import('../abstracts/Base/index.js').BaseComponent} BaseComponent\n * @typedef {import('../abstracts/Base/index.js').default} Base\n */\n\n/**\n * Import a component on an interaction.\n *\n * @template {BaseComponent} T\n *\n * @param {() => Promise<T|{default:T}>} fn\n * The import function.\n * @param {string|HTMLElement|HTMLElement[]} nameOrSelectorOrElement\n * The name or selector for the component.\n * @param {string|string[]} events\n * The events to listen to to trigger the import.\n * @param {Base=} [parent]\n * The parent component.\n *\n * @return {Promise<T>}\n */\nexport default function importOnInteraction(fn, nameOrSelectorOrElement, events, parent) {\n const normalizedEvents = typeof events === 'string' ? [events] : events;\n\n let ResolvedClass;\n\n const resolver = (resolve) => {\n fn().then((module) => {\n ResolvedClass = 'default' in module ? module.default : module;\n resolve(ResolvedClass);\n });\n };\n\n return new Promise((resolve) => {\n const elements = getTargetElements(nameOrSelectorOrElement, parent?.$el);\n const eventListenerOptions = {\n capture: true,\n passive: true,\n once: true,\n };\n const handler = () => {\n resolver(resolve);\n };\n\n elements.forEach((element) => {\n normalizedEvents.forEach((event) => {\n element.addEventListener(event, handler, eventListenerOptions);\n });\n });\n });\n}\n","/**\n * @typedef {import('../abstracts/Base/index.js').BaseComponent} BaseComponent\n * @typedef {{ timeout?: number }} ImportWhenIdleOptions\n */\n\n/**\n * Import a component when user is idle.\n *\n * @template {BaseComponent} T\n *\n * @param {() => Promise<T|{default:T}>} fn\n * The import function.\n * @param {ImportWhenIdleOptions=} [options]\n * The time to wait before triggering the callback if never idle.\n *\n * @return {Promise<T>}\n */\nexport default function importWhenIdle(fn, options) {\n let ResolvedClass;\n\n const resolver = (resolve) => {\n fn().then((module) => {\n ResolvedClass = 'default' in module ? module.default : module;\n resolve(ResolvedClass);\n });\n };\n\n return new Promise((resolve) => {\n const timeout = options?.timeout ?? 1;\n\n if (!('requestIdleCallback' in window)) {\n setTimeout(() => {\n resolver(resolve);\n }, timeout);\n } else {\n window.requestIdleCallback(\n () => {\n setTimeout(() => {\n resolver(resolve);\n }, 0);\n },\n { timeout: options?.timeout }\n );\n }\n });\n}\n","import { getTargetElements } from './utils.js';\n\n/**\n * @typedef {import('../abstracts/Base/index.js').default} Base\n * @typedef {import('../abstracts/Base/index.js').BaseComponent} BaseComponent\n */\n\n/**\n * Import a component when it is visible.\n *\n * @template {BaseComponent} T\n *\n * @param {() => Promise<T|{default:T}>} fn\n * The import function.\n * @param {string|HTMLElement|HTMLElement[]} nameOrSelectorOrElement\n * The name or selector for the component.\n * @param {Base=} [parent]\n * The parent component.\n * @param {IntersectionObserverInit=} [observerOptions]\n * Options for the `IntersectionObserver` instance.\n *\n * @return {Promise<T>}\n */\nexport default function importWhenVisible(\n fn,\n nameOrSelectorOrElement,\n parent,\n observerOptions = {}\n) {\n let ResolvedClass;\n\n const resolver = (resolve, cb) => {\n fn().then((module) => {\n ResolvedClass = 'default' in module ? module.default : module;\n resolve(ResolvedClass);\n\n if (typeof cb === 'function') {\n cb();\n }\n });\n };\n\n return new Promise((resolve) => {\n const observer = new IntersectionObserver((entries) => {\n const someEntriesAreVisible = entries.some((entry) => entry.isIntersecting);\n if (someEntriesAreVisible) {\n setTimeout(() => {\n resolver(resolve, () => observer.disconnect());\n }, 0);\n }\n }, observerOptions);\n\n const elements = getTargetElements(nameOrSelectorOrElement, parent?.$el);\n elements.forEach((element) => observer.observe(element));\n });\n}\n","/**\n * @typedef {Object} Point\n * @property {Number} x Point's x position\n * @property {Number} y Point's y position\n */\n\n/**\n * @typedef {Object} Rect\n * @property {Number} x Rectangle's x position\n * @property {Number} y Rectangle's y position\n * @property {Number} width Rectangle's width\n * @property {Number} height Rectangle's height\n */\n\n/**\n * Test if a point collides with a rectangle.\n * Inspired by http://www.jeffreythompson.org/collision-detection/point-rect.php\n *\n * @param {Point} point Point\n * @param {Rect} rect Rectangle\n * @return {boolean} Is the point inside the rectangle's bounds ?\n */\nexport default function collidePointRect(point, rect) {\n return (\n point.x >= rect.x && // right of the left edge AND\n point.x <= rect.x + rect.width && // left of the right edge AND\n point.y >= rect.y && // below the top AND\n point.y <= rect.y + rect.height // above the bottom\n );\n}\n","/**\n * @typedef {Object} Rect\n * @property {Number} x Rectangle's x position\n * @property {Number} y Rectangle's y position\n * @property {Number} width Rectangle's width\n * @property {Number} height Rectangle's height\n */\n\n/**\n * Test if a rectangle collides with another rectangle.\n * Inspired by http://www.jeffreythompson.org/collision-detection/rect-rect.php\n *\n * @param {Rect} rect1 Rectangle 1\n * @param {Rect} rect2 Rectangle 2\n * @return {boolean} Are the sides of one rectangle touching the other ?\n */\nexport default function collideRectRect(rect1, rect2) {\n return (\n rect1.x + rect1.width >= rect2.x && // rect1 right edge past rect2 left AND\n rect1.x <= rect2.x + rect2.width && // rect1 left edge past rect2 right AND\n rect1.y + rect1.height >= rect2.y && // rect1 top edge past rect2 bottom AND\n rect1.y <= rect2.y + rect2.height // rect1 bottom edge past rect2 top\n );\n}\n","/**\n * @typedef {Object} Circle\n * @property {Number} x Circle's x position\n * @property {Number} y Circle's y position\n * @property {Number} radius Circle's radius\n */\n\n/**\n * Convert clientRect to a formatted circle object\n *\n * @param {Partial<DOMRect>} domRect DOMRect of a square DOMElement\n * @param {Boolean} force Force usage of non-square DOMElements\n * @return {Circle} Circle object that can be used in collides functions\n */\nexport default function collidePointRect({ x, y, width, height }, force = false) {\n if (width !== height && !force)\n throw new Error('Initial DOMElement is not a square. Please use the force mode.');\n return {\n x: x + width / 2,\n y: y + height / 2,\n radius: (width + height) / 4,\n };\n}\n","/**\n * @typedef {Object} Rect\n * @property {Number} x Rectangle's x position\n * @property {Number} y Rectangle's y position\n * @property {Number} width Rectangle's width\n * @property {Number} height Rectangle's height\n */\n\n/**\n * @typedef {Object} Circle\n * @property {Number} x Circle's x position\n * @property {Number} y Circle's y position\n * @property {Number} radius Circle's radius\n */\n\n/**\n * Test if a circle collides with a rectangle.\n * Inspired by http://www.jeffreythompson.org/collision-detection/circle-rect.php\n *\n * @param {Circle} circle Circle\n * @param {Rect} rect Rectangle\n * @return {boolean} Are the sides of the circle touching the rectangle ?\n */\nexport default function collideCircleRect(circle, rect) {\n // temporary variables to set edges for testing\n let testX = circle.x;\n let testY = circle.y;\n\n // which edge is closest?\n if (circle.x < rect.x) {\n testX = rect.x; // test left edge\n } else if (circle.x > rect.x + rect.width) {\n testX = rect.x + rect.width; // right edge\n }\n\n if (circle.y < rect.y) {\n testY = rect.y; // top edge\n } else if (circle.y > rect.y + rect.height) {\n testY = rect.y + rect.height; // bottom edge\n }\n\n // get distance from closest edges\n const distX = circle.x - testX;\n const distY = circle.y - testY;\n const distance = Math.sqrt(distX * distX + distY * distY);\n\n // if the distance is less than the radius, collision!\n if (distance <= circle.radius) {\n return true;\n }\n return false;\n}\n","/**\n * @typedef {Object} Circle\n * @property {Number} x Circle's x position\n * @property {Number} y Circle's y position\n * @property {Number} radius Circle's radius\n */\n\n/**\n * Test if a circle collides with another.\n * Inspired by http://www.jeffreythompson.org/collision-detection/circle-circle.php\n *\n * @param {Circle} circle1 Circle 1\n * @param {Circle} circle2 Circle 2\n * @return {boolean} Are the sides of one circle touching the other ?\n */\nexport default function collideCircleCircle(circle1, circle2) {\n // get distance between the circle's centers\n // use the Pythagorean Theorem to compute the distance\n const distX = circle1.x - circle2.x;\n const distY = circle1.y - circle2.y;\n const distance = Math.sqrt(distX * distX + distY * distY);\n\n // if the distance is less than the sum of the circle's\n // radii, the circles are touching!\n if (distance <= circle1.radius + circle2.radius) {\n return true;\n }\n return false;\n}\n","/**\n * @typedef {Object} Point\n * @property {Number} x Point's x position\n * @property {Number} y Point's y position\n */\n\n/**\n * @typedef {Object} Circle\n * @property {Number} x Circle's x position\n * @property {Number} y Circle's y position\n * @property {Number} radius Circle's radius\n */\n\n/**\n * Test if a point is inside a circle.\n * Inspired by http://www.jeffreythompson.org/collision-detection/point-circle.php\n *\n * @param {Point} point Point\n * @param {Circle} circle Circle\n * @return {boolean} Is the point inside the circle's bounds ?\n */\nexport default function collidePointCircle(point, circle) {\n // get distance between the point and circle's center\n // using the Pythagorean Theorem\n const distX = point.x - circle.x;\n const distY = point.y - circle.y;\n const distance = Math.sqrt(distX * distX + distY * distY);\n\n // if the distance is less than the circle's\n // radius the point is inside!\n return distance <= circle.radius;\n}\n","/**\n * Inspired by http://www.jeffreythompson.org/collision-detection/\n */\nimport collidePointRect from './collidePointRect.js';\nimport collideRectRect from './collideRectRect.js';\nimport boundingRectToCircle from './boundingRectToCircle.js';\nimport collideCircleRect from './collideCircleRect.js';\nimport collideCircleCircle from './collideCircleCircle.js';\nimport collidePointCircle from './collidePointCircle.js';\n\nexport {\n collidePointRect,\n collideRectRect,\n boundingRectToCircle,\n collideCircleRect,\n collideCircleCircle,\n collidePointCircle,\n};\n","import isObject from './object/isObject.js';\n\n/**\n * @typedef {Object} HistoryOptions\n * @property {string=} [path]\n * @property {URLSearchParams|{ [key:string]: unknown }=} [search]\n * @property {string=} [hash]\n */\n\n/**\n * Set a param in a URLSearchParam instance.\n * @param {URLSearchParams} params The params to update.\n * @param {string} name The name of the param to update.\n * @param {string|number|boolean|Array|Object} value The value for this param.\n * @return {URLSearchParams} The updated URLSearchParams instance.\n */\nfunction updateUrlSearchParam(params, name, value) {\n if (value === '' || value === null || value === undefined) {\n if (params.has(name)) {\n params.delete(name);\n }\n return params;\n }\n\n if (Array.isArray(value)) {\n value.forEach((val, index) => {\n const arrayName = `${name}[${index}]`;\n updateUrlSearchParam(params, arrayName, val);\n });\n return params;\n }\n\n if (isObject(value)) {\n Object.entries(value).forEach(([key, val]) => {\n const objectName = `${name}[${key}]`;\n updateUrlSearchParam(params, objectName, val);\n });\n return params;\n }\n\n params.set(name, value);\n return params;\n}\n\n/**\n * Transform an object to an URLSearchParams instance.\n *\n * @param {Object} obj The object to convert.\n * @param {string} defaultSearch A string of defaults search params.\n * @return {URLSearchParams}\n */\nexport function objectToURLSearchParams(\n obj,\n defaultSearch = typeof window === 'undefined' ? '' : window.location.search\n) {\n return Object.entries(obj).reduce(\n (urlSearchParams, [name, value]) => updateUrlSearchParam(urlSearchParams, name, value),\n new URLSearchParams(defaultSearch)\n );\n}\n\n/**\n * Update the history with a new state.\n * @param {string} mode\n * @param {HistoryOptions} options\n * @param {Object} [data]\n * @param {string} [title]\n */\nfunction updateHistory(mode, options, data = {}, title = '') {\n if (!window.history) {\n return;\n }\n\n /** @type {HistoryOptions} */\n const { path, search, hash } = {\n path: window.location.pathname,\n search: new URLSearchParams(window.location.search),\n hash: window.location.hash,\n ...options,\n };\n\n let url = path;\n\n const mergedSearch = search instanceof URLSearchParams ? search : objectToURLSearchParams(search);\n\n if (mergedSearch.toString()) {\n url += `?${mergedSearch.toString()}`;\n }\n\n if (hash) {\n if (hash.startsWith('#')) {\n url += hash;\n } else {\n url += `#${hash}`;\n }\n }\n\n const method = `${mode}State`;\n window.history[method](data, title, url);\n}\n\n/**\n * Push a new state.\n *\n * @param {HistoryOptions} options The new state.\n * @param {Object} data The data for the new state.\n * @param {string} title The title for the new state.\n */\nexport function push(options, data, title) {\n updateHistory('push', options, data, title);\n}\n\n/**\n * Replace a new state.\n *\n * @param {HistoryOptions} options The new state.\n * @param {Object} data The data for the new state.\n * @param {string} title The title for the new state.\n */\nexport function replace(options, data, title) {\n updateHistory('replace', options, data, title);\n}\n","/**\n * Clamp a value in a given range.\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @return {number}\n */\nexport default function clamp(value, min, max) {\n /* eslint-disable no-nested-ternary */\n return min < max\n ? value < min\n ? min\n : value > max\n ? max\n : value\n : value < max\n ? max\n : value > min\n ? min\n : value;\n /* eslint-enable no-nested-ternary */\n}\n","import clamp from './clamp.js';\n\n/**\n * Clamp a value in the 0–1 range.\n * @param {number} value\n * @return {number}\n */\nexport default function clamp01(value) {\n return clamp(value, 0, 1);\n}\n","/**\n * Interpolate the ratio between a given interval.\n *\n * @param {Number} min The interval minimum value.\n * @param {Number} max The inverval maximum value.\n * @param {Number} ratio The ratio to get.\n * @return {Number} The value between min and max corresponding to ratio.\n */\nexport default function lerp(min, max, ratio) {\n return (1 - ratio) * min + ratio * max;\n}\n","/**\n * Maps the value from one range of [inputMin..inputMax] to another range of [outputMin..outputMax].\n *\n * @param {Number} value The value to map.\n * @param {Number} inputMin The input's minimum value.\n * @param {Number} inputMax The input's maximum value.\n * @param {Number} outputMin The output's minimum value.\n * @param {Number} outputMax The output's maximum value.\n * @return {Number} The input value mapped to the output range.\n */\nexport default function map(value, inputMin, inputMax, outputMin, outputMax) {\n return ((value - inputMin) * (outputMax - outputMin)) / (inputMax - inputMin) + outputMin;\n}\n","/**\n * Round a value with a given number of decimals.\n *\n * @param {Number} value The number to round.\n * @param {Number=} [decimals=0] The number of decimals to keep.\n * @return {Number} A rounded number to the given decimals length.\n */\nexport default function round(value, decimals = 0) {\n return Number(value.toFixed(decimals));\n}\n","/**\n * Remove the given characters from the start of the given string.\n *\n * @param {string} string The string to modify.\n * @param {string} characters The characters to remove from the start.\n */\nexport default function withoutLeadingCharacters(string, characters) {\n return string.replace(new RegExp(`^${characters}`), '');\n}\n","import withoutLeadingCharacters from './withoutLeadingCharacters.js';\n\n/**\n * Add the given characters to the start of the given string.\n *\n * @param {string} string The string to modify.\n * @param {string} characters The characters to add to the start.\n */\nexport default function withLeadingCharacters(string, characters) {\n return `${characters}${withoutLeadingCharacters(string, characters)}`;\n}\n","import withLeadingCharacters from './withLeadingCharacters.js';\n\n/**\n * Add a leading slash to a string.\n *\n * @param {string} string The string to modify.\n * @return {string} The string with a leading slash.\n */\nexport default function withLeadingSlash(string) {\n return withLeadingCharacters(string, '/');\n}\n","import withoutLeadingCharacters from './withoutLeadingCharacters.js';\n\n/**\n * Remove the given characters to the start of the given string recursively.\n *\n * @param {string} string The string to modify.\n * @param {string} characters The characters to add to the start.\n */\nexport default function withoutLeadingCharactersRecursive(string, characters) {\n let str = withoutLeadingCharacters(string, characters);\n const regex = new RegExp(`^${characters}`);\n\n while (regex.test(str)) {\n str = withoutLeadingCharacters(str, characters);\n }\n\n return str;\n}\n","import withoutLeadingCharacters from './withoutLeadingCharacters.js';\n\n/**\n * Remove the leading slash from a string.\n *\n * @param {string} string The string to modify.\n * @return {string} The string without leading slash.\n */\nexport default function withoutLeadingSlash(string) {\n return withoutLeadingCharacters(string, '/');\n}\n","/**\n * Remove the given characters from the end of the given string.\n *\n * @param {string} string The string to modify.\n * @param {string} characters The characters to remove from the end.\n */\nexport default function withoutTrailingCharacters(string, characters) {\n return string.replace(new RegExp(`${characters}$`), '');\n}\n","import withoutTrailingCharacters from './withoutTrailingCharacters.js';\n\n/**\n * Remove the given characters to the start of the given string recursively.\n *\n * @param {string} string The string to modify.\n * @param {string} characters The characters to add to the start.\n */\nexport default function withoutTrailingCharactersRecursive(string, characters) {\n let str = withoutTrailingCharacters(string, characters);\n const regex = new RegExp(`${characters}$`);\n\n while (regex.test(str)) {\n str = withoutTrailingCharacters(str, characters);\n }\n\n return str;\n}\n","import withoutTrailingCharacters from './withoutTrailingCharacters.js';\n\n/**\n * Remove the trailing slash from a string.\n *\n * @param {string} string The string to modify.\n * @return {string} The string without trailing slash.\n */\nexport default function withoutTrailingSlash(string) {\n return withoutTrailingCharacters(string, '/');\n}\n","import withoutTrailingCharacters from './withoutTrailingCharacters.js';\n\n/**\n * Add the given characters to the end of the given string.\n *\n * @param {string} string The string to modify.\n * @param {string} characters The characters to add to the end.\n */\nexport default function withTrailingCharacters(string, characters) {\n return `${withoutTrailingCharacters(string, characters)}${characters}`;\n}\n","import withTrailingCharacters from './withTrailingCharacters.js';\n\n/**\n * Add a trailing slash to a string.\n *\n * @param {string} string The string to modify.\n * @return {string} The string with a trailing slash.\n */\nexport default function withTrailingSlash(string) {\n return withTrailingCharacters(string, '/');\n}\n","/**\n * Simple throttling helper that limits a function to only run once every {delay}ms.\n *\n * @param {Function} fn The function to throttle\n * @param {Number=} [delay=16] The delay in ms\n * @return {Function} The throttled function.\n */\nexport default function throttle(fn, delay = 16) {\n let lastCall = 0;\n return function throttled(...args) {\n const now = new Date().getTime();\n if (now - lastCall < delay) {\n return false;\n }\n lastCall = now;\n return fn(...args);\n };\n}\n"],"names":["getAllProperties","object","props","proto","Object","getPrototypeOf","prototype","getOwnPropertyNames","map","name","reduce","acc","val","autoBind","instance","options","exclude","include","filter","key","match","pattern","test","some","forEach","descriptor","getOwnPropertyDescriptor","value","bind","EventManager","_events","$on","event","listener","Array","isArray","push","$off","index","indexOf","splice","$emit","apply","$once","handler","getConfig","config","constructor","Error","console","warn","log","debug","$options","hasMethod","obj","callMethod","method","args","__DEV__","$isMounted","call","getComponentElements","nameOrSelector","element","document","selector","elements","from","querySelectorAll","length","getChild","el","ComponentClass","parent","__base__","child","defineProperty","get","then","module","default","getChildren","components","children","entries","enumerable","configurable","replace","copyProperty","to","property","ignoreNonConfigurable","toDescriptor","fromDescriptor","canCopyProperty","undefined","writable","changePrototype","fromPrototype","setPrototypeOf","wrappedToString","withName","fromBody","toStringDescriptor","Function","toStringName","toString","changeToString","trim","newToString","mimicFunction","Reflect","ownKeys","this","require$$0","cacheStore","WeakMap","mem","fn","cacheKey","cache","Map","maxAge","mapAgeCleaner","memoized","arguments_","cacheItem","data","result","set","Date","now","Number","POSITIVE_INFINITY","mimicFn","isObject","getAttributeName","noCase","delimiter","memoizedGetAttributeName","Options","schema","String","Boolean","isObjectConfig","types","includes","type","defaultValue","attributeName","hasAttribute","negatedAttributeName","hasNegatedAttribute","getAttribute","deepmerge","JSON","parse","setTimeout","setAttribute","stringify","TypeError","removeAttribute","getLegacyOptionsSchema","propsToExclude","keys","propName","getParentOptionsSchema","getterConfig","staticConfig","assign","updateOptionsWithLegacyValues","legacyOptionsValues","dataset","err","optionName","optionValue","getOptions","scopeSelectorPonyfill","uniqId","list","attr","scopedSelector","getRefs","definedRefs","refs","allRefs","childrenRefs","$id","ref","$refs","$ref","refName","$realRef","endsWith","mountComponent","component","Promise","$mount","mountComponents","$children","values","$child","mountOrUpdateComponent","$update","mountOrUpdateComponents","destroyComponent","$destroy","destroyComponents","Service","callbacks","isInit","init","kill","add","callback","has","size","remove","delete","trigger","forEachCallback","isTouchEvent","TouchEvent","Pointer","isDown","y","window","innerHeight","yLast","x","innerWidth","xLast","hasRaf","documentElement","addEventListener","once","capture","passive","handleEvent","downHandler","upHandler","removeEventListener","updateValues","touches","clientY","clientX","changed","last","delta","progress","max","pointer","usePointer","getRaf","requestAnimationFrame","getCancelRaf","cancelAnimationFrame","clearTimeout","nextFrame","raf","resolve","Raf","isTicking","id","cancelRaf","loop","time","performance","useRaf","debounce","delay","timeout","debounced","Resize","canUseResizeObserver","resizeObserver","ResizeObserver","observe","disconnect","width","height","ratio","orientation","breakpointElement","breakpoint","breakpoints","querySelector","getComputedStyle","getPropertyValue","split","resize","useResize","Scroll","pageYOffset","pageXOffset","debouncedHandler","direction","scrollingElement","body","scrollWidth","scrollHeight","scroll","useScroll","ENTER","SPACE","TAB","ESC","LEFT","UP","RIGHT","DOWN","Key","triggered","previousEvent","keyCodes","code","keyCode","isUp","useKey","Load","SERVICES_MAP","scrolled","resized","ticked","moved","keyed","loaded","useLoad","Services","service","enable","disable","noop","self","serviceHandler","enableAll","serviceName","disableAll","register","useFunction","unregister","bindRootEvents","eventMethods","eventMethod","eventName","toLowerCase","$el","bindRefsEvents","unbindMethods","$refOrRefs","refEventMethod","c","toUpperCase","startsWith","unbindMethod","bindChildrenEvents","childName","childEventMethod","bindEvents","ROOT_EVENT_REGEX","REFS_CHILDREN_EVENT_REGEX","root","refsOrChildren","globalThis","Base","$parent","$services","_excludeFromAutoBind","$terminate","$factory","$isBase","defineComponent","methods","hooks","Component","allowedHooks","filteredHooks","join","createBase","elementOrSelector","Accordion","mounted","AccordionItem","item","unbindOpen","autoclose","i","it","close","unbindClose","destroyed","unbind","setStyles","styles","prop","style","setClasses","classNames","className","classList","toggle","transition","endMode","classesOrStyles","active","trs","Transition","getInstance","isTransitioning","end","start","next","hasTransition","testTransition","transitionEndHandler","setClassesOrStyles","classes","transitionDuration","mode","btn","contentId","content","isOpen","updateAttributes","container","visibility","otherStyles","open","closed","onBtnClick","$log","all","offsetHeight","position","AccordionCore","damp","targetValue","currentValue","factor","Math","abs","matrix","transform","scaleX","skewY","skewX","scaleY","translateX","translateY","Cursor","scale","pointerX","pointerY","pointerScale","render","shouldGrow","target","Element","matches","growSelectors","shouldReduce","shrinkSelectors","growTo","shrinkTo","translateDampFactor","shrinkDampFactor","growDampFactor","__assign","clamp","inertiaFinalValue","initialValue","initialDelta","finalValue","MODES","START","DRAG","DROP","INERTIA","STOP","instanceIds","Drag","isGrabbing","hasInertia","origin","distance","final","pointerHandler","rafHandler","MouseEvent","drop","stop","instances","useDrag","drag","withDrag","BaseClass","otherOptions","boundUseDrag","Draggable","elementOrigin","styler","dragged","FOCUSABLE_ELEMENTS","focusedBefore","saveActiveElement","activeElement","trap","focusableChildren","focusedItemIndex","HTMLElement","focus","preventDefault","shiftKey","untrap","useFocusTrap","Modal","move","refsBackup","refModalPlaceholder","createComment","refModalParentBackup","modal","parentElement","insertBefore","refModalUnbindGetRefFilter","appendChild","overflow","autofocus","autofocusElement","opacity","pointerEvents","Tabs","items","isEnabled","disableItem","enableItem","btnStyles","contentStyles","testBreakpoints","breakpointKeys","bk","withBreakpointManager","activeBreakpoints","inactiveBreakpoints","isInActiveBreakpoint","isInInactiveBreakpoint","hasBreakpointConfiguration","testConflictingBreakpointConfiguration","addToResize","onResize","action","withBreakpointObserver","mutationObserver","MutationObserver","mutation","attributes","withExtraConfig","newConfig","merge","createArrayOfNumber","withIntersectionObserver","defaultOptions","threshold","intersected","$observer","IntersectionObserver","intersectionObserver","unobserve","withMountWhenInView","isVisible","entry","isIntersecting","createApp","App","rootElement","isLoaded","readyState","app","useApp","getTargetElements","nameOrSelectorOrElement","context","importOnInteraction","events","normalizedEvents","ResolvedClass","resolver","eventListenerOptions","importWhenIdle","requestIdleCallback","importWhenVisible","observerOptions","cb","observer","someEntriesAreVisible","collidePointRect","point","rect","collideRectRect","rect1","rect2","force","radius","collideCircleRect","circle","testX","testY","distX","distY","sqrt","collideCircleCircle","circle1","circle2","collidePointCircle","updateUrlSearchParam","params","arrayName","objectName","objectToURLSearchParams","defaultSearch","location","search","urlSearchParams","URLSearchParams","updateHistory","title","history","path","pathname","hash","url","mergedSearch","min","clamp01","lerp","inputMin","inputMax","outputMin","outputMax","round","decimals","toFixed","withoutLeadingCharacters","string","characters","RegExp","withLeadingCharacters","withLeadingSlash","withoutLeadingCharactersRecursive","str","regex","withoutLeadingSlash","withoutTrailingCharacters","withoutTrailingCharactersRecursive","withoutTrailingSlash","withTrailingCharacters","withTrailingSlash","throttle","lastCall","throttled","getTime"],"mappings":"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"}