@studiometa/js-toolkit 3.1.0 → 3.2.0

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 (228) hide show
  1. package/Base/Base.d.ts +14 -12
  2. package/Base/Base.js +17 -16
  3. package/Base/Base.js.map +2 -2
  4. package/Base/managers/AbstractManager.d.ts +1 -1
  5. package/Base/managers/ChildrenManager.d.ts +2 -2
  6. package/Base/managers/ChildrenManager.js +4 -4
  7. package/Base/managers/ChildrenManager.js.map +2 -2
  8. package/Base/managers/EventsManager.d.ts +10 -10
  9. package/Base/managers/EventsManager.js +10 -10
  10. package/Base/managers/EventsManager.js.map +1 -1
  11. package/Base/managers/ResponsiveOptionsManager.d.ts +6 -6
  12. package/Base/managers/ResponsiveOptionsManager.js +6 -6
  13. package/Base/managers/ResponsiveOptionsManager.js.map +1 -1
  14. package/Base/managers/ServicesManager.d.ts +2 -2
  15. package/Base/managers/ServicesManager.js +2 -2
  16. package/Base/managers/ServicesManager.js.map +1 -1
  17. package/Base/utils.d.ts +3 -2
  18. package/Base/utils.js +7 -5
  19. package/Base/utils.js.map +2 -2
  20. package/decorators/index.d.ts +1 -0
  21. package/decorators/index.js +1 -0
  22. package/decorators/index.js.map +2 -2
  23. package/decorators/withBreakpointManager.d.ts +2 -1
  24. package/decorators/withBreakpointManager.js.map +2 -2
  25. package/decorators/withBreakpointObserver.d.ts +2 -1
  26. package/decorators/withBreakpointObserver.js.map +2 -2
  27. package/decorators/withDrag.d.ts +2 -1
  28. package/decorators/withDrag.js.map +2 -2
  29. package/decorators/withExtraConfig.d.ts +2 -1
  30. package/decorators/withExtraConfig.js.map +2 -2
  31. package/decorators/withFreezedOptions.d.ts +2 -1
  32. package/decorators/withFreezedOptions.js.map +2 -2
  33. package/decorators/withGroup.d.ts +16 -0
  34. package/decorators/withGroup.js +33 -0
  35. package/decorators/withGroup.js.map +7 -0
  36. package/decorators/withIntersectionObserver.d.ts +2 -1
  37. package/decorators/withIntersectionObserver.js.map +2 -2
  38. package/decorators/withMountOnMediaQuery.d.ts +2 -1
  39. package/decorators/withMountOnMediaQuery.js.map +2 -2
  40. package/decorators/withMountWhenInView.d.ts +2 -1
  41. package/decorators/withMountWhenInView.js.map +2 -2
  42. package/decorators/withMountWhenPrefersMotion.d.ts +3 -0
  43. package/decorators/withMountWhenPrefersMotion.js.map +2 -2
  44. package/decorators/withMutation.d.ts +2 -1
  45. package/decorators/withMutation.js.map +2 -2
  46. package/decorators/withRelativePointer.d.ts +2 -1
  47. package/decorators/withRelativePointer.js.map +2 -2
  48. package/decorators/withResponsiveOptions.d.ts +2 -1
  49. package/decorators/withResponsiveOptions.js.map +2 -2
  50. package/decorators/withScrolledInView/withScrolledInView.d.ts +2 -1
  51. package/decorators/withScrolledInView/withScrolledInView.js.map +2 -2
  52. package/helpers/createApp.d.ts +2 -1
  53. package/helpers/createApp.js.map +2 -2
  54. package/helpers/getClosestParent.d.ts +2 -1
  55. package/helpers/getClosestParent.js.map +2 -2
  56. package/helpers/getDirectChildren.d.ts +13 -11
  57. package/helpers/getDirectChildren.js.map +2 -2
  58. package/helpers/getInstanceFromElement.d.ts +2 -1
  59. package/helpers/getInstanceFromElement.js +2 -2
  60. package/helpers/getInstanceFromElement.js.map +2 -2
  61. package/helpers/importOnInteraction.d.ts +3 -2
  62. package/helpers/importOnInteraction.js.map +2 -2
  63. package/helpers/importOnMediaQuery.d.ts +3 -2
  64. package/helpers/importOnMediaQuery.js.map +2 -2
  65. package/helpers/importWhenIdle.d.ts +3 -2
  66. package/helpers/importWhenIdle.js.map +2 -2
  67. package/helpers/importWhenPrefersMotion.d.ts +3 -2
  68. package/helpers/importWhenPrefersMotion.js.map +2 -2
  69. package/helpers/importWhenVisible.d.ts +3 -2
  70. package/helpers/importWhenVisible.js.map +2 -2
  71. package/helpers/index.d.ts +1 -0
  72. package/helpers/index.js +1 -0
  73. package/helpers/index.js.map +2 -2
  74. package/helpers/registerComponent.d.ts +10 -0
  75. package/helpers/registerComponent.js +11 -0
  76. package/helpers/registerComponent.js.map +7 -0
  77. package/helpers/utils.d.ts +1 -1
  78. package/helpers/utils.js.map +1 -1
  79. package/index.d.ts +1 -0
  80. package/index.js +4 -0
  81. package/index.js.map +2 -2
  82. package/package.json +1 -1
  83. package/services/AbstractService.d.ts +1 -1
  84. package/services/AbstractService.js.map +1 -1
  85. package/services/DragService.d.ts +3 -2
  86. package/services/DragService.js +5 -1
  87. package/services/DragService.js.map +2 -2
  88. package/services/KeyService.d.ts +2 -1
  89. package/services/KeyService.js.map +2 -2
  90. package/services/LoadService.d.ts +2 -1
  91. package/services/LoadService.js.map +2 -2
  92. package/services/MutationService.d.ts +2 -1
  93. package/services/MutationService.js.map +2 -2
  94. package/services/PointerService.d.ts +2 -1
  95. package/services/PointerService.js.map +2 -2
  96. package/services/RafService.d.ts +2 -1
  97. package/services/RafService.js.map +2 -2
  98. package/services/ResizeService.d.ts +2 -1
  99. package/services/ResizeService.js.map +2 -2
  100. package/services/ScrollService.d.ts +2 -1
  101. package/services/ScrollService.js.map +2 -2
  102. package/tsconfig.build.tsbuildinfo +1 -1
  103. package/utils/SmartQueue.js.map +1 -1
  104. package/utils/cache.d.ts +2 -1
  105. package/utils/cache.js.map +2 -2
  106. package/utils/collide/boundingRectToCircle.d.ts +3 -2
  107. package/utils/collide/boundingRectToCircle.js.map +2 -2
  108. package/utils/collide/collideCircleCircle.d.ts +3 -2
  109. package/utils/collide/collideCircleCircle.js.map +2 -2
  110. package/utils/collide/collideCircleRect.d.ts +3 -2
  111. package/utils/collide/collideCircleRect.js.map +2 -2
  112. package/utils/collide/collidePointCircle.d.ts +3 -2
  113. package/utils/collide/collidePointCircle.js.map +2 -2
  114. package/utils/collide/collidePointRect.d.ts +3 -2
  115. package/utils/collide/collidePointRect.js.map +2 -2
  116. package/utils/collide/collideRectRect.d.ts +3 -2
  117. package/utils/collide/collideRectRect.js.map +2 -2
  118. package/utils/css/animate.d.ts +2 -1
  119. package/utils/css/animate.js.map +2 -2
  120. package/utils/css/classes.d.ts +6 -3
  121. package/utils/css/classes.js.map +2 -2
  122. package/utils/css/getOffsetSizes.d.ts +2 -1
  123. package/utils/css/getOffsetSizes.js.map +2 -2
  124. package/utils/css/matrix.d.ts +10 -9
  125. package/utils/css/matrix.js.map +2 -2
  126. package/utils/css/styles.d.ts +4 -2
  127. package/utils/css/styles.js.map +2 -2
  128. package/utils/css/transform.d.ts +2 -1
  129. package/utils/css/transform.js.map +2 -2
  130. package/utils/css/transition.d.ts +3 -2
  131. package/utils/css/transition.js +1 -1
  132. package/utils/css/transition.js.map +2 -2
  133. package/utils/debounce.d.ts +5 -4
  134. package/utils/debounce.js.map +2 -2
  135. package/utils/dom/createElement.d.ts +24 -1
  136. package/utils/dom/createElement.js +8 -2
  137. package/utils/dom/createElement.js.map +2 -2
  138. package/utils/getComponentResolver.d.ts +1 -1
  139. package/utils/getComponentResolver.js.map +1 -1
  140. package/utils/history.d.ts +17 -14
  141. package/utils/history.js.map +2 -2
  142. package/utils/is.d.ts +25 -9
  143. package/utils/is.js.map +2 -2
  144. package/utils/keyCodes.d.ts +3 -0
  145. package/utils/keyCodes.js.map +2 -2
  146. package/utils/loadElement.d.ts +10 -5
  147. package/utils/loadElement.js.map +2 -2
  148. package/utils/math/clamp.d.ts +2 -6
  149. package/utils/math/clamp.js.map +2 -2
  150. package/utils/math/clamp01.d.ts +2 -4
  151. package/utils/math/clamp01.js.map +2 -2
  152. package/utils/math/createEases.d.ts +13 -5
  153. package/utils/math/createEases.js.map +2 -2
  154. package/utils/math/createRange.d.ts +2 -1
  155. package/utils/math/createRange.js.map +2 -2
  156. package/utils/math/damp.d.ts +7 -6
  157. package/utils/math/damp.js.map +2 -2
  158. package/utils/math/ease.d.ts +23 -14
  159. package/utils/math/ease.js.map +2 -2
  160. package/utils/math/inertiaFinalValue.d.ts +6 -5
  161. package/utils/math/inertiaFinalValue.js.map +2 -2
  162. package/utils/math/lerp.d.ts +6 -5
  163. package/utils/math/lerp.js.map +2 -2
  164. package/utils/math/map.d.ts +3 -2
  165. package/utils/math/map.js.map +2 -2
  166. package/utils/math/mean.d.ts +3 -0
  167. package/utils/math/mean.js.map +2 -2
  168. package/utils/math/round.d.ts +5 -4
  169. package/utils/math/round.js.map +2 -2
  170. package/utils/math/smoothTo.d.ts +2 -1
  171. package/utils/math/smoothTo.js +3 -7
  172. package/utils/math/smoothTo.js.map +2 -2
  173. package/utils/math/spring.d.ts +9 -9
  174. package/utils/math/spring.js.map +1 -1
  175. package/utils/math/wrap.d.ts +2 -1
  176. package/utils/math/wrap.js.map +2 -2
  177. package/utils/memo.d.ts +2 -1
  178. package/utils/memo.js.map +2 -2
  179. package/utils/memoize.d.ts +2 -1
  180. package/utils/memoize.js.map +2 -2
  181. package/utils/nextFrame.d.ts +2 -1
  182. package/utils/nextFrame.js.map +2 -2
  183. package/utils/nextMicrotask.d.ts +2 -1
  184. package/utils/nextMicrotask.js.map +2 -2
  185. package/utils/nextTick.d.ts +2 -1
  186. package/utils/nextTick.js.map +2 -2
  187. package/utils/noop.d.ts +1 -1
  188. package/utils/noop.js.map +1 -1
  189. package/utils/object/getAllProperties.d.ts +1 -1
  190. package/utils/object/getAllProperties.js.map +1 -1
  191. package/utils/random.d.ts +11 -8
  192. package/utils/random.js.map +2 -2
  193. package/utils/scheduler.d.ts +6 -1
  194. package/utils/scheduler.js.map +2 -2
  195. package/utils/scrollTo.d.ts +3 -2
  196. package/utils/scrollTo.js.map +2 -2
  197. package/utils/string/changeCase.d.ts +12 -6
  198. package/utils/string/changeCase.js.map +2 -2
  199. package/utils/string/endsWith.d.ts +2 -1
  200. package/utils/string/endsWith.js.map +2 -2
  201. package/utils/string/startsWith.d.ts +2 -1
  202. package/utils/string/startsWith.js.map +2 -2
  203. package/utils/string/withLeadingCharacters.d.ts +5 -4
  204. package/utils/string/withLeadingCharacters.js.map +2 -2
  205. package/utils/string/withLeadingSlash.d.ts +3 -2
  206. package/utils/string/withLeadingSlash.js.map +2 -2
  207. package/utils/string/withTrailingCharacters.d.ts +5 -4
  208. package/utils/string/withTrailingCharacters.js.map +2 -2
  209. package/utils/string/withTrailingSlash.d.ts +3 -2
  210. package/utils/string/withTrailingSlash.js.map +2 -2
  211. package/utils/string/withoutLeadingCharacters.d.ts +5 -4
  212. package/utils/string/withoutLeadingCharacters.js.map +2 -2
  213. package/utils/string/withoutLeadingCharactersRecursive.d.ts +5 -4
  214. package/utils/string/withoutLeadingCharactersRecursive.js.map +2 -2
  215. package/utils/string/withoutLeadingSlash.d.ts +3 -2
  216. package/utils/string/withoutLeadingSlash.js.map +2 -2
  217. package/utils/string/withoutTrailingCharacters.d.ts +5 -4
  218. package/utils/string/withoutTrailingCharacters.js.map +2 -2
  219. package/utils/string/withoutTrailingCharactersRecursive.d.ts +5 -4
  220. package/utils/string/withoutTrailingCharactersRecursive.js.map +2 -2
  221. package/utils/string/withoutTrailingSlash.d.ts +3 -2
  222. package/utils/string/withoutTrailingSlash.js.map +2 -2
  223. package/utils/throttle.d.ts +3 -2
  224. package/utils/throttle.js.map +2 -2
  225. package/utils/trapFocus.d.ts +4 -2
  226. package/utils/trapFocus.js.map +2 -2
  227. package/utils/tween.d.ts +1 -1
  228. package/utils/tween.js.map +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../packages/js-toolkit/utils/getComponentResolver.ts"],
4
- "sourcesContent": ["import { isFunction } from './is.js';\n\n/**\n * Default component resolver\n *\n * @param {Function} fn\n * @returns {Function}\n */\nexport function getComponentResolver(fn) {\n return (resolve, cb?: () => unknown) => {\n fn().then((module) => {\n const ResolvedClass = module.default ?? module;\n resolve(ResolvedClass);\n\n if (isFunction(cb)) {\n cb();\n }\n });\n };\n}\n"],
4
+ "sourcesContent": ["import { isFunction } from './is.js';\n\n/**\n * Default component resolver\n *\n * @param {Function} fn\n * @return {Function}\n */\nexport function getComponentResolver(fn) {\n return (resolve, cb?: () => unknown) => {\n fn().then((module) => {\n const ResolvedClass = module.default ?? module;\n resolve(ResolvedClass);\n\n if (isFunction(cb)) {\n cb();\n }\n });\n };\n}\n"],
5
5
  "mappings": "AAAA,SAAS,kBAAkB;AAQpB,SAAS,qBAAqB,IAAI;AACvC,SAAO,CAAC,SAAS,OAAuB;AACtC,OAAG,EAAE,KAAK,CAAC,WAAW;AACpB,YAAM,gBAAgB,OAAO,WAAW;AACxC,cAAQ,aAAa;AAErB,UAAI,WAAW,EAAE,GAAG;AAClB,WAAG;AAAA,MACL;AAAA,IACF,CAAC;AAAA,EACH;AACF;",
6
6
  "names": []
7
7
  }
@@ -8,26 +8,29 @@ export interface HistoryOptions {
8
8
  /**
9
9
  * Transform an object to an URLSearchParams instance.
10
10
  *
11
- * @param {Object} obj The object to convert.
12
- * @param {string} defaultSearch A string of defaults search params.
13
- * @returns {URLSearchParams}
14
- */
11
+ * @param {Object} obj The object to convert.
12
+ * @param {string} defaultSearch A string of defaults search params.
13
+ * @return {URLSearchParams}
14
+ * @link https://js-toolkit.studiometa.dev/utils/history/objectToURLSearchParams.html
15
+ */
15
16
  export declare function objectToURLSearchParams(obj: unknown, defaultSearch?: string): URLSearchParams;
16
17
  /**
17
18
  * Push a new state.
18
19
  *
19
- * @param {HistoryOptions} options The new state.
20
- * @param {Object} [data] The data for the new state.
21
- * @param {string} [title] The title for the new state.
22
- * @returns {void}
23
- */
20
+ * @param {HistoryOptions} options The new state.
21
+ * @param {Object} [data] The data for the new state.
22
+ * @param {string} [title] The title for the new state.
23
+ * @return {void}
24
+ * @link https://js-toolkit.studiometa.dev/utils/history/historyPush.html
25
+ */
24
26
  export declare function push(options: HistoryOptions, data?: unknown, title?: string): void;
25
27
  /**
26
28
  * Replace a new state.
27
29
  *
28
- * @param {HistoryOptions} options The new state.
29
- * @param {Object} [data] The data for the new state.
30
- * @param {string} [title] The title for the new state.
31
- * @returns {void}
32
- */
30
+ * @param {HistoryOptions} options The new state.
31
+ * @param {Object} [data] The data for the new state.
32
+ * @param {string} [title] The title for the new state.
33
+ * @return {void}
34
+ * @link https://js-toolkit.studiometa.dev/utils/history/historyReplace.html
35
+ */
33
36
  export declare function replace(options: HistoryOptions, data?: unknown, title?: string): void;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../packages/js-toolkit/utils/history.ts"],
4
- "sourcesContent": ["import { isArray, isObject } from './is.js';\nimport { hasWindow } from './has.js';\nimport { startsWith } from './string/index.js';\n\nexport interface HistoryOptions {\n path?: string;\n search?: URLSearchParams | { [key: string]: unknown };\n hash?: string;\n}\n\ntype SearchParamValue = string | number | boolean;\n\n/**\n * Set a param in a URLSearchParam instance.\n *\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 * @returns {URLSearchParams} The updated URLSearchParams instance.\n */\nfunction updateUrlSearchParam(\n params: URLSearchParams,\n name: string,\n value: SearchParamValue | Array<SearchParamValue> | Record<string, SearchParamValue>,\n): URLSearchParams {\n if (value === '' || value === null || value === undefined) {\n if (params.has(name)) {\n params.delete(name);\n }\n return params;\n }\n\n if (isArray(value)) {\n for (const [index, val] of value.entries()) {\n const arrayName = `${name}[${index}]`;\n updateUrlSearchParam(params, arrayName, val);\n }\n return params;\n }\n\n if (isObject(value)) {\n for (const [key, val] of Object.entries(value)) {\n const objectName = `${name}[${key}]`;\n updateUrlSearchParam(params, objectName, val);\n }\n return params;\n }\n\n params.set(name, value as string);\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 * @returns {URLSearchParams}\n */\nexport function objectToURLSearchParams(\n obj: unknown,\n defaultSearch = hasWindow() ? window.location.search : '',\n): URLSearchParams {\n return Object.entries(obj).reduce(\n (urlSearchParams: URLSearchParams, [name, value]) =>\n updateUrlSearchParam(urlSearchParams, name, value),\n new URLSearchParams(defaultSearch),\n ) as URLSearchParams;\n}\n\n/**\n * Update the history with a new state.\n *\n * @param {string} mode\n * @param {HistoryOptions} options\n * @param {Object} [data]\n * @param {string} [title]\n * @returns {void}\n */\nfunction updateHistory(\n mode: 'push' | 'replace',\n options: HistoryOptions,\n data: unknown = {},\n title = '',\n) {\n if (!window.history) {\n return;\n }\n\n const { path, search, hash }: HistoryOptions = {\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 (startsWith(hash, '#')) {\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 * @returns {void}\n */\nexport function push(options: HistoryOptions, data: unknown = {}, 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 * @returns {void}\n */\nexport function replace(options: HistoryOptions, data: unknown = {}, title = '') {\n updateHistory('replace', options, data, title);\n}\n"],
5
- "mappings": "AAAA,SAAS,SAAS,gBAAgB;AAClC,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAkB3B,SAAS,qBACP,QACA,MACA,OACiB;AACjB,MAAI,UAAU,MAAM,UAAU,QAAQ,UAAU,QAAW;AACzD,QAAI,OAAO,IAAI,IAAI,GAAG;AACpB,aAAO,OAAO,IAAI;AAAA,IACpB;AACA,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ,KAAK,GAAG;AAClB,eAAW,CAAC,OAAO,GAAG,KAAK,MAAM,QAAQ,GAAG;AAC1C,YAAM,YAAY,GAAG,IAAI,IAAI,KAAK;AAClC,2BAAqB,QAAQ,WAAW,GAAG;AAAA,IAC7C;AACA,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,KAAK,GAAG;AACnB,eAAW,CAAC,KAAK,GAAG,KAAK,OAAO,QAAQ,KAAK,GAAG;AAC9C,YAAM,aAAa,GAAG,IAAI,IAAI,GAAG;AACjC,2BAAqB,QAAQ,YAAY,GAAG;AAAA,IAC9C;AACA,WAAO;AAAA,EACT;AAEA,SAAO,IAAI,MAAM,KAAe;AAChC,SAAO;AACT;AASO,SAAS,wBACd,KACA,gBAAgB,UAAU,IAAI,OAAO,SAAS,SAAS,IACtC;AACjB,SAAO,OAAO,QAAQ,GAAG,EAAE;AAAA,IACzB,CAAC,iBAAkC,CAAC,MAAM,KAAK,MAC7C,qBAAqB,iBAAiB,MAAM,KAAK;AAAA,IACnD,IAAI,gBAAgB,aAAa;AAAA,EACnC;AACF;AAWA,SAAS,cACP,MACA,SACA,OAAgB,CAAC,GACjB,QAAQ,IACR;AACA,MAAI,CAAC,OAAO,SAAS;AACnB;AAAA,EACF;AAEA,QAAM,EAAE,MAAM,QAAQ,KAAK,IAAoB;AAAA,IAC7C,MAAM,OAAO,SAAS;AAAA,IACtB,QAAQ,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAAA,IAClD,MAAM,OAAO,SAAS;AAAA,IACtB,GAAG;AAAA,EACL;AAEA,MAAI,MAAM;AAEV,QAAM,eAAe,kBAAkB,kBAAkB,SAAS,wBAAwB,MAAM;AAEhG,MAAI,aAAa,SAAS,GAAG;AAC3B,WAAO,IAAI,aAAa,SAAS,CAAC;AAAA,EACpC;AAEA,MAAI,MAAM;AACR,QAAI,WAAW,MAAM,GAAG,GAAG;AACzB,aAAO;AAAA,IACT,OAAO;AACL,aAAO,IAAI,IAAI;AAAA,IACjB;AAAA,EACF;AAEA,QAAM,SAAS,GAAG,IAAI;AACtB,SAAO,QAAQ,MAAM,EAAE,MAAM,OAAO,GAAG;AACzC;AAUO,SAAS,KAAK,SAAyB,OAAgB,CAAC,GAAG,QAAQ,IAAI;AAC5E,gBAAc,QAAQ,SAAS,MAAM,KAAK;AAC5C;AAUO,SAAS,QAAQ,SAAyB,OAAgB,CAAC,GAAG,QAAQ,IAAI;AAC/E,gBAAc,WAAW,SAAS,MAAM,KAAK;AAC/C;",
4
+ "sourcesContent": ["import { isArray, isObject } from './is.js';\nimport { hasWindow } from './has.js';\nimport { startsWith } from './string/index.js';\n\nexport interface HistoryOptions {\n path?: string;\n search?: URLSearchParams | { [key: string]: unknown };\n hash?: string;\n}\n\ntype SearchParamValue = string | number | boolean;\n\n/**\n * Set a param in a URLSearchParam instance.\n *\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(\n params: URLSearchParams,\n name: string,\n value: SearchParamValue | Array<SearchParamValue> | Record<string, SearchParamValue>,\n): URLSearchParams {\n if (value === '' || value === null || value === undefined) {\n if (params.has(name)) {\n params.delete(name);\n }\n return params;\n }\n\n if (isArray(value)) {\n for (const [index, val] of value.entries()) {\n const arrayName = `${name}[${index}]`;\n updateUrlSearchParam(params, arrayName, val);\n }\n return params;\n }\n\n if (isObject(value)) {\n for (const [key, val] of Object.entries(value)) {\n const objectName = `${name}[${key}]`;\n updateUrlSearchParam(params, objectName, val);\n }\n return params;\n }\n\n params.set(name, value as string);\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 * @link https://js-toolkit.studiometa.dev/utils/history/objectToURLSearchParams.html\n*/\nexport function objectToURLSearchParams(\n obj: unknown,\n defaultSearch = hasWindow() ? window.location.search : '',\n): URLSearchParams {\n return Object.entries(obj).reduce(\n (urlSearchParams: URLSearchParams, [name, value]) =>\n updateUrlSearchParam(urlSearchParams, name, value),\n new URLSearchParams(defaultSearch),\n ) as URLSearchParams;\n}\n\n/**\n * Update the history with a new state.\n *\n * @param {string} mode\n * @param {HistoryOptions} options\n * @param {Object} [data]\n * @param {string} [title]\n * @return {void}\n */\nfunction updateHistory(\n mode: 'push' | 'replace',\n options: HistoryOptions,\n data: unknown = {},\n title = '',\n) {\n if (!window.history) {\n return;\n }\n\n const { path, search, hash }: HistoryOptions = {\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 (startsWith(hash, '#')) {\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 * @return {void}\n * @link https://js-toolkit.studiometa.dev/utils/history/historyPush.html\n*/\nexport function push(options: HistoryOptions, data: unknown = {}, 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 * @return {void}\n * @link https://js-toolkit.studiometa.dev/utils/history/historyReplace.html\n*/\nexport function replace(options: HistoryOptions, data: unknown = {}, title = '') {\n updateHistory('replace', options, data, title);\n}\n"],
5
+ "mappings": "AAAA,SAAS,SAAS,gBAAgB;AAClC,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAkB3B,SAAS,qBACP,QACA,MACA,OACiB;AACjB,MAAI,UAAU,MAAM,UAAU,QAAQ,UAAU,QAAW;AACzD,QAAI,OAAO,IAAI,IAAI,GAAG;AACpB,aAAO,OAAO,IAAI;AAAA,IACpB;AACA,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ,KAAK,GAAG;AAClB,eAAW,CAAC,OAAO,GAAG,KAAK,MAAM,QAAQ,GAAG;AAC1C,YAAM,YAAY,GAAG,IAAI,IAAI,KAAK;AAClC,2BAAqB,QAAQ,WAAW,GAAG;AAAA,IAC7C;AACA,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,KAAK,GAAG;AACnB,eAAW,CAAC,KAAK,GAAG,KAAK,OAAO,QAAQ,KAAK,GAAG;AAC9C,YAAM,aAAa,GAAG,IAAI,IAAI,GAAG;AACjC,2BAAqB,QAAQ,YAAY,GAAG;AAAA,IAC9C;AACA,WAAO;AAAA,EACT;AAEA,SAAO,IAAI,MAAM,KAAe;AAChC,SAAO;AACT;AAUO,SAAS,wBACd,KACA,gBAAgB,UAAU,IAAI,OAAO,SAAS,SAAS,IACtC;AACjB,SAAO,OAAO,QAAQ,GAAG,EAAE;AAAA,IACzB,CAAC,iBAAkC,CAAC,MAAM,KAAK,MAC7C,qBAAqB,iBAAiB,MAAM,KAAK;AAAA,IACnD,IAAI,gBAAgB,aAAa;AAAA,EACnC;AACF;AAWA,SAAS,cACP,MACA,SACA,OAAgB,CAAC,GACjB,QAAQ,IACR;AACA,MAAI,CAAC,OAAO,SAAS;AACnB;AAAA,EACF;AAEA,QAAM,EAAE,MAAM,QAAQ,KAAK,IAAoB;AAAA,IAC7C,MAAM,OAAO,SAAS;AAAA,IACtB,QAAQ,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAAA,IAClD,MAAM,OAAO,SAAS;AAAA,IACtB,GAAG;AAAA,EACL;AAEA,MAAI,MAAM;AAEV,QAAM,eAAe,kBAAkB,kBAAkB,SAAS,wBAAwB,MAAM;AAEhG,MAAI,aAAa,SAAS,GAAG;AAC3B,WAAO,IAAI,aAAa,SAAS,CAAC;AAAA,EACpC;AAEA,MAAI,MAAM;AACR,QAAI,WAAW,MAAM,GAAG,GAAG;AACzB,aAAO;AAAA,IACT,OAAO;AACL,aAAO,IAAI,IAAI;AAAA,IACjB;AAAA,EACF;AAEA,QAAM,SAAS,GAAG,IAAI;AACtB,SAAO,QAAQ,MAAM,EAAE,MAAM,OAAO,GAAG;AACzC;AAWO,SAAS,KAAK,SAAyB,OAAgB,CAAC,GAAG,QAAQ,IAAI;AAC5E,gBAAc,QAAQ,SAAS,MAAM,KAAK;AAC5C;AAWO,SAAS,QAAQ,SAAyB,OAAgB,CAAC,GAAG,QAAQ,IAAI;AAC/E,gBAAc,WAAW,SAAS,MAAM,KAAK;AAC/C;",
6
6
  "names": []
7
7
  }
package/utils/is.d.ts CHANGED
@@ -1,38 +1,54 @@
1
+ /**
2
+ * @link https://js-toolkit.studiometa.dev/utils/is/isDev.html
3
+ */
1
4
  export declare const isDev: boolean;
2
5
  /**
3
6
  * Test is the given value is null.
4
- */
7
+ * @link https://js-toolkit.studiometa.dev/utils/is/isNull.html
8
+ */
5
9
  export declare const isNull: (value: unknown) => value is null;
6
10
  /**
7
11
  * Test if the given value is a function.
8
- */
12
+ * @link https://js-toolkit.studiometa.dev/utils/is/isFunction.html
13
+ */
9
14
  export declare const isFunction: (value: unknown) => value is Function;
10
15
  /**
11
16
  * Test if a value is defined or not.
12
- */
17
+ * @link https://js-toolkit.studiometa.dev/utils/is/isDefined.html
18
+ */
13
19
  export declare const isDefined: (value: unknown) => boolean;
14
20
  /**
15
21
  * Test if value is a string.
16
- */
22
+ * @link https://js-toolkit.studiometa.dev/utils/is/isString.html
23
+ */
17
24
  export declare const isString: (value: unknown) => value is string;
18
25
  /**
19
26
  * Test if the given value is an object.
20
- */
27
+ * @link https://js-toolkit.studiometa.dev/utils/is/isObject.html
28
+ */
21
29
  export declare const isObject: (value: unknown) => boolean;
22
30
  /**
23
31
  * Test if a given value is a number.
24
- */
32
+ * @link https://js-toolkit.studiometa.dev/utils/is/isNumber.html
33
+ */
25
34
  export declare const isNumber: (value: unknown) => value is number;
26
35
  /**
27
36
  * Test if a given value is a boolean.
28
- */
37
+ * @link https://js-toolkit.studiometa.dev/utils/is/isBoolean.html
38
+ */
29
39
  export declare const isBoolean: (value: unknown) => value is boolean;
40
+ /**
41
+ * Test if a given value is an array.
42
+ * @link https://js-toolkit.studiometa.dev/utils/is/isArray.html
43
+ */
30
44
  export declare const isArray: (arg: any) => arg is any[];
31
45
  /**
32
46
  * Test if a given value is an empty string.
33
- */
47
+ * @link https://js-toolkit.studiometa.dev/utils/is/isEmptyString.html
48
+ */
34
49
  export declare const isEmptyString: (value?: unknown) => boolean;
35
50
  /**
36
51
  * Test if the given value is empty.
37
- */
52
+ * @link https://js-toolkit.studiometa.dev/utils/is/isEmpty.html
53
+ */
38
54
  export declare const isEmpty: (value?: any) => boolean;
package/utils/is.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../packages/js-toolkit/utils/is.ts"],
4
- "sourcesContent": ["// eslint-disable-next-line no-undef\nexport const isDev = typeof __DEV__ !== 'undefined' && __DEV__;\n\n/**\n * Test is the given value is null.\n */\nexport const isNull = (value: unknown): value is null => value === null;\n\n/**\n * Test if the given value is a function.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const isFunction = (value: unknown): value is Function => typeof value === 'function';\n\n/**\n * Test if a value is defined or not.\n */\nexport const isDefined = (value: unknown): boolean => typeof value !== 'undefined';\n\n/**\n * Test if value is a string.\n */\nexport const isString = (value: unknown): value is string => typeof value === 'string';\n\n/**\n * Test if the given value is an object.\n */\nexport const isObject = (value: unknown): boolean =>\n typeof value === 'object' && !!value && value.toString() === '[object Object]';\n\n/**\n * Test if a given value is a number.\n */\nexport const isNumber = (value: unknown): value is number =>\n typeof value === 'number' && !Number.isNaN(value);\n\n/**\n * Test if a given value is a boolean.\n */\nexport const isBoolean = (value: unknown): value is boolean => typeof value === 'boolean';\n\n// eslint-disable-next-line prefer-destructuring\nexport const isArray = Array.isArray;\n\n/**\n * Test if a given value is an empty string.\n */\nexport const isEmptyString = (value?: unknown): boolean => isString(value) && value.length === 0;\n\n/**\n * Test if the given value is empty.\n */\nexport const isEmpty = (value?) => {\n if (isNull(value) || !isDefined(value)) {\n return true;\n }\n\n if (isString(value) || isArray(value)) {\n return value.length === 0;\n }\n\n if (isObject(value)) {\n return value.constructor === Object && Object.keys(value).length === 0;\n }\n\n return false;\n};\n"],
5
- "mappings": "AACO,MAAM,QAAQ,OAAO,YAAY,eAAe;AAKhD,MAAM,SAAS,CAAC,UAAkC,UAAU;AAM5D,MAAM,aAAa,CAAC,UAAsC,OAAO,UAAU;AAK3E,MAAM,YAAY,CAAC,UAA4B,OAAO,UAAU;AAKhE,MAAM,WAAW,CAAC,UAAoC,OAAO,UAAU;AAKvE,MAAM,WAAW,CAAC,UACvB,OAAO,UAAU,YAAY,CAAC,CAAC,SAAS,MAAM,SAAS,MAAM;AAKxD,MAAM,WAAW,CAAC,UACvB,OAAO,UAAU,YAAY,CAAC,OAAO,MAAM,KAAK;AAK3C,MAAM,YAAY,CAAC,UAAqC,OAAO,UAAU;AAGzE,MAAM,UAAU,MAAM;AAKtB,MAAM,gBAAgB,CAAC,UAA6B,SAAS,KAAK,KAAK,MAAM,WAAW;AAKxF,MAAM,UAAU,CAAC,UAAW;AACjC,MAAI,OAAO,KAAK,KAAK,CAAC,UAAU,KAAK,GAAG;AACtC,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,KAAK,KAAK,QAAQ,KAAK,GAAG;AACrC,WAAO,MAAM,WAAW;AAAA,EAC1B;AAEA,MAAI,SAAS,KAAK,GAAG;AACnB,WAAO,MAAM,gBAAgB,UAAU,OAAO,KAAK,KAAK,EAAE,WAAW;AAAA,EACvE;AAEA,SAAO;AACT;",
4
+ "sourcesContent": ["// eslint-disable-next-line no-undef\n/**\n * @link https://js-toolkit.studiometa.dev/utils/is/isDev.html\n */\nexport const isDev = typeof __DEV__ !== 'undefined' && __DEV__;\n\n/**\n * Test is the given value is null.\n * @link https://js-toolkit.studiometa.dev/utils/is/isNull.html\n*/\nexport const isNull = (value: unknown): value is null => value === null;\n\n/**\n * Test if the given value is a function.\n * @link https://js-toolkit.studiometa.dev/utils/is/isFunction.html\n*/\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const isFunction = (value: unknown): value is Function => typeof value === 'function';\n\n/**\n * Test if a value is defined or not.\n * @link https://js-toolkit.studiometa.dev/utils/is/isDefined.html\n*/\nexport const isDefined = (value: unknown): boolean => typeof value !== 'undefined';\n\n/**\n * Test if value is a string.\n * @link https://js-toolkit.studiometa.dev/utils/is/isString.html\n*/\nexport const isString = (value: unknown): value is string => typeof value === 'string';\n\n/**\n * Test if the given value is an object.\n * @link https://js-toolkit.studiometa.dev/utils/is/isObject.html\n*/\nexport const isObject = (value: unknown): boolean =>\n typeof value === 'object' && !!value && value.toString() === '[object Object]';\n\n/**\n * Test if a given value is a number.\n * @link https://js-toolkit.studiometa.dev/utils/is/isNumber.html\n*/\nexport const isNumber = (value: unknown): value is number =>\n typeof value === 'number' && !Number.isNaN(value);\n\n/**\n * Test if a given value is a boolean.\n * @link https://js-toolkit.studiometa.dev/utils/is/isBoolean.html\n*/\nexport const isBoolean = (value: unknown): value is boolean => typeof value === 'boolean';\n\n// eslint-disable-next-line prefer-destructuring\n/**\n * Test if a given value is an array.\n * @link https://js-toolkit.studiometa.dev/utils/is/isArray.html\n*/\nexport const isArray = Array.isArray;\n\n/**\n * Test if a given value is an empty string.\n * @link https://js-toolkit.studiometa.dev/utils/is/isEmptyString.html\n*/\nexport const isEmptyString = (value?: unknown): boolean => isString(value) && value.length === 0;\n\n/**\n * Test if the given value is empty.\n * @link https://js-toolkit.studiometa.dev/utils/is/isEmpty.html\n*/\nexport const isEmpty = (value?) => {\n if (isNull(value) || !isDefined(value)) {\n return true;\n }\n\n if (isString(value) || isArray(value)) {\n return value.length === 0;\n }\n\n if (isObject(value)) {\n return value.constructor === Object && Object.keys(value).length === 0;\n }\n\n return false;\n};\n"],
5
+ "mappings": "AAIO,MAAM,QAAQ,OAAO,YAAY,eAAe;AAMhD,MAAM,SAAS,CAAC,UAAkC,UAAU;AAO5D,MAAM,aAAa,CAAC,UAAsC,OAAO,UAAU;AAM3E,MAAM,YAAY,CAAC,UAA4B,OAAO,UAAU;AAMhE,MAAM,WAAW,CAAC,UAAoC,OAAO,UAAU;AAMvE,MAAM,WAAW,CAAC,UACvB,OAAO,UAAU,YAAY,CAAC,CAAC,SAAS,MAAM,SAAS,MAAM;AAMxD,MAAM,WAAW,CAAC,UACvB,OAAO,UAAU,YAAY,CAAC,OAAO,MAAM,KAAK;AAM3C,MAAM,YAAY,CAAC,UAAqC,OAAO,UAAU;AAOzE,MAAM,UAAU,MAAM;AAMtB,MAAM,gBAAgB,CAAC,UAA6B,SAAS,KAAK,KAAK,MAAM,WAAW;AAMxF,MAAM,UAAU,CAAC,UAAW;AACjC,MAAI,OAAO,KAAK,KAAK,CAAC,UAAU,KAAK,GAAG;AACtC,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,KAAK,KAAK,QAAQ,KAAK,GAAG;AACrC,WAAO,MAAM,WAAW;AAAA,EAC1B;AAEA,MAAI,SAAS,KAAK,GAAG;AACnB,WAAO,MAAM,gBAAgB,UAAU,OAAO,KAAK,KAAK,EAAE,WAAW;AAAA,EACvE;AAEA,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,6 @@
1
+ /**
2
+ * @link https://js-toolkit.studiometa.dev/utils/keyCodes.html
3
+ */
1
4
  export declare const keyCodes: {
2
5
  readonly ENTER: 13;
3
6
  readonly SPACE: 32;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../packages/js-toolkit/utils/keyCodes.ts"],
4
- "sourcesContent": ["export const keyCodes = {\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} as const;\n"],
5
- "mappings": "AAAO,MAAM,WAAW;AAAA,EACtB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,MAAM;AACR;",
4
+ "sourcesContent": ["/**\n * @link https://js-toolkit.studiometa.dev/utils/keyCodes.html\n */\nexport const keyCodes = {\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} as const;\n"],
5
+ "mappings": "AAGO,MAAM,WAAW;AAAA,EACtB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,MAAM;AACR;",
6
6
  "names": []
7
7
  }
@@ -20,23 +20,28 @@ export type LoadElementsReturnType<T extends LoadableElementsNames> = Promise<{
20
20
  /**
21
21
  * Load the given source for the given type of element.
22
22
  * @todo manage memo
23
- */
23
+ * @link https://js-toolkit.studiometa.dev/utils/loadElement.html
24
+ */
24
25
  export declare function loadElement<T extends LoadableElementsNames>(src: string, type: T, { appendTo }?: LoadElementsOptions): LoadElementsReturnType<T>;
25
26
  /**
26
27
  * Load the given source as an `<img>` element.
27
- */
28
+ * @link https://js-toolkit.studiometa.dev/utils/loadImage.html
29
+ */
28
30
  export declare function loadImage(src: string, options?: LoadElementsOptions): LoadElementsReturnType<"img">;
29
31
  /**
30
32
  * Load the given source as an `<iframe>` element.
31
- */
33
+ * @link https://js-toolkit.studiometa.dev/utils/loadIframe.html
34
+ */
32
35
  export declare function loadIframe(src: string, options?: LoadElementsOptions): LoadElementsReturnType<"iframe">;
33
36
  /**
34
37
  * Load the given source as a `<link>` element.
35
- */
38
+ * @link https://js-toolkit.studiometa.dev/utils/loadLink.html
39
+ */
36
40
  export declare function loadLink(src: string, options?: LoadElementsOptions): LoadElementsReturnType<"link">;
37
41
  /**
38
42
  * Load the given source as a `<script>` element. The generated element is
39
43
  * appended to `document.head` by default, as a script element needs
40
44
  * to be inserted in the DOM to load.
41
- */
45
+ * @link https://js-toolkit.studiometa.dev/utils/loadScript.html
46
+ */
42
47
  export declare function loadScript(src: string, options?: LoadElementsOptions): LoadElementsReturnType<"script">;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../packages/js-toolkit/utils/loadElement.ts"],
4
- "sourcesContent": ["export type LoadableElements = {\n embed: HTMLEmbedElement;\n iframe: HTMLIFrameElement;\n img: HTMLImageElement;\n link: HTMLLinkElement;\n script: HTMLScriptElement;\n track: HTMLTrackElement;\n};\n\nexport type LoadableElementsNames = keyof LoadableElements;\n\nexport type LoadElementsOptions = {\n /**\n * An HTML element where the created element will be appended.\n */\n appendTo?: HTMLElement;\n};\n\nexport type LoadElementsReturnType<T extends LoadableElementsNames> = Promise<{\n event: Event;\n element: LoadableElements[T];\n}>;\n\n/**\n * Load the given source for the given type of element.\n * @todo manage memo\n */\nexport function loadElement<T extends LoadableElementsNames>(\n src: string,\n type: T,\n { appendTo = null }: LoadElementsOptions = {},\n): LoadElementsReturnType<T> {\n return new Promise((resolve, reject) => {\n const eventOptions = { once: true };\n const prop = type === 'link' ? 'href' : 'src';\n const element = document.createElement(type);\n element.addEventListener('load', (event) => resolve({ event, element }), eventOptions);\n element.addEventListener('error', (event) => reject({ event, element }), eventOptions);\n element[prop] = src;\n if (appendTo) {\n appendTo.append(element);\n }\n });\n}\n\n/**\n * Load the given source as an `<img>` element.\n */\nexport function loadImage(src: string, options?: LoadElementsOptions) {\n return loadElement(src, 'img', options);\n}\n\n/**\n * Load the given source as an `<iframe>` element.\n */\nexport function loadIframe(src: string, options?: LoadElementsOptions) {\n return loadElement(src, 'iframe', options);\n}\n\n/**\n * Load the given source as a `<link>` element.\n */\nexport function loadLink(src: string, options?: LoadElementsOptions) {\n return loadElement(src, 'link', options);\n}\n\n/**\n * Load the given source as a `<script>` element. The generated element is\n * appended to `document.head` by default, as a script element needs\n * to be inserted in the DOM to load.\n */\nexport function loadScript(src: string, options?: LoadElementsOptions) {\n return loadElement(src, 'script', { appendTo: document.head, ...options });\n}\n"],
5
- "mappings": "AA2BO,SAAS,YACd,KACA,MACA,EAAE,WAAW,KAAK,IAAyB,CAAC,GACjB;AAC3B,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,eAAe,EAAE,MAAM,KAAK;AAClC,UAAM,OAAO,SAAS,SAAS,SAAS;AACxC,UAAM,UAAU,SAAS,cAAc,IAAI;AAC3C,YAAQ,iBAAiB,QAAQ,CAAC,UAAU,QAAQ,EAAE,OAAO,QAAQ,CAAC,GAAG,YAAY;AACrF,YAAQ,iBAAiB,SAAS,CAAC,UAAU,OAAO,EAAE,OAAO,QAAQ,CAAC,GAAG,YAAY;AACrF,YAAQ,IAAI,IAAI;AAChB,QAAI,UAAU;AACZ,eAAS,OAAO,OAAO;AAAA,IACzB;AAAA,EACF,CAAC;AACH;AAKO,SAAS,UAAU,KAAa,SAA+B;AACpE,SAAO,YAAY,KAAK,OAAO,OAAO;AACxC;AAKO,SAAS,WAAW,KAAa,SAA+B;AACrE,SAAO,YAAY,KAAK,UAAU,OAAO;AAC3C;AAKO,SAAS,SAAS,KAAa,SAA+B;AACnE,SAAO,YAAY,KAAK,QAAQ,OAAO;AACzC;AAOO,SAAS,WAAW,KAAa,SAA+B;AACrE,SAAO,YAAY,KAAK,UAAU,EAAE,UAAU,SAAS,MAAM,GAAG,QAAQ,CAAC;AAC3E;",
4
+ "sourcesContent": ["export type LoadableElements = {\n embed: HTMLEmbedElement;\n iframe: HTMLIFrameElement;\n img: HTMLImageElement;\n link: HTMLLinkElement;\n script: HTMLScriptElement;\n track: HTMLTrackElement;\n};\n\nexport type LoadableElementsNames = keyof LoadableElements;\n\nexport type LoadElementsOptions = {\n /**\n * An HTML element where the created element will be appended.\n */\n appendTo?: HTMLElement;\n};\n\nexport type LoadElementsReturnType<T extends LoadableElementsNames> = Promise<{\n event: Event;\n element: LoadableElements[T];\n}>;\n\n/**\n * Load the given source for the given type of element.\n * @todo manage memo\n * @link https://js-toolkit.studiometa.dev/utils/loadElement.html\n*/\nexport function loadElement<T extends LoadableElementsNames>(\n src: string,\n type: T,\n { appendTo = null }: LoadElementsOptions = {},\n): LoadElementsReturnType<T> {\n return new Promise((resolve, reject) => {\n const eventOptions = { once: true };\n const prop = type === 'link' ? 'href' : 'src';\n const element = document.createElement(type);\n element.addEventListener('load', (event) => resolve({ event, element }), eventOptions);\n element.addEventListener('error', (event) => reject({ event, element }), eventOptions);\n element[prop] = src;\n if (appendTo) {\n appendTo.append(element);\n }\n });\n}\n\n/**\n * Load the given source as an `<img>` element.\n * @link https://js-toolkit.studiometa.dev/utils/loadImage.html\n*/\nexport function loadImage(src: string, options?: LoadElementsOptions) {\n return loadElement(src, 'img', options);\n}\n\n/**\n * Load the given source as an `<iframe>` element.\n * @link https://js-toolkit.studiometa.dev/utils/loadIframe.html\n*/\nexport function loadIframe(src: string, options?: LoadElementsOptions) {\n return loadElement(src, 'iframe', options);\n}\n\n/**\n * Load the given source as a `<link>` element.\n * @link https://js-toolkit.studiometa.dev/utils/loadLink.html\n*/\nexport function loadLink(src: string, options?: LoadElementsOptions) {\n return loadElement(src, 'link', options);\n}\n\n/**\n * Load the given source as a `<script>` element. The generated element is\n * appended to `document.head` by default, as a script element needs\n * to be inserted in the DOM to load.\n * @link https://js-toolkit.studiometa.dev/utils/loadScript.html\n*/\nexport function loadScript(src: string, options?: LoadElementsOptions) {\n return loadElement(src, 'script', { appendTo: document.head, ...options });\n}\n"],
5
+ "mappings": "AA4BO,SAAS,YACd,KACA,MACA,EAAE,WAAW,KAAK,IAAyB,CAAC,GACjB;AAC3B,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,eAAe,EAAE,MAAM,KAAK;AAClC,UAAM,OAAO,SAAS,SAAS,SAAS;AACxC,UAAM,UAAU,SAAS,cAAc,IAAI;AAC3C,YAAQ,iBAAiB,QAAQ,CAAC,UAAU,QAAQ,EAAE,OAAO,QAAQ,CAAC,GAAG,YAAY;AACrF,YAAQ,iBAAiB,SAAS,CAAC,UAAU,OAAO,EAAE,OAAO,QAAQ,CAAC,GAAG,YAAY;AACrF,YAAQ,IAAI,IAAI;AAChB,QAAI,UAAU;AACZ,eAAS,OAAO,OAAO;AAAA,IACzB;AAAA,EACF,CAAC;AACH;AAMO,SAAS,UAAU,KAAa,SAA+B;AACpE,SAAO,YAAY,KAAK,OAAO,OAAO;AACxC;AAMO,SAAS,WAAW,KAAa,SAA+B;AACrE,SAAO,YAAY,KAAK,UAAU,OAAO;AAC3C;AAMO,SAAS,SAAS,KAAa,SAA+B;AACnE,SAAO,YAAY,KAAK,QAAQ,OAAO;AACzC;AAQO,SAAS,WAAW,KAAa,SAA+B;AACrE,SAAO,YAAY,KAAK,UAAU,EAAE,UAAU,SAAS,MAAM,GAAG,QAAQ,CAAC;AAC3E;",
6
6
  "names": []
7
7
  }
@@ -1,9 +1,5 @@
1
1
  /**
2
2
  * Clamp a value in a given range.
3
- *
4
- * @param {number} value
5
- * @param {number} min
6
- * @param {number} max
7
- * @returns {number}
8
- */
3
+ * @link https://js-toolkit.studiometa.dev/utils/math/clamp.html
4
+ */
9
5
  export declare function clamp(value: number, min: number, max: number): number;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/utils/math/clamp.ts"],
4
- "sourcesContent": ["/**\n * Clamp a value in a given range.\n *\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @returns {number}\n */\nexport function clamp(value: number, min: number, max: number) {\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"],
5
- "mappings": "AAQO,SAAS,MAAM,OAAe,KAAa,KAAa;AAE7D,SAAO,MAAM,MACT,QAAQ,MACN,MACA,QAAQ,MACN,MACA,QACJ,QAAQ,MACN,MACA,QAAQ,MACN,MACA;AAEV;",
4
+ "sourcesContent": ["/**\n * Clamp a value in a given range.\n * @link https://js-toolkit.studiometa.dev/utils/math/clamp.html\n*/\nexport function clamp(value: number, min: number, max: number) {\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"],
5
+ "mappings": "AAIO,SAAS,MAAM,OAAe,KAAa,KAAa;AAE7D,SAAO,MAAM,MACT,QAAQ,MACN,MACA,QAAQ,MACN,MACA,QACJ,QAAQ,MACN,MACA,QAAQ,MACN,MACA;AAEV;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,5 @@
1
1
  /**
2
2
  * Clamp a value in the 0–1 range.
3
- *
4
- * @param {number} value
5
- * @returns {number}
6
- */
3
+ * @link https://js-toolkit.studiometa.dev/utils/math/clamp01.html
4
+ */
7
5
  export declare function clamp01(value: number): number;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/utils/math/clamp01.ts"],
4
- "sourcesContent": ["import { clamp } from './clamp.js';\n\n/**\n * Clamp a value in the 0\u20131 range.\n *\n * @param {number} value\n * @returns {number}\n */\nexport function clamp01(value: number) {\n return clamp(value, 0, 1);\n}\n"],
5
- "mappings": "AAAA,SAAS,aAAa;AAQf,SAAS,QAAQ,OAAe;AACrC,SAAO,MAAM,OAAO,GAAG,CAAC;AAC1B;",
4
+ "sourcesContent": ["import { clamp } from './clamp.js';\n\n/**\n * Clamp a value in the 0\u20131 range.\n * @link https://js-toolkit.studiometa.dev/utils/math/clamp01.html\n*/\nexport function clamp01(value: number) {\n return clamp(value, 0, 1);\n}\n"],
5
+ "mappings": "AAAA,SAAS,aAAa;AAMf,SAAS,QAAQ,OAAe;AACrC,SAAO,MAAM,OAAO,GAAG,CAAC;AAC1B;",
6
6
  "names": []
7
7
  }
@@ -1,15 +1,23 @@
1
+ /**
2
+ * Easing function.
3
+ *
4
+ * @param progress Progress value betwen `0` and `1`.
5
+ * @return Eased value between `0` and `1`.
6
+ */
1
7
  export type EasingFunction = (progress: number) => number;
2
8
  /**
3
9
  * Create an out easing function.
4
10
  *
5
- * @param {EasingFunction} easeIn The ease in function.
6
- * @returns {EasingFunction} The out function.
7
- */
11
+ * @param {EasingFunction} easeIn The ease in function.
12
+ * @return {EasingFunction} The out function.
13
+ * @link https://js-toolkit.studiometa.dev/utils/math/createEaseOut.html
14
+ */
8
15
  export declare function createEaseOut(easeIn: EasingFunction): EasingFunction;
9
16
  /**
10
17
  * Create an in-out easing function.
11
18
  *
12
19
  * @param {EasingFunction} easeIn The ease in function.
13
- * @returns {EasingFunction} The in-out function.
14
- */
20
+ * @return {EasingFunction} The in-out function.
21
+ * @link https://js-toolkit.studiometa.dev/utils/math/createEaseInOut.html
22
+ */
15
23
  export declare function createEaseInOut(easeIn: EasingFunction): EasingFunction;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/utils/math/createEases.ts"],
4
- "sourcesContent": ["export type EasingFunction = (progress: number) => number;\n\n/**\n * Create an out easing function.\n *\n * @param {EasingFunction} easeIn The ease in function.\n * @returns {EasingFunction} The out function.\n */\nexport function createEaseOut(easeIn: EasingFunction): EasingFunction {\n return (progress) => 1 - easeIn(1 - progress);\n}\n\n/**\n * Create an in-out easing function.\n *\n * @param {EasingFunction} easeIn The ease in function.\n * @returns {EasingFunction} The in-out function.\n */\nexport function createEaseInOut(easeIn: EasingFunction): EasingFunction {\n /* eslint-disable no-nested-ternary */\n // eslint-disable-next-line no-confusing-arrow\n return (progress) =>\n progress === 0\n ? 0\n : progress === 1\n ? 1\n : progress < 0.5\n ? easeIn(progress * 2) / 2\n : 1 - easeIn((1 - progress) * 2) / 2;\n}\n"],
5
- "mappings": "AAQO,SAAS,cAAc,QAAwC;AACpE,SAAO,CAAC,aAAa,IAAI,OAAO,IAAI,QAAQ;AAC9C;AAQO,SAAS,gBAAgB,QAAwC;AAGtE,SAAO,CAAC,aACN,aAAa,IACT,IACA,aAAa,IACX,IACA,WAAW,MACT,OAAO,WAAW,CAAC,IAAI,IACvB,IAAI,QAAQ,IAAI,YAAY,CAAC,IAAI;AAC7C;",
4
+ "sourcesContent": ["/**\n * Easing function.\n *\n * @param progress Progress value betwen `0` and `1`.\n * @return Eased value between `0` and `1`.\n */\nexport type EasingFunction = (progress: number) => number;\n\n/**\n * Create an out easing function.\n *\n * @param {EasingFunction} easeIn The ease in function.\n * @return {EasingFunction} The out function.\n * @link https://js-toolkit.studiometa.dev/utils/math/createEaseOut.html\n*/\nexport function createEaseOut(easeIn: EasingFunction): EasingFunction {\n return (progress) => 1 - easeIn(1 - progress);\n}\n\n/**\n * Create an in-out easing function.\n *\n * @param {EasingFunction} easeIn The ease in function.\n * @return {EasingFunction} The in-out function.\n * @link https://js-toolkit.studiometa.dev/utils/math/createEaseInOut.html\n*/\nexport function createEaseInOut(easeIn: EasingFunction): EasingFunction {\n /* eslint-disable no-nested-ternary */\n // eslint-disable-next-line no-confusing-arrow\n return (progress) =>\n progress === 0\n ? 0\n : progress === 1\n ? 1\n : progress < 0.5\n ? easeIn(progress * 2) / 2\n : 1 - easeIn((1 - progress) * 2) / 2;\n}\n"],
5
+ "mappings": "AAeO,SAAS,cAAc,QAAwC;AACpE,SAAO,CAAC,aAAa,IAAI,OAAO,IAAI,QAAQ;AAC9C;AASO,SAAS,gBAAgB,QAAwC;AAGtE,SAAO,CAAC,aACN,aAAa,IACT,IACA,aAAa,IACX,IACA,WAAW,MACT,OAAO,WAAW,CAAC,IAAI,IACvB,IAAI,QAAQ,IAAI,YAAY,CAAC,IAAI;AAC7C;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,5 @@
1
1
  /**
2
2
  * Create an array from a given range and with the given incremental step.
3
- */
3
+ * @link https://js-toolkit.studiometa.dev/utils/math/createRange.html
4
+ */
4
5
  export declare function createRange(min: number, max: number, step: number): number[];
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/utils/math/createRange.ts"],
4
- "sourcesContent": ["/**\n * Create an array from a given range and with the given incremental step.\n */\nexport function createRange(min: number, max: number, step: number): number[] {\n const result: number[] = [];\n let value = min;\n\n while (value <= max) {\n result.push(value);\n value += step;\n }\n\n return result;\n}\n"],
5
- "mappings": "AAGO,SAAS,YAAY,KAAa,KAAa,MAAwB;AAC5E,QAAM,SAAmB,CAAC;AAC1B,MAAI,QAAQ;AAEZ,SAAO,SAAS,KAAK;AACnB,WAAO,KAAK,KAAK;AACjB,aAAS;AAAA,EACX;AAEA,SAAO;AACT;",
4
+ "sourcesContent": ["/**\n * Create an array from a given range and with the given incremental step.\n * @link https://js-toolkit.studiometa.dev/utils/math/createRange.html\n*/\nexport function createRange(min: number, max: number, step: number): number[] {\n const result: number[] = [];\n let value = min;\n\n while (value <= max) {\n result.push(value);\n value += step;\n }\n\n return result;\n}\n"],
5
+ "mappings": "AAIO,SAAS,YAAY,KAAa,KAAa,MAAwB;AAC5E,QAAM,SAAmB,CAAC;AAC1B,MAAI,QAAQ;AAEZ,SAAO,SAAS,KAAK;AACnB,WAAO,KAAK,KAAK;AACjB,aAAS;AAAA,EACX;AAEA,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -1,10 +1,11 @@
1
1
  /**
2
2
  * Get the next damped value for a given factor.
3
3
  *
4
- * @param {number} targetValue The final value.
5
- * @param {number} currentValue The current value.
6
- * @param {number} [factor=0.5] The factor used to reach the target value.
7
- * @param {number} [precision=0.01] The precision used to calculate the latest value.
8
- * @returns {number} The next value.
9
- */
4
+ * @param {number} targetValue The final value.
5
+ * @param {number} currentValue The current value.
6
+ * @param {number} [factor=0.5] The factor used to reach the target value, defaults to `0.5`.
7
+ * @param {number} [precision=0.01] The precision used to calculate the latest value, defaults to `0.01`.
8
+ * @return {number} The next value.
9
+ * @link https://js-toolkit.studiometa.dev/utils/math/damp.html
10
+ */
10
11
  export declare function damp(targetValue: number, currentValue: number, factor?: number, precision?: number): number;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/utils/math/damp.ts"],
4
- "sourcesContent": ["/**\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 * @param {number} [precision=0.01] The precision used to calculate the latest value.\n * @returns {number} The next value.\n */\nexport function damp(\n targetValue: number,\n currentValue: number,\n factor = 0.5,\n precision = 0.01,\n) {\n return Math.abs(targetValue - currentValue) < precision\n ? targetValue\n : currentValue + (targetValue - currentValue) * factor;\n}\n"],
5
- "mappings": "AASO,SAAS,KACd,aACA,cACA,SAAS,KACT,YAAY,MACZ;AACA,SAAO,KAAK,IAAI,cAAc,YAAY,IAAI,YAC1C,cACA,gBAAgB,cAAc,gBAAgB;AACpD;",
4
+ "sourcesContent": ["/**\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, defaults to `0.5`.\n * @param {number} [precision=0.01] The precision used to calculate the latest value, defaults to `0.01`.\n * @return {number} The next value.\n * @link https://js-toolkit.studiometa.dev/utils/math/damp.html\n*/\nexport function damp(\n targetValue: number,\n currentValue: number,\n factor = 0.5,\n precision = 0.01,\n) {\n return Math.abs(targetValue - currentValue) < precision\n ? targetValue\n : currentValue + (targetValue - currentValue) * factor;\n}\n"],
5
+ "mappings": "AAUO,SAAS,KACd,aACA,cACA,SAAS,KACT,YAAY,MACZ;AACA,SAAO,KAAK,IAAI,cAAc,YAAY,IAAI,YAC1C,cACA,gBAAgB,cAAc,gBAAgB;AACpD;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,10 @@
1
1
  export { noopValue as easeLinear } from '../noop.js';
2
2
  /**
3
- * @param {number} progress Progress value betwen 0 and 1.
4
- * @returns {number} Eased value between 0 and 1.
3
+ * Ease in quad.
4
+ *
5
+ * @param progress Progress value betwen `0` and `1`.
6
+ * @return Eased value between `0` and `1`.
7
+ * @link https://js-toolkit.studiometa.dev/utils/math/ease.html
5
8
  */
6
9
  export declare function easeInQuad(progress: number): number;
7
10
  export declare const easeOutQuad: import("./createEases.js").EasingFunction;
@@ -9,8 +12,9 @@ export declare const easeInOutQuad: import("./createEases.js").EasingFunction;
9
12
  /**
10
13
  * Ease in cubic.
11
14
  *
12
- * @param {number} progress Progress value betwen 0 and 1.
13
- * @returns {number} Eased value between 0 and 1.
15
+ * @param progress Progress value betwen `0` and `1`.
16
+ * @return Eased value between `0` and `1`.
17
+ * @link https://js-toolkit.studiometa.dev/utils/math/ease.html
14
18
  */
15
19
  export declare function easeInCubic(progress: number): number;
16
20
  export declare const easeOutCubic: import("./createEases.js").EasingFunction;
@@ -18,8 +22,9 @@ export declare const easeInOutCubic: import("./createEases.js").EasingFunction;
18
22
  /**
19
23
  * Ease in quart.
20
24
  *
21
- * @param {number} progress Progress value betwen 0 and 1.
22
- * @returns {number} Eased value between 0 and 1.
25
+ * @param progress Progress value betwen `0` and `1`.
26
+ * @return Eased value between `0` and `1`.
27
+ * @link https://js-toolkit.studiometa.dev/utils/math/ease.html
23
28
  */
24
29
  export declare function easeInQuart(progress: number): number;
25
30
  export declare const easeOutQuart: import("./createEases.js").EasingFunction;
@@ -27,8 +32,9 @@ export declare const easeInOutQuart: import("./createEases.js").EasingFunction;
27
32
  /**
28
33
  * Ease in quint.
29
34
  *
30
- * @param {number} progress Progress value betwen 0 and 1.
31
- * @returns {number} Eased value between 0 and 1.
35
+ * @param progress Progress value betwen `0` and `1`.
36
+ * @return Eased value between `0` and `1`.
37
+ * @link https://js-toolkit.studiometa.dev/utils/math/ease.html
32
38
  */
33
39
  export declare function easeInQuint(progress: number): number;
34
40
  export declare const easeOutQuint: import("./createEases.js").EasingFunction;
@@ -36,8 +42,9 @@ export declare const easeInOutQuint: import("./createEases.js").EasingFunction;
36
42
  /**
37
43
  * Ease in sine.
38
44
  *
39
- * @param {number} progress Progress value betwen 0 and 1.
40
- * @returns {number} Eased value between 0 and 1.
45
+ * @param progress Progress value betwen `0` and `1`.
46
+ * @return Eased value between `0` and `1`.
47
+ * @link https://js-toolkit.studiometa.dev/utils/math/ease.html
41
48
  */
42
49
  export declare function easeInSine(progress: number): number;
43
50
  export declare const easeOutSine: import("./createEases.js").EasingFunction;
@@ -45,8 +52,9 @@ export declare const easeInOutSine: import("./createEases.js").EasingFunction;
45
52
  /**
46
53
  * Ease in circ.
47
54
  *
48
- * @param {number} progress Progress value betwen 0 and 1.
49
- * @returns {number} Eased value between 0 and 1.
55
+ * @param progress Progress value betwen `0` and `1`.
56
+ * @return Eased value between `0` and `1`.
57
+ * @link https://js-toolkit.studiometa.dev/utils/math/ease.html
50
58
  */
51
59
  export declare function easeInCirc(progress: number): number;
52
60
  export declare const easeOutCirc: import("./createEases.js").EasingFunction;
@@ -54,8 +62,9 @@ export declare const easeInOutCirc: import("./createEases.js").EasingFunction;
54
62
  /**
55
63
  * Ease in exponential.
56
64
  *
57
- * @param {number} progress Progress value betwen 0 and 1.
58
- * @returns {number} Eased value between 0 and 1.
65
+ * @param progress Progress value betwen `0` and `1`.
66
+ * @return Eased value between `0` and `1`.
67
+ * @link https://js-toolkit.studiometa.dev/utils/math/ease.html
59
68
  */
60
69
  export declare function easeInExpo(progress: number): number;
61
70
  export declare const easeOutExpo: import("./createEases.js").EasingFunction;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/utils/math/ease.ts"],
4
- "sourcesContent": ["import { createEaseOut, createEaseInOut } from './createEases.js';\n\nexport { noopValue as easeLinear } from '../noop.js';\n\n/**\n * @param {number} progress Progress value betwen 0 and 1.\n * @returns {number} Eased value between 0 and 1.\n */\nexport function easeInQuad(progress: number) {\n return progress ** 2;\n}\n\nexport const easeOutQuad = createEaseOut(easeInQuad);\nexport const easeInOutQuad = createEaseInOut(easeInQuad);\n\n/**\n * Ease in cubic.\n *\n * @param {number} progress Progress value betwen 0 and 1.\n * @returns {number} Eased value between 0 and 1.\n */\nexport function easeInCubic(progress: number) {\n return progress ** 3;\n}\n\nexport const easeOutCubic = createEaseOut(easeInCubic);\nexport const easeInOutCubic = createEaseInOut(easeInCubic);\n\n/**\n * Ease in quart.\n *\n * @param {number} progress Progress value betwen 0 and 1.\n * @returns {number} Eased value between 0 and 1.\n */\nexport function easeInQuart(progress: number) {\n return progress ** 4;\n}\n\nexport const easeOutQuart = createEaseOut(easeInQuart);\nexport const easeInOutQuart = createEaseInOut(easeInQuart);\n\n/**\n * Ease in quint.\n *\n * @param {number} progress Progress value betwen 0 and 1.\n * @returns {number} Eased value between 0 and 1.\n */\nexport function easeInQuint(progress: number) {\n return progress ** 5;\n}\n\nexport const easeOutQuint = createEaseOut(easeInQuint);\nexport const easeInOutQuint = createEaseInOut(easeInQuint);\n\n/**\n * Ease in sine.\n *\n * @param {number} progress Progress value betwen 0 and 1.\n * @returns {number} Eased value between 0 and 1.\n */\nexport function easeInSine(progress: number) {\n return progress === 1 ? 1 : -Math.cos((progress * Math.PI) / 2) + 1;\n}\n\nexport const easeOutSine = createEaseOut(easeInSine);\nexport const easeInOutSine = createEaseInOut(easeInSine);\n\n/**\n * Ease in circ.\n *\n * @param {number} progress Progress value betwen 0 and 1.\n * @returns {number} Eased value between 0 and 1.\n */\nexport function easeInCirc(progress: number) {\n return -(Math.sqrt(1 - progress * progress) - 1);\n}\n\nexport const easeOutCirc = createEaseOut(easeInCirc);\nexport const easeInOutCirc = createEaseInOut(easeInCirc);\n\n/**\n * Ease in exponential.\n *\n * @param {number} progress Progress value betwen 0 and 1.\n * @returns {number} Eased value between 0 and 1.\n */\nexport function easeInExpo(progress: number) {\n return progress === 0 ? 0 : 2 ** (10 * (progress - 1));\n}\n\nexport const easeOutExpo = createEaseOut(easeInExpo);\nexport const easeInOutExpo = createEaseInOut(easeInExpo);\n"],
5
- "mappings": "AAAA,SAAS,eAAe,uBAAuB;AAE/C,SAAsB,iBAAkB;AAMjC,SAAS,WAAW,UAAkB;AAC3C,SAAO,YAAY;AACrB;AAEO,MAAM,cAAc,cAAc,UAAU;AAC5C,MAAM,gBAAgB,gBAAgB,UAAU;AAQhD,SAAS,YAAY,UAAkB;AAC5C,SAAO,YAAY;AACrB;AAEO,MAAM,eAAe,cAAc,WAAW;AAC9C,MAAM,iBAAiB,gBAAgB,WAAW;AAQlD,SAAS,YAAY,UAAkB;AAC5C,SAAO,YAAY;AACrB;AAEO,MAAM,eAAe,cAAc,WAAW;AAC9C,MAAM,iBAAiB,gBAAgB,WAAW;AAQlD,SAAS,YAAY,UAAkB;AAC5C,SAAO,YAAY;AACrB;AAEO,MAAM,eAAe,cAAc,WAAW;AAC9C,MAAM,iBAAiB,gBAAgB,WAAW;AAQlD,SAAS,WAAW,UAAkB;AAC3C,SAAO,aAAa,IAAI,IAAI,CAAC,KAAK,IAAK,WAAW,KAAK,KAAM,CAAC,IAAI;AACpE;AAEO,MAAM,cAAc,cAAc,UAAU;AAC5C,MAAM,gBAAgB,gBAAgB,UAAU;AAQhD,SAAS,WAAW,UAAkB;AAC3C,SAAO,EAAE,KAAK,KAAK,IAAI,WAAW,QAAQ,IAAI;AAChD;AAEO,MAAM,cAAc,cAAc,UAAU;AAC5C,MAAM,gBAAgB,gBAAgB,UAAU;AAQhD,SAAS,WAAW,UAAkB;AAC3C,SAAO,aAAa,IAAI,IAAI,MAAM,MAAM,WAAW;AACrD;AAEO,MAAM,cAAc,cAAc,UAAU;AAC5C,MAAM,gBAAgB,gBAAgB,UAAU;",
4
+ "sourcesContent": ["import { createEaseOut, createEaseInOut } from './createEases.js';\n\nexport { noopValue as easeLinear } from '../noop.js';\n\n/**\n * Ease in quad.\n *\n * @param progress Progress value betwen `0` and `1`.\n * @return Eased value between `0` and `1`.\n * @link https://js-toolkit.studiometa.dev/utils/math/ease.html\n */\nexport function easeInQuad(progress: number) {\n return progress ** 2;\n}\n\nexport const easeOutQuad = createEaseOut(easeInQuad);\nexport const easeInOutQuad = createEaseInOut(easeInQuad);\n\n/**\n * Ease in cubic.\n *\n * @param progress Progress value betwen `0` and `1`.\n * @return Eased value between `0` and `1`.\n * @link https://js-toolkit.studiometa.dev/utils/math/ease.html\n */\nexport function easeInCubic(progress: number) {\n return progress ** 3;\n}\n\nexport const easeOutCubic = createEaseOut(easeInCubic);\nexport const easeInOutCubic = createEaseInOut(easeInCubic);\n\n/**\n * Ease in quart.\n *\n * @param progress Progress value betwen `0` and `1`.\n * @return Eased value between `0` and `1`.\n * @link https://js-toolkit.studiometa.dev/utils/math/ease.html\n */\nexport function easeInQuart(progress: number) {\n return progress ** 4;\n}\n\nexport const easeOutQuart = createEaseOut(easeInQuart);\nexport const easeInOutQuart = createEaseInOut(easeInQuart);\n\n/**\n * Ease in quint.\n *\n * @param progress Progress value betwen `0` and `1`.\n * @return Eased value between `0` and `1`.\n * @link https://js-toolkit.studiometa.dev/utils/math/ease.html\n */\nexport function easeInQuint(progress: number) {\n return progress ** 5;\n}\n\nexport const easeOutQuint = createEaseOut(easeInQuint);\nexport const easeInOutQuint = createEaseInOut(easeInQuint);\n\n/**\n * Ease in sine.\n *\n * @param progress Progress value betwen `0` and `1`.\n * @return Eased value between `0` and `1`.\n * @link https://js-toolkit.studiometa.dev/utils/math/ease.html\n */\nexport function easeInSine(progress: number) {\n return progress === 1 ? 1 : -Math.cos((progress * Math.PI) / 2) + 1;\n}\n\nexport const easeOutSine = createEaseOut(easeInSine);\nexport const easeInOutSine = createEaseInOut(easeInSine);\n\n/**\n * Ease in circ.\n *\n * @param progress Progress value betwen `0` and `1`.\n * @return Eased value between `0` and `1`.\n * @link https://js-toolkit.studiometa.dev/utils/math/ease.html\n */\nexport function easeInCirc(progress: number) {\n return -(Math.sqrt(1 - progress * progress) - 1);\n}\n\nexport const easeOutCirc = createEaseOut(easeInCirc);\nexport const easeInOutCirc = createEaseInOut(easeInCirc);\n\n/**\n * Ease in exponential.\n *\n * @param progress Progress value betwen `0` and `1`.\n * @return Eased value between `0` and `1`.\n * @link https://js-toolkit.studiometa.dev/utils/math/ease.html\n */\nexport function easeInExpo(progress: number) {\n return progress === 0 ? 0 : 2 ** (10 * (progress - 1));\n}\n\nexport const easeOutExpo = createEaseOut(easeInExpo);\nexport const easeInOutExpo = createEaseInOut(easeInExpo);\n"],
5
+ "mappings": "AAAA,SAAS,eAAe,uBAAuB;AAE/C,SAAsB,iBAAkB;AASjC,SAAS,WAAW,UAAkB;AAC3C,SAAO,YAAY;AACrB;AAEO,MAAM,cAAc,cAAc,UAAU;AAC5C,MAAM,gBAAgB,gBAAgB,UAAU;AAShD,SAAS,YAAY,UAAkB;AAC5C,SAAO,YAAY;AACrB;AAEO,MAAM,eAAe,cAAc,WAAW;AAC9C,MAAM,iBAAiB,gBAAgB,WAAW;AASlD,SAAS,YAAY,UAAkB;AAC5C,SAAO,YAAY;AACrB;AAEO,MAAM,eAAe,cAAc,WAAW;AAC9C,MAAM,iBAAiB,gBAAgB,WAAW;AASlD,SAAS,YAAY,UAAkB;AAC5C,SAAO,YAAY;AACrB;AAEO,MAAM,eAAe,cAAc,WAAW;AAC9C,MAAM,iBAAiB,gBAAgB,WAAW;AASlD,SAAS,WAAW,UAAkB;AAC3C,SAAO,aAAa,IAAI,IAAI,CAAC,KAAK,IAAK,WAAW,KAAK,KAAM,CAAC,IAAI;AACpE;AAEO,MAAM,cAAc,cAAc,UAAU;AAC5C,MAAM,gBAAgB,gBAAgB,UAAU;AAShD,SAAS,WAAW,UAAkB;AAC3C,SAAO,EAAE,KAAK,KAAK,IAAI,WAAW,QAAQ,IAAI;AAChD;AAEO,MAAM,cAAc,cAAc,UAAU;AAC5C,MAAM,gBAAgB,gBAAgB,UAAU;AAShD,SAAS,WAAW,UAAkB;AAC3C,SAAO,aAAa,IAAI,IAAI,MAAM,MAAM,WAAW;AACrD;AAEO,MAAM,cAAc,cAAc,UAAU;AAC5C,MAAM,gBAAgB,gBAAgB,UAAU;",
6
6
  "names": []
7
7
  }
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * Get the final damped value for a given factor.
3
3
  *
4
- * @param {number} initialValue The final value.
5
- * @param {number} initialDelta The current value.
6
- * @param {number} [dampFactor=0.85] The speed to reach the target value.
7
- * @returns {number} The next value.
8
- */
4
+ * @param initialValue The final value.
5
+ * @param initialDelta The current value.
6
+ * @param [dampFactor=0.85] The speed to reach the target value, defaults to `0.85`.
7
+ * @returns The next value.
8
+ * @link https://js-toolkit.studiometa.dev/utils/math/inertiaFinalValue.html
9
+ */
9
10
  export declare function inertiaFinalValue(initialValue: number, initialDelta: number, dampFactor?: number): number;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/utils/math/inertiaFinalValue.ts"],
4
- "sourcesContent": ["import { clamp } from './clamp.js';\n\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} [dampFactor=0.85] The speed to reach the target value.\n * @returns {number} The next value.\n */\nexport function inertiaFinalValue(initialValue: number, initialDelta: number, dampFactor = 0.85) {\n // eslint-disable-next-line no-param-reassign\n dampFactor = clamp(dampFactor, 0.00001, 0.99999);\n let delta = initialDelta;\n let finalValue = initialValue;\n\n while (Math.abs(delta) > 0.1) {\n finalValue += delta;\n delta *= dampFactor;\n }\n\n return finalValue;\n}\n"],
5
- "mappings": "AAAA,SAAS,aAAa;AAUf,SAAS,kBAAkB,cAAsB,cAAsB,aAAa,MAAM;AAE/F,eAAa,MAAM,YAAY,MAAS,OAAO;AAC/C,MAAI,QAAQ;AACZ,MAAI,aAAa;AAEjB,SAAO,KAAK,IAAI,KAAK,IAAI,KAAK;AAC5B,kBAAc;AACd,aAAS;AAAA,EACX;AAEA,SAAO;AACT;",
4
+ "sourcesContent": ["import { clamp } from './clamp.js';\n\n/**\n * Get the final damped value for a given factor.\n *\n * @param initialValue The final value.\n * @param initialDelta The current value.\n * @param [dampFactor=0.85] The speed to reach the target value, defaults to `0.85`.\n * @returns The next value.\n * @link https://js-toolkit.studiometa.dev/utils/math/inertiaFinalValue.html\n*/\nexport function inertiaFinalValue(initialValue: number, initialDelta: number, dampFactor = 0.85) {\n // eslint-disable-next-line no-param-reassign\n dampFactor = clamp(dampFactor, 0.00001, 0.99999);\n let delta = initialDelta;\n let finalValue = initialValue;\n\n while (Math.abs(delta) > 0.1) {\n finalValue += delta;\n delta *= dampFactor;\n }\n\n return finalValue;\n}\n"],
5
+ "mappings": "AAAA,SAAS,aAAa;AAWf,SAAS,kBAAkB,cAAsB,cAAsB,aAAa,MAAM;AAE/F,eAAa,MAAM,YAAY,MAAS,OAAO;AAC/C,MAAI,QAAQ;AACZ,MAAI,aAAa;AAEjB,SAAO,KAAK,IAAI,KAAK,IAAI,KAAK;AAC5B,kBAAc;AACd,aAAS;AAAA,EACX;AAEA,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * Interpolate the ratio between a given interval.
3
3
  *
4
- * @param {number} min The interval minimum value.
5
- * @param {number} max The inverval maximum value.
6
- * @param {number} ratio The ratio to get.
7
- * @returns {number} The value between min and max corresponding to ratio.
8
- */
4
+ * @param min The interval minimum value.
5
+ * @param max The inverval maximum value.
6
+ * @param ratio The ratio to get.
7
+ * @return The value between min and max corresponding to ratio.
8
+ * @link https://js-toolkit.studiometa.dev/utils/math/lerp.html
9
+ */
9
10
  export declare function lerp(min: number, max: number, ratio: number): number;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/utils/math/lerp.ts"],
4
- "sourcesContent": ["/**\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 * @returns {number} The value between min and max corresponding to ratio.\n */\nexport function lerp(min: number, max: number, ratio: number) {\n return (1 - ratio) * min + ratio * max;\n}\n"],
5
- "mappings": "AAQO,SAAS,KAAK,KAAa,KAAa,OAAe;AAC5D,UAAQ,IAAI,SAAS,MAAM,QAAQ;AACrC;",
4
+ "sourcesContent": ["/**\n * Interpolate the ratio between a given interval.\n *\n * @param min The interval minimum value.\n * @param max The inverval maximum value.\n * @param ratio The ratio to get.\n * @return The value between min and max corresponding to ratio.\n * @link https://js-toolkit.studiometa.dev/utils/math/lerp.html\n*/\nexport function lerp(min: number, max: number, ratio: number) {\n return (1 - ratio) * min + ratio * max;\n}\n"],
5
+ "mappings": "AASO,SAAS,KAAK,KAAa,KAAa,OAAe;AAC5D,UAAQ,IAAI,SAAS,MAAM,QAAQ;AACrC;",
6
6
  "names": []
7
7
  }
@@ -6,6 +6,7 @@
6
6
  * @param {number} inputMax The input's maximum value.
7
7
  * @param {number} outputMin The output's minimum value.
8
8
  * @param {number} outputMax The output's maximum value.
9
- * @returns {number} The input value mapped to the output range.
10
- */
9
+ * @return {number} The input value mapped to the output range.
10
+ * @link https://js-toolkit.studiometa.dev/utils/math/map.html
11
+ */
11
12
  export declare function map(value: number, inputMin: number, inputMax: number, outputMin: number, outputMax: number): number;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/utils/math/map.ts"],
4
- "sourcesContent": ["/**\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 * @returns {number} The input value mapped to the output range.\n */\nexport function map(\n value: number,\n inputMin: number,\n inputMax: number,\n outputMin: number,\n outputMax: number,\n) {\n return ((value - inputMin) * (outputMax - outputMin)) / (inputMax - inputMin) + outputMin;\n}\n"],
5
- "mappings": "AAUO,SAAS,IACd,OACA,UACA,UACA,WACA,WACA;AACA,UAAS,QAAQ,aAAa,YAAY,cAAe,WAAW,YAAY;AAClF;",
4
+ "sourcesContent": ["/**\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 * @link https://js-toolkit.studiometa.dev/utils/math/map.html\n*/\nexport function map(\n value: number,\n inputMin: number,\n inputMax: number,\n outputMin: number,\n outputMax: number,\n) {\n return ((value - inputMin) * (outputMax - outputMin)) / (inputMax - inputMin) + outputMin;\n}\n"],
5
+ "mappings": "AAWO,SAAS,IACd,OACA,UACA,UACA,WACA,WACA;AACA,UAAS,QAAQ,aAAa,YAAY,cAAe,WAAW,YAAY;AAClF;",
6
6
  "names": []
7
7
  }
@@ -1 +1,4 @@
1
+ /**
2
+ * @link https://js-toolkit.studiometa.dev/utils/math/mean.html
3
+ */
1
4
  export declare function mean(numbers: number[]): number;