@studiometa/js-toolkit 2.6.4 → 2.7.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 (315) hide show
  1. package/Base/features.cjs +29 -0
  2. package/Base/features.cjs.map +7 -0
  3. package/Base/features.d.ts +2 -0
  4. package/Base/features.js +7 -0
  5. package/Base/features.js.map +7 -0
  6. package/Base/index.cjs +12 -15
  7. package/Base/index.cjs.map +2 -2
  8. package/Base/index.d.ts +1 -5
  9. package/Base/index.js +10 -6
  10. package/Base/index.js.map +2 -2
  11. package/Base/managers/AsyncChildrenManager.cjs +61 -0
  12. package/Base/managers/AsyncChildrenManager.cjs.map +7 -0
  13. package/Base/managers/AsyncChildrenManager.d.ts +18 -0
  14. package/Base/managers/AsyncChildrenManager.js +39 -0
  15. package/Base/managers/AsyncChildrenManager.js.map +7 -0
  16. package/Base/managers/ChildrenManager.cjs +32 -29
  17. package/Base/managers/ChildrenManager.cjs.map +2 -2
  18. package/Base/managers/ChildrenManager.d.ts +21 -1
  19. package/Base/managers/ChildrenManager.js +32 -29
  20. package/Base/managers/ChildrenManager.js.map +2 -2
  21. package/Base/managers/EventsManager.cjs.map +2 -2
  22. package/Base/managers/EventsManager.js.map +2 -2
  23. package/Base/managers/RefsManager.cjs.map +2 -2
  24. package/Base/managers/RefsManager.js.map +2 -2
  25. package/Base/managers/index.cjs +41 -0
  26. package/Base/managers/index.cjs.map +7 -0
  27. package/Base/managers/index.d.ts +8 -0
  28. package/Base/managers/index.js +19 -0
  29. package/Base/managers/index.js.map +7 -0
  30. package/Base/types.cjs.map +1 -1
  31. package/Base/utils.cjs.map +2 -2
  32. package/Base/utils.d.ts +1 -0
  33. package/Base/utils.js.map +2 -2
  34. package/decorators/withBreakpointManager.cjs.map +2 -2
  35. package/decorators/withBreakpointManager.js.map +2 -2
  36. package/decorators/withBreakpointObserver.cjs.map +2 -2
  37. package/decorators/withBreakpointObserver.js.map +2 -2
  38. package/decorators/withDrag.cjs.map +2 -2
  39. package/decorators/withDrag.js.map +2 -2
  40. package/decorators/withMountWhenInView.cjs.map +2 -2
  41. package/decorators/withMountWhenInView.js.map +2 -2
  42. package/decorators/withResponsiveOptions.cjs.map +2 -2
  43. package/decorators/withResponsiveOptions.js.map +2 -2
  44. package/decorators/withScrolledInView.cjs +4 -1
  45. package/decorators/withScrolledInView.cjs.map +2 -2
  46. package/decorators/withScrolledInView.js +4 -1
  47. package/decorators/withScrolledInView.js.map +2 -2
  48. package/decorators/withVue2.cjs.map +2 -2
  49. package/decorators/withVue2.js.map +2 -2
  50. package/helpers/createApp.cjs +23 -19
  51. package/helpers/createApp.cjs.map +2 -2
  52. package/helpers/createApp.d.ts +6 -1
  53. package/helpers/createApp.js +23 -19
  54. package/helpers/createApp.js.map +2 -2
  55. package/helpers/getClosestParent.cjs.map +2 -2
  56. package/helpers/getClosestParent.js.map +2 -2
  57. package/helpers/getInstanceFromElement.cjs.map +2 -2
  58. package/helpers/getInstanceFromElement.js.map +2 -2
  59. package/helpers/importOnInteraction.cjs.map +2 -2
  60. package/helpers/importOnInteraction.js.map +2 -2
  61. package/helpers/importWhenIdle.cjs.map +2 -2
  62. package/helpers/importWhenIdle.js.map +2 -2
  63. package/index.cjs.map +1 -1
  64. package/index.d.ts +1 -1
  65. package/index.js.map +1 -1
  66. package/package.json +1 -1
  67. package/services/drag.cjs +1 -1
  68. package/services/drag.cjs.map +3 -3
  69. package/services/drag.d.ts +21 -24
  70. package/services/drag.js.map +3 -3
  71. package/services/key.cjs +1 -1
  72. package/services/key.cjs.map +3 -3
  73. package/services/key.d.ts +8 -9
  74. package/services/key.js.map +3 -3
  75. package/services/load.cjs +1 -1
  76. package/services/load.cjs.map +3 -3
  77. package/services/load.d.ts +6 -5
  78. package/services/load.js.map +3 -3
  79. package/services/pointer.cjs +1 -1
  80. package/services/pointer.cjs.map +3 -3
  81. package/services/pointer.d.ts +10 -10
  82. package/services/pointer.js.map +3 -3
  83. package/services/raf.cjs +4 -4
  84. package/services/raf.cjs.map +3 -3
  85. package/services/raf.d.ts +6 -7
  86. package/services/raf.js +3 -3
  87. package/services/raf.js.map +3 -3
  88. package/services/resize.cjs +1 -1
  89. package/services/resize.cjs.map +3 -3
  90. package/services/resize.d.ts +8 -9
  91. package/services/resize.js.map +3 -3
  92. package/services/scroll.cjs +1 -1
  93. package/services/scroll.cjs.map +3 -3
  94. package/services/scroll.d.ts +16 -17
  95. package/services/scroll.js.map +3 -3
  96. package/services/service.cjs +2 -2
  97. package/services/service.cjs.map +3 -3
  98. package/services/service.d.ts +12 -14
  99. package/services/service.js +1 -1
  100. package/services/service.js.map +3 -3
  101. package/utils/Queue.cjs +60 -0
  102. package/utils/Queue.cjs.map +7 -0
  103. package/utils/Queue.d.ts +44 -0
  104. package/utils/Queue.js +38 -0
  105. package/utils/Queue.js.map +7 -0
  106. package/utils/collide/boundingRectToCircle.cjs +3 -2
  107. package/utils/collide/boundingRectToCircle.cjs.map +3 -3
  108. package/utils/collide/boundingRectToCircle.d.ts +8 -13
  109. package/utils/collide/boundingRectToCircle.js +2 -1
  110. package/utils/collide/boundingRectToCircle.js.map +3 -3
  111. package/utils/collide/collideCircleCircle.cjs +1 -1
  112. package/utils/collide/collideCircleCircle.cjs.map +1 -1
  113. package/utils/collide/collideCircleCircle.d.ts +1 -15
  114. package/utils/collide/collideCircleCircle.js.map +1 -1
  115. package/utils/collide/collideCircleRect.cjs +1 -1
  116. package/utils/collide/collideCircleRect.cjs.map +1 -1
  117. package/utils/collide/collideCircleRect.d.ts +1 -33
  118. package/utils/collide/collideCircleRect.js.map +1 -1
  119. package/utils/collide/collidePointCircle.cjs +1 -1
  120. package/utils/collide/collidePointCircle.cjs.map +1 -1
  121. package/utils/collide/collidePointCircle.d.ts +1 -25
  122. package/utils/collide/collidePointCircle.js.map +1 -1
  123. package/utils/collide/collidePointRect.cjs +1 -1
  124. package/utils/collide/collidePointRect.cjs.map +1 -1
  125. package/utils/collide/collidePointRect.d.ts +1 -29
  126. package/utils/collide/collidePointRect.js.map +1 -1
  127. package/utils/collide/collideRectRect.cjs +1 -1
  128. package/utils/collide/collideRectRect.cjs.map +1 -1
  129. package/utils/collide/collideRectRect.d.ts +1 -19
  130. package/utils/collide/collideRectRect.js.map +1 -1
  131. package/utils/collide/index.cjs +1 -1
  132. package/utils/collide/index.cjs.map +1 -1
  133. package/utils/collide/index.d.ts +9 -6
  134. package/utils/collide/index.js.map +1 -1
  135. package/utils/css/animate.cjs +14 -15
  136. package/utils/css/animate.cjs.map +3 -3
  137. package/utils/css/animate.d.ts +12 -14
  138. package/utils/css/animate.js +13 -14
  139. package/utils/css/animate.js.map +3 -3
  140. package/utils/css/classes.cjs +1 -1
  141. package/utils/css/classes.cjs.map +3 -3
  142. package/utils/css/classes.d.ts +3 -16
  143. package/utils/css/classes.js.map +3 -3
  144. package/utils/css/getOffsetSizes.cjs +1 -1
  145. package/utils/css/getOffsetSizes.cjs.map +3 -3
  146. package/utils/css/getOffsetSizes.d.ts +0 -2
  147. package/utils/css/getOffsetSizes.js.map +3 -3
  148. package/utils/css/matrix.cjs +1 -1
  149. package/utils/css/matrix.cjs.map +3 -3
  150. package/utils/css/matrix.d.ts +10 -8
  151. package/utils/css/matrix.js.map +3 -3
  152. package/utils/css/styles.cjs +1 -1
  153. package/utils/css/styles.cjs.map +3 -3
  154. package/utils/css/styles.d.ts +2 -10
  155. package/utils/css/styles.js.map +3 -3
  156. package/utils/css/transform.cjs +1 -1
  157. package/utils/css/transform.cjs.map +3 -3
  158. package/utils/css/transform.d.ts +6 -28
  159. package/utils/css/transform.js.map +3 -3
  160. package/utils/css/transition.cjs +2 -2
  161. package/utils/css/transition.cjs.map +3 -3
  162. package/utils/css/transition.d.ts +11 -15
  163. package/utils/css/transition.js +1 -1
  164. package/utils/css/transition.js.map +3 -3
  165. package/utils/debounce.cjs +1 -1
  166. package/utils/debounce.cjs.map +3 -3
  167. package/utils/debounce.d.ts +3 -3
  168. package/utils/debounce.js.map +3 -3
  169. package/utils/focusTrap.cjs +4 -2
  170. package/utils/focusTrap.cjs.map +3 -3
  171. package/utils/focusTrap.d.ts +3 -4
  172. package/utils/focusTrap.js +3 -1
  173. package/utils/focusTrap.js.map +3 -3
  174. package/utils/has.cjs +1 -1
  175. package/utils/has.cjs.map +3 -3
  176. package/utils/has.d.ts +1 -3
  177. package/utils/has.js.map +3 -3
  178. package/utils/history.cjs +1 -1
  179. package/utils/history.cjs.map +3 -3
  180. package/utils/history.d.ts +10 -10
  181. package/utils/history.js.map +3 -3
  182. package/utils/index.cjs +2 -0
  183. package/utils/index.cjs.map +2 -2
  184. package/utils/index.d.ts +1 -0
  185. package/utils/index.js +2 -0
  186. package/utils/index.js.map +2 -2
  187. package/utils/is.cjs +1 -1
  188. package/utils/is.cjs.map +3 -3
  189. package/utils/is.d.ts +26 -8
  190. package/utils/is.js.map +3 -3
  191. package/utils/keyCodes.cjs +1 -1
  192. package/utils/keyCodes.cjs.map +2 -2
  193. package/utils/keyCodes.d.ts +10 -10
  194. package/utils/keyCodes.js.map +2 -2
  195. package/utils/math/clamp.cjs +1 -1
  196. package/utils/math/clamp.cjs.map +3 -3
  197. package/utils/math/clamp.js.map +3 -3
  198. package/utils/math/clamp01.cjs +1 -1
  199. package/utils/math/clamp01.cjs.map +3 -3
  200. package/utils/math/clamp01.js.map +3 -3
  201. package/utils/math/createEases.cjs +1 -1
  202. package/utils/math/createEases.cjs.map +3 -3
  203. package/utils/math/createEases.d.ts +3 -6
  204. package/utils/math/createEases.js.map +3 -3
  205. package/utils/math/damp.cjs +1 -1
  206. package/utils/math/damp.cjs.map +3 -3
  207. package/utils/math/damp.js.map +3 -3
  208. package/utils/math/ease.cjs +1 -1
  209. package/utils/math/ease.cjs.map +3 -3
  210. package/utils/math/ease.d.ts +21 -21
  211. package/utils/math/ease.js.map +3 -3
  212. package/utils/math/index.cjs +1 -1
  213. package/utils/math/index.cjs.map +1 -1
  214. package/utils/math/index.d.ts +10 -10
  215. package/utils/math/index.js.map +1 -1
  216. package/utils/math/inertiaFinalValue.cjs +1 -1
  217. package/utils/math/inertiaFinalValue.cjs.map +3 -3
  218. package/utils/math/inertiaFinalValue.js.map +3 -3
  219. package/utils/math/lerp.cjs +1 -1
  220. package/utils/math/lerp.cjs.map +3 -3
  221. package/utils/math/lerp.js.map +3 -3
  222. package/utils/math/map.cjs +1 -1
  223. package/utils/math/map.cjs.map +3 -3
  224. package/utils/math/map.js.map +3 -3
  225. package/utils/math/round.cjs +1 -1
  226. package/utils/math/round.cjs.map +3 -3
  227. package/utils/math/round.js.map +3 -3
  228. package/utils/memoize.cjs +6 -2
  229. package/utils/memoize.cjs.map +3 -3
  230. package/utils/memoize.d.ts +18 -28
  231. package/utils/memoize.js +5 -1
  232. package/utils/memoize.js.map +3 -3
  233. package/utils/nextFrame.cjs +1 -1
  234. package/utils/nextFrame.cjs.map +3 -3
  235. package/utils/nextFrame.d.ts +3 -6
  236. package/utils/nextFrame.js.map +3 -3
  237. package/utils/nextMicrotask.cjs +1 -1
  238. package/utils/nextMicrotask.cjs.map +3 -3
  239. package/utils/nextMicrotask.d.ts +1 -5
  240. package/utils/nextMicrotask.js.map +3 -3
  241. package/utils/nextTick.cjs +5 -5
  242. package/utils/nextTick.cjs.map +3 -3
  243. package/utils/nextTick.d.ts +1 -5
  244. package/utils/nextTick.js +4 -4
  245. package/utils/nextTick.js.map +3 -3
  246. package/utils/noop.cjs +1 -1
  247. package/utils/noop.cjs.map +3 -3
  248. package/utils/noop.d.ts +2 -5
  249. package/utils/noop.js.map +3 -3
  250. package/utils/object/autoBind.cjs +1 -1
  251. package/utils/object/autoBind.cjs.map +3 -3
  252. package/utils/object/autoBind.d.ts +5 -4
  253. package/utils/object/autoBind.js.map +3 -3
  254. package/utils/object/getAllProperties.cjs +3 -3
  255. package/utils/object/getAllProperties.cjs.map +3 -3
  256. package/utils/object/getAllProperties.d.ts +1 -1
  257. package/utils/object/getAllProperties.js +2 -2
  258. package/utils/object/getAllProperties.js.map +3 -3
  259. package/utils/object/index.cjs +1 -1
  260. package/utils/object/index.cjs.map +1 -1
  261. package/utils/object/index.d.ts +2 -2
  262. package/utils/object/index.js.map +1 -1
  263. package/utils/scheduler.cjs +2 -2
  264. package/utils/scheduler.cjs.map +3 -3
  265. package/utils/scheduler.d.ts +4 -13
  266. package/utils/scheduler.js +1 -1
  267. package/utils/scheduler.js.map +3 -3
  268. package/utils/scrollTo.cjs +1 -1
  269. package/utils/scrollTo.cjs.map +3 -3
  270. package/utils/scrollTo.d.ts +0 -3
  271. package/utils/scrollTo.js.map +3 -3
  272. package/utils/string/index.cjs +1 -1
  273. package/utils/string/index.cjs.map +1 -1
  274. package/utils/string/index.d.ts +10 -10
  275. package/utils/string/index.js.map +1 -1
  276. package/utils/string/withLeadingCharacters.cjs +1 -1
  277. package/utils/string/withLeadingCharacters.cjs.map +3 -3
  278. package/utils/string/withLeadingCharacters.js.map +3 -3
  279. package/utils/string/withLeadingSlash.cjs +1 -1
  280. package/utils/string/withLeadingSlash.cjs.map +3 -3
  281. package/utils/string/withLeadingSlash.js.map +3 -3
  282. package/utils/string/withTrailingCharacters.cjs +1 -1
  283. package/utils/string/withTrailingCharacters.cjs.map +3 -3
  284. package/utils/string/withTrailingCharacters.js.map +3 -3
  285. package/utils/string/withTrailingSlash.cjs +1 -1
  286. package/utils/string/withTrailingSlash.cjs.map +3 -3
  287. package/utils/string/withTrailingSlash.js.map +3 -3
  288. package/utils/string/withoutLeadingCharacters.cjs +1 -1
  289. package/utils/string/withoutLeadingCharacters.cjs.map +3 -3
  290. package/utils/string/withoutLeadingCharacters.js.map +3 -3
  291. package/utils/string/withoutLeadingCharactersRecursive.cjs +1 -1
  292. package/utils/string/withoutLeadingCharactersRecursive.cjs.map +3 -3
  293. package/utils/string/withoutLeadingCharactersRecursive.js.map +3 -3
  294. package/utils/string/withoutLeadingSlash.cjs +1 -1
  295. package/utils/string/withoutLeadingSlash.cjs.map +3 -3
  296. package/utils/string/withoutLeadingSlash.js.map +3 -3
  297. package/utils/string/withoutTrailingCharacters.cjs +1 -1
  298. package/utils/string/withoutTrailingCharacters.cjs.map +3 -3
  299. package/utils/string/withoutTrailingCharacters.js.map +3 -3
  300. package/utils/string/withoutTrailingCharactersRecursive.cjs +1 -1
  301. package/utils/string/withoutTrailingCharactersRecursive.cjs.map +3 -3
  302. package/utils/string/withoutTrailingCharactersRecursive.js.map +3 -3
  303. package/utils/string/withoutTrailingSlash.cjs +1 -1
  304. package/utils/string/withoutTrailingSlash.cjs.map +3 -3
  305. package/utils/string/withoutTrailingSlash.js.map +3 -3
  306. package/utils/throttle.cjs +2 -2
  307. package/utils/throttle.cjs.map +3 -3
  308. package/utils/throttle.d.ts +1 -1
  309. package/utils/throttle.js +1 -1
  310. package/utils/throttle.js.map +3 -3
  311. package/utils/tween.cjs +2 -2
  312. package/utils/tween.cjs.map +3 -3
  313. package/utils/tween.d.ts +16 -24
  314. package/utils/tween.js +1 -1
  315. package/utils/tween.js.map +3 -3
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../packages/js-toolkit/utils/css/styles.js"],
4
- "sourcesContent": ["import { isObject } from '../is.js';\n// eslint-disable-next-line import/extensions\nimport { eachElements } from './utils.js';\n\n/**\n * Manage a list of style properties on an element.\n *\n * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements The element to update.\n * @param {Partial<CSSStyleDeclaration>} styles An object of styles properties and values.\n * @param {string} method The method to use: add or remove.\n */\nfunction setStyles(elementOrElements, styles, method = 'add') {\n if (!elementOrElements || !styles || !isObject(styles)) {\n return;\n }\n\n eachElements(elementOrElements, (el) => {\n Object.entries(styles).forEach(([prop, value]) => {\n el.style[prop] = method === 'add' ? value : '';\n });\n });\n}\n\n/**\n * Add styles to an element.\n *\n * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements The element to update.\n * @param {Partial<CSSStyleDeclaration>} styles A string of class names.\n * @returns {void}\n */\nexport function add(elementOrElements, styles) {\n setStyles(elementOrElements, styles);\n}\n\n/**\n * Remove class names from an element.\n *\n * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements The element to update.\n * @param {Partial<CSSStyleDeclaration>} styles A string of class names.\n * @returns {void}\n */\nexport function remove(elementOrElements, styles) {\n setStyles(elementOrElements, styles, 'remove');\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAyB;AAEzB,mBAA6B;AAS7B,SAAS,UAAU,mBAAmB,QAAQ,SAAS,OAAO;AAC5D,MAAI,CAAC,qBAAqB,CAAC,UAAU,KAAC,oBAAS,MAAM,GAAG;AACtD;AAAA,EACF;AAEA,iCAAa,mBAAmB,CAAC,OAAO;AACtC,WAAO,QAAQ,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAChD,SAAG,MAAM,QAAQ,WAAW,QAAQ,QAAQ;AAAA,IAC9C,CAAC;AAAA,EACH,CAAC;AACH;AASO,SAAS,IAAI,mBAAmB,QAAQ;AAC7C,YAAU,mBAAmB,MAAM;AACrC;AASO,SAAS,OAAO,mBAAmB,QAAQ;AAChD,YAAU,mBAAmB,QAAQ,QAAQ;AAC/C;",
3
+ "sources": ["../../../packages/js-toolkit/utils/css/styles.ts"],
4
+ "sourcesContent": ["import { isObject } from '../is.js';\n// eslint-disable-next-line import/extensions\nimport { eachElements } from './utils.js';\n\n/**\n * Manage a list of style properties on an element.\n */\nfunction setStyles(\n elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>,\n styles: Partial<CSSStyleDeclaration>,\n method: 'add' | 'remove' = 'add',\n) {\n if (!elementOrElements || !styles || !isObject(styles)) {\n return;\n }\n\n eachElements(elementOrElements, (el) => {\n Object.entries(styles).forEach(([prop, value]) => {\n el.style[prop] = method === 'add' ? value : '';\n });\n });\n}\n\n/**\n * Add styles to an element.\n */\nexport function add(\n elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>,\n styles: Partial<CSSStyleDeclaration>,\n) {\n setStyles(elementOrElements, styles);\n}\n\n/**\n * Remove class names from an element.\n */\nexport function remove(\n elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>,\n styles: Partial<CSSStyleDeclaration>,\n) {\n setStyles(elementOrElements, styles, 'remove');\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAyB;AAEzB,mBAA6B;AAK7B,SAAS,UACP,mBACA,QACA,SAA2B,OAC3B;AACA,MAAI,CAAC,qBAAqB,CAAC,UAAU,KAAC,oBAAS,MAAM,GAAG;AACtD;AAAA,EACF;AAEA,iCAAa,mBAAmB,CAAC,OAAO;AACtC,WAAO,QAAQ,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAChD,SAAG,MAAM,QAAQ,WAAW,QAAQ,QAAQ;AAAA,IAC9C,CAAC;AAAA,EACH,CAAC;AACH;AAKO,SAAS,IACd,mBACA,QACA;AACA,YAAU,mBAAmB,MAAM;AACrC;AAKO,SAAS,OACd,mBACA,QACA;AACA,YAAU,mBAAmB,QAAQ,QAAQ;AAC/C;",
6
6
  "names": []
7
7
  }
@@ -1,16 +1,8 @@
1
1
  /**
2
2
  * Add styles to an element.
3
- *
4
- * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements The element to update.
5
- * @param {Partial<CSSStyleDeclaration>} styles A string of class names.
6
- * @returns {void}
7
3
  */
8
- export function add(elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>, styles: Partial<CSSStyleDeclaration>): void;
4
+ export declare function add(elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>, styles: Partial<CSSStyleDeclaration>): void;
9
5
  /**
10
6
  * Remove class names from an element.
11
- *
12
- * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements The element to update.
13
- * @param {Partial<CSSStyleDeclaration>} styles A string of class names.
14
- * @returns {void}
15
7
  */
16
- export function remove(elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>, styles: Partial<CSSStyleDeclaration>): void;
8
+ export declare function remove(elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>, styles: Partial<CSSStyleDeclaration>): void;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../packages/js-toolkit/utils/css/styles.js"],
4
- "sourcesContent": ["import { isObject } from '../is.js';\n// eslint-disable-next-line import/extensions\nimport { eachElements } from './utils.js';\n\n/**\n * Manage a list of style properties on an element.\n *\n * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements The element to update.\n * @param {Partial<CSSStyleDeclaration>} styles An object of styles properties and values.\n * @param {string} method The method to use: add or remove.\n */\nfunction setStyles(elementOrElements, styles, method = 'add') {\n if (!elementOrElements || !styles || !isObject(styles)) {\n return;\n }\n\n eachElements(elementOrElements, (el) => {\n Object.entries(styles).forEach(([prop, value]) => {\n el.style[prop] = method === 'add' ? value : '';\n });\n });\n}\n\n/**\n * Add styles to an element.\n *\n * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements The element to update.\n * @param {Partial<CSSStyleDeclaration>} styles A string of class names.\n * @returns {void}\n */\nexport function add(elementOrElements, styles) {\n setStyles(elementOrElements, styles);\n}\n\n/**\n * Remove class names from an element.\n *\n * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements The element to update.\n * @param {Partial<CSSStyleDeclaration>} styles A string of class names.\n * @returns {void}\n */\nexport function remove(elementOrElements, styles) {\n setStyles(elementOrElements, styles, 'remove');\n}\n"],
5
- "mappings": "AAAA,SAAS,gBAAgB;AAEzB,SAAS,oBAAoB;AAS7B,SAAS,UAAU,mBAAmB,QAAQ,SAAS,OAAO;AAC5D,MAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,SAAS,MAAM,GAAG;AACtD;AAAA,EACF;AAEA,eAAa,mBAAmB,CAAC,OAAO;AACtC,WAAO,QAAQ,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAChD,SAAG,MAAM,QAAQ,WAAW,QAAQ,QAAQ;AAAA,IAC9C,CAAC;AAAA,EACH,CAAC;AACH;AASO,SAAS,IAAI,mBAAmB,QAAQ;AAC7C,YAAU,mBAAmB,MAAM;AACrC;AASO,SAAS,OAAO,mBAAmB,QAAQ;AAChD,YAAU,mBAAmB,QAAQ,QAAQ;AAC/C;",
3
+ "sources": ["../../../packages/js-toolkit/utils/css/styles.ts"],
4
+ "sourcesContent": ["import { isObject } from '../is.js';\n// eslint-disable-next-line import/extensions\nimport { eachElements } from './utils.js';\n\n/**\n * Manage a list of style properties on an element.\n */\nfunction setStyles(\n elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>,\n styles: Partial<CSSStyleDeclaration>,\n method: 'add' | 'remove' = 'add',\n) {\n if (!elementOrElements || !styles || !isObject(styles)) {\n return;\n }\n\n eachElements(elementOrElements, (el) => {\n Object.entries(styles).forEach(([prop, value]) => {\n el.style[prop] = method === 'add' ? value : '';\n });\n });\n}\n\n/**\n * Add styles to an element.\n */\nexport function add(\n elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>,\n styles: Partial<CSSStyleDeclaration>,\n) {\n setStyles(elementOrElements, styles);\n}\n\n/**\n * Remove class names from an element.\n */\nexport function remove(\n elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>,\n styles: Partial<CSSStyleDeclaration>,\n) {\n setStyles(elementOrElements, styles, 'remove');\n}\n"],
5
+ "mappings": "AAAA,SAAS,gBAAgB;AAEzB,SAAS,oBAAoB;AAK7B,SAAS,UACP,mBACA,QACA,SAA2B,OAC3B;AACA,MAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,SAAS,MAAM,GAAG;AACtD;AAAA,EACF;AAEA,eAAa,mBAAmB,CAAC,OAAO;AACtC,WAAO,QAAQ,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAChD,SAAG,MAAM,QAAQ,WAAW,QAAQ,QAAQ;AAAA,IAC9C,CAAC;AAAA,EACH,CAAC;AACH;AAKO,SAAS,IACd,mBACA,QACA;AACA,YAAU,mBAAmB,MAAM;AACrC;AAKO,SAAS,OACd,mBACA,QACA;AACA,YAAU,mBAAmB,QAAQ,QAAQ;AAC/C;",
6
6
  "names": []
7
7
  }
@@ -16,7 +16,7 @@ var __copyProps = (to, from, except, desc) => {
16
16
  };
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
18
 
19
- // packages/js-toolkit/utils/css/transform.js
19
+ // packages/js-toolkit/utils/css/transform.ts
20
20
  var transform_exports = {};
21
21
  __export(transform_exports, {
22
22
  TRANSFORM_PROPS: () => TRANSFORM_PROPS,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../packages/js-toolkit/utils/css/transform.js"],
4
- "sourcesContent": ["import { isDefined } from '../is.js';\n// eslint-disable-next-line import/extensions\nimport { eachElements } from './utils.js';\n\n/**\n * @typedef {Partial<{\n * x: number;\n * y: number;\n * z: number;\n * rotate: number;\n * rotateX: number;\n * rotateY: number;\n * rotateZ: number;\n * scale: number;\n * scaleX: number;\n * scaleY: number;\n * scaleZ: number;\n * skew: number;\n * skewX: number;\n * skewY: number;\n * }>} TransformProps\n */\n\nexport const TRANSFORM_PROPS = [\n 'x',\n 'y',\n 'z',\n 'rotate',\n 'rotateX',\n 'rotateY',\n 'rotateZ',\n 'scale',\n 'scaleX',\n 'scaleY',\n 'scaleZ',\n 'skew',\n 'skewX',\n 'skewY',\n];\n\n/**\n * Generate a CSS transform.\n *\n * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements\n * @param {TransformProps} props\n * @returns {string}\n */\nexport default function transform(elementOrElements, props) {\n let value = '';\n\n if (isDefined(props.x) || isDefined(props.y) || isDefined(props.z)) {\n value += `translate3d(${props.x ?? 0}px, ${props.y ?? 0}px, ${props.z ?? 0}px) `;\n }\n\n if (isDefined(props.rotate)) {\n value += `rotate(${props.rotate}deg) `;\n } else {\n if (isDefined(props.rotateX)) {\n value += `rotateX(${props.rotateX}deg) `;\n }\n\n if (isDefined(props.rotateY)) {\n value += `rotateY(${props.rotateY}deg) `;\n }\n\n if (isDefined(props.rotateZ)) {\n value += `rotateZ(${props.rotateZ}deg) `;\n }\n }\n\n if (isDefined(props.scale)) {\n value += `scale(${props.scale}) `;\n } else {\n if (isDefined(props.scaleX)) {\n value += `scaleX(${props.scaleX}) `;\n }\n\n if (isDefined(props.scaleY)) {\n value += `scaleY(${props.scaleY}) `;\n }\n\n if (isDefined(props.scaleZ)) {\n value += `scaleZ(${props.scaleZ}) `;\n }\n }\n\n if (isDefined(props.skew)) {\n value += `skew(${props.skew}deg) `;\n } else {\n if (isDefined(props.skewX)) {\n value += `skewX(${props.skewX}deg) `;\n }\n\n if (isDefined(props.skewY)) {\n value += `skewY(${props.skewY}deg) `;\n }\n }\n\n eachElements(elementOrElements, (element) => {\n element.style.transform = value;\n });\n return value;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAA0B;AAE1B,mBAA6B;AAqBtB,IAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AASe,SAAR,UAA2B,mBAAmB,OAAO;AAC1D,MAAI,QAAQ;AAEZ,UAAI,qBAAU,MAAM,CAAC,SAAK,qBAAU,MAAM,CAAC,SAAK,qBAAU,MAAM,CAAC,GAAG;AAClE,aAAS,eAAe,MAAM,KAAK,QAAQ,MAAM,KAAK,QAAQ,MAAM,KAAK;AAAA,EAC3E;AAEA,UAAI,qBAAU,MAAM,MAAM,GAAG;AAC3B,aAAS,UAAU,MAAM;AAAA,EAC3B,OAAO;AACL,YAAI,qBAAU,MAAM,OAAO,GAAG;AAC5B,eAAS,WAAW,MAAM;AAAA,IAC5B;AAEA,YAAI,qBAAU,MAAM,OAAO,GAAG;AAC5B,eAAS,WAAW,MAAM;AAAA,IAC5B;AAEA,YAAI,qBAAU,MAAM,OAAO,GAAG;AAC5B,eAAS,WAAW,MAAM;AAAA,IAC5B;AAAA,EACF;AAEA,UAAI,qBAAU,MAAM,KAAK,GAAG;AAC1B,aAAS,SAAS,MAAM;AAAA,EAC1B,OAAO;AACL,YAAI,qBAAU,MAAM,MAAM,GAAG;AAC3B,eAAS,UAAU,MAAM;AAAA,IAC3B;AAEA,YAAI,qBAAU,MAAM,MAAM,GAAG;AAC3B,eAAS,UAAU,MAAM;AAAA,IAC3B;AAEA,YAAI,qBAAU,MAAM,MAAM,GAAG;AAC3B,eAAS,UAAU,MAAM;AAAA,IAC3B;AAAA,EACF;AAEA,UAAI,qBAAU,MAAM,IAAI,GAAG;AACzB,aAAS,QAAQ,MAAM;AAAA,EACzB,OAAO;AACL,YAAI,qBAAU,MAAM,KAAK,GAAG;AAC1B,eAAS,SAAS,MAAM;AAAA,IAC1B;AAEA,YAAI,qBAAU,MAAM,KAAK,GAAG;AAC1B,eAAS,SAAS,MAAM;AAAA,IAC1B;AAAA,EACF;AAEA,iCAAa,mBAAmB,CAAC,YAAY;AAC3C,YAAQ,MAAM,YAAY;AAAA,EAC5B,CAAC;AACD,SAAO;AACT;",
3
+ "sources": ["../../../packages/js-toolkit/utils/css/transform.ts"],
4
+ "sourcesContent": ["import { isDefined } from '../is.js';\n// eslint-disable-next-line import/extensions\nimport { eachElements } from './utils.js';\n\nexport type TransformProps = Partial<{\n x: number;\n y: number;\n z: number;\n rotate: number;\n rotateX: number;\n rotateY: number;\n rotateZ: number;\n scale: number;\n scaleX: number;\n scaleY: number;\n scaleZ: number;\n skew: number;\n skewX: number;\n skewY: number;\n}>;\n\nexport const TRANSFORM_PROPS = [\n 'x',\n 'y',\n 'z',\n 'rotate',\n 'rotateX',\n 'rotateY',\n 'rotateZ',\n 'scale',\n 'scaleX',\n 'scaleY',\n 'scaleZ',\n 'skew',\n 'skewX',\n 'skewY',\n];\n\n/**\n * Generate a CSS transform.\n */\nexport default function transform(\n elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>,\n props: TransformProps,\n): string {\n let value = '';\n\n if (isDefined(props.x) || isDefined(props.y) || isDefined(props.z)) {\n value += `translate3d(${props.x ?? 0}px, ${props.y ?? 0}px, ${props.z ?? 0}px) `;\n }\n\n if (isDefined(props.rotate)) {\n value += `rotate(${props.rotate}deg) `;\n } else {\n if (isDefined(props.rotateX)) {\n value += `rotateX(${props.rotateX}deg) `;\n }\n\n if (isDefined(props.rotateY)) {\n value += `rotateY(${props.rotateY}deg) `;\n }\n\n if (isDefined(props.rotateZ)) {\n value += `rotateZ(${props.rotateZ}deg) `;\n }\n }\n\n if (isDefined(props.scale)) {\n value += `scale(${props.scale}) `;\n } else {\n if (isDefined(props.scaleX)) {\n value += `scaleX(${props.scaleX}) `;\n }\n\n if (isDefined(props.scaleY)) {\n value += `scaleY(${props.scaleY}) `;\n }\n\n if (isDefined(props.scaleZ)) {\n value += `scaleZ(${props.scaleZ}) `;\n }\n }\n\n if (isDefined(props.skew)) {\n value += `skew(${props.skew}deg) `;\n } else {\n if (isDefined(props.skewX)) {\n value += `skewX(${props.skewX}deg) `;\n }\n\n if (isDefined(props.skewY)) {\n value += `skewY(${props.skewY}deg) `;\n }\n }\n\n eachElements(elementOrElements, (element) => {\n element.style.transform = value;\n });\n return value;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAA0B;AAE1B,mBAA6B;AAmBtB,IAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAKe,SAAR,UACL,mBACA,OACQ;AACR,MAAI,QAAQ;AAEZ,UAAI,qBAAU,MAAM,CAAC,SAAK,qBAAU,MAAM,CAAC,SAAK,qBAAU,MAAM,CAAC,GAAG;AAClE,aAAS,eAAe,MAAM,KAAK,QAAQ,MAAM,KAAK,QAAQ,MAAM,KAAK;AAAA,EAC3E;AAEA,UAAI,qBAAU,MAAM,MAAM,GAAG;AAC3B,aAAS,UAAU,MAAM;AAAA,EAC3B,OAAO;AACL,YAAI,qBAAU,MAAM,OAAO,GAAG;AAC5B,eAAS,WAAW,MAAM;AAAA,IAC5B;AAEA,YAAI,qBAAU,MAAM,OAAO,GAAG;AAC5B,eAAS,WAAW,MAAM;AAAA,IAC5B;AAEA,YAAI,qBAAU,MAAM,OAAO,GAAG;AAC5B,eAAS,WAAW,MAAM;AAAA,IAC5B;AAAA,EACF;AAEA,UAAI,qBAAU,MAAM,KAAK,GAAG;AAC1B,aAAS,SAAS,MAAM;AAAA,EAC1B,OAAO;AACL,YAAI,qBAAU,MAAM,MAAM,GAAG;AAC3B,eAAS,UAAU,MAAM;AAAA,IAC3B;AAEA,YAAI,qBAAU,MAAM,MAAM,GAAG;AAC3B,eAAS,UAAU,MAAM;AAAA,IAC3B;AAEA,YAAI,qBAAU,MAAM,MAAM,GAAG;AAC3B,eAAS,UAAU,MAAM;AAAA,IAC3B;AAAA,EACF;AAEA,UAAI,qBAAU,MAAM,IAAI,GAAG;AACzB,aAAS,QAAQ,MAAM;AAAA,EACzB,OAAO;AACL,YAAI,qBAAU,MAAM,KAAK,GAAG;AAC1B,eAAS,SAAS,MAAM;AAAA,IAC1B;AAEA,YAAI,qBAAU,MAAM,KAAK,GAAG;AAC1B,eAAS,SAAS,MAAM;AAAA,IAC1B;AAAA,EACF;AAEA,iCAAa,mBAAmB,CAAC,YAAY;AAC3C,YAAQ,MAAM,YAAY;AAAA,EAC5B,CAAC;AACD,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -1,31 +1,4 @@
1
- /**
2
- * Generate a CSS transform.
3
- *
4
- * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements
5
- * @param {TransformProps} props
6
- * @returns {string}
7
- */
8
- export default function transform(elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>, props: TransformProps): string;
9
- /**
10
- * @typedef {Partial<{
11
- * x: number;
12
- * y: number;
13
- * z: number;
14
- * rotate: number;
15
- * rotateX: number;
16
- * rotateY: number;
17
- * rotateZ: number;
18
- * scale: number;
19
- * scaleX: number;
20
- * scaleY: number;
21
- * scaleZ: number;
22
- * skew: number;
23
- * skewX: number;
24
- * skewY: number;
25
- * }>} TransformProps
26
- */
27
- export const TRANSFORM_PROPS: string[];
28
- export type TransformProps = Partial<{
1
+ export declare type TransformProps = Partial<{
29
2
  x: number;
30
3
  y: number;
31
4
  z: number;
@@ -41,3 +14,8 @@ export type TransformProps = Partial<{
41
14
  skewX: number;
42
15
  skewY: number;
43
16
  }>;
17
+ export declare const TRANSFORM_PROPS: string[];
18
+ /**
19
+ * Generate a CSS transform.
20
+ */
21
+ export default function transform(elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>, props: TransformProps): string;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../packages/js-toolkit/utils/css/transform.js"],
4
- "sourcesContent": ["import { isDefined } from '../is.js';\n// eslint-disable-next-line import/extensions\nimport { eachElements } from './utils.js';\n\n/**\n * @typedef {Partial<{\n * x: number;\n * y: number;\n * z: number;\n * rotate: number;\n * rotateX: number;\n * rotateY: number;\n * rotateZ: number;\n * scale: number;\n * scaleX: number;\n * scaleY: number;\n * scaleZ: number;\n * skew: number;\n * skewX: number;\n * skewY: number;\n * }>} TransformProps\n */\n\nexport const TRANSFORM_PROPS = [\n 'x',\n 'y',\n 'z',\n 'rotate',\n 'rotateX',\n 'rotateY',\n 'rotateZ',\n 'scale',\n 'scaleX',\n 'scaleY',\n 'scaleZ',\n 'skew',\n 'skewX',\n 'skewY',\n];\n\n/**\n * Generate a CSS transform.\n *\n * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements\n * @param {TransformProps} props\n * @returns {string}\n */\nexport default function transform(elementOrElements, props) {\n let value = '';\n\n if (isDefined(props.x) || isDefined(props.y) || isDefined(props.z)) {\n value += `translate3d(${props.x ?? 0}px, ${props.y ?? 0}px, ${props.z ?? 0}px) `;\n }\n\n if (isDefined(props.rotate)) {\n value += `rotate(${props.rotate}deg) `;\n } else {\n if (isDefined(props.rotateX)) {\n value += `rotateX(${props.rotateX}deg) `;\n }\n\n if (isDefined(props.rotateY)) {\n value += `rotateY(${props.rotateY}deg) `;\n }\n\n if (isDefined(props.rotateZ)) {\n value += `rotateZ(${props.rotateZ}deg) `;\n }\n }\n\n if (isDefined(props.scale)) {\n value += `scale(${props.scale}) `;\n } else {\n if (isDefined(props.scaleX)) {\n value += `scaleX(${props.scaleX}) `;\n }\n\n if (isDefined(props.scaleY)) {\n value += `scaleY(${props.scaleY}) `;\n }\n\n if (isDefined(props.scaleZ)) {\n value += `scaleZ(${props.scaleZ}) `;\n }\n }\n\n if (isDefined(props.skew)) {\n value += `skew(${props.skew}deg) `;\n } else {\n if (isDefined(props.skewX)) {\n value += `skewX(${props.skewX}deg) `;\n }\n\n if (isDefined(props.skewY)) {\n value += `skewY(${props.skewY}deg) `;\n }\n }\n\n eachElements(elementOrElements, (element) => {\n element.style.transform = value;\n });\n return value;\n}\n"],
5
- "mappings": "AAAA,SAAS,iBAAiB;AAE1B,SAAS,oBAAoB;AAqBtB,MAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AASe,SAAR,UAA2B,mBAAmB,OAAO;AAC1D,MAAI,QAAQ;AAEZ,MAAI,UAAU,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,GAAG;AAClE,aAAS,eAAe,MAAM,KAAK,QAAQ,MAAM,KAAK,QAAQ,MAAM,KAAK;AAAA,EAC3E;AAEA,MAAI,UAAU,MAAM,MAAM,GAAG;AAC3B,aAAS,UAAU,MAAM;AAAA,EAC3B,OAAO;AACL,QAAI,UAAU,MAAM,OAAO,GAAG;AAC5B,eAAS,WAAW,MAAM;AAAA,IAC5B;AAEA,QAAI,UAAU,MAAM,OAAO,GAAG;AAC5B,eAAS,WAAW,MAAM;AAAA,IAC5B;AAEA,QAAI,UAAU,MAAM,OAAO,GAAG;AAC5B,eAAS,WAAW,MAAM;AAAA,IAC5B;AAAA,EACF;AAEA,MAAI,UAAU,MAAM,KAAK,GAAG;AAC1B,aAAS,SAAS,MAAM;AAAA,EAC1B,OAAO;AACL,QAAI,UAAU,MAAM,MAAM,GAAG;AAC3B,eAAS,UAAU,MAAM;AAAA,IAC3B;AAEA,QAAI,UAAU,MAAM,MAAM,GAAG;AAC3B,eAAS,UAAU,MAAM;AAAA,IAC3B;AAEA,QAAI,UAAU,MAAM,MAAM,GAAG;AAC3B,eAAS,UAAU,MAAM;AAAA,IAC3B;AAAA,EACF;AAEA,MAAI,UAAU,MAAM,IAAI,GAAG;AACzB,aAAS,QAAQ,MAAM;AAAA,EACzB,OAAO;AACL,QAAI,UAAU,MAAM,KAAK,GAAG;AAC1B,eAAS,SAAS,MAAM;AAAA,IAC1B;AAEA,QAAI,UAAU,MAAM,KAAK,GAAG;AAC1B,eAAS,SAAS,MAAM;AAAA,IAC1B;AAAA,EACF;AAEA,eAAa,mBAAmB,CAAC,YAAY;AAC3C,YAAQ,MAAM,YAAY;AAAA,EAC5B,CAAC;AACD,SAAO;AACT;",
3
+ "sources": ["../../../packages/js-toolkit/utils/css/transform.ts"],
4
+ "sourcesContent": ["import { isDefined } from '../is.js';\n// eslint-disable-next-line import/extensions\nimport { eachElements } from './utils.js';\n\nexport type TransformProps = Partial<{\n x: number;\n y: number;\n z: number;\n rotate: number;\n rotateX: number;\n rotateY: number;\n rotateZ: number;\n scale: number;\n scaleX: number;\n scaleY: number;\n scaleZ: number;\n skew: number;\n skewX: number;\n skewY: number;\n}>;\n\nexport const TRANSFORM_PROPS = [\n 'x',\n 'y',\n 'z',\n 'rotate',\n 'rotateX',\n 'rotateY',\n 'rotateZ',\n 'scale',\n 'scaleX',\n 'scaleY',\n 'scaleZ',\n 'skew',\n 'skewX',\n 'skewY',\n];\n\n/**\n * Generate a CSS transform.\n */\nexport default function transform(\n elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>,\n props: TransformProps,\n): string {\n let value = '';\n\n if (isDefined(props.x) || isDefined(props.y) || isDefined(props.z)) {\n value += `translate3d(${props.x ?? 0}px, ${props.y ?? 0}px, ${props.z ?? 0}px) `;\n }\n\n if (isDefined(props.rotate)) {\n value += `rotate(${props.rotate}deg) `;\n } else {\n if (isDefined(props.rotateX)) {\n value += `rotateX(${props.rotateX}deg) `;\n }\n\n if (isDefined(props.rotateY)) {\n value += `rotateY(${props.rotateY}deg) `;\n }\n\n if (isDefined(props.rotateZ)) {\n value += `rotateZ(${props.rotateZ}deg) `;\n }\n }\n\n if (isDefined(props.scale)) {\n value += `scale(${props.scale}) `;\n } else {\n if (isDefined(props.scaleX)) {\n value += `scaleX(${props.scaleX}) `;\n }\n\n if (isDefined(props.scaleY)) {\n value += `scaleY(${props.scaleY}) `;\n }\n\n if (isDefined(props.scaleZ)) {\n value += `scaleZ(${props.scaleZ}) `;\n }\n }\n\n if (isDefined(props.skew)) {\n value += `skew(${props.skew}deg) `;\n } else {\n if (isDefined(props.skewX)) {\n value += `skewX(${props.skewX}deg) `;\n }\n\n if (isDefined(props.skewY)) {\n value += `skewY(${props.skewY}deg) `;\n }\n }\n\n eachElements(elementOrElements, (element) => {\n element.style.transform = value;\n });\n return value;\n}\n"],
5
+ "mappings": "AAAA,SAAS,iBAAiB;AAE1B,SAAS,oBAAoB;AAmBtB,MAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAKe,SAAR,UACL,mBACA,OACQ;AACR,MAAI,QAAQ;AAEZ,MAAI,UAAU,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,GAAG;AAClE,aAAS,eAAe,MAAM,KAAK,QAAQ,MAAM,KAAK,QAAQ,MAAM,KAAK;AAAA,EAC3E;AAEA,MAAI,UAAU,MAAM,MAAM,GAAG;AAC3B,aAAS,UAAU,MAAM;AAAA,EAC3B,OAAO;AACL,QAAI,UAAU,MAAM,OAAO,GAAG;AAC5B,eAAS,WAAW,MAAM;AAAA,IAC5B;AAEA,QAAI,UAAU,MAAM,OAAO,GAAG;AAC5B,eAAS,WAAW,MAAM;AAAA,IAC5B;AAEA,QAAI,UAAU,MAAM,OAAO,GAAG;AAC5B,eAAS,WAAW,MAAM;AAAA,IAC5B;AAAA,EACF;AAEA,MAAI,UAAU,MAAM,KAAK,GAAG;AAC1B,aAAS,SAAS,MAAM;AAAA,EAC1B,OAAO;AACL,QAAI,UAAU,MAAM,MAAM,GAAG;AAC3B,eAAS,UAAU,MAAM;AAAA,IAC3B;AAEA,QAAI,UAAU,MAAM,MAAM,GAAG;AAC3B,eAAS,UAAU,MAAM;AAAA,IAC3B;AAEA,QAAI,UAAU,MAAM,MAAM,GAAG;AAC3B,eAAS,UAAU,MAAM;AAAA,IAC3B;AAAA,EACF;AAEA,MAAI,UAAU,MAAM,IAAI,GAAG;AACzB,aAAS,QAAQ,MAAM;AAAA,EACzB,OAAO;AACL,QAAI,UAAU,MAAM,KAAK,GAAG;AAC1B,eAAS,SAAS,MAAM;AAAA,IAC1B;AAEA,QAAI,UAAU,MAAM,KAAK,GAAG;AAC1B,eAAS,SAAS,MAAM;AAAA,IAC1B;AAAA,EACF;AAEA,eAAa,mBAAmB,CAAC,YAAY;AAC3C,YAAQ,MAAM,YAAY;AAAA,EAC5B,CAAC;AACD,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -22,7 +22,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
22
22
  ));
23
23
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
24
24
 
25
- // packages/js-toolkit/utils/css/transition.js
25
+ // packages/js-toolkit/utils/css/transition.ts
26
26
  var transition_exports = {};
27
27
  __export(transition_exports, {
28
28
  default: () => transition,
@@ -76,7 +76,7 @@ async function next(element, classesOrStyles) {
76
76
  return new Promise(async (resolve) => {
77
77
  if (hasTransition) {
78
78
  const trs = Transition.getInstance(element);
79
- trs.transitionEndHandler = resolve;
79
+ trs.transitionEndHandler = () => resolve();
80
80
  element.addEventListener("transitionend", trs.transitionEndHandler, false);
81
81
  }
82
82
  setClassesOrStyles(element, classesOrStyles.from, "remove");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../packages/js-toolkit/utils/css/transition.js"],
4
- "sourcesContent": ["import { nextFrame } from '../nextFrame.js';\nimport * as classes from './classes.js';\nimport * as styles from './styles.js';\nimport { isArray, isString } from '../is.js';\nimport { hasWindow } from '../has.js';\n// eslint-disable-next-line import/extensions\nimport { eachElements } from './utils.js';\n\n/** WeakMap to hold the transition instances. */\nconst cache = new WeakMap();\n\n/**\n * @typedef {string|string[]|Partial<CSSStyleDeclaration>} ClassesOrStyles\n * @typedef {{ from?: ClassesOrStyles, active?: ClassesOrStyles, to?: ClassesOrStyles }} TransitionStyles\n */\n\n/**\n * Transition class.\n */\nclass Transition {\n /**\n * Is a transition currently running?\n * @type {boolean}\n */\n isTransitioning = false;\n\n /**\n * A callback to execute when the transition ends.\n * @type {EventListenerOrEventListenerObject|null}\n */\n transitionEndHandler = null;\n\n /**\n * Instantiate and save the instance to the cache.\n * @param {HTMLElement} element The HTML element.\n */\n constructor(element) {\n cache.set(element, this);\n }\n\n /**\n * Get the transition class attached to the given element.\n * @param {HTMLElement} element The HTML element concerned by the transition.\n * @returns {Transition} The transition instance tied to the given element.\n */\n static getInstance(element) {\n let instance = cache.get(element);\n\n if (!instance) {\n instance = new this(element);\n }\n\n return instance;\n }\n}\n\n/**\n * Update either the classes or the styles of an element with the given method.\n *\n * @param {HTMLElement} element The element to update.\n * @param {ClassesOrStyles} classesOrStyles The classes or styles to apply.\n * @param {'add'|'remove'} method The method to use, one of `add` or `remove`.\n */\nexport function setClassesOrStyles(element, classesOrStyles, method = 'add') {\n if (isString(classesOrStyles) || isArray(classesOrStyles)) {\n classes[method](element, classesOrStyles);\n } else {\n styles[method](element, classesOrStyles);\n }\n}\n\n/**\n * Test if the given element has a transition duration.\n *\n * @param {HTMLElement} element The element to test.\n * @returns {boolean} The result of the test.\n */\nfunction testTransition(element) {\n if (!hasWindow()) {\n return false;\n }\n\n const { transitionDuration } = window.getComputedStyle(element);\n return !!transitionDuration && transitionDuration !== '0s';\n}\n\n/**\n * Apply the from state.\n *\n * @param {HTMLElement} element The target element.\n * @param {TransitionStyles} classesOrStyles The classes or styles definition.\n * @returns {Promise<void>}\n */\nasync function start(element, classesOrStyles) {\n const trs = Transition.getInstance(element);\n trs.isTransitioning = true;\n setClassesOrStyles(element, classesOrStyles.from);\n await nextFrame();\n setClassesOrStyles(element, classesOrStyles.active);\n}\n\n/**\n * Apply the active state.\n *\n * @param {HTMLElement} element The target element.\n * @param {TransitionStyles} classesOrStyles The classes or styles definition.\n * @returns {Promise}\n */\nasync function next(element, classesOrStyles) {\n const hasTransition = testTransition(element);\n\n /* eslint-disable-next-line */\n return new Promise(async (resolve) => {\n if (hasTransition) {\n const trs = Transition.getInstance(element);\n trs.transitionEndHandler = resolve;\n element.addEventListener('transitionend', trs.transitionEndHandler, false);\n }\n setClassesOrStyles(element, classesOrStyles.from, 'remove');\n setClassesOrStyles(element, classesOrStyles.to);\n await nextFrame();\n if (!hasTransition) {\n resolve();\n }\n });\n}\n\n/**\n * Apply the final state.\n *\n * @param {HTMLElement} element The target element.\n * @param {string | Object} classesOrStyles The classes or styles definition.\n * @param {string} mode Whether to remove or keep the `to` classes/styles.\n * @returns {void}\n */\nfunction end(element, classesOrStyles, mode = 'remove') {\n const trs = Transition.getInstance(element);\n element.removeEventListener('transitionend', trs.transitionEndHandler, false);\n if (mode === 'remove') {\n setClassesOrStyles(element, classesOrStyles.to, 'remove');\n }\n setClassesOrStyles(element, classesOrStyles.active, 'remove');\n trs.isTransitioning = false;\n trs.transitionEndHandler = null;\n}\n\n/**\n * Manage CSS transition with class.\n *\n * This is heavily inspired by the Vue `<transition>` component\n * and the `@barba/css` package, many thanks to them!\n *\n * @param {HTMLElement} element The target element.\n * @param {string|TransitionStyles} name The name of the transition or an object with the hooks classesOrStyles.\n * @param {string} endMode Whether to remove or keep the `to` classes/styles\n * @returns {Promise<void>} A promise resolving at the end of the transition.\n */\nasync function singleTransition(element, name, endMode = 'remove') {\n /** @type {TransitionStyles} */\n const classesOrStyles = isString(name)\n ? {\n from: `${name}-from`,\n active: `${name}-active`,\n to: `${name}-to`,\n }\n : {\n from: '',\n active: '',\n to: '',\n ...name,\n };\n\n const trs = Transition.getInstance(element);\n // End any previous transition running on the element.\n if (trs.isTransitioning) {\n end(element, classesOrStyles);\n }\n\n await start(element, classesOrStyles);\n await next(element, classesOrStyles);\n end(element, classesOrStyles, endMode);\n return Promise.resolve();\n}\n\n/**\n * Manage CSS transition with class.\n *\n * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements The target element or elements.\n * @param {string|TransitionStyles} name The name of the transition or an object with the hooks classesOrStyles.\n * @param {string} endMode Whether to remove or keep the `to` classes/styles\n * @returns {Promise<void>} A promise resolving at the end of the transition.\n */\nexport default async function transition(elementOrElements, name, endMode = 'remove') {\n await Promise.all(\n eachElements(elementOrElements, (element) => singleTransition(element, name, endMode)),\n );\n}\n"],
5
- "mappings": "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",
3
+ "sources": ["../../../packages/js-toolkit/utils/css/transition.ts"],
4
+ "sourcesContent": ["import { nextFrame } from '../nextFrame.js';\nimport * as classes from './classes.js';\nimport * as styles from './styles.js';\nimport { isArray, isString } from '../is.js';\nimport { hasWindow } from '../has.js';\n// eslint-disable-next-line import/extensions\nimport { eachElements } from './utils.js';\n\n/** WeakMap to hold the transition instances. */\nconst cache = new WeakMap();\n\nexport type ClassesOrStyles = string | string[] | Partial<CSSStyleDeclaration>;\n\nexport type TransitionStyles = {\n from?: ClassesOrStyles;\n active?: ClassesOrStyles;\n to?: ClassesOrStyles;\n};\n\n/**\n * Transition class.\n */\nclass Transition {\n /**\n * Is a transition currently running?\n */\n isTransitioning = false;\n\n /**\n * A callback to execute when the transition ends.\n */\n transitionEndHandler: EventListenerOrEventListenerObject | null = null;\n\n /**\n * Instantiate and save the instance to the cache.\n */\n constructor(element: HTMLElement) {\n cache.set(element, this);\n }\n\n /**\n * Get the transition class attached to the given element.\n * @param {HTMLElement} element The HTML element concerned by the transition.\n * @returns {Transition} The transition instance tied to the given element.\n */\n static getInstance(element: HTMLElement): Transition {\n let instance = cache.get(element);\n\n if (!instance) {\n instance = new this(element);\n }\n\n return instance;\n }\n}\n\n/**\n * Update either the classes or the styles of an element with the given method.\n */\nexport function setClassesOrStyles(\n element: HTMLElement,\n classesOrStyles: ClassesOrStyles,\n method: 'add' | 'remove' = 'add',\n) {\n if (isString(classesOrStyles) || isArray(classesOrStyles)) {\n classes[method](element, classesOrStyles);\n } else {\n styles[method](element, classesOrStyles);\n }\n}\n\n/**\n * Test if the given element has a transition duration.\n */\nfunction testTransition(element: HTMLElement) {\n if (!hasWindow()) {\n return false;\n }\n\n const { transitionDuration } = window.getComputedStyle(element);\n return !!transitionDuration && transitionDuration !== '0s';\n}\n\n/**\n * Apply the from state.\n */\nasync function start(element: HTMLElement, classesOrStyles: TransitionStyles) {\n const trs = Transition.getInstance(element);\n trs.isTransitioning = true;\n setClassesOrStyles(element, classesOrStyles.from);\n await nextFrame();\n setClassesOrStyles(element, classesOrStyles.active);\n}\n\n/**\n * Apply the active state.\n */\nasync function next(element: HTMLElement, classesOrStyles: TransitionStyles): Promise<void> {\n const hasTransition = testTransition(element);\n\n /* eslint-disable-next-line */\n return new Promise(async (resolve) => {\n if (hasTransition) {\n const trs = Transition.getInstance(element);\n trs.transitionEndHandler = () => resolve();\n element.addEventListener('transitionend', trs.transitionEndHandler, false);\n }\n setClassesOrStyles(element, classesOrStyles.from, 'remove');\n setClassesOrStyles(element, classesOrStyles.to);\n await nextFrame();\n if (!hasTransition) {\n resolve();\n }\n });\n}\n\n/**\n * Apply the final state.\n */\nfunction end(\n element: HTMLElement,\n classesOrStyles: TransitionStyles,\n mode: 'keep' | 'remove' = 'remove',\n) {\n const trs = Transition.getInstance(element);\n element.removeEventListener('transitionend', trs.transitionEndHandler, false);\n if (mode === 'remove') {\n setClassesOrStyles(element, classesOrStyles.to, 'remove');\n }\n setClassesOrStyles(element, classesOrStyles.active, 'remove');\n trs.isTransitioning = false;\n trs.transitionEndHandler = null;\n}\n\n/**\n * Manage CSS transition with class.\n *\n * This is inspired by the Vue `<transition>` component\n * and the `@barba/css` package, many thanks to them!\n *\n * @param {HTMLElement} element The target element.\n * @param {string|TransitionStyles} name The name of the transition or an object with the hooks classesOrStyles.\n * @param {string} endMode Whether to remove or keep the `to` classes/styles\n * @returns {Promise<void>} A promise resolving at the end of the transition.\n */\nasync function singleTransition(\n element: HTMLElement,\n name: string | TransitionStyles,\n endMode: 'keep' | 'remove' = 'remove',\n): Promise<void> {\n /** @type {TransitionStyles} */\n const classesOrStyles = isString(name)\n ? {\n from: `${name}-from`,\n active: `${name}-active`,\n to: `${name}-to`,\n }\n : {\n from: '',\n active: '',\n to: '',\n ...name,\n };\n\n const trs = Transition.getInstance(element);\n // End any previous transition running on the element.\n if (trs.isTransitioning) {\n end(element, classesOrStyles);\n }\n\n await start(element, classesOrStyles);\n await next(element, classesOrStyles);\n end(element, classesOrStyles, endMode);\n return Promise.resolve();\n}\n\n/**\n * Manage CSS transition with class.\n *\n * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements The target element or elements.\n * @param {string|TransitionStyles} name The name of the transition or an object with the hooks classesOrStyles.\n * @param {string} endMode Whether to remove or keep the `to` classes/styles\n * @returns {Promise<void>} A promise resolving at the end of the transition.\n */\nexport default async function transition(\n elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>,\n name: string | TransitionStyles,\n endMode: 'keep' | 'remove' = 'remove',\n) {\n await Promise.all(\n eachElements(elementOrElements, (element) => singleTransition(element, name, endMode)),\n );\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,23 +1,19 @@
1
+ export declare type ClassesOrStyles = string | string[] | Partial<CSSStyleDeclaration>;
2
+ export declare type TransitionStyles = {
3
+ from?: ClassesOrStyles;
4
+ active?: ClassesOrStyles;
5
+ to?: ClassesOrStyles;
6
+ };
1
7
  /**
2
8
  * Update either the classes or the styles of an element with the given method.
3
- *
4
- * @param {HTMLElement} element The element to update.
5
- * @param {ClassesOrStyles} classesOrStyles The classes or styles to apply.
6
- * @param {'add'|'remove'} method The method to use, one of `add` or `remove`.
7
9
  */
8
- export function setClassesOrStyles(element: HTMLElement, classesOrStyles: ClassesOrStyles, method?: 'add' | 'remove'): void;
10
+ export declare function setClassesOrStyles(element: HTMLElement, classesOrStyles: ClassesOrStyles, method?: 'add' | 'remove'): void;
9
11
  /**
10
12
  * Manage CSS transition with class.
11
13
  *
12
14
  * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements The target element or elements.
13
- * @param {string|TransitionStyles} name The name of the transition or an object with the hooks classesOrStyles.
14
- * @param {string} endMode Whether to remove or keep the `to` classes/styles
15
- * @returns {Promise<void>} A promise resolving at the end of the transition.
15
+ * @param {string|TransitionStyles} name The name of the transition or an object with the hooks classesOrStyles.
16
+ * @param {string} endMode Whether to remove or keep the `to` classes/styles
17
+ * @returns {Promise<void>} A promise resolving at the end of the transition.
16
18
  */
17
- export default function transition(elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>, name: string | TransitionStyles, endMode?: string): Promise<void>;
18
- export type ClassesOrStyles = string | string[] | Partial<CSSStyleDeclaration>;
19
- export type TransitionStyles = {
20
- from?: ClassesOrStyles;
21
- active?: ClassesOrStyles;
22
- to?: ClassesOrStyles;
23
- };
19
+ export default function transition(elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>, name: string | TransitionStyles, endMode?: 'keep' | 'remove'): Promise<void>;
@@ -45,7 +45,7 @@ async function next(element, classesOrStyles) {
45
45
  return new Promise(async (resolve) => {
46
46
  if (hasTransition) {
47
47
  const trs = Transition.getInstance(element);
48
- trs.transitionEndHandler = resolve;
48
+ trs.transitionEndHandler = () => resolve();
49
49
  element.addEventListener("transitionend", trs.transitionEndHandler, false);
50
50
  }
51
51
  setClassesOrStyles(element, classesOrStyles.from, "remove");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../packages/js-toolkit/utils/css/transition.js"],
4
- "sourcesContent": ["import { nextFrame } from '../nextFrame.js';\nimport * as classes from './classes.js';\nimport * as styles from './styles.js';\nimport { isArray, isString } from '../is.js';\nimport { hasWindow } from '../has.js';\n// eslint-disable-next-line import/extensions\nimport { eachElements } from './utils.js';\n\n/** WeakMap to hold the transition instances. */\nconst cache = new WeakMap();\n\n/**\n * @typedef {string|string[]|Partial<CSSStyleDeclaration>} ClassesOrStyles\n * @typedef {{ from?: ClassesOrStyles, active?: ClassesOrStyles, to?: ClassesOrStyles }} TransitionStyles\n */\n\n/**\n * Transition class.\n */\nclass Transition {\n /**\n * Is a transition currently running?\n * @type {boolean}\n */\n isTransitioning = false;\n\n /**\n * A callback to execute when the transition ends.\n * @type {EventListenerOrEventListenerObject|null}\n */\n transitionEndHandler = null;\n\n /**\n * Instantiate and save the instance to the cache.\n * @param {HTMLElement} element The HTML element.\n */\n constructor(element) {\n cache.set(element, this);\n }\n\n /**\n * Get the transition class attached to the given element.\n * @param {HTMLElement} element The HTML element concerned by the transition.\n * @returns {Transition} The transition instance tied to the given element.\n */\n static getInstance(element) {\n let instance = cache.get(element);\n\n if (!instance) {\n instance = new this(element);\n }\n\n return instance;\n }\n}\n\n/**\n * Update either the classes or the styles of an element with the given method.\n *\n * @param {HTMLElement} element The element to update.\n * @param {ClassesOrStyles} classesOrStyles The classes or styles to apply.\n * @param {'add'|'remove'} method The method to use, one of `add` or `remove`.\n */\nexport function setClassesOrStyles(element, classesOrStyles, method = 'add') {\n if (isString(classesOrStyles) || isArray(classesOrStyles)) {\n classes[method](element, classesOrStyles);\n } else {\n styles[method](element, classesOrStyles);\n }\n}\n\n/**\n * Test if the given element has a transition duration.\n *\n * @param {HTMLElement} element The element to test.\n * @returns {boolean} The result of the test.\n */\nfunction testTransition(element) {\n if (!hasWindow()) {\n return false;\n }\n\n const { transitionDuration } = window.getComputedStyle(element);\n return !!transitionDuration && transitionDuration !== '0s';\n}\n\n/**\n * Apply the from state.\n *\n * @param {HTMLElement} element The target element.\n * @param {TransitionStyles} classesOrStyles The classes or styles definition.\n * @returns {Promise<void>}\n */\nasync function start(element, classesOrStyles) {\n const trs = Transition.getInstance(element);\n trs.isTransitioning = true;\n setClassesOrStyles(element, classesOrStyles.from);\n await nextFrame();\n setClassesOrStyles(element, classesOrStyles.active);\n}\n\n/**\n * Apply the active state.\n *\n * @param {HTMLElement} element The target element.\n * @param {TransitionStyles} classesOrStyles The classes or styles definition.\n * @returns {Promise}\n */\nasync function next(element, classesOrStyles) {\n const hasTransition = testTransition(element);\n\n /* eslint-disable-next-line */\n return new Promise(async (resolve) => {\n if (hasTransition) {\n const trs = Transition.getInstance(element);\n trs.transitionEndHandler = resolve;\n element.addEventListener('transitionend', trs.transitionEndHandler, false);\n }\n setClassesOrStyles(element, classesOrStyles.from, 'remove');\n setClassesOrStyles(element, classesOrStyles.to);\n await nextFrame();\n if (!hasTransition) {\n resolve();\n }\n });\n}\n\n/**\n * Apply the final state.\n *\n * @param {HTMLElement} element The target element.\n * @param {string | Object} classesOrStyles The classes or styles definition.\n * @param {string} mode Whether to remove or keep the `to` classes/styles.\n * @returns {void}\n */\nfunction end(element, classesOrStyles, mode = 'remove') {\n const trs = Transition.getInstance(element);\n element.removeEventListener('transitionend', trs.transitionEndHandler, false);\n if (mode === 'remove') {\n setClassesOrStyles(element, classesOrStyles.to, 'remove');\n }\n setClassesOrStyles(element, classesOrStyles.active, 'remove');\n trs.isTransitioning = false;\n trs.transitionEndHandler = null;\n}\n\n/**\n * Manage CSS transition with class.\n *\n * This is heavily inspired by the Vue `<transition>` component\n * and the `@barba/css` package, many thanks to them!\n *\n * @param {HTMLElement} element The target element.\n * @param {string|TransitionStyles} name The name of the transition or an object with the hooks classesOrStyles.\n * @param {string} endMode Whether to remove or keep the `to` classes/styles\n * @returns {Promise<void>} A promise resolving at the end of the transition.\n */\nasync function singleTransition(element, name, endMode = 'remove') {\n /** @type {TransitionStyles} */\n const classesOrStyles = isString(name)\n ? {\n from: `${name}-from`,\n active: `${name}-active`,\n to: `${name}-to`,\n }\n : {\n from: '',\n active: '',\n to: '',\n ...name,\n };\n\n const trs = Transition.getInstance(element);\n // End any previous transition running on the element.\n if (trs.isTransitioning) {\n end(element, classesOrStyles);\n }\n\n await start(element, classesOrStyles);\n await next(element, classesOrStyles);\n end(element, classesOrStyles, endMode);\n return Promise.resolve();\n}\n\n/**\n * Manage CSS transition with class.\n *\n * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements The target element or elements.\n * @param {string|TransitionStyles} name The name of the transition or an object with the hooks classesOrStyles.\n * @param {string} endMode Whether to remove or keep the `to` classes/styles\n * @returns {Promise<void>} A promise resolving at the end of the transition.\n */\nexport default async function transition(elementOrElements, name, endMode = 'remove') {\n await Promise.all(\n eachElements(elementOrElements, (element) => singleTransition(element, name, endMode)),\n );\n}\n"],
5
- "mappings": "AAAA,SAAS,iBAAiB;AAC1B,YAAY,aAAa;AACzB,YAAY,YAAY;AACxB,SAAS,SAAS,gBAAgB;AAClC,SAAS,iBAAiB;AAE1B,SAAS,oBAAoB;AAG7B,MAAM,QAAQ,oBAAI,QAAQ;AAU1B,MAAM,WAAW;AAAA,EAKf,kBAAkB;AAAA,EAMlB,uBAAuB;AAAA,EAMvB,YAAY,SAAS;AACnB,UAAM,IAAI,SAAS,IAAI;AAAA,EACzB;AAAA,EAOA,OAAO,YAAY,SAAS;AAC1B,QAAI,WAAW,MAAM,IAAI,OAAO;AAEhC,QAAI,CAAC,UAAU;AACb,iBAAW,IAAI,KAAK,OAAO;AAAA,IAC7B;AAEA,WAAO;AAAA,EACT;AACF;AASO,SAAS,mBAAmB,SAAS,iBAAiB,SAAS,OAAO;AAC3E,MAAI,SAAS,eAAe,KAAK,QAAQ,eAAe,GAAG;AACzD,YAAQ,QAAQ,SAAS,eAAe;AAAA,EAC1C,OAAO;AACL,WAAO,QAAQ,SAAS,eAAe;AAAA,EACzC;AACF;AAQA,SAAS,eAAe,SAAS;AAC/B,MAAI,CAAC,UAAU,GAAG;AAChB,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,mBAAmB,IAAI,OAAO,iBAAiB,OAAO;AAC9D,SAAO,CAAC,CAAC,sBAAsB,uBAAuB;AACxD;AASA,eAAe,MAAM,SAAS,iBAAiB;AAC7C,QAAM,MAAM,WAAW,YAAY,OAAO;AAC1C,MAAI,kBAAkB;AACtB,qBAAmB,SAAS,gBAAgB,IAAI;AAChD,QAAM,UAAU;AAChB,qBAAmB,SAAS,gBAAgB,MAAM;AACpD;AASA,eAAe,KAAK,SAAS,iBAAiB;AAC5C,QAAM,gBAAgB,eAAe,OAAO;AAG5C,SAAO,IAAI,QAAQ,OAAO,YAAY;AACpC,QAAI,eAAe;AACjB,YAAM,MAAM,WAAW,YAAY,OAAO;AAC1C,UAAI,uBAAuB;AAC3B,cAAQ,iBAAiB,iBAAiB,IAAI,sBAAsB,KAAK;AAAA,IAC3E;AACA,uBAAmB,SAAS,gBAAgB,MAAM,QAAQ;AAC1D,uBAAmB,SAAS,gBAAgB,EAAE;AAC9C,UAAM,UAAU;AAChB,QAAI,CAAC,eAAe;AAClB,cAAQ;AAAA,IACV;AAAA,EACF,CAAC;AACH;AAUA,SAAS,IAAI,SAAS,iBAAiB,OAAO,UAAU;AACtD,QAAM,MAAM,WAAW,YAAY,OAAO;AAC1C,UAAQ,oBAAoB,iBAAiB,IAAI,sBAAsB,KAAK;AAC5E,MAAI,SAAS,UAAU;AACrB,uBAAmB,SAAS,gBAAgB,IAAI,QAAQ;AAAA,EAC1D;AACA,qBAAmB,SAAS,gBAAgB,QAAQ,QAAQ;AAC5D,MAAI,kBAAkB;AACtB,MAAI,uBAAuB;AAC7B;AAaA,eAAe,iBAAiB,SAAS,MAAM,UAAU,UAAU;AAEjE,QAAM,kBAAkB,SAAS,IAAI,IACjC;AAAA,IACE,MAAM,GAAG;AAAA,IACT,QAAQ,GAAG;AAAA,IACX,IAAI,GAAG;AAAA,EACT,IACA;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,IAAI;AAAA,IACJ,GAAG;AAAA,EACL;AAEJ,QAAM,MAAM,WAAW,YAAY,OAAO;AAE1C,MAAI,IAAI,iBAAiB;AACvB,QAAI,SAAS,eAAe;AAAA,EAC9B;AAEA,QAAM,MAAM,SAAS,eAAe;AACpC,QAAM,KAAK,SAAS,eAAe;AACnC,MAAI,SAAS,iBAAiB,OAAO;AACrC,SAAO,QAAQ,QAAQ;AACzB;AAUA,eAAO,WAAkC,mBAAmB,MAAM,UAAU,UAAU;AACpF,QAAM,QAAQ;AAAA,IACZ,aAAa,mBAAmB,CAAC,YAAY,iBAAiB,SAAS,MAAM,OAAO,CAAC;AAAA,EACvF;AACF;",
3
+ "sources": ["../../../packages/js-toolkit/utils/css/transition.ts"],
4
+ "sourcesContent": ["import { nextFrame } from '../nextFrame.js';\nimport * as classes from './classes.js';\nimport * as styles from './styles.js';\nimport { isArray, isString } from '../is.js';\nimport { hasWindow } from '../has.js';\n// eslint-disable-next-line import/extensions\nimport { eachElements } from './utils.js';\n\n/** WeakMap to hold the transition instances. */\nconst cache = new WeakMap();\n\nexport type ClassesOrStyles = string | string[] | Partial<CSSStyleDeclaration>;\n\nexport type TransitionStyles = {\n from?: ClassesOrStyles;\n active?: ClassesOrStyles;\n to?: ClassesOrStyles;\n};\n\n/**\n * Transition class.\n */\nclass Transition {\n /**\n * Is a transition currently running?\n */\n isTransitioning = false;\n\n /**\n * A callback to execute when the transition ends.\n */\n transitionEndHandler: EventListenerOrEventListenerObject | null = null;\n\n /**\n * Instantiate and save the instance to the cache.\n */\n constructor(element: HTMLElement) {\n cache.set(element, this);\n }\n\n /**\n * Get the transition class attached to the given element.\n * @param {HTMLElement} element The HTML element concerned by the transition.\n * @returns {Transition} The transition instance tied to the given element.\n */\n static getInstance(element: HTMLElement): Transition {\n let instance = cache.get(element);\n\n if (!instance) {\n instance = new this(element);\n }\n\n return instance;\n }\n}\n\n/**\n * Update either the classes or the styles of an element with the given method.\n */\nexport function setClassesOrStyles(\n element: HTMLElement,\n classesOrStyles: ClassesOrStyles,\n method: 'add' | 'remove' = 'add',\n) {\n if (isString(classesOrStyles) || isArray(classesOrStyles)) {\n classes[method](element, classesOrStyles);\n } else {\n styles[method](element, classesOrStyles);\n }\n}\n\n/**\n * Test if the given element has a transition duration.\n */\nfunction testTransition(element: HTMLElement) {\n if (!hasWindow()) {\n return false;\n }\n\n const { transitionDuration } = window.getComputedStyle(element);\n return !!transitionDuration && transitionDuration !== '0s';\n}\n\n/**\n * Apply the from state.\n */\nasync function start(element: HTMLElement, classesOrStyles: TransitionStyles) {\n const trs = Transition.getInstance(element);\n trs.isTransitioning = true;\n setClassesOrStyles(element, classesOrStyles.from);\n await nextFrame();\n setClassesOrStyles(element, classesOrStyles.active);\n}\n\n/**\n * Apply the active state.\n */\nasync function next(element: HTMLElement, classesOrStyles: TransitionStyles): Promise<void> {\n const hasTransition = testTransition(element);\n\n /* eslint-disable-next-line */\n return new Promise(async (resolve) => {\n if (hasTransition) {\n const trs = Transition.getInstance(element);\n trs.transitionEndHandler = () => resolve();\n element.addEventListener('transitionend', trs.transitionEndHandler, false);\n }\n setClassesOrStyles(element, classesOrStyles.from, 'remove');\n setClassesOrStyles(element, classesOrStyles.to);\n await nextFrame();\n if (!hasTransition) {\n resolve();\n }\n });\n}\n\n/**\n * Apply the final state.\n */\nfunction end(\n element: HTMLElement,\n classesOrStyles: TransitionStyles,\n mode: 'keep' | 'remove' = 'remove',\n) {\n const trs = Transition.getInstance(element);\n element.removeEventListener('transitionend', trs.transitionEndHandler, false);\n if (mode === 'remove') {\n setClassesOrStyles(element, classesOrStyles.to, 'remove');\n }\n setClassesOrStyles(element, classesOrStyles.active, 'remove');\n trs.isTransitioning = false;\n trs.transitionEndHandler = null;\n}\n\n/**\n * Manage CSS transition with class.\n *\n * This is inspired by the Vue `<transition>` component\n * and the `@barba/css` package, many thanks to them!\n *\n * @param {HTMLElement} element The target element.\n * @param {string|TransitionStyles} name The name of the transition or an object with the hooks classesOrStyles.\n * @param {string} endMode Whether to remove or keep the `to` classes/styles\n * @returns {Promise<void>} A promise resolving at the end of the transition.\n */\nasync function singleTransition(\n element: HTMLElement,\n name: string | TransitionStyles,\n endMode: 'keep' | 'remove' = 'remove',\n): Promise<void> {\n /** @type {TransitionStyles} */\n const classesOrStyles = isString(name)\n ? {\n from: `${name}-from`,\n active: `${name}-active`,\n to: `${name}-to`,\n }\n : {\n from: '',\n active: '',\n to: '',\n ...name,\n };\n\n const trs = Transition.getInstance(element);\n // End any previous transition running on the element.\n if (trs.isTransitioning) {\n end(element, classesOrStyles);\n }\n\n await start(element, classesOrStyles);\n await next(element, classesOrStyles);\n end(element, classesOrStyles, endMode);\n return Promise.resolve();\n}\n\n/**\n * Manage CSS transition with class.\n *\n * @param {HTMLElement|HTMLElement[]|NodeListOf<HTMLElement>} elementOrElements The target element or elements.\n * @param {string|TransitionStyles} name The name of the transition or an object with the hooks classesOrStyles.\n * @param {string} endMode Whether to remove or keep the `to` classes/styles\n * @returns {Promise<void>} A promise resolving at the end of the transition.\n */\nexport default async function transition(\n elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>,\n name: string | TransitionStyles,\n endMode: 'keep' | 'remove' = 'remove',\n) {\n await Promise.all(\n eachElements(elementOrElements, (element) => singleTransition(element, name, endMode)),\n );\n}\n"],
5
+ "mappings": "AAAA,SAAS,iBAAiB;AAC1B,YAAY,aAAa;AACzB,YAAY,YAAY;AACxB,SAAS,SAAS,gBAAgB;AAClC,SAAS,iBAAiB;AAE1B,SAAS,oBAAoB;AAG7B,MAAM,QAAQ,oBAAI,QAAQ;AAa1B,MAAM,WAAW;AAAA,EAIf,kBAAkB;AAAA,EAKlB,uBAAkE;AAAA,EAKlE,YAAY,SAAsB;AAChC,UAAM,IAAI,SAAS,IAAI;AAAA,EACzB;AAAA,EAOA,OAAO,YAAY,SAAkC;AACnD,QAAI,WAAW,MAAM,IAAI,OAAO;AAEhC,QAAI,CAAC,UAAU;AACb,iBAAW,IAAI,KAAK,OAAO;AAAA,IAC7B;AAEA,WAAO;AAAA,EACT;AACF;AAKO,SAAS,mBACd,SACA,iBACA,SAA2B,OAC3B;AACA,MAAI,SAAS,eAAe,KAAK,QAAQ,eAAe,GAAG;AACzD,YAAQ,QAAQ,SAAS,eAAe;AAAA,EAC1C,OAAO;AACL,WAAO,QAAQ,SAAS,eAAe;AAAA,EACzC;AACF;AAKA,SAAS,eAAe,SAAsB;AAC5C,MAAI,CAAC,UAAU,GAAG;AAChB,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,mBAAmB,IAAI,OAAO,iBAAiB,OAAO;AAC9D,SAAO,CAAC,CAAC,sBAAsB,uBAAuB;AACxD;AAKA,eAAe,MAAM,SAAsB,iBAAmC;AAC5E,QAAM,MAAM,WAAW,YAAY,OAAO;AAC1C,MAAI,kBAAkB;AACtB,qBAAmB,SAAS,gBAAgB,IAAI;AAChD,QAAM,UAAU;AAChB,qBAAmB,SAAS,gBAAgB,MAAM;AACpD;AAKA,eAAe,KAAK,SAAsB,iBAAkD;AAC1F,QAAM,gBAAgB,eAAe,OAAO;AAG5C,SAAO,IAAI,QAAQ,OAAO,YAAY;AACpC,QAAI,eAAe;AACjB,YAAM,MAAM,WAAW,YAAY,OAAO;AAC1C,UAAI,uBAAuB,MAAM,QAAQ;AACzC,cAAQ,iBAAiB,iBAAiB,IAAI,sBAAsB,KAAK;AAAA,IAC3E;AACA,uBAAmB,SAAS,gBAAgB,MAAM,QAAQ;AAC1D,uBAAmB,SAAS,gBAAgB,EAAE;AAC9C,UAAM,UAAU;AAChB,QAAI,CAAC,eAAe;AAClB,cAAQ;AAAA,IACV;AAAA,EACF,CAAC;AACH;AAKA,SAAS,IACP,SACA,iBACA,OAA0B,UAC1B;AACA,QAAM,MAAM,WAAW,YAAY,OAAO;AAC1C,UAAQ,oBAAoB,iBAAiB,IAAI,sBAAsB,KAAK;AAC5E,MAAI,SAAS,UAAU;AACrB,uBAAmB,SAAS,gBAAgB,IAAI,QAAQ;AAAA,EAC1D;AACA,qBAAmB,SAAS,gBAAgB,QAAQ,QAAQ;AAC5D,MAAI,kBAAkB;AACtB,MAAI,uBAAuB;AAC7B;AAaA,eAAe,iBACb,SACA,MACA,UAA6B,UACd;AAEf,QAAM,kBAAkB,SAAS,IAAI,IACjC;AAAA,IACE,MAAM,GAAG;AAAA,IACT,QAAQ,GAAG;AAAA,IACX,IAAI,GAAG;AAAA,EACT,IACA;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,IAAI;AAAA,IACJ,GAAG;AAAA,EACL;AAEJ,QAAM,MAAM,WAAW,YAAY,OAAO;AAE1C,MAAI,IAAI,iBAAiB;AACvB,QAAI,SAAS,eAAe;AAAA,EAC9B;AAEA,QAAM,MAAM,SAAS,eAAe;AACpC,QAAM,KAAK,SAAS,eAAe;AACnC,MAAI,SAAS,iBAAiB,OAAO;AACrC,SAAO,QAAQ,QAAQ;AACzB;AAUA,eAAO,WACL,mBACA,MACA,UAA6B,UAC7B;AACA,QAAM,QAAQ;AAAA,IACZ,aAAa,mBAAmB,CAAC,YAAY,iBAAiB,SAAS,MAAM,OAAO,CAAC;AAAA,EACvF;AACF;",
6
6
  "names": []
7
7
  }
@@ -16,7 +16,7 @@ var __copyProps = (to, from, except, desc) => {
16
16
  };
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
18
 
19
- // packages/js-toolkit/utils/debounce.js
19
+ // packages/js-toolkit/utils/debounce.ts
20
20
  var debounce_exports = {};
21
21
  __export(debounce_exports, {
22
22
  default: () => debounce
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../packages/js-toolkit/utils/debounce.js"],
4
- "sourcesContent": ["/**\n * Returns a function, that, as long as it continues to be invoked,\n * will not be triggered. The function will be called after it stops\n * being called for N milliseconds.\n *\n * @param {(...args:any[]) => void} fn The function to call.\n * @param {number} [delay=300] The delay in ms to wait before calling the function.\n * @returns {(...args:any[]) => void} The debounced function.\n */\nexport default function debounce(fn, delay = 300) {\n let timeout;\n return function debounced(...args) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n fn(...args);\n }, delay);\n };\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AASe,SAAR,SAA0B,IAAI,QAAQ,KAAK;AAChD,MAAI;AACJ,SAAO,SAAS,aAAa,MAAM;AACjC,iBAAa,OAAO;AACpB,cAAU,WAAW,MAAM;AACzB,SAAG,GAAG,IAAI;AAAA,IACZ,GAAG,KAAK;AAAA,EACV;AACF;",
3
+ "sources": ["../../packages/js-toolkit/utils/debounce.ts"],
4
+ "sourcesContent": ["/**\n * Returns a function, that, as long as it continues to be invoked,\n * will not be triggered. The function will be called after it stops\n * being called for N milliseconds.\n *\n * @param {(...args:unknown[]) => void} fn The function to call.\n * @param {number} [delay=300] The delay in ms to wait before calling the function.\n * @returns {(...args:unknown[]) => void} The debounced function.\n */\nexport default function debounce(\n fn: (...args: unknown[]) => void,\n delay = 300,\n): (...args: unknown[]) => void {\n let timeout;\n return function debounced(...args) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n fn(...args);\n }, delay);\n };\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AASe,SAAR,SACL,IACA,QAAQ,KACsB;AAC9B,MAAI;AACJ,SAAO,SAAS,aAAa,MAAM;AACjC,iBAAa,OAAO;AACpB,cAAU,WAAW,MAAM;AACzB,SAAG,GAAG,IAAI;AAAA,IACZ,GAAG,KAAK;AAAA,EACV;AACF;",
6
6
  "names": []
7
7
  }
@@ -3,8 +3,8 @@
3
3
  * will not be triggered. The function will be called after it stops
4
4
  * being called for N milliseconds.
5
5
  *
6
- * @param {(...args:any[]) => void} fn The function to call.
6
+ * @param {(...args:unknown[]) => void} fn The function to call.
7
7
  * @param {number} [delay=300] The delay in ms to wait before calling the function.
8
- * @returns {(...args:any[]) => void} The debounced function.
8
+ * @returns {(...args:unknown[]) => void} The debounced function.
9
9
  */
10
- export default function debounce(fn: (...args: any[]) => void, delay?: number): (...args: any[]) => void;
10
+ export default function debounce(fn: (...args: unknown[]) => void, delay?: number): (...args: unknown[]) => void;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../packages/js-toolkit/utils/debounce.js"],
4
- "sourcesContent": ["/**\n * Returns a function, that, as long as it continues to be invoked,\n * will not be triggered. The function will be called after it stops\n * being called for N milliseconds.\n *\n * @param {(...args:any[]) => void} fn The function to call.\n * @param {number} [delay=300] The delay in ms to wait before calling the function.\n * @returns {(...args:any[]) => void} The debounced function.\n */\nexport default function debounce(fn, delay = 300) {\n let timeout;\n return function debounced(...args) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n fn(...args);\n }, delay);\n };\n}\n"],
5
- "mappings": "AASe,SAAR,SAA0B,IAAI,QAAQ,KAAK;AAChD,MAAI;AACJ,SAAO,SAAS,aAAa,MAAM;AACjC,iBAAa,OAAO;AACpB,cAAU,WAAW,MAAM;AACzB,SAAG,GAAG,IAAI;AAAA,IACZ,GAAG,KAAK;AAAA,EACV;AACF;",
3
+ "sources": ["../../packages/js-toolkit/utils/debounce.ts"],
4
+ "sourcesContent": ["/**\n * Returns a function, that, as long as it continues to be invoked,\n * will not be triggered. The function will be called after it stops\n * being called for N milliseconds.\n *\n * @param {(...args:unknown[]) => void} fn The function to call.\n * @param {number} [delay=300] The delay in ms to wait before calling the function.\n * @returns {(...args:unknown[]) => void} The debounced function.\n */\nexport default function debounce(\n fn: (...args: unknown[]) => void,\n delay = 300,\n): (...args: unknown[]) => void {\n let timeout;\n return function debounced(...args) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n fn(...args);\n }, delay);\n };\n}\n"],
5
+ "mappings": "AASe,SAAR,SACL,IACA,QAAQ,KACsB;AAC9B,MAAI;AACJ,SAAO,SAAS,aAAa,MAAM;AACjC,iBAAa,OAAO;AACpB,cAAU,WAAW,MAAM;AACzB,SAAG,GAAG,IAAI;AAAA,IACZ,GAAG,KAAK;AAAA,EACV;AACF;",
6
6
  "names": []
7
7
  }
@@ -22,7 +22,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
22
22
  ));
23
23
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
24
24
 
25
- // packages/js-toolkit/utils/focusTrap.js
25
+ // packages/js-toolkit/utils/focusTrap.ts
26
26
  var focusTrap_exports = {};
27
27
  __export(focusTrap_exports, {
28
28
  default: () => useFocusTrap,
@@ -57,7 +57,9 @@ function trap(element, event) {
57
57
  if (!focusedBefore) {
58
58
  focusedBefore = document.activeElement;
59
59
  }
60
- const focusableChildren = Array.from(element.querySelectorAll(FOCUSABLE_ELEMENTS.join(", ")));
60
+ const focusableChildren = Array.from(
61
+ element.querySelectorAll(FOCUSABLE_ELEMENTS.join(", "))
62
+ );
61
63
  const focusedItemIndex = document.activeElement instanceof HTMLElement ? focusableChildren.indexOf(document.activeElement) : -1;
62
64
  if (!focusableChildren.length) {
63
65
  return;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../packages/js-toolkit/utils/focusTrap.js"],
4
- "sourcesContent": ["import keyCodes from './keyCodes.js';\nimport { isFunction } from './is.js';\n\nconst FOCUSABLE_ELEMENTS = [\n 'a[href]:not([tabindex^=\"-\"]):not([inert])',\n 'area[href]:not([tabindex^=\"-\"]):not([inert])',\n 'input:not([disabled]):not([inert])',\n 'select:not([disabled]):not([inert])',\n 'textarea:not([disabled]):not([inert])',\n 'button:not([disabled]):not([inert])',\n 'iframe:not([tabindex^=\"-\"]):not([inert])',\n 'audio:not([tabindex^=\"-\"]):not([inert])',\n 'video:not([tabindex^=\"-\"]):not([inert])',\n '[contenteditable]:not([tabindex^=\"-\"]):not([inert])',\n '[tabindex]:not([tabindex^=\"-\"]):not([inert])',\n];\n\nlet focusedBefore;\n\n/**\n * Save the current active element.\n */\nexport function saveActiveElement() {\n focusedBefore = document.activeElement;\n}\n\n/**\n * Trap tab navigation inside the given element.\n * @param {HTMLElement} element The element in which to trap the tabulations.\n * @param {KeyboardEvent} event The keydown or keyup event.\n */\nexport function trap(element, event) {\n if (event.keyCode !== keyCodes.TAB) {\n return;\n }\n\n // Save the previous focused element\n if (!focusedBefore) {\n focusedBefore = document.activeElement;\n }\n\n /** @type {Array<HTMLElement>} */\n const focusableChildren = Array.from(element.querySelectorAll(FOCUSABLE_ELEMENTS.join(', ')));\n const focusedItemIndex =\n document.activeElement instanceof HTMLElement\n ? focusableChildren.indexOf(document.activeElement)\n : -1;\n\n if (!focusableChildren.length) {\n return;\n }\n\n if (focusedItemIndex < 0) {\n focusableChildren[0].focus();\n event.preventDefault();\n }\n\n // If the SHIFT key is being pressed while tabbing (moving backwards) and\n // the currently focused item is the first one, move the focus to the last\n // focusable item from the dialog element\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableChildren.at(-1).focus();\n event.preventDefault();\n }\n\n // If the SHIFT key is not being pressed (moving forwards) and the currently\n // focused item is the last one, move the focus to the first focusable item\n // from the dialog element\n else if (!event.shiftKey && focusedItemIndex === focusableChildren.length - 1) {\n focusableChildren[0].focus();\n event.preventDefault();\n }\n}\n\n/**\n * Untrap the tab navigation.\n */\nexport function untrap() {\n if (focusedBefore && isFunction(focusedBefore.focus)) {\n focusedBefore.focus();\n focusedBefore = null;\n }\n}\n\n/**\n * Use a trap/untrap tabs logic.\n * @returns {{ trap: trap, untrap: untrap, saveActiveElement: saveActiveElement }}\n */\nexport default function useFocusTrap() {\n return { trap, untrap, saveActiveElement };\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAqB;AACrB,gBAA2B;AAE3B,IAAM,qBAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAI;AAKG,SAAS,oBAAoB;AAClC,kBAAgB,SAAS;AAC3B;AAOO,SAAS,KAAK,SAAS,OAAO;AACnC,MAAI,MAAM,YAAY,gBAAAA,QAAS,KAAK;AAClC;AAAA,EACF;AAGA,MAAI,CAAC,eAAe;AAClB,oBAAgB,SAAS;AAAA,EAC3B;AAGA,QAAM,oBAAoB,MAAM,KAAK,QAAQ,iBAAiB,mBAAmB,KAAK,IAAI,CAAC,CAAC;AAC5F,QAAM,mBACJ,SAAS,yBAAyB,cAC9B,kBAAkB,QAAQ,SAAS,aAAa,IAChD;AAEN,MAAI,CAAC,kBAAkB,QAAQ;AAC7B;AAAA,EACF;AAEA,MAAI,mBAAmB,GAAG;AACxB,sBAAkB,GAAG,MAAM;AAC3B,UAAM,eAAe;AAAA,EACvB;AAKA,MAAI,MAAM,YAAY,qBAAqB,GAAG;AAC5C,sBAAkB,GAAG,EAAE,EAAE,MAAM;AAC/B,UAAM,eAAe;AAAA,EACvB,WAKS,CAAC,MAAM,YAAY,qBAAqB,kBAAkB,SAAS,GAAG;AAC7E,sBAAkB,GAAG,MAAM;AAC3B,UAAM,eAAe;AAAA,EACvB;AACF;AAKO,SAAS,SAAS;AACvB,MAAI,qBAAiB,sBAAW,cAAc,KAAK,GAAG;AACpD,kBAAc,MAAM;AACpB,oBAAgB;AAAA,EAClB;AACF;AAMe,SAAR,eAAgC;AACrC,SAAO,EAAE,MAAM,QAAQ,kBAAkB;AAC3C;",
3
+ "sources": ["../../packages/js-toolkit/utils/focusTrap.ts"],
4
+ "sourcesContent": ["import keyCodes from './keyCodes.js';\nimport { isFunction } from './is.js';\n\nconst FOCUSABLE_ELEMENTS = [\n 'a[href]:not([tabindex^=\"-\"]):not([inert])',\n 'area[href]:not([tabindex^=\"-\"]):not([inert])',\n 'input:not([disabled]):not([inert])',\n 'select:not([disabled]):not([inert])',\n 'textarea:not([disabled]):not([inert])',\n 'button:not([disabled]):not([inert])',\n 'iframe:not([tabindex^=\"-\"]):not([inert])',\n 'audio:not([tabindex^=\"-\"]):not([inert])',\n 'video:not([tabindex^=\"-\"]):not([inert])',\n '[contenteditable]:not([tabindex^=\"-\"]):not([inert])',\n '[tabindex]:not([tabindex^=\"-\"]):not([inert])',\n];\n\nlet focusedBefore;\n\n/**\n * Save the current active element.\n */\nexport function saveActiveElement() {\n focusedBefore = document.activeElement;\n}\n\n/**\n * Trap tab navigation inside the given element.\n * @param {HTMLElement} element The element in which to trap the tabulations.\n * @param {KeyboardEvent} event The keydown or keyup event.\n */\nexport function trap(element: HTMLElement, event: KeyboardEvent) {\n if (event.keyCode !== keyCodes.TAB) {\n return;\n }\n\n // Save the previous focused element\n if (!focusedBefore) {\n focusedBefore = document.activeElement;\n }\n\n const focusableChildren: HTMLElement[] = Array.from(\n element.querySelectorAll(FOCUSABLE_ELEMENTS.join(', ')),\n );\n const focusedItemIndex =\n document.activeElement instanceof HTMLElement\n ? focusableChildren.indexOf(document.activeElement)\n : -1;\n\n if (!focusableChildren.length) {\n return;\n }\n\n if (focusedItemIndex < 0) {\n focusableChildren[0].focus();\n event.preventDefault();\n }\n\n // If the SHIFT key is being pressed while tabbing (moving backwards) and\n // the currently focused item is the first one, move the focus to the last\n // focusable item from the dialog element\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableChildren.at(-1).focus();\n event.preventDefault();\n }\n\n // If the SHIFT key is not being pressed (moving forwards) and the currently\n // focused item is the last one, move the focus to the first focusable item\n // from the dialog element\n else if (!event.shiftKey && focusedItemIndex === focusableChildren.length - 1) {\n focusableChildren[0].focus();\n event.preventDefault();\n }\n}\n\n/**\n * Untrap the tab navigation.\n */\nexport function untrap() {\n if (focusedBefore && isFunction(focusedBefore.focus)) {\n focusedBefore.focus();\n focusedBefore = null;\n }\n}\n\n/**\n * Use a trap/untrap tabs logic.\n */\nexport default function useFocusTrap() {\n return { trap, untrap, saveActiveElement };\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAqB;AACrB,gBAA2B;AAE3B,IAAM,qBAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAI;AAKG,SAAS,oBAAoB;AAClC,kBAAgB,SAAS;AAC3B;AAOO,SAAS,KAAK,SAAsB,OAAsB;AAC/D,MAAI,MAAM,YAAY,gBAAAA,QAAS,KAAK;AAClC;AAAA,EACF;AAGA,MAAI,CAAC,eAAe;AAClB,oBAAgB,SAAS;AAAA,EAC3B;AAEA,QAAM,oBAAmC,MAAM;AAAA,IAC7C,QAAQ,iBAAiB,mBAAmB,KAAK,IAAI,CAAC;AAAA,EACxD;AACA,QAAM,mBACJ,SAAS,yBAAyB,cAC9B,kBAAkB,QAAQ,SAAS,aAAa,IAChD;AAEN,MAAI,CAAC,kBAAkB,QAAQ;AAC7B;AAAA,EACF;AAEA,MAAI,mBAAmB,GAAG;AACxB,sBAAkB,GAAG,MAAM;AAC3B,UAAM,eAAe;AAAA,EACvB;AAKA,MAAI,MAAM,YAAY,qBAAqB,GAAG;AAC5C,sBAAkB,GAAG,EAAE,EAAE,MAAM;AAC/B,UAAM,eAAe;AAAA,EACvB,WAKS,CAAC,MAAM,YAAY,qBAAqB,kBAAkB,SAAS,GAAG;AAC7E,sBAAkB,GAAG,MAAM;AAC3B,UAAM,eAAe;AAAA,EACvB;AACF;AAKO,SAAS,SAAS;AACvB,MAAI,qBAAiB,sBAAW,cAAc,KAAK,GAAG;AACpD,kBAAc,MAAM;AACpB,oBAAgB;AAAA,EAClB;AACF;AAKe,SAAR,eAAgC;AACrC,SAAO,EAAE,MAAM,QAAQ,kBAAkB;AAC3C;",
6
6
  "names": ["keyCodes"]
7
7
  }
@@ -1,20 +1,19 @@
1
1
  /**
2
2
  * Save the current active element.
3
3
  */
4
- export function saveActiveElement(): void;
4
+ export declare function saveActiveElement(): void;
5
5
  /**
6
6
  * Trap tab navigation inside the given element.
7
7
  * @param {HTMLElement} element The element in which to trap the tabulations.
8
8
  * @param {KeyboardEvent} event The keydown or keyup event.
9
9
  */
10
- export function trap(element: HTMLElement, event: KeyboardEvent): void;
10
+ export declare function trap(element: HTMLElement, event: KeyboardEvent): void;
11
11
  /**
12
12
  * Untrap the tab navigation.
13
13
  */
14
- export function untrap(): void;
14
+ export declare function untrap(): void;
15
15
  /**
16
16
  * Use a trap/untrap tabs logic.
17
- * @returns {{ trap: trap, untrap: untrap, saveActiveElement: saveActiveElement }}
18
17
  */
19
18
  export default function useFocusTrap(): {
20
19
  trap: typeof trap;
@@ -24,7 +24,9 @@ function trap(element, event) {
24
24
  if (!focusedBefore) {
25
25
  focusedBefore = document.activeElement;
26
26
  }
27
- const focusableChildren = Array.from(element.querySelectorAll(FOCUSABLE_ELEMENTS.join(", ")));
27
+ const focusableChildren = Array.from(
28
+ element.querySelectorAll(FOCUSABLE_ELEMENTS.join(", "))
29
+ );
28
30
  const focusedItemIndex = document.activeElement instanceof HTMLElement ? focusableChildren.indexOf(document.activeElement) : -1;
29
31
  if (!focusableChildren.length) {
30
32
  return;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../packages/js-toolkit/utils/focusTrap.js"],
4
- "sourcesContent": ["import keyCodes from './keyCodes.js';\nimport { isFunction } from './is.js';\n\nconst FOCUSABLE_ELEMENTS = [\n 'a[href]:not([tabindex^=\"-\"]):not([inert])',\n 'area[href]:not([tabindex^=\"-\"]):not([inert])',\n 'input:not([disabled]):not([inert])',\n 'select:not([disabled]):not([inert])',\n 'textarea:not([disabled]):not([inert])',\n 'button:not([disabled]):not([inert])',\n 'iframe:not([tabindex^=\"-\"]):not([inert])',\n 'audio:not([tabindex^=\"-\"]):not([inert])',\n 'video:not([tabindex^=\"-\"]):not([inert])',\n '[contenteditable]:not([tabindex^=\"-\"]):not([inert])',\n '[tabindex]:not([tabindex^=\"-\"]):not([inert])',\n];\n\nlet focusedBefore;\n\n/**\n * Save the current active element.\n */\nexport function saveActiveElement() {\n focusedBefore = document.activeElement;\n}\n\n/**\n * Trap tab navigation inside the given element.\n * @param {HTMLElement} element The element in which to trap the tabulations.\n * @param {KeyboardEvent} event The keydown or keyup event.\n */\nexport function trap(element, event) {\n if (event.keyCode !== keyCodes.TAB) {\n return;\n }\n\n // Save the previous focused element\n if (!focusedBefore) {\n focusedBefore = document.activeElement;\n }\n\n /** @type {Array<HTMLElement>} */\n const focusableChildren = Array.from(element.querySelectorAll(FOCUSABLE_ELEMENTS.join(', ')));\n const focusedItemIndex =\n document.activeElement instanceof HTMLElement\n ? focusableChildren.indexOf(document.activeElement)\n : -1;\n\n if (!focusableChildren.length) {\n return;\n }\n\n if (focusedItemIndex < 0) {\n focusableChildren[0].focus();\n event.preventDefault();\n }\n\n // If the SHIFT key is being pressed while tabbing (moving backwards) and\n // the currently focused item is the first one, move the focus to the last\n // focusable item from the dialog element\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableChildren.at(-1).focus();\n event.preventDefault();\n }\n\n // If the SHIFT key is not being pressed (moving forwards) and the currently\n // focused item is the last one, move the focus to the first focusable item\n // from the dialog element\n else if (!event.shiftKey && focusedItemIndex === focusableChildren.length - 1) {\n focusableChildren[0].focus();\n event.preventDefault();\n }\n}\n\n/**\n * Untrap the tab navigation.\n */\nexport function untrap() {\n if (focusedBefore && isFunction(focusedBefore.focus)) {\n focusedBefore.focus();\n focusedBefore = null;\n }\n}\n\n/**\n * Use a trap/untrap tabs logic.\n * @returns {{ trap: trap, untrap: untrap, saveActiveElement: saveActiveElement }}\n */\nexport default function useFocusTrap() {\n return { trap, untrap, saveActiveElement };\n}\n"],
5
- "mappings": "AAAA,OAAO,cAAc;AACrB,SAAS,kBAAkB;AAE3B,MAAM,qBAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAI;AAKG,SAAS,oBAAoB;AAClC,kBAAgB,SAAS;AAC3B;AAOO,SAAS,KAAK,SAAS,OAAO;AACnC,MAAI,MAAM,YAAY,SAAS,KAAK;AAClC;AAAA,EACF;AAGA,MAAI,CAAC,eAAe;AAClB,oBAAgB,SAAS;AAAA,EAC3B;AAGA,QAAM,oBAAoB,MAAM,KAAK,QAAQ,iBAAiB,mBAAmB,KAAK,IAAI,CAAC,CAAC;AAC5F,QAAM,mBACJ,SAAS,yBAAyB,cAC9B,kBAAkB,QAAQ,SAAS,aAAa,IAChD;AAEN,MAAI,CAAC,kBAAkB,QAAQ;AAC7B;AAAA,EACF;AAEA,MAAI,mBAAmB,GAAG;AACxB,sBAAkB,GAAG,MAAM;AAC3B,UAAM,eAAe;AAAA,EACvB;AAKA,MAAI,MAAM,YAAY,qBAAqB,GAAG;AAC5C,sBAAkB,GAAG,EAAE,EAAE,MAAM;AAC/B,UAAM,eAAe;AAAA,EACvB,WAKS,CAAC,MAAM,YAAY,qBAAqB,kBAAkB,SAAS,GAAG;AAC7E,sBAAkB,GAAG,MAAM;AAC3B,UAAM,eAAe;AAAA,EACvB;AACF;AAKO,SAAS,SAAS;AACvB,MAAI,iBAAiB,WAAW,cAAc,KAAK,GAAG;AACpD,kBAAc,MAAM;AACpB,oBAAgB;AAAA,EAClB;AACF;AAMe,SAAR,eAAgC;AACrC,SAAO,EAAE,MAAM,QAAQ,kBAAkB;AAC3C;",
3
+ "sources": ["../../packages/js-toolkit/utils/focusTrap.ts"],
4
+ "sourcesContent": ["import keyCodes from './keyCodes.js';\nimport { isFunction } from './is.js';\n\nconst FOCUSABLE_ELEMENTS = [\n 'a[href]:not([tabindex^=\"-\"]):not([inert])',\n 'area[href]:not([tabindex^=\"-\"]):not([inert])',\n 'input:not([disabled]):not([inert])',\n 'select:not([disabled]):not([inert])',\n 'textarea:not([disabled]):not([inert])',\n 'button:not([disabled]):not([inert])',\n 'iframe:not([tabindex^=\"-\"]):not([inert])',\n 'audio:not([tabindex^=\"-\"]):not([inert])',\n 'video:not([tabindex^=\"-\"]):not([inert])',\n '[contenteditable]:not([tabindex^=\"-\"]):not([inert])',\n '[tabindex]:not([tabindex^=\"-\"]):not([inert])',\n];\n\nlet focusedBefore;\n\n/**\n * Save the current active element.\n */\nexport function saveActiveElement() {\n focusedBefore = document.activeElement;\n}\n\n/**\n * Trap tab navigation inside the given element.\n * @param {HTMLElement} element The element in which to trap the tabulations.\n * @param {KeyboardEvent} event The keydown or keyup event.\n */\nexport function trap(element: HTMLElement, event: KeyboardEvent) {\n if (event.keyCode !== keyCodes.TAB) {\n return;\n }\n\n // Save the previous focused element\n if (!focusedBefore) {\n focusedBefore = document.activeElement;\n }\n\n const focusableChildren: HTMLElement[] = Array.from(\n element.querySelectorAll(FOCUSABLE_ELEMENTS.join(', ')),\n );\n const focusedItemIndex =\n document.activeElement instanceof HTMLElement\n ? focusableChildren.indexOf(document.activeElement)\n : -1;\n\n if (!focusableChildren.length) {\n return;\n }\n\n if (focusedItemIndex < 0) {\n focusableChildren[0].focus();\n event.preventDefault();\n }\n\n // If the SHIFT key is being pressed while tabbing (moving backwards) and\n // the currently focused item is the first one, move the focus to the last\n // focusable item from the dialog element\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableChildren.at(-1).focus();\n event.preventDefault();\n }\n\n // If the SHIFT key is not being pressed (moving forwards) and the currently\n // focused item is the last one, move the focus to the first focusable item\n // from the dialog element\n else if (!event.shiftKey && focusedItemIndex === focusableChildren.length - 1) {\n focusableChildren[0].focus();\n event.preventDefault();\n }\n}\n\n/**\n * Untrap the tab navigation.\n */\nexport function untrap() {\n if (focusedBefore && isFunction(focusedBefore.focus)) {\n focusedBefore.focus();\n focusedBefore = null;\n }\n}\n\n/**\n * Use a trap/untrap tabs logic.\n */\nexport default function useFocusTrap() {\n return { trap, untrap, saveActiveElement };\n}\n"],
5
+ "mappings": "AAAA,OAAO,cAAc;AACrB,SAAS,kBAAkB;AAE3B,MAAM,qBAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAI;AAKG,SAAS,oBAAoB;AAClC,kBAAgB,SAAS;AAC3B;AAOO,SAAS,KAAK,SAAsB,OAAsB;AAC/D,MAAI,MAAM,YAAY,SAAS,KAAK;AAClC;AAAA,EACF;AAGA,MAAI,CAAC,eAAe;AAClB,oBAAgB,SAAS;AAAA,EAC3B;AAEA,QAAM,oBAAmC,MAAM;AAAA,IAC7C,QAAQ,iBAAiB,mBAAmB,KAAK,IAAI,CAAC;AAAA,EACxD;AACA,QAAM,mBACJ,SAAS,yBAAyB,cAC9B,kBAAkB,QAAQ,SAAS,aAAa,IAChD;AAEN,MAAI,CAAC,kBAAkB,QAAQ;AAC7B;AAAA,EACF;AAEA,MAAI,mBAAmB,GAAG;AACxB,sBAAkB,GAAG,MAAM;AAC3B,UAAM,eAAe;AAAA,EACvB;AAKA,MAAI,MAAM,YAAY,qBAAqB,GAAG;AAC5C,sBAAkB,GAAG,EAAE,EAAE,MAAM;AAC/B,UAAM,eAAe;AAAA,EACvB,WAKS,CAAC,MAAM,YAAY,qBAAqB,kBAAkB,SAAS,GAAG;AAC7E,sBAAkB,GAAG,MAAM;AAC3B,UAAM,eAAe;AAAA,EACvB;AACF;AAKO,SAAS,SAAS;AACvB,MAAI,iBAAiB,WAAW,cAAc,KAAK,GAAG;AACpD,kBAAc,MAAM;AACpB,oBAAgB;AAAA,EAClB;AACF;AAKe,SAAR,eAAgC;AACrC,SAAO,EAAE,MAAM,QAAQ,kBAAkB;AAC3C;",
6
6
  "names": []
7
7
  }
package/utils/has.cjs CHANGED
@@ -16,7 +16,7 @@ var __copyProps = (to, from, except, desc) => {
16
16
  };
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
18
 
19
- // packages/js-toolkit/utils/has.js
19
+ // packages/js-toolkit/utils/has.ts
20
20
  var has_exports = {};
21
21
  __export(has_exports, {
22
22
  hasWindow: () => hasWindow
package/utils/has.cjs.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../packages/js-toolkit/utils/has.js"],
4
- "sourcesContent": ["/**\n * Test if the current context as a global `window` object available.\n *\n * @returns {boolean}\n */\nexport function hasWindow() {\n return typeof window !== 'undefined';\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,SAAS,YAAY;AAC1B,SAAO,OAAO,WAAW;AAC3B;",
3
+ "sources": ["../../packages/js-toolkit/utils/has.ts"],
4
+ "sourcesContent": ["/**\n * Test if the current context as a global `window` object available.\n */\nexport function hasWindow() {\n return typeof window !== 'undefined';\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,SAAS,YAAY;AAC1B,SAAO,OAAO,WAAW;AAC3B;",
6
6
  "names": []
7
7
  }
package/utils/has.d.ts CHANGED
@@ -1,6 +1,4 @@
1
1
  /**
2
2
  * Test if the current context as a global `window` object available.
3
- *
4
- * @returns {boolean}
5
3
  */
6
- export function hasWindow(): boolean;
4
+ export declare function hasWindow(): boolean;
package/utils/has.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../packages/js-toolkit/utils/has.js"],
4
- "sourcesContent": ["/**\n * Test if the current context as a global `window` object available.\n *\n * @returns {boolean}\n */\nexport function hasWindow() {\n return typeof window !== 'undefined';\n}\n"],
5
- "mappings": "AAKO,SAAS,YAAY;AAC1B,SAAO,OAAO,WAAW;AAC3B;",
3
+ "sources": ["../../packages/js-toolkit/utils/has.ts"],
4
+ "sourcesContent": ["/**\n * Test if the current context as a global `window` object available.\n */\nexport function hasWindow() {\n return typeof window !== 'undefined';\n}\n"],
5
+ "mappings": "AAGO,SAAS,YAAY;AAC1B,SAAO,OAAO,WAAW;AAC3B;",
6
6
  "names": []
7
7
  }
package/utils/history.cjs CHANGED
@@ -16,7 +16,7 @@ var __copyProps = (to, from, except, desc) => {
16
16
  };
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
18
 
19
- // packages/js-toolkit/utils/history.js
19
+ // packages/js-toolkit/utils/history.ts
20
20
  var history_exports = {};
21
21
  __export(history_exports, {
22
22
  objectToURLSearchParams: () => objectToURLSearchParams,