@studiometa/js-toolkit 2.10.3 → 2.12.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 (275) hide show
  1. package/Base/Base.cjs +155 -60
  2. package/Base/Base.cjs.map +2 -2
  3. package/Base/Base.d.ts +1 -1
  4. package/Base/Base.js +138 -38
  5. package/Base/Base.js.map +2 -2
  6. package/Base/managers/AbstractManager.cjs +21 -0
  7. package/Base/managers/AbstractManager.cjs.map +2 -2
  8. package/Base/managers/AbstractManager.d.ts +1 -0
  9. package/Base/managers/AbstractManager.js +21 -0
  10. package/Base/managers/AbstractManager.js.map +2 -2
  11. package/Base/managers/ChildrenManager.cjs +41 -8
  12. package/Base/managers/ChildrenManager.cjs.map +3 -3
  13. package/Base/managers/ChildrenManager.js +41 -8
  14. package/Base/managers/ChildrenManager.js.map +2 -2
  15. package/Base/managers/EventsManager.cjs +94 -9
  16. package/Base/managers/EventsManager.cjs.map +2 -2
  17. package/Base/managers/EventsManager.d.ts +1 -0
  18. package/Base/managers/EventsManager.js +90 -9
  19. package/Base/managers/EventsManager.js.map +2 -2
  20. package/Base/managers/OptionsManager.cjs +29 -2
  21. package/Base/managers/OptionsManager.cjs.map +2 -2
  22. package/Base/managers/OptionsManager.d.ts +1 -0
  23. package/Base/managers/OptionsManager.js +25 -2
  24. package/Base/managers/OptionsManager.js.map +2 -2
  25. package/Base/managers/RefsManager.cjs +32 -5
  26. package/Base/managers/RefsManager.cjs.map +2 -2
  27. package/Base/managers/RefsManager.d.ts +1 -1
  28. package/Base/managers/RefsManager.js +40 -6
  29. package/Base/managers/RefsManager.js.map +2 -2
  30. package/Base/managers/ResponsiveOptionsManager.cjs +22 -6
  31. package/Base/managers/ResponsiveOptionsManager.cjs.map +2 -2
  32. package/Base/managers/ResponsiveOptionsManager.js +22 -6
  33. package/Base/managers/ResponsiveOptionsManager.js.map +2 -2
  34. package/Base/managers/ServicesManager.cjs +54 -4
  35. package/Base/managers/ServicesManager.cjs.map +2 -2
  36. package/Base/managers/ServicesManager.js +54 -4
  37. package/Base/managers/ServicesManager.js.map +2 -2
  38. package/Base/utils.cjs +4 -0
  39. package/Base/utils.cjs.map +2 -2
  40. package/Base/utils.d.ts +1 -0
  41. package/Base/utils.js +4 -0
  42. package/Base/utils.js.map +2 -2
  43. package/decorators/index.cjs +3 -2
  44. package/decorators/index.cjs.map +2 -2
  45. package/decorators/index.d.ts +3 -2
  46. package/decorators/index.js +3 -2
  47. package/decorators/index.js.map +2 -2
  48. package/decorators/withBreakpointManager.cjs +14 -4
  49. package/decorators/withBreakpointManager.cjs.map +2 -2
  50. package/decorators/withBreakpointManager.js +14 -4
  51. package/decorators/withBreakpointManager.js.map +2 -2
  52. package/decorators/withBreakpointObserver.cjs +11 -1
  53. package/decorators/withBreakpointObserver.cjs.map +2 -2
  54. package/decorators/withBreakpointObserver.js +12 -2
  55. package/decorators/withBreakpointObserver.js.map +2 -2
  56. package/decorators/withDrag.cjs +6 -0
  57. package/decorators/withDrag.cjs.map +1 -1
  58. package/decorators/withDrag.js +6 -0
  59. package/decorators/withDrag.js.map +1 -1
  60. package/decorators/withExtraConfig.cjs +7 -0
  61. package/decorators/withExtraConfig.cjs.map +1 -1
  62. package/decorators/withExtraConfig.js +3 -0
  63. package/decorators/withExtraConfig.js.map +1 -1
  64. package/decorators/withFreezedOptions.cjs +8 -0
  65. package/decorators/withFreezedOptions.cjs.map +2 -2
  66. package/decorators/withFreezedOptions.js +8 -0
  67. package/decorators/withFreezedOptions.js.map +2 -2
  68. package/decorators/withIntersectionObserver.cjs +10 -1
  69. package/decorators/withIntersectionObserver.cjs.map +2 -2
  70. package/decorators/withIntersectionObserver.js +10 -1
  71. package/decorators/withIntersectionObserver.js.map +2 -2
  72. package/decorators/withMountOnMediaQuery.cjs +16 -0
  73. package/decorators/withMountOnMediaQuery.cjs.map +2 -2
  74. package/decorators/withMountOnMediaQuery.js +16 -0
  75. package/decorators/withMountOnMediaQuery.js.map +2 -2
  76. package/decorators/withMountWhenInView.cjs +21 -0
  77. package/decorators/withMountWhenInView.cjs.map +2 -2
  78. package/decorators/withMountWhenInView.js +21 -0
  79. package/decorators/withMountWhenInView.js.map +2 -2
  80. package/decorators/withRelativePointer.cjs +56 -0
  81. package/decorators/withRelativePointer.cjs.map +7 -0
  82. package/decorators/withRelativePointer.d.ts +13 -0
  83. package/decorators/withRelativePointer.js +34 -0
  84. package/decorators/withRelativePointer.js.map +7 -0
  85. package/decorators/withResponsiveOptions.cjs +3 -0
  86. package/decorators/withResponsiveOptions.cjs.map +1 -1
  87. package/decorators/withResponsiveOptions.js +3 -0
  88. package/decorators/withResponsiveOptions.js.map +1 -1
  89. package/decorators/withScrolledInView/utils.cjs +6 -6
  90. package/decorators/withScrolledInView/utils.cjs.map +2 -2
  91. package/decorators/withScrolledInView/utils.js +7 -7
  92. package/decorators/withScrolledInView/utils.js.map +2 -2
  93. package/decorators/withScrolledInView/withScrolledInView.cjs +33 -0
  94. package/decorators/withScrolledInView/withScrolledInView.cjs.map +2 -2
  95. package/decorators/withScrolledInView/withScrolledInView.js +33 -0
  96. package/decorators/withScrolledInView/withScrolledInView.js.map +2 -2
  97. package/decorators/withVue2.cjs +3 -0
  98. package/decorators/withVue2.cjs.map +1 -1
  99. package/decorators/withVue2.js +3 -0
  100. package/decorators/withVue2.js.map +1 -1
  101. package/helpers/createApp.cjs +2 -2
  102. package/helpers/createApp.cjs.map +2 -2
  103. package/helpers/createApp.js +2 -2
  104. package/helpers/createApp.js.map +2 -2
  105. package/helpers/getClosestParent.cjs +4 -0
  106. package/helpers/getClosestParent.cjs.map +1 -1
  107. package/helpers/getDirectChildren.cjs.map +1 -1
  108. package/helpers/getDirectChildren.js.map +1 -1
  109. package/helpers/importOnInteraction.cjs +4 -4
  110. package/helpers/importOnInteraction.cjs.map +2 -2
  111. package/helpers/importOnInteraction.js +4 -4
  112. package/helpers/importOnInteraction.js.map +2 -2
  113. package/helpers/importWhenPrefersMotion.cjs +4 -0
  114. package/helpers/importWhenPrefersMotion.cjs.map +1 -1
  115. package/helpers/importWhenVisible.cjs +2 -1
  116. package/helpers/importWhenVisible.cjs.map +2 -2
  117. package/helpers/importWhenVisible.js +2 -1
  118. package/helpers/importWhenVisible.js.map +2 -2
  119. package/helpers/index.cjs +4 -0
  120. package/helpers/index.cjs.map +1 -1
  121. package/package.json +5 -2
  122. package/services/drag.cjs +12 -8
  123. package/services/drag.cjs.map +2 -2
  124. package/services/drag.js +8 -8
  125. package/services/drag.js.map +2 -2
  126. package/services/index.cjs +4 -0
  127. package/services/index.cjs.map +1 -1
  128. package/services/key.cjs +6 -2
  129. package/services/key.cjs.map +2 -2
  130. package/services/key.js +2 -2
  131. package/services/key.js.map +2 -2
  132. package/services/load.cjs +3 -0
  133. package/services/load.cjs.map +2 -2
  134. package/services/load.js +3 -0
  135. package/services/load.js.map +2 -2
  136. package/services/pointer.cjs +33 -20
  137. package/services/pointer.cjs.map +3 -3
  138. package/services/pointer.d.ts +1 -3
  139. package/services/pointer.js +33 -20
  140. package/services/pointer.js.map +3 -3
  141. package/services/raf.cjs +2 -2
  142. package/services/raf.cjs.map +2 -2
  143. package/services/raf.js +2 -2
  144. package/services/raf.js.map +2 -2
  145. package/services/resize.cjs +4 -0
  146. package/services/resize.cjs.map +1 -1
  147. package/services/scroll.cjs +4 -0
  148. package/services/scroll.cjs.map +1 -1
  149. package/services/service.cjs +2 -2
  150. package/services/service.cjs.map +2 -2
  151. package/services/service.js +2 -2
  152. package/services/service.js.map +2 -2
  153. package/utils/Queue.cjs +30 -0
  154. package/utils/Queue.cjs.map +1 -1
  155. package/utils/Queue.js +30 -0
  156. package/utils/Queue.js.map +1 -1
  157. package/utils/SmartQueue.cjs +16 -0
  158. package/utils/SmartQueue.cjs.map +2 -2
  159. package/utils/SmartQueue.js +12 -0
  160. package/utils/SmartQueue.js.map +2 -2
  161. package/utils/collide/collidePointRect.cjs +4 -1
  162. package/utils/collide/collidePointRect.cjs.map +1 -1
  163. package/utils/collide/collidePointRect.js +4 -1
  164. package/utils/collide/collidePointRect.js.map +1 -1
  165. package/utils/collide/collideRectRect.cjs +4 -1
  166. package/utils/collide/collideRectRect.cjs.map +1 -1
  167. package/utils/collide/collideRectRect.js +4 -1
  168. package/utils/collide/collideRectRect.js.map +1 -1
  169. package/utils/collide/index.cjs +4 -0
  170. package/utils/collide/index.cjs.map +1 -1
  171. package/utils/css/animate.cjs +21 -12
  172. package/utils/css/animate.cjs.map +2 -2
  173. package/utils/css/animate.js +17 -12
  174. package/utils/css/animate.js.map +2 -2
  175. package/utils/css/classes.cjs +2 -3
  176. package/utils/css/classes.cjs.map +2 -2
  177. package/utils/css/classes.js +2 -3
  178. package/utils/css/classes.js.map +2 -2
  179. package/utils/css/index.cjs +4 -0
  180. package/utils/css/index.cjs.map +1 -1
  181. package/utils/css/matrix.cjs.map +1 -1
  182. package/utils/css/matrix.js.map +1 -1
  183. package/utils/css/styles.cjs +2 -2
  184. package/utils/css/styles.cjs.map +2 -2
  185. package/utils/css/styles.js +2 -2
  186. package/utils/css/styles.js.map +2 -2
  187. package/utils/css/transform.cjs.map +1 -1
  188. package/utils/css/transform.js.map +1 -1
  189. package/utils/css/transition.cjs +19 -0
  190. package/utils/css/transition.cjs.map +2 -2
  191. package/utils/css/transition.js +15 -0
  192. package/utils/css/transition.js.map +2 -2
  193. package/utils/focusTrap.cjs +4 -0
  194. package/utils/focusTrap.cjs.map +2 -2
  195. package/utils/focusTrap.d.ts +1 -0
  196. package/utils/focusTrap.js.map +2 -2
  197. package/utils/history.cjs +6 -5
  198. package/utils/history.cjs.map +2 -2
  199. package/utils/history.js +6 -5
  200. package/utils/history.js.map +2 -2
  201. package/utils/index.cjs +4 -0
  202. package/utils/index.cjs.map +1 -1
  203. package/utils/math/clamp.cjs.map +2 -2
  204. package/utils/math/clamp.d.ts +1 -0
  205. package/utils/math/clamp.js.map +2 -2
  206. package/utils/math/clamp01.cjs +4 -0
  207. package/utils/math/clamp01.cjs.map +2 -2
  208. package/utils/math/clamp01.d.ts +1 -0
  209. package/utils/math/clamp01.js.map +2 -2
  210. package/utils/math/index.cjs +4 -0
  211. package/utils/math/index.cjs.map +1 -1
  212. package/utils/math/inertiaFinalValue.cjs +4 -0
  213. package/utils/math/inertiaFinalValue.cjs.map +1 -1
  214. package/utils/nextFrame.cjs.map +2 -2
  215. package/utils/nextFrame.d.ts +1 -0
  216. package/utils/nextFrame.js.map +2 -2
  217. package/utils/noop.cjs.map +2 -2
  218. package/utils/noop.d.ts +1 -0
  219. package/utils/noop.js.map +2 -2
  220. package/utils/object/autoBind.cjs +11 -5
  221. package/utils/object/autoBind.cjs.map +2 -2
  222. package/utils/object/autoBind.js +7 -5
  223. package/utils/object/autoBind.js.map +2 -2
  224. package/utils/object/index.cjs +4 -0
  225. package/utils/object/index.cjs.map +1 -1
  226. package/utils/scheduler.cjs +4 -4
  227. package/utils/scheduler.cjs.map +2 -2
  228. package/utils/scheduler.js +4 -4
  229. package/utils/scheduler.js.map +2 -2
  230. package/utils/scrollTo.cjs +4 -0
  231. package/utils/scrollTo.cjs.map +2 -2
  232. package/utils/scrollTo.d.ts +1 -0
  233. package/utils/scrollTo.js.map +2 -2
  234. package/utils/string/endsWith.cjs +35 -0
  235. package/utils/string/endsWith.cjs.map +7 -0
  236. package/utils/string/endsWith.d.ts +8 -0
  237. package/utils/string/endsWith.js +13 -0
  238. package/utils/string/endsWith.js.map +7 -0
  239. package/utils/string/index.cjs +7 -0
  240. package/utils/string/index.cjs.map +2 -2
  241. package/utils/string/index.d.ts +2 -0
  242. package/utils/string/index.js +2 -0
  243. package/utils/string/index.js.map +2 -2
  244. package/utils/string/startsWith.cjs +35 -0
  245. package/utils/string/startsWith.cjs.map +7 -0
  246. package/utils/string/startsWith.d.ts +8 -0
  247. package/utils/string/startsWith.js +13 -0
  248. package/utils/string/startsWith.js.map +7 -0
  249. package/utils/string/withLeadingCharacters.cjs +4 -0
  250. package/utils/string/withLeadingCharacters.cjs.map +1 -1
  251. package/utils/string/withLeadingCharacters.js.map +1 -1
  252. package/utils/string/withLeadingSlash.cjs +4 -0
  253. package/utils/string/withLeadingSlash.cjs.map +1 -1
  254. package/utils/string/withTrailingCharacters.cjs +4 -0
  255. package/utils/string/withTrailingCharacters.cjs.map +1 -1
  256. package/utils/string/withTrailingCharacters.js.map +1 -1
  257. package/utils/string/withTrailingSlash.cjs +4 -0
  258. package/utils/string/withTrailingSlash.cjs.map +1 -1
  259. package/utils/string/withoutLeadingCharacters.cjs.map +1 -1
  260. package/utils/string/withoutLeadingCharacters.js.map +1 -1
  261. package/utils/string/withoutLeadingCharactersRecursive.cjs +4 -0
  262. package/utils/string/withoutLeadingCharactersRecursive.cjs.map +1 -1
  263. package/utils/string/withoutLeadingCharactersRecursive.js.map +1 -1
  264. package/utils/string/withoutLeadingSlash.cjs +4 -0
  265. package/utils/string/withoutLeadingSlash.cjs.map +1 -1
  266. package/utils/string/withoutTrailingCharacters.cjs.map +1 -1
  267. package/utils/string/withoutTrailingCharacters.js.map +1 -1
  268. package/utils/string/withoutTrailingCharactersRecursive.cjs +4 -0
  269. package/utils/string/withoutTrailingCharactersRecursive.cjs.map +1 -1
  270. package/utils/string/withoutTrailingCharactersRecursive.js.map +1 -1
  271. package/utils/string/withoutTrailingSlash.cjs +4 -0
  272. package/utils/string/withoutTrailingSlash.cjs.map +1 -1
  273. package/utils/tween.cjs +4 -0
  274. package/utils/tween.cjs.map +1 -1
  275. package/utils/tween.js.map +1 -1
@@ -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';\n\nexport interface HistoryOptions {\n path?: string;\n search?: URLSearchParams | { [key: string]: unknown };\n hash?: string;\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 * @returns {URLSearchParams} The updated URLSearchParams instance.\n */\nfunction updateUrlSearchParam(\n params: URLSearchParams,\n name: string,\n value: string | number | boolean | Array<unknown> | Record<string, unknown>,\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 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 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 * @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 (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 * @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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAkC;AAClC,iBAA0B;AAe1B,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,UAAI,mBAAQ,KAAK,GAAG;AAClB,UAAM,QAAQ,CAAC,KAAK,UAAU;AAC5B,YAAM,YAAY,GAAG,QAAQ;AAC7B,2BAAqB,QAAQ,WAAW,GAAG;AAAA,IAC7C,CAAC;AACD,WAAO;AAAA,EACT;AAEA,UAAI,oBAAS,KAAK,GAAG;AACnB,WAAO,QAAQ,KAAK,EAAE,QAAQ,CAAC,CAAC,KAAK,GAAG,MAAM;AAC5C,YAAM,aAAa,GAAG,QAAQ;AAC9B,2BAAqB,QAAQ,YAAY,GAAG;AAAA,IAC9C,CAAC;AACD,WAAO;AAAA,EACT;AAEA,SAAO,IAAI,MAAM,KAAe;AAChC,SAAO;AACT;AASO,SAAS,wBACd,KACA,oBAAgB,sBAAU,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;AAUA,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;AAAA,EACnC;AAEA,MAAI,MAAM;AACR,QAAI,KAAK,WAAW,GAAG,GAAG;AACxB,aAAO;AAAA,IACT,OAAO;AACL,aAAO,IAAI;AAAA,IACb;AAAA,EACF;AAEA,QAAM,SAAS,GAAG;AAClB,SAAO,QAAQ,QAAQ,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 * @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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAkC;AAClC,iBAA0B;AAC1B,oBAA2B;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,UAAI,mBAAQ,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,UAAI,oBAAS,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,oBAAgB,sBAAU,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,YAAI,0BAAW,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;",
6
6
  "names": []
7
7
  }
package/utils/history.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { isArray, isObject } from "./is.js";
2
2
  import { hasWindow } from "./has.js";
3
+ import { startsWith } from "./string/index.js";
3
4
  function updateUrlSearchParam(params, name, value) {
4
5
  if (value === "" || value === null || value === void 0) {
5
6
  if (params.has(name)) {
@@ -8,17 +9,17 @@ function updateUrlSearchParam(params, name, value) {
8
9
  return params;
9
10
  }
10
11
  if (isArray(value)) {
11
- value.forEach((val, index) => {
12
+ for (const [index, val] of value.entries()) {
12
13
  const arrayName = `${name}[${index}]`;
13
14
  updateUrlSearchParam(params, arrayName, val);
14
- });
15
+ }
15
16
  return params;
16
17
  }
17
18
  if (isObject(value)) {
18
- Object.entries(value).forEach(([key, val]) => {
19
+ for (const [key, val] of Object.entries(value)) {
19
20
  const objectName = `${name}[${key}]`;
20
21
  updateUrlSearchParam(params, objectName, val);
21
- });
22
+ }
22
23
  return params;
23
24
  }
24
25
  params.set(name, value);
@@ -46,7 +47,7 @@ function updateHistory(mode, options, data = {}, title = "") {
46
47
  url += `?${mergedSearch.toString()}`;
47
48
  }
48
49
  if (hash) {
49
- if (hash.startsWith("#")) {
50
+ if (startsWith(hash, "#")) {
50
51
  url += hash;
51
52
  } else {
52
53
  url += `#${hash}`;
@@ -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';\n\nexport interface HistoryOptions {\n path?: string;\n search?: URLSearchParams | { [key: string]: unknown };\n hash?: string;\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 * @returns {URLSearchParams} The updated URLSearchParams instance.\n */\nfunction updateUrlSearchParam(\n params: URLSearchParams,\n name: string,\n value: string | number | boolean | Array<unknown> | Record<string, unknown>,\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 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 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 * @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 (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 * @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;AAe1B,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,UAAM,QAAQ,CAAC,KAAK,UAAU;AAC5B,YAAM,YAAY,GAAG,QAAQ;AAC7B,2BAAqB,QAAQ,WAAW,GAAG;AAAA,IAC7C,CAAC;AACD,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,KAAK,GAAG;AACnB,WAAO,QAAQ,KAAK,EAAE,QAAQ,CAAC,CAAC,KAAK,GAAG,MAAM;AAC5C,YAAM,aAAa,GAAG,QAAQ;AAC9B,2BAAqB,QAAQ,YAAY,GAAG;AAAA,IAC9C,CAAC;AACD,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;AAUA,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;AAAA,EACnC;AAEA,MAAI,MAAM;AACR,QAAI,KAAK,WAAW,GAAG,GAAG;AACxB,aAAO;AAAA,IACT,OAAO;AACL,aAAO,IAAI;AAAA,IACb;AAAA,EACF;AAEA,QAAM,SAAS,GAAG;AAClB,SAAO,QAAQ,QAAQ,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 * @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;",
6
6
  "names": []
7
7
  }
package/utils/index.cjs CHANGED
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
18
18
  };
19
19
  var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
20
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
25
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
26
  mod
23
27
  ));
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../packages/js-toolkit/utils/index.ts"],
4
4
  "sourcesContent": ["export { default as debounce } from './debounce.js';\nexport { default as focusTrap } from './focusTrap.js';\nexport { default as keyCodes } from './keyCodes.js';\nexport { default as memoize } from './memoize.js';\nexport { nextFrame } from './nextFrame.js';\nexport { default as nextTick } from './nextTick.js';\nexport { default as nextMicrotask } from './nextMicrotask.js';\nexport { default as throttle } from './throttle.js';\nexport { default as scrollTo } from './scrollTo.js';\nexport { default as getComponentResolver } from './getComponentResolver.js';\nexport * from './is.js';\nexport * from './has.js';\n// eslint-disable-next-line import/extensions\nexport * from './css/index.js';\nexport {\n objectToURLSearchParams,\n push as historyPush,\n replace as historyReplace,\n} from './history.js';\nexport * from './collide/index.js';\nexport * from './math/index.js';\nexport * from './string/index.js';\nexport * from './scheduler.js';\nexport * from './noop.js';\nexport { tween } from './tween.js';\nexport { Queue } from './Queue.js';\nexport { SmartQueue } from './SmartQueue.js';\nexport * from './dom/index.js';\nexport * from './wait.js';\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAoC;AACpC,uBAAqC;AACrC,sBAAoC;AACpC,qBAAmC;AACnC,uBAA0B;AAC1B,sBAAoC;AACpC,2BAAyC;AACzC,sBAAoC;AACpC,sBAAoC;AACpC,kCAAgD;AAChD,0BAAc,qBAVd;AAWA,0BAAc,sBAXd;AAaA,0BAAc,4BAbd;AAcA,qBAIO;AACP,0BAAc,gCAnBd;AAoBA,0BAAc,6BApBd;AAqBA,0BAAc,+BArBd;AAsBA,0BAAc,4BAtBd;AAuBA,0BAAc,uBAvBd;AAwBA,mBAAsB;AACtB,mBAAsB;AACtB,wBAA2B;AAC3B,0BAAc,4BA3Bd;AA4BA,0BAAc,uBA5Bd;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAoC;AACpC,uBAAqC;AACrC,sBAAoC;AACpC,qBAAmC;AACnC,uBAA0B;AAC1B,sBAAoC;AACpC,2BAAyC;AACzC,sBAAoC;AACpC,sBAAoC;AACpC,kCAAgD;AAChD,0BAAc,qBAVd;AAWA,0BAAc,sBAXd;AAaA,0BAAc,4BAbd;AAcA,qBAIO;AACP,0BAAc,gCAnBd;AAoBA,0BAAc,6BApBd;AAqBA,0BAAc,+BArBd;AAsBA,0BAAc,4BAtBd;AAuBA,0BAAc,uBAvBd;AAwBA,mBAAsB;AACtB,mBAAsB;AACtB,wBAA2B;AAC3B,0BAAc,4BA3Bd;AA4BA,0BAAc,uBA5Bd;",
6
6
  "names": []
7
7
  }
@@ -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 * @param {number} value\n * @param {number} min\n * @param {number} max\n * @returns {number}\n */\nexport default 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": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOe,SAAR,MAAuB,OAAe,KAAa,KAAa;AAErE,SAAO,MAAM,MACT,QAAQ,MACN,MACA,QAAQ,MACR,MACA,QACF,QAAQ,MACR,MACA,QAAQ,MACR,MACA;AAEN;",
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 default 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": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQe,SAAR,MAAuB,OAAe,KAAa,KAAa;AAErE,SAAO,MAAM,MACT,QAAQ,MACN,MACA,QAAQ,MACR,MACA,QACF,QAAQ,MACR,MACA,QAAQ,MACR,MACA;AAEN;",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,6 @@
1
1
  /**
2
2
  * Clamp a value in a given range.
3
+ *
3
4
  * @param {number} value
4
5
  * @param {number} min
5
6
  * @param {number} max
@@ -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 * @param {number} value\n * @param {number} min\n * @param {number} max\n * @returns {number}\n */\nexport default 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": "AAOe,SAAR,MAAuB,OAAe,KAAa,KAAa;AAErE,SAAO,MAAM,MACT,QAAQ,MACN,MACA,QAAQ,MACR,MACA,QACF,QAAQ,MACR,MACA,QAAQ,MACR,MACA;AAEN;",
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 default 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": "AAQe,SAAR,MAAuB,OAAe,KAAa,KAAa;AAErE,SAAO,MAAM,MACT,QAAQ,MACN,MACA,QAAQ,MACR,MACA,QACF,QAAQ,MACR,MACA,QAAQ,MACR,MACA;AAEN;",
6
6
  "names": []
7
7
  }
@@ -17,6 +17,10 @@ var __copyProps = (to, from, except, desc) => {
17
17
  return to;
18
18
  };
19
19
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
20
24
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
25
  mod
22
26
  ));
@@ -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 * @param {number} value\n * @returns {number}\n */\nexport default function clamp01(value: number) {\n return clamp(value, 0, 1);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAOH,SAAR,QAAyB,OAAe;AAC7C,aAAO,aAAAA,SAAM,OAAO,GAAG,CAAC;AAC1B;",
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 default function clamp01(value: number) {\n return clamp(value, 0, 1);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAQH,SAAR,QAAyB,OAAe;AAC7C,aAAO,aAAAA,SAAM,OAAO,GAAG,CAAC;AAC1B;",
6
6
  "names": ["clamp"]
7
7
  }
@@ -1,5 +1,6 @@
1
1
  /**
2
2
  * Clamp a value in the 0–1 range.
3
+ *
3
4
  * @param {number} value
4
5
  * @returns {number}
5
6
  */
@@ -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 * @param {number} value\n * @returns {number}\n */\nexport default function clamp01(value: number) {\n return clamp(value, 0, 1);\n}\n"],
5
- "mappings": "AAAA,OAAO,WAAW;AAOH,SAAR,QAAyB,OAAe;AAC7C,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 *\n * @param {number} value\n * @returns {number}\n */\nexport default function clamp01(value: number) {\n return clamp(value, 0, 1);\n}\n"],
5
+ "mappings": "AAAA,OAAO,WAAW;AAQH,SAAR,QAAyB,OAAe;AAC7C,SAAO,MAAM,OAAO,GAAG,CAAC;AAC1B;",
6
6
  "names": []
7
7
  }
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
18
18
  };
19
19
  var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
20
20
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
25
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
26
  mod
23
27
  ));
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/utils/math/index.ts"],
4
4
  "sourcesContent": ["export { default as clamp } from './clamp.js';\nexport { default as clamp01 } from './clamp01.js';\nexport { default as damp } from './damp.js';\nexport { default as inertiaFinalValue } from './inertiaFinalValue.js';\nexport { default as lerp } from './lerp.js';\nexport { default as map } from './map.js';\nexport { default as round } from './round.js';\nexport * from './ease.js';\nexport * as ease from './ease.js';\nexport * from './createEases.js';\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAiC;AACjC,qBAAmC;AACnC,kBAAgC;AAChC,+BAA6C;AAC7C,kBAAgC;AAChC,iBAA+B;AAC/B,mBAAiC;AACjC,yBAAc,uBAPd;AAQA,WAAsB;AACtB,yBAAc,8BATd;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAiC;AACjC,qBAAmC;AACnC,kBAAgC;AAChC,+BAA6C;AAC7C,kBAAgC;AAChC,iBAA+B;AAC/B,mBAAiC;AACjC,yBAAc,uBAPd;AAQA,WAAsB;AACtB,yBAAc,8BATd;",
6
6
  "names": []
7
7
  }
@@ -17,6 +17,10 @@ var __copyProps = (to, from, except, desc) => {
17
17
  return to;
18
18
  };
19
19
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
20
24
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
25
  mod
22
26
  ));
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/utils/math/inertiaFinalValue.ts"],
4
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 default function inertiaFinalValue(\n initialValue: number,\n initialDelta: number,\n dampFactor = 0.85,\n) {\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;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAUH,SAAR,kBACL,cACA,cACA,aAAa,MACb;AAEA,mBAAa,aAAAA,SAAM,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;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAUH,SAAR,kBACL,cACA,cACA,aAAa,MACb;AAEA,mBAAa,aAAAA,SAAM,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": ["clamp"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../packages/js-toolkit/utils/nextFrame.ts"],
4
- "sourcesContent": ["import { isFunction } from './is.js';\nimport { hasWindow } from './has.js';\n\n/**\n * RequestAnimation frame polyfill.\n * @see https://github.com/vuejs/vue/blob/ec78fc8b6d03e59da669be1adf4b4b5abf670a34/dist/vue.runtime.esm.js#L7355\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function getRaf(): (handler: Function) => number {\n return hasWindow() && window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout;\n}\n\n/**\n * Get a function to cancel the method returned by `getRaf()`.\n */\nexport function getCancelRaf(): (id: number) => void {\n return hasWindow() && window.cancelAnimationFrame\n ? window.cancelAnimationFrame.bind(window)\n : clearTimeout;\n}\n\n/**\n * Wait for the next frame to execute a function.\n *\n * @template {() => any} T\n * @param {T} [fn] The callback function to execute.\n * @returns {Promise<T extends Function ? ReturnType<T> : undefined>} A Promise resolving when the next frame is reached.\n * @example\n * ```js\n * nextFrame(() => console.log('hello world'));\n *\n * await nextFrame();\n * console.log('hello world');\n * ```\n */\nexport function nextFrame<T extends () => unknown>(\n fn?: T,\n): Promise<T extends () => unknown ? ReturnType<T> : void> {\n return new Promise((resolve) => {\n // @ts-ignore\n getRaf()(() => resolve(isFunction(fn) && fn()));\n });\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAA2B;AAC3B,iBAA0B;AAOnB,SAAS,SAAwC;AACtD,aAAO,sBAAU,KAAK,OAAO,wBACzB,OAAO,sBAAsB,KAAK,MAAM,IACxC;AACN;AAKO,SAAS,eAAqC;AACnD,aAAO,sBAAU,KAAK,OAAO,uBACzB,OAAO,qBAAqB,KAAK,MAAM,IACvC;AACN;AAgBO,SAAS,UACd,IACyD;AACzD,SAAO,IAAI,QAAQ,CAAC,YAAY;AAE9B,WAAO,EAAE,MAAM,YAAQ,sBAAW,EAAE,KAAK,GAAG,CAAC,CAAC;AAAA,EAChD,CAAC;AACH;",
4
+ "sourcesContent": ["import { isFunction } from './is.js';\nimport { hasWindow } from './has.js';\n\n/**\n * RequestAnimation frame polyfill.\n *\n * @see https://github.com/vuejs/vue/blob/ec78fc8b6d03e59da669be1adf4b4b5abf670a34/dist/vue.runtime.esm.js#L7355\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function getRaf(): (handler: Function) => number {\n return hasWindow() && window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout;\n}\n\n/**\n * Get a function to cancel the method returned by `getRaf()`.\n */\nexport function getCancelRaf(): (id: number) => void {\n return hasWindow() && window.cancelAnimationFrame\n ? window.cancelAnimationFrame.bind(window)\n : clearTimeout;\n}\n\n/**\n * Wait for the next frame to execute a function.\n *\n * @template {() => any} T\n * @param {T} [fn] The callback function to execute.\n * @returns {Promise<T extends Function ? ReturnType<T> : undefined>} A Promise resolving when the next frame is reached.\n * @example\n * ```js\n * nextFrame(() => console.log('hello world'));\n *\n * await nextFrame();\n * console.log('hello world');\n * ```\n */\nexport function nextFrame<T extends () => unknown>(\n fn?: T,\n): Promise<T extends () => unknown ? ReturnType<T> : void> {\n return new Promise((resolve) => {\n // @ts-ignore\n getRaf()(() => resolve(isFunction(fn) && fn()));\n });\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAA2B;AAC3B,iBAA0B;AAQnB,SAAS,SAAwC;AACtD,aAAO,sBAAU,KAAK,OAAO,wBACzB,OAAO,sBAAsB,KAAK,MAAM,IACxC;AACN;AAKO,SAAS,eAAqC;AACnD,aAAO,sBAAU,KAAK,OAAO,uBACzB,OAAO,qBAAqB,KAAK,MAAM,IACvC;AACN;AAgBO,SAAS,UACd,IACyD;AACzD,SAAO,IAAI,QAAQ,CAAC,YAAY;AAE9B,WAAO,EAAE,MAAM,YAAQ,sBAAW,EAAE,KAAK,GAAG,CAAC,CAAC;AAAA,EAChD,CAAC;AACH;",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,6 @@
1
1
  /**
2
2
  * RequestAnimation frame polyfill.
3
+ *
3
4
  * @see https://github.com/vuejs/vue/blob/ec78fc8b6d03e59da669be1adf4b4b5abf670a34/dist/vue.runtime.esm.js#L7355
4
5
  */
5
6
  export declare function getRaf(): (handler: Function) => number;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../packages/js-toolkit/utils/nextFrame.ts"],
4
- "sourcesContent": ["import { isFunction } from './is.js';\nimport { hasWindow } from './has.js';\n\n/**\n * RequestAnimation frame polyfill.\n * @see https://github.com/vuejs/vue/blob/ec78fc8b6d03e59da669be1adf4b4b5abf670a34/dist/vue.runtime.esm.js#L7355\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function getRaf(): (handler: Function) => number {\n return hasWindow() && window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout;\n}\n\n/**\n * Get a function to cancel the method returned by `getRaf()`.\n */\nexport function getCancelRaf(): (id: number) => void {\n return hasWindow() && window.cancelAnimationFrame\n ? window.cancelAnimationFrame.bind(window)\n : clearTimeout;\n}\n\n/**\n * Wait for the next frame to execute a function.\n *\n * @template {() => any} T\n * @param {T} [fn] The callback function to execute.\n * @returns {Promise<T extends Function ? ReturnType<T> : undefined>} A Promise resolving when the next frame is reached.\n * @example\n * ```js\n * nextFrame(() => console.log('hello world'));\n *\n * await nextFrame();\n * console.log('hello world');\n * ```\n */\nexport function nextFrame<T extends () => unknown>(\n fn?: T,\n): Promise<T extends () => unknown ? ReturnType<T> : void> {\n return new Promise((resolve) => {\n // @ts-ignore\n getRaf()(() => resolve(isFunction(fn) && fn()));\n });\n}\n"],
5
- "mappings": "AAAA,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAOnB,SAAS,SAAwC;AACtD,SAAO,UAAU,KAAK,OAAO,wBACzB,OAAO,sBAAsB,KAAK,MAAM,IACxC;AACN;AAKO,SAAS,eAAqC;AACnD,SAAO,UAAU,KAAK,OAAO,uBACzB,OAAO,qBAAqB,KAAK,MAAM,IACvC;AACN;AAgBO,SAAS,UACd,IACyD;AACzD,SAAO,IAAI,QAAQ,CAAC,YAAY;AAE9B,WAAO,EAAE,MAAM,QAAQ,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC;AAAA,EAChD,CAAC;AACH;",
4
+ "sourcesContent": ["import { isFunction } from './is.js';\nimport { hasWindow } from './has.js';\n\n/**\n * RequestAnimation frame polyfill.\n *\n * @see https://github.com/vuejs/vue/blob/ec78fc8b6d03e59da669be1adf4b4b5abf670a34/dist/vue.runtime.esm.js#L7355\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function getRaf(): (handler: Function) => number {\n return hasWindow() && window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout;\n}\n\n/**\n * Get a function to cancel the method returned by `getRaf()`.\n */\nexport function getCancelRaf(): (id: number) => void {\n return hasWindow() && window.cancelAnimationFrame\n ? window.cancelAnimationFrame.bind(window)\n : clearTimeout;\n}\n\n/**\n * Wait for the next frame to execute a function.\n *\n * @template {() => any} T\n * @param {T} [fn] The callback function to execute.\n * @returns {Promise<T extends Function ? ReturnType<T> : undefined>} A Promise resolving when the next frame is reached.\n * @example\n * ```js\n * nextFrame(() => console.log('hello world'));\n *\n * await nextFrame();\n * console.log('hello world');\n * ```\n */\nexport function nextFrame<T extends () => unknown>(\n fn?: T,\n): Promise<T extends () => unknown ? ReturnType<T> : void> {\n return new Promise((resolve) => {\n // @ts-ignore\n getRaf()(() => resolve(isFunction(fn) && fn()));\n });\n}\n"],
5
+ "mappings": "AAAA,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAQnB,SAAS,SAAwC;AACtD,SAAO,UAAU,KAAK,OAAO,wBACzB,OAAO,sBAAsB,KAAK,MAAM,IACxC;AACN;AAKO,SAAS,eAAqC;AACnD,SAAO,UAAU,KAAK,OAAO,uBACzB,OAAO,qBAAqB,KAAK,MAAM,IACvC;AACN;AAgBO,SAAS,UACd,IACyD;AACzD,SAAO,IAAI,QAAQ,CAAC,YAAY;AAE9B,WAAO,EAAE,MAAM,QAAQ,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC;AAAA,EAChD,CAAC;AACH;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../packages/js-toolkit/utils/noop.ts"],
4
- "sourcesContent": ["/**\n * No operation function.\n * @returns {void}\n */\nexport function noop() {}\n\n/**\n * No operation function which return the given value unaltered.\n */\nexport function noopValue<T>(value: T): T {\n return value;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIO,SAAS,OAAO;AAAC;AAKjB,SAAS,UAAa,OAAa;AACxC,SAAO;AACT;",
4
+ "sourcesContent": ["/**\n * No operation function.\n *\n * @returns {void}\n */\nexport function noop() {}\n\n/**\n * No operation function which return the given value unaltered.\n */\nexport function noopValue<T>(value: T): T {\n return value;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,SAAS,OAAO;AAAC;AAKjB,SAAS,UAAa,OAAa;AACxC,SAAO;AACT;",
6
6
  "names": []
7
7
  }
package/utils/noop.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  /**
2
2
  * No operation function.
3
+ *
3
4
  * @returns {void}
4
5
  */
5
6
  export declare function noop(): void;
package/utils/noop.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../packages/js-toolkit/utils/noop.ts"],
4
- "sourcesContent": ["/**\n * No operation function.\n * @returns {void}\n */\nexport function noop() {}\n\n/**\n * No operation function which return the given value unaltered.\n */\nexport function noopValue<T>(value: T): T {\n return value;\n}\n"],
5
- "mappings": "AAIO,SAAS,OAAO;AAAC;AAKjB,SAAS,UAAa,OAAa;AACxC,SAAO;AACT;",
4
+ "sourcesContent": ["/**\n * No operation function.\n *\n * @returns {void}\n */\nexport function noop() {}\n\n/**\n * No operation function which return the given value unaltered.\n */\nexport function noopValue<T>(value: T): T {\n return value;\n}\n"],
5
+ "mappings": "AAKO,SAAS,OAAO;AAAC;AAKjB,SAAS,UAAa,OAAa;AACxC,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -17,6 +17,10 @@ var __copyProps = (to, from, except, desc) => {
17
17
  return to;
18
18
  };
19
19
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
20
24
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
25
  mod
22
26
  ));
@@ -42,12 +46,14 @@ function autoBind(instance, options) {
42
46
  }
43
47
  return true;
44
48
  };
45
- (0, import_getAllProperties.default)(instance).filter(([key]) => key !== "constructor" && filter(key)).forEach(([key, object]) => {
46
- const descriptor = Object.getOwnPropertyDescriptor(object, key);
47
- if (descriptor && (0, import_is.isFunction)(descriptor.value)) {
48
- instance[key] = instance[key].bind(instance);
49
+ for (const [key, object] of (0, import_getAllProperties.default)(instance)) {
50
+ if (key !== "constructor" && filter(key)) {
51
+ const descriptor = Object.getOwnPropertyDescriptor(object, key);
52
+ if (descriptor && (0, import_is.isFunction)(descriptor.value)) {
53
+ instance[key] = instance[key].bind(instance);
54
+ }
49
55
  }
50
- });
56
+ }
51
57
  return instance;
52
58
  }
53
59
  if (module.exports.default) module.exports = module.exports.default;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/utils/object/autoBind.ts"],
4
- "sourcesContent": ["import getAllProperties from './getAllProperties.js';\nimport { isString, isFunction } from '../is.js';\n\nexport interface AutoBindOptions {\n include?: Array<string | RegExp>;\n exclude?: Array<string | RegExp>;\n}\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 * @returns {Object} The instance.\n */\nexport default function autoBind<T>(instance: T, options: AutoBindOptions): T {\n const { exclude, include } = options || {};\n const filter = (key) => {\n const match = (pattern) => (isString(pattern) ? 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 && isFunction(descriptor.value)) {\n instance[key] = instance[key].bind(instance);\n }\n });\n\n return instance;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAA6B;AAC7B,gBAAqC;AAgBtB,SAAR,SAA6B,UAAa,SAA6B;AAC5E,QAAM,EAAE,SAAS,QAAQ,IAAI,WAAW,CAAC;AACzC,QAAM,SAAS,CAAC,QAAQ;AACtB,UAAM,QAAQ,CAAC,gBAAa,oBAAS,OAAO,IAAI,QAAQ,UAAU,QAAQ,KAAK,GAAG;AAElF,QAAI,SAAS;AACX,aAAO,QAAQ,KAAK,KAAK;AAAA,IAC3B;AAEA,QAAI,SAAS;AACX,aAAO,CAAC,QAAQ,KAAK,KAAK;AAAA,IAC5B;AAEA,WAAO;AAAA,EACT;AAEA,8BAAAA,SAAiB,QAAQ,EACtB,OAAO,CAAC,CAAC,GAAG,MAAM,QAAQ,iBAAiB,OAAO,GAAG,CAAC,EACtD,QAAQ,CAAC,CAAC,KAAK,MAAM,MAAM;AAC1B,UAAM,aAAa,OAAO,yBAAyB,QAAQ,GAAG;AAC9D,QAAI,kBAAc,sBAAW,WAAW,KAAK,GAAG;AAC9C,eAAS,OAAO,SAAS,KAAK,KAAK,QAAQ;AAAA,IAC7C;AAAA,EACF,CAAC;AAEH,SAAO;AACT;",
4
+ "sourcesContent": ["import getAllProperties from './getAllProperties.js';\nimport { isString, isFunction } from '../is.js';\n\nexport interface AutoBindOptions {\n include?: Array<string | RegExp>;\n exclude?: Array<string | RegExp>;\n}\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 * @returns {Object} The instance.\n */\nexport default function autoBind<T>(instance: T, options: AutoBindOptions): T {\n const { exclude, include } = options || {};\n const filter = (key) => {\n const match = (pattern) => (isString(pattern) ? 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 for (const [key, object] of getAllProperties(instance)) {\n if (key !== 'constructor' && filter(key)) {\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n if (descriptor && isFunction(descriptor.value)) {\n instance[key] = instance[key].bind(instance);\n }\n }\n }\n\n return instance;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAA6B;AAC7B,gBAAqC;AAgBtB,SAAR,SAA6B,UAAa,SAA6B;AAC5E,QAAM,EAAE,SAAS,QAAQ,IAAI,WAAW,CAAC;AACzC,QAAM,SAAS,CAAC,QAAQ;AACtB,UAAM,QAAQ,CAAC,gBAAa,oBAAS,OAAO,IAAI,QAAQ,UAAU,QAAQ,KAAK,GAAG;AAElF,QAAI,SAAS;AACX,aAAO,QAAQ,KAAK,KAAK;AAAA,IAC3B;AAEA,QAAI,SAAS;AACX,aAAO,CAAC,QAAQ,KAAK,KAAK;AAAA,IAC5B;AAEA,WAAO;AAAA,EACT;AAEA,aAAW,CAAC,KAAK,MAAM,SAAK,wBAAAA,SAAiB,QAAQ,GAAG;AACtD,QAAI,QAAQ,iBAAiB,OAAO,GAAG,GAAG;AACxC,YAAM,aAAa,OAAO,yBAAyB,QAAQ,GAAG;AAC9D,UAAI,kBAAc,sBAAW,WAAW,KAAK,GAAG;AAC9C,iBAAS,GAAG,IAAI,SAAS,GAAG,EAAE,KAAK,QAAQ;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;",
6
6
  "names": ["getAllProperties"]
7
7
  }
@@ -12,12 +12,14 @@ function autoBind(instance, options) {
12
12
  }
13
13
  return true;
14
14
  };
15
- getAllProperties(instance).filter(([key]) => key !== "constructor" && filter(key)).forEach(([key, object]) => {
16
- const descriptor = Object.getOwnPropertyDescriptor(object, key);
17
- if (descriptor && isFunction(descriptor.value)) {
18
- instance[key] = instance[key].bind(instance);
15
+ for (const [key, object] of getAllProperties(instance)) {
16
+ if (key !== "constructor" && filter(key)) {
17
+ const descriptor = Object.getOwnPropertyDescriptor(object, key);
18
+ if (descriptor && isFunction(descriptor.value)) {
19
+ instance[key] = instance[key].bind(instance);
20
+ }
19
21
  }
20
- });
22
+ }
21
23
  return instance;
22
24
  }
23
25
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/utils/object/autoBind.ts"],
4
- "sourcesContent": ["import getAllProperties from './getAllProperties.js';\nimport { isString, isFunction } from '../is.js';\n\nexport interface AutoBindOptions {\n include?: Array<string | RegExp>;\n exclude?: Array<string | RegExp>;\n}\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 * @returns {Object} The instance.\n */\nexport default function autoBind<T>(instance: T, options: AutoBindOptions): T {\n const { exclude, include } = options || {};\n const filter = (key) => {\n const match = (pattern) => (isString(pattern) ? 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 && isFunction(descriptor.value)) {\n instance[key] = instance[key].bind(instance);\n }\n });\n\n return instance;\n}\n"],
5
- "mappings": "AAAA,OAAO,sBAAsB;AAC7B,SAAS,UAAU,kBAAkB;AAgBtB,SAAR,SAA6B,UAAa,SAA6B;AAC5E,QAAM,EAAE,SAAS,QAAQ,IAAI,WAAW,CAAC;AACzC,QAAM,SAAS,CAAC,QAAQ;AACtB,UAAM,QAAQ,CAAC,YAAa,SAAS,OAAO,IAAI,QAAQ,UAAU,QAAQ,KAAK,GAAG;AAElF,QAAI,SAAS;AACX,aAAO,QAAQ,KAAK,KAAK;AAAA,IAC3B;AAEA,QAAI,SAAS;AACX,aAAO,CAAC,QAAQ,KAAK,KAAK;AAAA,IAC5B;AAEA,WAAO;AAAA,EACT;AAEA,mBAAiB,QAAQ,EACtB,OAAO,CAAC,CAAC,GAAG,MAAM,QAAQ,iBAAiB,OAAO,GAAG,CAAC,EACtD,QAAQ,CAAC,CAAC,KAAK,MAAM,MAAM;AAC1B,UAAM,aAAa,OAAO,yBAAyB,QAAQ,GAAG;AAC9D,QAAI,cAAc,WAAW,WAAW,KAAK,GAAG;AAC9C,eAAS,OAAO,SAAS,KAAK,KAAK,QAAQ;AAAA,IAC7C;AAAA,EACF,CAAC;AAEH,SAAO;AACT;",
4
+ "sourcesContent": ["import getAllProperties from './getAllProperties.js';\nimport { isString, isFunction } from '../is.js';\n\nexport interface AutoBindOptions {\n include?: Array<string | RegExp>;\n exclude?: Array<string | RegExp>;\n}\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 * @returns {Object} The instance.\n */\nexport default function autoBind<T>(instance: T, options: AutoBindOptions): T {\n const { exclude, include } = options || {};\n const filter = (key) => {\n const match = (pattern) => (isString(pattern) ? 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 for (const [key, object] of getAllProperties(instance)) {\n if (key !== 'constructor' && filter(key)) {\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n if (descriptor && isFunction(descriptor.value)) {\n instance[key] = instance[key].bind(instance);\n }\n }\n }\n\n return instance;\n}\n"],
5
+ "mappings": "AAAA,OAAO,sBAAsB;AAC7B,SAAS,UAAU,kBAAkB;AAgBtB,SAAR,SAA6B,UAAa,SAA6B;AAC5E,QAAM,EAAE,SAAS,QAAQ,IAAI,WAAW,CAAC;AACzC,QAAM,SAAS,CAAC,QAAQ;AACtB,UAAM,QAAQ,CAAC,YAAa,SAAS,OAAO,IAAI,QAAQ,UAAU,QAAQ,KAAK,GAAG;AAElF,QAAI,SAAS;AACX,aAAO,QAAQ,KAAK,KAAK;AAAA,IAC3B;AAEA,QAAI,SAAS;AACX,aAAO,CAAC,QAAQ,KAAK,KAAK;AAAA,IAC5B;AAEA,WAAO;AAAA,EACT;AAEA,aAAW,CAAC,KAAK,MAAM,KAAK,iBAAiB,QAAQ,GAAG;AACtD,QAAI,QAAQ,iBAAiB,OAAO,GAAG,GAAG;AACxC,YAAM,aAAa,OAAO,yBAAyB,QAAQ,GAAG;AAC9D,UAAI,cAAc,WAAW,WAAW,KAAK,GAAG;AAC9C,iBAAS,GAAG,IAAI,SAAS,GAAG,EAAE,KAAK,QAAQ;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -17,6 +17,10 @@ var __copyProps = (to, from, except, desc) => {
17
17
  return to;
18
18
  };
19
19
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
20
24
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
25
  mod
22
26
  ));
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/utils/object/index.ts"],
4
4
  "sourcesContent": ["export { default as autoBind } from './autoBind.js';\nexport { default as getAllProperties } from './getAllProperties.js';\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAoC;AACpC,8BAA4C;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAoC;AACpC,8BAA4C;",
6
6
  "names": []
7
7
  }
@@ -35,9 +35,9 @@ function getScheduler(steps) {
35
35
  }
36
36
  }
37
37
  function flush() {
38
- steps.forEach((step) => {
38
+ for (const step of steps) {
39
39
  run(stepsFns[step]);
40
- });
40
+ }
41
41
  isScheduled = false;
42
42
  if (steps.reduce((length, step) => length + stepsFns[step].length, 0) > 0) {
43
43
  scheduleFlush();
@@ -50,13 +50,13 @@ function getScheduler(steps) {
50
50
  isScheduled = true;
51
51
  resolvedPromise.then(flush);
52
52
  }
53
- steps.forEach((step) => {
53
+ for (const step of steps) {
54
54
  stepsFns[step] = [];
55
55
  api[step] = function add(fn) {
56
56
  stepsFns[step].push(fn);
57
57
  scheduleFlush();
58
58
  };
59
- });
59
+ }
60
60
  return api;
61
61
  }
62
62
  var instances = /* @__PURE__ */ new Map();
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../packages/js-toolkit/utils/scheduler.ts"],
4
- "sourcesContent": ["/**\n * Generate a scheduler.\n */\nfunction getScheduler<T extends string>(steps: T[]): Record<T, (fn: () => unknown) => void> {\n const stepsFns = {} as Record<T, Array<() => void>>;\n const api = {} as Record<T, (fn: () => void) => void>;\n\n let isScheduled = false;\n\n const resolvedPromise = Promise.resolve();\n\n /**\n * Execute the given list of tasks.\n */\n function run(tasks: Array<() => void>) {\n let task;\n // eslint-disable-next-line no-cond-assign\n while ((task = tasks.shift())) {\n task();\n }\n }\n\n /**\n * Flush registered tasks and schedule the next run if needed.\n */\n function flush() {\n steps.forEach((step) => {\n run(stepsFns[step]);\n });\n isScheduled = false;\n\n if (steps.reduce((length, step) => length + stepsFns[step].length, 0) > 0) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define, no-use-before-define\n scheduleFlush();\n }\n }\n\n /**\n * Schedule the next flush of tasks.\n */\n function scheduleFlush() {\n if (isScheduled) {\n return;\n }\n\n isScheduled = true;\n resolvedPromise.then(flush);\n }\n\n steps.forEach((step) => {\n stepsFns[step] = [];\n api[step] = function add(fn) {\n stepsFns[step].push(fn);\n scheduleFlush();\n };\n });\n\n return api;\n}\n\nconst instances = new Map();\n\nconst domSchedulerSteps = ['read', 'write', 'afterWrite'];\n\n/**\n * Use a scheduler based on the given steps.\n */\nexport function useScheduler<T extends string>(\n steps: T[] = domSchedulerSteps as T[],\n): ReturnType<typeof getScheduler<T>> {\n const key = steps.join('-');\n\n if (instances.has(key)) {\n return instances.get(key);\n }\n\n const scheduler = getScheduler(steps);\n instances.set(key, scheduler);\n\n return scheduler;\n}\n\nexport const domScheduler = useScheduler(domSchedulerSteps as ['read', 'write', 'afterWrite']);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,SAAS,aAA+B,OAAoD;AAC1F,QAAM,WAAW,CAAC;AAClB,QAAM,MAAM,CAAC;AAEb,MAAI,cAAc;AAElB,QAAM,kBAAkB,QAAQ,QAAQ;AAKxC,WAAS,IAAI,OAA0B;AACrC,QAAI;AAEJ,WAAQ,OAAO,MAAM,MAAM,GAAI;AAC7B,WAAK;AAAA,IACP;AAAA,EACF;AAKA,WAAS,QAAQ;AACf,UAAM,QAAQ,CAAC,SAAS;AACtB,UAAI,SAAS,KAAK;AAAA,IACpB,CAAC;AACD,kBAAc;AAEd,QAAI,MAAM,OAAO,CAAC,QAAQ,SAAS,SAAS,SAAS,MAAM,QAAQ,CAAC,IAAI,GAAG;AAEzE,oBAAc;AAAA,IAChB;AAAA,EACF;AAKA,WAAS,gBAAgB;AACvB,QAAI,aAAa;AACf;AAAA,IACF;AAEA,kBAAc;AACd,oBAAgB,KAAK,KAAK;AAAA,EAC5B;AAEA,QAAM,QAAQ,CAAC,SAAS;AACtB,aAAS,QAAQ,CAAC;AAClB,QAAI,QAAQ,SAAS,IAAI,IAAI;AAC3B,eAAS,MAAM,KAAK,EAAE;AACtB,oBAAc;AAAA,IAChB;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,IAAM,YAAY,oBAAI,IAAI;AAE1B,IAAM,oBAAoB,CAAC,QAAQ,SAAS,YAAY;AAKjD,SAAS,aACd,QAAa,mBACuB;AACpC,QAAM,MAAM,MAAM,KAAK,GAAG;AAE1B,MAAI,UAAU,IAAI,GAAG,GAAG;AACtB,WAAO,UAAU,IAAI,GAAG;AAAA,EAC1B;AAEA,QAAM,YAAY,aAAa,KAAK;AACpC,YAAU,IAAI,KAAK,SAAS;AAE5B,SAAO;AACT;AAEO,IAAM,eAAe,aAAa,iBAAoD;",
4
+ "sourcesContent": ["/**\n * Generate a scheduler.\n */\nfunction getScheduler<T extends string>(steps: T[]): Record<T, (fn: () => unknown) => void> {\n const stepsFns = {} as Record<T, Array<() => void>>;\n const api = {} as Record<T, (fn: () => void) => void>;\n\n let isScheduled = false;\n\n const resolvedPromise = Promise.resolve();\n\n /**\n * Execute the given list of tasks.\n */\n function run(tasks: Array<() => void>) {\n let task;\n // eslint-disable-next-line no-cond-assign\n while ((task = tasks.shift())) {\n task();\n }\n }\n\n /**\n * Flush registered tasks and schedule the next run if needed.\n */\n function flush() {\n for (const step of steps) {\n run(stepsFns[step]);\n }\n isScheduled = false;\n\n if (steps.reduce((length, step) => length + stepsFns[step].length, 0) > 0) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define, no-use-before-define\n scheduleFlush();\n }\n }\n\n /**\n * Schedule the next flush of tasks.\n */\n function scheduleFlush() {\n if (isScheduled) {\n return;\n }\n\n isScheduled = true;\n resolvedPromise.then(flush);\n }\n\n for (const step of steps) {\n stepsFns[step] = [];\n api[step] = function add(fn) {\n stepsFns[step].push(fn);\n scheduleFlush();\n };\n }\n\n return api;\n}\n\nconst instances = new Map();\n\nconst domSchedulerSteps = ['read', 'write', 'afterWrite'];\n\n/**\n * Use a scheduler based on the given steps.\n */\nexport function useScheduler<T extends string>(\n steps: T[] = domSchedulerSteps as T[],\n): ReturnType<typeof getScheduler<T>> {\n const key = steps.join('-');\n\n if (instances.has(key)) {\n return instances.get(key);\n }\n\n const scheduler = getScheduler(steps);\n instances.set(key, scheduler);\n\n return scheduler;\n}\n\nexport const domScheduler = useScheduler(domSchedulerSteps as ['read', 'write', 'afterWrite']);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,SAAS,aAA+B,OAAoD;AAC1F,QAAM,WAAW,CAAC;AAClB,QAAM,MAAM,CAAC;AAEb,MAAI,cAAc;AAElB,QAAM,kBAAkB,QAAQ,QAAQ;AAKxC,WAAS,IAAI,OAA0B;AACrC,QAAI;AAEJ,WAAQ,OAAO,MAAM,MAAM,GAAI;AAC7B,WAAK;AAAA,IACP;AAAA,EACF;AAKA,WAAS,QAAQ;AACf,eAAW,QAAQ,OAAO;AACxB,UAAI,SAAS,IAAI,CAAC;AAAA,IACpB;AACA,kBAAc;AAEd,QAAI,MAAM,OAAO,CAAC,QAAQ,SAAS,SAAS,SAAS,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG;AAEzE,oBAAc;AAAA,IAChB;AAAA,EACF;AAKA,WAAS,gBAAgB;AACvB,QAAI,aAAa;AACf;AAAA,IACF;AAEA,kBAAc;AACd,oBAAgB,KAAK,KAAK;AAAA,EAC5B;AAEA,aAAW,QAAQ,OAAO;AACxB,aAAS,IAAI,IAAI,CAAC;AAClB,QAAI,IAAI,IAAI,SAAS,IAAI,IAAI;AAC3B,eAAS,IAAI,EAAE,KAAK,EAAE;AACtB,oBAAc;AAAA,IAChB;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAM,YAAY,oBAAI,IAAI;AAE1B,IAAM,oBAAoB,CAAC,QAAQ,SAAS,YAAY;AAKjD,SAAS,aACd,QAAa,mBACuB;AACpC,QAAM,MAAM,MAAM,KAAK,GAAG;AAE1B,MAAI,UAAU,IAAI,GAAG,GAAG;AACtB,WAAO,UAAU,IAAI,GAAG;AAAA,EAC1B;AAEA,QAAM,YAAY,aAAa,KAAK;AACpC,YAAU,IAAI,KAAK,SAAS;AAE5B,SAAO;AACT;AAEO,IAAM,eAAe,aAAa,iBAAoD;",
6
6
  "names": []
7
7
  }
@@ -10,9 +10,9 @@ function getScheduler(steps) {
10
10
  }
11
11
  }
12
12
  function flush() {
13
- steps.forEach((step) => {
13
+ for (const step of steps) {
14
14
  run(stepsFns[step]);
15
- });
15
+ }
16
16
  isScheduled = false;
17
17
  if (steps.reduce((length, step) => length + stepsFns[step].length, 0) > 0) {
18
18
  scheduleFlush();
@@ -25,13 +25,13 @@ function getScheduler(steps) {
25
25
  isScheduled = true;
26
26
  resolvedPromise.then(flush);
27
27
  }
28
- steps.forEach((step) => {
28
+ for (const step of steps) {
29
29
  stepsFns[step] = [];
30
30
  api[step] = function add(fn) {
31
31
  stepsFns[step].push(fn);
32
32
  scheduleFlush();
33
33
  };
34
- });
34
+ }
35
35
  return api;
36
36
  }
37
37
  const instances = /* @__PURE__ */ new Map();
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../packages/js-toolkit/utils/scheduler.ts"],
4
- "sourcesContent": ["/**\n * Generate a scheduler.\n */\nfunction getScheduler<T extends string>(steps: T[]): Record<T, (fn: () => unknown) => void> {\n const stepsFns = {} as Record<T, Array<() => void>>;\n const api = {} as Record<T, (fn: () => void) => void>;\n\n let isScheduled = false;\n\n const resolvedPromise = Promise.resolve();\n\n /**\n * Execute the given list of tasks.\n */\n function run(tasks: Array<() => void>) {\n let task;\n // eslint-disable-next-line no-cond-assign\n while ((task = tasks.shift())) {\n task();\n }\n }\n\n /**\n * Flush registered tasks and schedule the next run if needed.\n */\n function flush() {\n steps.forEach((step) => {\n run(stepsFns[step]);\n });\n isScheduled = false;\n\n if (steps.reduce((length, step) => length + stepsFns[step].length, 0) > 0) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define, no-use-before-define\n scheduleFlush();\n }\n }\n\n /**\n * Schedule the next flush of tasks.\n */\n function scheduleFlush() {\n if (isScheduled) {\n return;\n }\n\n isScheduled = true;\n resolvedPromise.then(flush);\n }\n\n steps.forEach((step) => {\n stepsFns[step] = [];\n api[step] = function add(fn) {\n stepsFns[step].push(fn);\n scheduleFlush();\n };\n });\n\n return api;\n}\n\nconst instances = new Map();\n\nconst domSchedulerSteps = ['read', 'write', 'afterWrite'];\n\n/**\n * Use a scheduler based on the given steps.\n */\nexport function useScheduler<T extends string>(\n steps: T[] = domSchedulerSteps as T[],\n): ReturnType<typeof getScheduler<T>> {\n const key = steps.join('-');\n\n if (instances.has(key)) {\n return instances.get(key);\n }\n\n const scheduler = getScheduler(steps);\n instances.set(key, scheduler);\n\n return scheduler;\n}\n\nexport const domScheduler = useScheduler(domSchedulerSteps as ['read', 'write', 'afterWrite']);\n"],
5
- "mappings": "AAGA,SAAS,aAA+B,OAAoD;AAC1F,QAAM,WAAW,CAAC;AAClB,QAAM,MAAM,CAAC;AAEb,MAAI,cAAc;AAElB,QAAM,kBAAkB,QAAQ,QAAQ;AAKxC,WAAS,IAAI,OAA0B;AACrC,QAAI;AAEJ,WAAQ,OAAO,MAAM,MAAM,GAAI;AAC7B,WAAK;AAAA,IACP;AAAA,EACF;AAKA,WAAS,QAAQ;AACf,UAAM,QAAQ,CAAC,SAAS;AACtB,UAAI,SAAS,KAAK;AAAA,IACpB,CAAC;AACD,kBAAc;AAEd,QAAI,MAAM,OAAO,CAAC,QAAQ,SAAS,SAAS,SAAS,MAAM,QAAQ,CAAC,IAAI,GAAG;AAEzE,oBAAc;AAAA,IAChB;AAAA,EACF;AAKA,WAAS,gBAAgB;AACvB,QAAI,aAAa;AACf;AAAA,IACF;AAEA,kBAAc;AACd,oBAAgB,KAAK,KAAK;AAAA,EAC5B;AAEA,QAAM,QAAQ,CAAC,SAAS;AACtB,aAAS,QAAQ,CAAC;AAClB,QAAI,QAAQ,SAAS,IAAI,IAAI;AAC3B,eAAS,MAAM,KAAK,EAAE;AACtB,oBAAc;AAAA,IAChB;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,MAAM,YAAY,oBAAI,IAAI;AAE1B,MAAM,oBAAoB,CAAC,QAAQ,SAAS,YAAY;AAKjD,SAAS,aACd,QAAa,mBACuB;AACpC,QAAM,MAAM,MAAM,KAAK,GAAG;AAE1B,MAAI,UAAU,IAAI,GAAG,GAAG;AACtB,WAAO,UAAU,IAAI,GAAG;AAAA,EAC1B;AAEA,QAAM,YAAY,aAAa,KAAK;AACpC,YAAU,IAAI,KAAK,SAAS;AAE5B,SAAO;AACT;AAEO,MAAM,eAAe,aAAa,iBAAoD;",
4
+ "sourcesContent": ["/**\n * Generate a scheduler.\n */\nfunction getScheduler<T extends string>(steps: T[]): Record<T, (fn: () => unknown) => void> {\n const stepsFns = {} as Record<T, Array<() => void>>;\n const api = {} as Record<T, (fn: () => void) => void>;\n\n let isScheduled = false;\n\n const resolvedPromise = Promise.resolve();\n\n /**\n * Execute the given list of tasks.\n */\n function run(tasks: Array<() => void>) {\n let task;\n // eslint-disable-next-line no-cond-assign\n while ((task = tasks.shift())) {\n task();\n }\n }\n\n /**\n * Flush registered tasks and schedule the next run if needed.\n */\n function flush() {\n for (const step of steps) {\n run(stepsFns[step]);\n }\n isScheduled = false;\n\n if (steps.reduce((length, step) => length + stepsFns[step].length, 0) > 0) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define, no-use-before-define\n scheduleFlush();\n }\n }\n\n /**\n * Schedule the next flush of tasks.\n */\n function scheduleFlush() {\n if (isScheduled) {\n return;\n }\n\n isScheduled = true;\n resolvedPromise.then(flush);\n }\n\n for (const step of steps) {\n stepsFns[step] = [];\n api[step] = function add(fn) {\n stepsFns[step].push(fn);\n scheduleFlush();\n };\n }\n\n return api;\n}\n\nconst instances = new Map();\n\nconst domSchedulerSteps = ['read', 'write', 'afterWrite'];\n\n/**\n * Use a scheduler based on the given steps.\n */\nexport function useScheduler<T extends string>(\n steps: T[] = domSchedulerSteps as T[],\n): ReturnType<typeof getScheduler<T>> {\n const key = steps.join('-');\n\n if (instances.has(key)) {\n return instances.get(key);\n }\n\n const scheduler = getScheduler(steps);\n instances.set(key, scheduler);\n\n return scheduler;\n}\n\nexport const domScheduler = useScheduler(domSchedulerSteps as ['read', 'write', 'afterWrite']);\n"],
5
+ "mappings": "AAGA,SAAS,aAA+B,OAAoD;AAC1F,QAAM,WAAW,CAAC;AAClB,QAAM,MAAM,CAAC;AAEb,MAAI,cAAc;AAElB,QAAM,kBAAkB,QAAQ,QAAQ;AAKxC,WAAS,IAAI,OAA0B;AACrC,QAAI;AAEJ,WAAQ,OAAO,MAAM,MAAM,GAAI;AAC7B,WAAK;AAAA,IACP;AAAA,EACF;AAKA,WAAS,QAAQ;AACf,eAAW,QAAQ,OAAO;AACxB,UAAI,SAAS,IAAI,CAAC;AAAA,IACpB;AACA,kBAAc;AAEd,QAAI,MAAM,OAAO,CAAC,QAAQ,SAAS,SAAS,SAAS,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG;AAEzE,oBAAc;AAAA,IAChB;AAAA,EACF;AAKA,WAAS,gBAAgB;AACvB,QAAI,aAAa;AACf;AAAA,IACF;AAEA,kBAAc;AACd,oBAAgB,KAAK,KAAK;AAAA,EAC5B;AAEA,aAAW,QAAQ,OAAO;AACxB,aAAS,IAAI,IAAI,CAAC;AAClB,QAAI,IAAI,IAAI,SAAS,IAAI,IAAI;AAC3B,eAAS,IAAI,EAAE,KAAK,EAAE;AACtB,oBAAc;AAAA,IAChB;AAAA,EACF;AAEA,SAAO;AACT;AAEA,MAAM,YAAY,oBAAI,IAAI;AAE1B,MAAM,oBAAoB,CAAC,QAAQ,SAAS,YAAY;AAKjD,SAAS,aACd,QAAa,mBACuB;AACpC,QAAM,MAAM,MAAM,KAAK,GAAG;AAE1B,MAAI,UAAU,IAAI,GAAG,GAAG;AACtB,WAAO,UAAU,IAAI,GAAG;AAAA,EAC1B;AAEA,QAAM,YAAY,aAAa,KAAK;AACpC,YAAU,IAAI,KAAK,SAAS;AAE5B,SAAO;AACT;AAEO,MAAM,eAAe,aAAa,iBAAoD;",
6
6
  "names": []
7
7
  }
@@ -17,6 +17,10 @@ var __copyProps = (to, from, except, desc) => {
17
17
  return to;
18
18
  };
19
19
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
20
24
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
25
  mod
22
26
  ));
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../packages/js-toolkit/utils/scrollTo.ts"],
4
- "sourcesContent": ["import damp from './math/damp.js';\n\n/**\n * Handler for the click event on anchor links\n * @returns {Promise<number>} A promising resolving with the target scroll position.\n */\nexport default function scrollTo(\n selectorElement: HTMLElement | string,\n { offset = 0, dampFactor = 0.2 } = {},\n): Promise<number> {\n let targetElement = null;\n\n if (selectorElement instanceof HTMLElement) {\n targetElement = selectorElement;\n } else {\n targetElement = document.querySelector(selectorElement);\n }\n\n if (!targetElement) {\n return Promise.resolve(window.pageYOffset);\n }\n\n const sizes = targetElement.getBoundingClientRect();\n const scrollMargin = getComputedStyle(targetElement).scrollMarginTop || '0';\n const max = document.documentElement.scrollHeight - window.innerHeight;\n let scrollTarget = sizes.top + window.pageYOffset - Number.parseInt(scrollMargin, 10) - offset;\n\n // Make sure to not scroll more than the max scroll allowed\n if (scrollTarget > max) {\n scrollTarget = max;\n }\n\n return new Promise((resolve) => {\n let isScrolling = false;\n let scroll = window.pageYOffset;\n let dampScroll = window.pageYOffset;\n\n /**\n * Handler for the wheel event\n * Is used to cancel the programmatic scroll animation\n */\n function eventHandler() {\n isScrolling = false;\n }\n\n /**\n * Scroll animation end's hook\n */\n function end() {\n window.removeEventListener('wheel', eventHandler);\n window.removeEventListener('touchmove', eventHandler);\n resolve(window.pageYOffset);\n }\n\n /**\n * Scroll animation's loop\n * @returns {void|number}\n */\n function loop() {\n if (!isScrolling) {\n return end();\n }\n\n dampScroll = damp(scroll, dampScroll, dampFactor);\n window.scrollTo({ top: dampScroll });\n\n if (dampScroll === scroll) {\n isScrolling = false;\n }\n\n return requestAnimationFrame(loop);\n }\n\n /**\n * Start the scroll animation\n * @param {number} target The target scroll\n */\n function start(target) {\n // Update vars\n isScrolling = true;\n dampScroll = window.pageYOffset;\n scroll = target;\n\n // Bind wheel event to stop the animation if\n // the user wants to scroll manually\n window.addEventListener('wheel', eventHandler, { passive: true });\n window.addEventListener('touchmove', eventHandler, { passive: true });\n\n // Init the loop\n loop();\n }\n\n // Start the scroll\n start(scrollTarget);\n });\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;AAMF,SAAR,SACL,iBACA,EAAE,SAAS,GAAG,aAAa,IAAI,IAAI,CAAC,GACnB;AACjB,MAAI,gBAAgB;AAEpB,MAAI,2BAA2B,aAAa;AAC1C,oBAAgB;AAAA,EAClB,OAAO;AACL,oBAAgB,SAAS,cAAc,eAAe;AAAA,EACxD;AAEA,MAAI,CAAC,eAAe;AAClB,WAAO,QAAQ,QAAQ,OAAO,WAAW;AAAA,EAC3C;AAEA,QAAM,QAAQ,cAAc,sBAAsB;AAClD,QAAM,eAAe,iBAAiB,aAAa,EAAE,mBAAmB;AACxE,QAAM,MAAM,SAAS,gBAAgB,eAAe,OAAO;AAC3D,MAAI,eAAe,MAAM,MAAM,OAAO,cAAc,OAAO,SAAS,cAAc,EAAE,IAAI;AAGxF,MAAI,eAAe,KAAK;AACtB,mBAAe;AAAA,EACjB;AAEA,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,QAAI,cAAc;AAClB,QAAI,SAAS,OAAO;AACpB,QAAI,aAAa,OAAO;AAMxB,aAAS,eAAe;AACtB,oBAAc;AAAA,IAChB;AAKA,aAAS,MAAM;AACb,aAAO,oBAAoB,SAAS,YAAY;AAChD,aAAO,oBAAoB,aAAa,YAAY;AACpD,cAAQ,OAAO,WAAW;AAAA,IAC5B;AAMA,aAAS,OAAO;AACd,UAAI,CAAC,aAAa;AAChB,eAAO,IAAI;AAAA,MACb;AAEA,uBAAa,YAAAA,SAAK,QAAQ,YAAY,UAAU;AAChD,aAAO,SAAS,EAAE,KAAK,WAAW,CAAC;AAEnC,UAAI,eAAe,QAAQ;AACzB,sBAAc;AAAA,MAChB;AAEA,aAAO,sBAAsB,IAAI;AAAA,IACnC;AAMA,aAAS,MAAM,QAAQ;AAErB,oBAAc;AACd,mBAAa,OAAO;AACpB,eAAS;AAIT,aAAO,iBAAiB,SAAS,cAAc,EAAE,SAAS,KAAK,CAAC;AAChE,aAAO,iBAAiB,aAAa,cAAc,EAAE,SAAS,KAAK,CAAC;AAGpE,WAAK;AAAA,IACP;AAGA,UAAM,YAAY;AAAA,EACpB,CAAC;AACH;",
4
+ "sourcesContent": ["import damp from './math/damp.js';\n\n/**\n * Handler for the click event on anchor links\n *\n * @returns {Promise<number>} A promising resolving with the target scroll position.\n */\nexport default function scrollTo(\n selectorElement: HTMLElement | string,\n { offset = 0, dampFactor = 0.2 } = {},\n): Promise<number> {\n let targetElement = null;\n\n if (selectorElement instanceof HTMLElement) {\n targetElement = selectorElement;\n } else {\n targetElement = document.querySelector(selectorElement);\n }\n\n if (!targetElement) {\n return Promise.resolve(window.pageYOffset);\n }\n\n const sizes = targetElement.getBoundingClientRect();\n const scrollMargin = getComputedStyle(targetElement).scrollMarginTop || '0';\n const max = document.documentElement.scrollHeight - window.innerHeight;\n let scrollTarget = sizes.top + window.pageYOffset - Number.parseInt(scrollMargin, 10) - offset;\n\n // Make sure to not scroll more than the max scroll allowed\n if (scrollTarget > max) {\n scrollTarget = max;\n }\n\n return new Promise((resolve) => {\n let isScrolling = false;\n let scroll = window.pageYOffset;\n let dampScroll = window.pageYOffset;\n\n /**\n * Handler for the wheel event\n * Is used to cancel the programmatic scroll animation\n */\n function eventHandler() {\n isScrolling = false;\n }\n\n /**\n * Scroll animation end's hook\n */\n function end() {\n window.removeEventListener('wheel', eventHandler);\n window.removeEventListener('touchmove', eventHandler);\n resolve(window.pageYOffset);\n }\n\n /**\n * Scroll animation's loop\n *\n * @returns {void|number}\n */\n function loop() {\n if (!isScrolling) {\n return end();\n }\n\n dampScroll = damp(scroll, dampScroll, dampFactor);\n window.scrollTo({ top: dampScroll });\n\n if (dampScroll === scroll) {\n isScrolling = false;\n }\n\n return requestAnimationFrame(loop);\n }\n\n /**\n * Start the scroll animation\n *\n * @param {number} target The target scroll\n */\n function start(target) {\n // Update vars\n isScrolling = true;\n dampScroll = window.pageYOffset;\n scroll = target;\n\n // Bind wheel event to stop the animation if\n // the user wants to scroll manually\n window.addEventListener('wheel', eventHandler, { passive: true });\n window.addEventListener('touchmove', eventHandler, { passive: true });\n\n // Init the loop\n loop();\n }\n\n // Start the scroll\n start(scrollTarget);\n });\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;AAOF,SAAR,SACL,iBACA,EAAE,SAAS,GAAG,aAAa,IAAI,IAAI,CAAC,GACnB;AACjB,MAAI,gBAAgB;AAEpB,MAAI,2BAA2B,aAAa;AAC1C,oBAAgB;AAAA,EAClB,OAAO;AACL,oBAAgB,SAAS,cAAc,eAAe;AAAA,EACxD;AAEA,MAAI,CAAC,eAAe;AAClB,WAAO,QAAQ,QAAQ,OAAO,WAAW;AAAA,EAC3C;AAEA,QAAM,QAAQ,cAAc,sBAAsB;AAClD,QAAM,eAAe,iBAAiB,aAAa,EAAE,mBAAmB;AACxE,QAAM,MAAM,SAAS,gBAAgB,eAAe,OAAO;AAC3D,MAAI,eAAe,MAAM,MAAM,OAAO,cAAc,OAAO,SAAS,cAAc,EAAE,IAAI;AAGxF,MAAI,eAAe,KAAK;AACtB,mBAAe;AAAA,EACjB;AAEA,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,QAAI,cAAc;AAClB,QAAI,SAAS,OAAO;AACpB,QAAI,aAAa,OAAO;AAMxB,aAAS,eAAe;AACtB,oBAAc;AAAA,IAChB;AAKA,aAAS,MAAM;AACb,aAAO,oBAAoB,SAAS,YAAY;AAChD,aAAO,oBAAoB,aAAa,YAAY;AACpD,cAAQ,OAAO,WAAW;AAAA,IAC5B;AAOA,aAAS,OAAO;AACd,UAAI,CAAC,aAAa;AAChB,eAAO,IAAI;AAAA,MACb;AAEA,uBAAa,YAAAA,SAAK,QAAQ,YAAY,UAAU;AAChD,aAAO,SAAS,EAAE,KAAK,WAAW,CAAC;AAEnC,UAAI,eAAe,QAAQ;AACzB,sBAAc;AAAA,MAChB;AAEA,aAAO,sBAAsB,IAAI;AAAA,IACnC;AAOA,aAAS,MAAM,QAAQ;AAErB,oBAAc;AACd,mBAAa,OAAO;AACpB,eAAS;AAIT,aAAO,iBAAiB,SAAS,cAAc,EAAE,SAAS,KAAK,CAAC;AAChE,aAAO,iBAAiB,aAAa,cAAc,EAAE,SAAS,KAAK,CAAC;AAGpE,WAAK;AAAA,IACP;AAGA,UAAM,YAAY;AAAA,EACpB,CAAC;AACH;",
6
6
  "names": ["damp"]
7
7
  }