@studiometa/js-toolkit 2.6.5 → 2.8.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 (363) hide show
  1. package/Base/features.cjs +27 -0
  2. package/Base/features.cjs.map +7 -0
  3. package/Base/features.d.ts +2 -0
  4. package/Base/features.js +5 -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 +11 -15
  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/OptionsManager.d.ts +9 -9
  24. package/Base/managers/RefsManager.cjs +13 -8
  25. package/Base/managers/RefsManager.cjs.map +2 -2
  26. package/Base/managers/RefsManager.js +14 -9
  27. package/Base/managers/RefsManager.js.map +2 -2
  28. package/Base/managers/ResponsiveOptionsManager.d.ts +1 -1
  29. package/Base/managers/ServicesManager.d.ts +2 -2
  30. package/Base/managers/index.cjs +41 -0
  31. package/Base/managers/index.cjs.map +7 -0
  32. package/Base/managers/index.d.ts +8 -0
  33. package/Base/managers/index.js +19 -0
  34. package/Base/managers/index.js.map +7 -0
  35. package/Base/types.cjs.map +1 -1
  36. package/Base/types.d.ts +1 -1
  37. package/Base/utils.cjs +15 -1
  38. package/Base/utils.cjs.map +2 -2
  39. package/Base/utils.d.ts +1 -0
  40. package/Base/utils.js +15 -1
  41. package/Base/utils.js.map +2 -2
  42. package/decorators/index.cjs +1 -1
  43. package/decorators/index.cjs.map +2 -2
  44. package/decorators/index.d.ts +1 -1
  45. package/decorators/index.js +1 -1
  46. package/decorators/index.js.map +1 -1
  47. package/decorators/withBreakpointManager.cjs.map +2 -2
  48. package/decorators/withBreakpointManager.js.map +2 -2
  49. package/decorators/withBreakpointObserver.cjs.map +2 -2
  50. package/decorators/withBreakpointObserver.js.map +2 -2
  51. package/decorators/withDrag.cjs.map +2 -2
  52. package/decorators/withDrag.d.ts +1 -1
  53. package/decorators/withDrag.js.map +2 -2
  54. package/decorators/withMountWhenInView.cjs.map +2 -2
  55. package/decorators/withMountWhenInView.js.map +2 -2
  56. package/decorators/withResponsiveOptions.cjs.map +2 -2
  57. package/decorators/withResponsiveOptions.js.map +2 -2
  58. package/decorators/withScrolledInView/index.cjs +22 -0
  59. package/decorators/withScrolledInView/index.cjs.map +7 -0
  60. package/decorators/withScrolledInView/index.d.ts +2 -0
  61. package/decorators/withScrolledInView/index.js +3 -0
  62. package/decorators/withScrolledInView/index.js.map +7 -0
  63. package/decorators/withScrolledInView/types.cjs +19 -0
  64. package/decorators/withScrolledInView/types.cjs.map +7 -0
  65. package/decorators/withScrolledInView/types.d.ts +2 -0
  66. package/decorators/withScrolledInView/types.js +1 -0
  67. package/decorators/withScrolledInView/types.js.map +7 -0
  68. package/decorators/withScrolledInView/utils.cjs +99 -0
  69. package/decorators/withScrolledInView/utils.cjs.map +7 -0
  70. package/decorators/withScrolledInView/utils.d.ts +17 -0
  71. package/decorators/withScrolledInView/utils.js +77 -0
  72. package/decorators/withScrolledInView/utils.js.map +7 -0
  73. package/decorators/{withScrolledInView.cjs → withScrolledInView/withScrolledInView.cjs} +25 -10
  74. package/decorators/withScrolledInView/withScrolledInView.cjs.map +7 -0
  75. package/decorators/{withScrolledInView.d.ts → withScrolledInView/withScrolledInView.d.ts} +6 -5
  76. package/decorators/{withScrolledInView.js → withScrolledInView/withScrolledInView.js} +31 -9
  77. package/decorators/withScrolledInView/withScrolledInView.js.map +7 -0
  78. package/decorators/withVue2.cjs.map +2 -2
  79. package/decorators/withVue2.js.map +2 -2
  80. package/helpers/createApp.cjs +23 -19
  81. package/helpers/createApp.cjs.map +2 -2
  82. package/helpers/createApp.d.ts +6 -1
  83. package/helpers/createApp.js +23 -19
  84. package/helpers/createApp.js.map +2 -2
  85. package/helpers/getClosestParent.cjs +3 -11
  86. package/helpers/getClosestParent.cjs.map +2 -2
  87. package/helpers/getClosestParent.js +3 -11
  88. package/helpers/getClosestParent.js.map +2 -2
  89. package/helpers/getInstanceFromElement.cjs.map +2 -2
  90. package/helpers/getInstanceFromElement.js.map +2 -2
  91. package/helpers/importOnInteraction.cjs.map +2 -2
  92. package/helpers/importOnInteraction.js.map +2 -2
  93. package/helpers/importWhenIdle.cjs.map +2 -2
  94. package/helpers/importWhenIdle.d.ts +1 -1
  95. package/helpers/importWhenIdle.js.map +2 -2
  96. package/index.cjs.map +1 -1
  97. package/index.d.ts +1 -1
  98. package/index.js.map +1 -1
  99. package/package.json +2 -2
  100. package/services/drag.cjs +1 -1
  101. package/services/drag.cjs.map +3 -3
  102. package/services/drag.d.ts +21 -24
  103. package/services/drag.js.map +3 -3
  104. package/services/index.d.ts +7 -7
  105. package/services/key.cjs +1 -1
  106. package/services/key.cjs.map +3 -3
  107. package/services/key.d.ts +8 -9
  108. package/services/key.js.map +3 -3
  109. package/services/load.cjs +1 -1
  110. package/services/load.cjs.map +3 -3
  111. package/services/load.d.ts +6 -5
  112. package/services/load.js.map +3 -3
  113. package/services/pointer.cjs +1 -1
  114. package/services/pointer.cjs.map +3 -3
  115. package/services/pointer.d.ts +10 -10
  116. package/services/pointer.js.map +3 -3
  117. package/services/raf.cjs +4 -4
  118. package/services/raf.cjs.map +3 -3
  119. package/services/raf.d.ts +6 -7
  120. package/services/raf.js +3 -3
  121. package/services/raf.js.map +3 -3
  122. package/services/resize.cjs +1 -1
  123. package/services/resize.cjs.map +3 -3
  124. package/services/resize.d.ts +8 -9
  125. package/services/resize.js.map +3 -3
  126. package/services/scroll.cjs +1 -1
  127. package/services/scroll.cjs.map +3 -3
  128. package/services/scroll.d.ts +16 -17
  129. package/services/scroll.js.map +3 -3
  130. package/services/service.cjs +2 -2
  131. package/services/service.cjs.map +3 -3
  132. package/services/service.d.ts +12 -14
  133. package/services/service.js +1 -1
  134. package/services/service.js.map +3 -3
  135. package/utils/Queue.cjs +60 -0
  136. package/utils/Queue.cjs.map +7 -0
  137. package/utils/Queue.d.ts +44 -0
  138. package/utils/Queue.js +38 -0
  139. package/utils/Queue.js.map +7 -0
  140. package/utils/collide/boundingRectToCircle.cjs +3 -2
  141. package/utils/collide/boundingRectToCircle.cjs.map +3 -3
  142. package/utils/collide/boundingRectToCircle.d.ts +8 -13
  143. package/utils/collide/boundingRectToCircle.js +2 -1
  144. package/utils/collide/boundingRectToCircle.js.map +3 -3
  145. package/utils/collide/collideCircleCircle.cjs +1 -1
  146. package/utils/collide/collideCircleCircle.cjs.map +1 -1
  147. package/utils/collide/collideCircleCircle.d.ts +1 -15
  148. package/utils/collide/collideCircleCircle.js.map +1 -1
  149. package/utils/collide/collideCircleRect.cjs +1 -1
  150. package/utils/collide/collideCircleRect.cjs.map +1 -1
  151. package/utils/collide/collideCircleRect.d.ts +1 -33
  152. package/utils/collide/collideCircleRect.js.map +1 -1
  153. package/utils/collide/collidePointCircle.cjs +1 -1
  154. package/utils/collide/collidePointCircle.cjs.map +1 -1
  155. package/utils/collide/collidePointCircle.d.ts +1 -25
  156. package/utils/collide/collidePointCircle.js.map +1 -1
  157. package/utils/collide/collidePointRect.cjs +1 -1
  158. package/utils/collide/collidePointRect.cjs.map +1 -1
  159. package/utils/collide/collidePointRect.d.ts +1 -29
  160. package/utils/collide/collidePointRect.js.map +1 -1
  161. package/utils/collide/collideRectRect.cjs +1 -1
  162. package/utils/collide/collideRectRect.cjs.map +1 -1
  163. package/utils/collide/collideRectRect.d.ts +1 -19
  164. package/utils/collide/collideRectRect.js.map +1 -1
  165. package/utils/collide/index.cjs +1 -1
  166. package/utils/collide/index.cjs.map +1 -1
  167. package/utils/collide/index.d.ts +9 -6
  168. package/utils/collide/index.js.map +1 -1
  169. package/utils/css/animate.cjs +32 -16
  170. package/utils/css/animate.cjs.map +4 -4
  171. package/utils/css/animate.d.ts +12 -11
  172. package/utils/css/animate.js +31 -15
  173. package/utils/css/animate.js.map +4 -4
  174. package/utils/css/classes.cjs +1 -1
  175. package/utils/css/classes.cjs.map +3 -3
  176. package/utils/css/classes.d.ts +3 -16
  177. package/utils/css/classes.js.map +3 -3
  178. package/utils/css/getOffsetSizes.cjs +2 -2
  179. package/utils/css/getOffsetSizes.cjs.map +3 -3
  180. package/utils/css/getOffsetSizes.d.ts +0 -2
  181. package/utils/css/getOffsetSizes.js +1 -1
  182. package/utils/css/getOffsetSizes.js.map +3 -3
  183. package/utils/css/matrix.cjs +1 -1
  184. package/utils/css/matrix.cjs.map +3 -3
  185. package/utils/css/matrix.d.ts +10 -8
  186. package/utils/css/matrix.js.map +3 -3
  187. package/utils/css/styles.cjs +1 -1
  188. package/utils/css/styles.cjs.map +3 -3
  189. package/utils/css/styles.d.ts +2 -10
  190. package/utils/css/styles.js.map +3 -3
  191. package/utils/css/transform.cjs +1 -1
  192. package/utils/css/transform.cjs.map +3 -3
  193. package/utils/css/transform.d.ts +5 -27
  194. package/utils/css/transform.js.map +3 -3
  195. package/utils/css/transition.cjs +2 -2
  196. package/utils/css/transition.cjs.map +3 -3
  197. package/utils/css/transition.d.ts +11 -15
  198. package/utils/css/transition.js +1 -1
  199. package/utils/css/transition.js.map +3 -3
  200. package/utils/debounce.cjs +1 -1
  201. package/utils/debounce.cjs.map +3 -3
  202. package/utils/debounce.d.ts +3 -3
  203. package/utils/debounce.js.map +3 -3
  204. package/utils/dom/ancestors.cjs +37 -0
  205. package/utils/dom/ancestors.cjs.map +7 -0
  206. package/utils/dom/ancestors.d.ts +8 -0
  207. package/utils/dom/ancestors.js +15 -0
  208. package/utils/dom/ancestors.js.map +7 -0
  209. package/utils/dom/index.cjs +21 -0
  210. package/utils/dom/index.cjs.map +7 -0
  211. package/utils/dom/index.d.ts +1 -0
  212. package/utils/dom/index.js +2 -0
  213. package/utils/dom/index.js.map +7 -0
  214. package/utils/focusTrap.cjs +4 -2
  215. package/utils/focusTrap.cjs.map +3 -3
  216. package/utils/focusTrap.d.ts +3 -4
  217. package/utils/focusTrap.js +3 -1
  218. package/utils/focusTrap.js.map +3 -3
  219. package/utils/has.cjs +1 -1
  220. package/utils/has.cjs.map +3 -3
  221. package/utils/has.d.ts +1 -3
  222. package/utils/has.js.map +3 -3
  223. package/utils/history.cjs +1 -1
  224. package/utils/history.cjs.map +3 -3
  225. package/utils/history.d.ts +10 -10
  226. package/utils/history.js.map +3 -3
  227. package/utils/index.cjs +3 -0
  228. package/utils/index.cjs.map +2 -2
  229. package/utils/index.d.ts +2 -0
  230. package/utils/index.js +3 -0
  231. package/utils/index.js.map +2 -2
  232. package/utils/is.cjs +2 -2
  233. package/utils/is.cjs.map +3 -3
  234. package/utils/is.d.ts +26 -8
  235. package/utils/is.js +1 -1
  236. package/utils/is.js.map +3 -3
  237. package/utils/keyCodes.cjs +1 -1
  238. package/utils/keyCodes.cjs.map +2 -2
  239. package/utils/keyCodes.d.ts +10 -10
  240. package/utils/keyCodes.js.map +2 -2
  241. package/utils/math/clamp.cjs +1 -1
  242. package/utils/math/clamp.cjs.map +3 -3
  243. package/utils/math/clamp.js.map +3 -3
  244. package/utils/math/clamp01.cjs +1 -1
  245. package/utils/math/clamp01.cjs.map +3 -3
  246. package/utils/math/clamp01.js.map +3 -3
  247. package/utils/math/createEases.cjs +1 -1
  248. package/utils/math/createEases.cjs.map +3 -3
  249. package/utils/math/createEases.d.ts +3 -6
  250. package/utils/math/createEases.js.map +3 -3
  251. package/utils/math/damp.cjs +1 -1
  252. package/utils/math/damp.cjs.map +3 -3
  253. package/utils/math/damp.js.map +3 -3
  254. package/utils/math/ease.cjs +1 -1
  255. package/utils/math/ease.cjs.map +3 -3
  256. package/utils/math/ease.d.ts +21 -21
  257. package/utils/math/ease.js.map +3 -3
  258. package/utils/math/index.cjs +1 -1
  259. package/utils/math/index.cjs.map +1 -1
  260. package/utils/math/index.d.ts +10 -10
  261. package/utils/math/index.js.map +1 -1
  262. package/utils/math/inertiaFinalValue.cjs +1 -1
  263. package/utils/math/inertiaFinalValue.cjs.map +3 -3
  264. package/utils/math/inertiaFinalValue.js.map +3 -3
  265. package/utils/math/lerp.cjs +1 -1
  266. package/utils/math/lerp.cjs.map +3 -3
  267. package/utils/math/lerp.js.map +3 -3
  268. package/utils/math/map.cjs +1 -1
  269. package/utils/math/map.cjs.map +3 -3
  270. package/utils/math/map.js.map +3 -3
  271. package/utils/math/round.cjs +1 -1
  272. package/utils/math/round.cjs.map +3 -3
  273. package/utils/math/round.js.map +3 -3
  274. package/utils/memoize.cjs +6 -2
  275. package/utils/memoize.cjs.map +3 -3
  276. package/utils/memoize.d.ts +18 -28
  277. package/utils/memoize.js +5 -1
  278. package/utils/memoize.js.map +3 -3
  279. package/utils/nextFrame.cjs +1 -1
  280. package/utils/nextFrame.cjs.map +3 -3
  281. package/utils/nextFrame.d.ts +3 -6
  282. package/utils/nextFrame.js.map +3 -3
  283. package/utils/nextMicrotask.cjs +1 -1
  284. package/utils/nextMicrotask.cjs.map +3 -3
  285. package/utils/nextMicrotask.d.ts +1 -5
  286. package/utils/nextMicrotask.js.map +3 -3
  287. package/utils/nextTick.cjs +5 -5
  288. package/utils/nextTick.cjs.map +3 -3
  289. package/utils/nextTick.d.ts +1 -5
  290. package/utils/nextTick.js +4 -4
  291. package/utils/nextTick.js.map +3 -3
  292. package/utils/noop.cjs +1 -1
  293. package/utils/noop.cjs.map +3 -3
  294. package/utils/noop.d.ts +2 -5
  295. package/utils/noop.js.map +3 -3
  296. package/utils/object/autoBind.cjs +1 -1
  297. package/utils/object/autoBind.cjs.map +3 -3
  298. package/utils/object/autoBind.d.ts +5 -4
  299. package/utils/object/autoBind.js.map +3 -3
  300. package/utils/object/getAllProperties.cjs +3 -3
  301. package/utils/object/getAllProperties.cjs.map +3 -3
  302. package/utils/object/getAllProperties.d.ts +1 -1
  303. package/utils/object/getAllProperties.js +2 -2
  304. package/utils/object/getAllProperties.js.map +3 -3
  305. package/utils/object/index.cjs +1 -1
  306. package/utils/object/index.cjs.map +1 -1
  307. package/utils/object/index.d.ts +2 -2
  308. package/utils/object/index.js.map +1 -1
  309. package/utils/scheduler.cjs +2 -2
  310. package/utils/scheduler.cjs.map +3 -3
  311. package/utils/scheduler.d.ts +4 -13
  312. package/utils/scheduler.js +1 -1
  313. package/utils/scheduler.js.map +3 -3
  314. package/utils/scrollTo.cjs +1 -1
  315. package/utils/scrollTo.cjs.map +3 -3
  316. package/utils/scrollTo.d.ts +0 -3
  317. package/utils/scrollTo.js.map +3 -3
  318. package/utils/string/index.cjs +1 -1
  319. package/utils/string/index.cjs.map +1 -1
  320. package/utils/string/index.d.ts +10 -10
  321. package/utils/string/index.js.map +1 -1
  322. package/utils/string/withLeadingCharacters.cjs +1 -1
  323. package/utils/string/withLeadingCharacters.cjs.map +3 -3
  324. package/utils/string/withLeadingCharacters.js.map +3 -3
  325. package/utils/string/withLeadingSlash.cjs +1 -1
  326. package/utils/string/withLeadingSlash.cjs.map +3 -3
  327. package/utils/string/withLeadingSlash.js.map +3 -3
  328. package/utils/string/withTrailingCharacters.cjs +1 -1
  329. package/utils/string/withTrailingCharacters.cjs.map +3 -3
  330. package/utils/string/withTrailingCharacters.js.map +3 -3
  331. package/utils/string/withTrailingSlash.cjs +1 -1
  332. package/utils/string/withTrailingSlash.cjs.map +3 -3
  333. package/utils/string/withTrailingSlash.js.map +3 -3
  334. package/utils/string/withoutLeadingCharacters.cjs +1 -1
  335. package/utils/string/withoutLeadingCharacters.cjs.map +3 -3
  336. package/utils/string/withoutLeadingCharacters.js.map +3 -3
  337. package/utils/string/withoutLeadingCharactersRecursive.cjs +1 -1
  338. package/utils/string/withoutLeadingCharactersRecursive.cjs.map +3 -3
  339. package/utils/string/withoutLeadingCharactersRecursive.js.map +3 -3
  340. package/utils/string/withoutLeadingSlash.cjs +1 -1
  341. package/utils/string/withoutLeadingSlash.cjs.map +3 -3
  342. package/utils/string/withoutLeadingSlash.js.map +3 -3
  343. package/utils/string/withoutTrailingCharacters.cjs +1 -1
  344. package/utils/string/withoutTrailingCharacters.cjs.map +3 -3
  345. package/utils/string/withoutTrailingCharacters.js.map +3 -3
  346. package/utils/string/withoutTrailingCharactersRecursive.cjs +1 -1
  347. package/utils/string/withoutTrailingCharactersRecursive.cjs.map +3 -3
  348. package/utils/string/withoutTrailingCharactersRecursive.js.map +3 -3
  349. package/utils/string/withoutTrailingSlash.cjs +1 -1
  350. package/utils/string/withoutTrailingSlash.cjs.map +3 -3
  351. package/utils/string/withoutTrailingSlash.js.map +3 -3
  352. package/utils/throttle.cjs +2 -2
  353. package/utils/throttle.cjs.map +3 -3
  354. package/utils/throttle.d.ts +1 -1
  355. package/utils/throttle.js +1 -1
  356. package/utils/throttle.js.map +3 -3
  357. package/utils/tween.cjs +4 -3
  358. package/utils/tween.cjs.map +3 -3
  359. package/utils/tween.d.ts +17 -24
  360. package/utils/tween.js +3 -2
  361. package/utils/tween.js.map +3 -3
  362. package/decorators/withScrolledInView.cjs.map +0 -7
  363. package/decorators/withScrolledInView.js.map +0 -7
@@ -1,15 +1,14 @@
1
- /**
2
- * Use the resize service.
3
- *
4
- * @returns {ResizeService}
5
- */
6
- export default function useResize(): import("./index").ServiceInterface<ResizeServiceProps>;
7
- export type ResizeService = import('./index').ServiceInterface<ResizeServiceProps>;
8
- export type ResizeServiceProps = {
1
+ import type { ServiceInterface } from './index.js';
2
+ export type ResizeService = ServiceInterface<ResizeServiceProps>;
3
+ export interface ResizeServiceProps {
9
4
  width: number;
10
5
  height: number;
11
6
  ratio: number;
12
7
  orientation: 'square' | 'landscape' | 'portrait';
13
8
  breakpoint?: string;
14
9
  breakpoints?: string[];
15
- };
10
+ }
11
+ /**
12
+ * Use the resize service.
13
+ */
14
+ export default function useResize(): ResizeService;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../packages/js-toolkit/services/resize.js"],
4
- "sourcesContent": ["/* eslint-disable no-use-before-define */\nimport { useService } from './service.js';\nimport debounce from '../utils/debounce.js';\n\n/**\n * @typedef {import('./index').ServiceInterface<ResizeServiceProps>} ResizeService\n * @typedef {Object} ResizeServiceProps\n * @property {number} width\n * @property {number} height\n * @property {number} ratio\n * @property {'square'|'landscape'|'portrait'} orientation\n * @property {string} [breakpoint]\n * @property {string[]} [breakpoints]\n */\n\nlet breakpointElement;\nlet breakpoints = [];\n\n/**\n * The element holding the breakpoints data.\n * @returns {HTMLElement}\n */\nfunction getBreakpointElement() {\n if (!breakpointElement) {\n breakpointElement = document.querySelector('[data-breakpoint]');\n }\n return breakpointElement;\n}\n\n/**\n * Get the current breakpoint.\n * @returns {string|null}\n */\nfunction getBreakpoint() {\n return getBreakpointElement()\n ? window\n .getComputedStyle(getBreakpointElement(), '::before')\n .getPropertyValue('content')\n .replaceAll('\"', '')\n : undefined;\n}\n\n/**\n * Get all breakpoints.\n * @returns {string[]}\n */\nfunction getBreakpoints() {\n if (!getBreakpointElement() || breakpoints.length) {\n return breakpoints;\n }\n breakpoints = window\n .getComputedStyle(getBreakpointElement(), '::after')\n .getPropertyValue('content')\n .replaceAll('\"', '')\n .split(',');\n\n return breakpoints;\n}\n\n/**\n * Get resize service.\n * @returns {ResizeService}\n */\nfunction createResizeService() {\n /**\n * Update props.\n * @returns {ResizeServiceProps}\n */\n function updateProps() {\n props.width = window.innerWidth;\n props.height = window.innerHeight;\n props.ratio = window.innerWidth / window.innerHeight;\n props.orientation = 'square';\n\n if (props.ratio > 1) {\n props.orientation = 'landscape';\n }\n\n if (props.ratio < 1) {\n props.orientation = 'portrait';\n }\n\n return props;\n }\n\n const onResize = debounce(() => {\n trigger(updateProps());\n });\n\n const { add, remove, has, trigger, props } = useService({\n /**\n * @type {ResizeServiceProps}\n */\n props: {\n width: window.innerWidth,\n height: window.innerHeight,\n ratio: window.innerWidth / window.innerHeight,\n orientation: 'square',\n get breakpoint() {\n return getBreakpoint();\n },\n get breakpoints() {\n return getBreakpoints();\n },\n },\n init() {\n window.addEventListener('resize', onResize);\n },\n kill() {\n window.removeEventListener('resize', onResize);\n },\n });\n\n return {\n add,\n remove,\n has,\n props: () => props,\n };\n}\n\nlet resize;\n\n/**\n * Use the resize service.\n *\n * @returns {ResizeService}\n */\nexport default function useResize() {\n if (!resize) {\n resize = createResizeService();\n }\n\n return resize;\n}\n"],
5
- "mappings": "AACA,SAAS,kBAAkB;AAC3B,OAAO,cAAc;AAarB,IAAI;AACJ,IAAI,cAAc,CAAC;AAMnB,SAAS,uBAAuB;AAC9B,MAAI,CAAC,mBAAmB;AACtB,wBAAoB,SAAS,cAAc,mBAAmB;AAAA,EAChE;AACA,SAAO;AACT;AAMA,SAAS,gBAAgB;AACvB,SAAO,qBAAqB,IACxB,OACG,iBAAiB,qBAAqB,GAAG,UAAU,EACnD,iBAAiB,SAAS,EAC1B,WAAW,KAAK,EAAE,IACrB;AACN;AAMA,SAAS,iBAAiB;AACxB,MAAI,CAAC,qBAAqB,KAAK,YAAY,QAAQ;AACjD,WAAO;AAAA,EACT;AACA,gBAAc,OACX,iBAAiB,qBAAqB,GAAG,SAAS,EAClD,iBAAiB,SAAS,EAC1B,WAAW,KAAK,EAAE,EAClB,MAAM,GAAG;AAEZ,SAAO;AACT;AAMA,SAAS,sBAAsB;AAK7B,WAAS,cAAc;AACrB,UAAM,QAAQ,OAAO;AACrB,UAAM,SAAS,OAAO;AACtB,UAAM,QAAQ,OAAO,aAAa,OAAO;AACzC,UAAM,cAAc;AAEpB,QAAI,MAAM,QAAQ,GAAG;AACnB,YAAM,cAAc;AAAA,IACtB;AAEA,QAAI,MAAM,QAAQ,GAAG;AACnB,YAAM,cAAc;AAAA,IACtB;AAEA,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,SAAS,MAAM;AAC9B,YAAQ,YAAY,CAAC;AAAA,EACvB,CAAC;AAED,QAAM,EAAE,KAAK,QAAQ,KAAK,SAAS,MAAM,IAAI,WAAW;AAAA,IAItD,OAAO;AAAA,MACL,OAAO,OAAO;AAAA,MACd,QAAQ,OAAO;AAAA,MACf,OAAO,OAAO,aAAa,OAAO;AAAA,MAClC,aAAa;AAAA,MACb,IAAI,aAAa;AACf,eAAO,cAAc;AAAA,MACvB;AAAA,MACA,IAAI,cAAc;AAChB,eAAO,eAAe;AAAA,MACxB;AAAA,IACF;AAAA,IACA,OAAO;AACL,aAAO,iBAAiB,UAAU,QAAQ;AAAA,IAC5C;AAAA,IACA,OAAO;AACL,aAAO,oBAAoB,UAAU,QAAQ;AAAA,IAC/C;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,MAAM;AAAA,EACf;AACF;AAEA,IAAI;AAOW,SAAR,YAA6B;AAClC,MAAI,CAAC,QAAQ;AACX,aAAS,oBAAoB;AAAA,EAC/B;AAEA,SAAO;AACT;",
3
+ "sources": ["../../packages/js-toolkit/services/resize.ts"],
4
+ "sourcesContent": ["/* eslint-disable no-use-before-define, @typescript-eslint/no-use-before-define */\nimport { useService } from './service.js';\nimport debounce from '../utils/debounce.js';\nimport type { ServiceInterface } from './index.js';\n\nexport type ResizeService = ServiceInterface<ResizeServiceProps>;\n\nexport interface ResizeServiceProps {\n width: number;\n height: number;\n ratio: number;\n orientation: 'square' | 'landscape' | 'portrait';\n breakpoint?: string;\n breakpoints?: string[];\n}\n\nlet breakpointElement;\nlet breakpoints = [];\n\n/**\n * The element holding the breakpoints data.\n */\nfunction getBreakpointElement(): HTMLElement {\n if (!breakpointElement) {\n breakpointElement = document.querySelector('[data-breakpoint]');\n }\n return breakpointElement;\n}\n\n/**\n * Get the current breakpoint.\n */\nfunction getBreakpoint(): string | null {\n return getBreakpointElement()\n ? window\n .getComputedStyle(getBreakpointElement(), '::before')\n .getPropertyValue('content')\n .replaceAll('\"', '')\n : undefined;\n}\n\n/**\n * Get all breakpoints.\n */\nfunction getBreakpoints(): string[] {\n if (!getBreakpointElement() || breakpoints.length) {\n return breakpoints;\n }\n breakpoints = window\n .getComputedStyle(getBreakpointElement(), '::after')\n .getPropertyValue('content')\n .replaceAll('\"', '')\n .split(',');\n\n return breakpoints;\n}\n\n/**\n * Get resize service.\n */\nfunction createResizeService(): ResizeService {\n /**\n * Update props.\n */\n function updateProps(): ResizeServiceProps {\n props.width = window.innerWidth;\n props.height = window.innerHeight;\n props.ratio = window.innerWidth / window.innerHeight;\n props.orientation = 'square';\n\n if (props.ratio > 1) {\n props.orientation = 'landscape';\n }\n\n if (props.ratio < 1) {\n props.orientation = 'portrait';\n }\n\n return props;\n }\n\n const onResize = debounce(() => {\n trigger(updateProps());\n });\n\n const { add, remove, has, trigger, props } = useService({\n props: {\n width: window.innerWidth,\n height: window.innerHeight,\n ratio: window.innerWidth / window.innerHeight,\n orientation: 'square',\n get breakpoint() {\n return getBreakpoint();\n },\n get breakpoints() {\n return getBreakpoints();\n },\n } as ResizeServiceProps,\n init() {\n window.addEventListener('resize', onResize);\n },\n kill() {\n window.removeEventListener('resize', onResize);\n },\n });\n\n return {\n add,\n remove,\n has,\n props: () => props,\n };\n}\n\nlet resize;\n\n/**\n * Use the resize service.\n */\nexport default function useResize(): ResizeService {\n if (!resize) {\n resize = createResizeService();\n }\n\n return resize;\n}\n"],
5
+ "mappings": "AACA,SAAS,kBAAkB;AAC3B,OAAO,cAAc;AAcrB,IAAI;AACJ,IAAI,cAAc,CAAC;AAKnB,SAAS,uBAAoC;AAC3C,MAAI,CAAC,mBAAmB;AACtB,wBAAoB,SAAS,cAAc,mBAAmB;AAAA,EAChE;AACA,SAAO;AACT;AAKA,SAAS,gBAA+B;AACtC,SAAO,qBAAqB,IACxB,OACG,iBAAiB,qBAAqB,GAAG,UAAU,EACnD,iBAAiB,SAAS,EAC1B,WAAW,KAAK,EAAE,IACrB;AACN;AAKA,SAAS,iBAA2B;AAClC,MAAI,CAAC,qBAAqB,KAAK,YAAY,QAAQ;AACjD,WAAO;AAAA,EACT;AACA,gBAAc,OACX,iBAAiB,qBAAqB,GAAG,SAAS,EAClD,iBAAiB,SAAS,EAC1B,WAAW,KAAK,EAAE,EAClB,MAAM,GAAG;AAEZ,SAAO;AACT;AAKA,SAAS,sBAAqC;AAI5C,WAAS,cAAkC;AACzC,UAAM,QAAQ,OAAO;AACrB,UAAM,SAAS,OAAO;AACtB,UAAM,QAAQ,OAAO,aAAa,OAAO;AACzC,UAAM,cAAc;AAEpB,QAAI,MAAM,QAAQ,GAAG;AACnB,YAAM,cAAc;AAAA,IACtB;AAEA,QAAI,MAAM,QAAQ,GAAG;AACnB,YAAM,cAAc;AAAA,IACtB;AAEA,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,SAAS,MAAM;AAC9B,YAAQ,YAAY,CAAC;AAAA,EACvB,CAAC;AAED,QAAM,EAAE,KAAK,QAAQ,KAAK,SAAS,MAAM,IAAI,WAAW;AAAA,IACtD,OAAO;AAAA,MACL,OAAO,OAAO;AAAA,MACd,QAAQ,OAAO;AAAA,MACf,OAAO,OAAO,aAAa,OAAO;AAAA,MAClC,aAAa;AAAA,MACb,IAAI,aAAa;AACf,eAAO,cAAc;AAAA,MACvB;AAAA,MACA,IAAI,cAAc;AAChB,eAAO,eAAe;AAAA,MACxB;AAAA,IACF;AAAA,IACA,OAAO;AACL,aAAO,iBAAiB,UAAU,QAAQ;AAAA,IAC5C;AAAA,IACA,OAAO;AACL,aAAO,oBAAoB,UAAU,QAAQ;AAAA,IAC/C;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,MAAM;AAAA,EACf;AACF;AAEA,IAAI;AAKW,SAAR,YAA4C;AACjD,MAAI,CAAC,QAAQ;AACX,aAAS,oBAAoB;AAAA,EAC/B;AAEA,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/services/scroll.js
25
+ // packages/js-toolkit/services/scroll.ts
26
26
  var scroll_exports = {};
27
27
  __export(scroll_exports, {
28
28
  default: () => useScroll
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../packages/js-toolkit/services/scroll.js"],
4
- "sourcesContent": ["/* eslint-disable no-use-before-define */\nimport { useService } from './service.js';\nimport debounce from '../utils/debounce.js';\n\n/**\n * @typedef {import('./index').ServiceInterface<ScrollServiceProps>} ScrollService\n * @typedef {Object} ScrollServiceProps\n * @property {number} x\n * @property {number} y\n * @property {{ x: boolean, y: boolean }} changed\n * @property {{ x: number, y: number }} last\n * @property {{ x: number, y: number }} delta\n * @property {{ x: number, y: number }} progress\n * @property {{ x: number, y: number }} max\n * @property {{ x: 'LEFT'|'RIGHT'|'NONE', y: 'UP'|'DOWN'|'NONE' }} direction\n */\n\n/**\n * Create scroll service.\n * @returns {ScrollService}\n */\nfunction createScrollService() {\n /**\n * Update props.\n * @returns {ScrollServiceProps}\n */\n function updateProps() {\n const yLast = props.y;\n const xLast = props.x;\n\n // Check scroll Y\n if (window.pageYOffset !== props.y) {\n props.y = window.pageYOffset;\n }\n\n // Check scroll x\n if (window.pageXOffset !== props.x) {\n props.x = window.pageXOffset;\n }\n\n props.changed.x = props.x !== xLast;\n props.changed.y = props.y !== yLast;\n props.last.x = xLast;\n props.last.y = yLast;\n props.delta.x = props.x - xLast;\n props.delta.y = props.y - yLast;\n props.max.x = (document.scrollingElement || document.body).scrollWidth - window.innerWidth;\n props.max.y = (document.scrollingElement || document.body).scrollHeight - window.innerHeight;\n props.progress.x = props.max.x === 0 ? 1 : props.x / props.max.x;\n props.progress.y = props.max.y === 0 ? 1 : props.y / props.max.y;\n /* eslint-disable no-nested-ternary */\n props.direction.x = props.x > xLast ? 'RIGHT' : props.x < xLast ? 'LEFT' : 'NONE';\n props.direction.y = props.y > yLast ? 'DOWN' : props.y < yLast ? 'UP' : 'NONE';\n /* eslint-enable no-nested-ternary */\n\n return props;\n }\n\n const onScrollDebounced = debounce(() => {\n trigger(updateProps());\n }, 100);\n\n /**\n * Scroll handler.\n * @returns {void}\n */\n function onScroll() {\n trigger(updateProps());\n onScrollDebounced();\n }\n\n const { add, remove, has, props, trigger } = useService({\n /**\n * @type {ScrollServiceProps}\n */\n props: {\n x: window.pageXOffset,\n y: window.pageYOffset,\n changed: {\n x: false,\n y: false,\n },\n last: {\n x: window.pageXOffset,\n y: window.pageYOffset,\n },\n delta: {\n x: 0,\n y: 0,\n },\n max: {\n x: (document.scrollingElement || document.body).scrollWidth - window.innerWidth,\n y: (document.scrollingElement || document.body).scrollHeight - window.innerHeight,\n },\n progress: {\n x: 0,\n y: 0,\n },\n direction: {\n x: 'NONE',\n y: 'NONE',\n },\n },\n init() {\n document.addEventListener('scroll', onScroll, { passive: true, capture: true });\n },\n kill() {\n document.removeEventListener('scroll', onScroll);\n },\n });\n\n return {\n add,\n remove,\n has,\n props: () => props,\n };\n}\n\nlet scroll;\n\n/**\n * Use the scroll service.\n *\n * ```js\n * import { useScroll } from '@studiometa/js-toolkit/services';\n * const { add, remove, props } = useScroll();\n * add(key, (props) => {});\n * remove(key);\n * props();\n * ```\n *\n * @returns {ScrollService}\n */\nexport default function useScroll() {\n if (!scroll) {\n scroll = createScrollService();\n }\n\n return scroll;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAA2B;AAC3B,sBAAqB;AAmBrB,SAAS,sBAAsB;AAK7B,WAAS,cAAc;AACrB,UAAM,QAAQ,MAAM;AACpB,UAAM,QAAQ,MAAM;AAGpB,QAAI,OAAO,gBAAgB,MAAM,GAAG;AAClC,YAAM,IAAI,OAAO;AAAA,IACnB;AAGA,QAAI,OAAO,gBAAgB,MAAM,GAAG;AAClC,YAAM,IAAI,OAAO;AAAA,IACnB;AAEA,UAAM,QAAQ,IAAI,MAAM,MAAM;AAC9B,UAAM,QAAQ,IAAI,MAAM,MAAM;AAC9B,UAAM,KAAK,IAAI;AACf,UAAM,KAAK,IAAI;AACf,UAAM,MAAM,IAAI,MAAM,IAAI;AAC1B,UAAM,MAAM,IAAI,MAAM,IAAI;AAC1B,UAAM,IAAI,KAAK,SAAS,oBAAoB,SAAS,MAAM,cAAc,OAAO;AAChF,UAAM,IAAI,KAAK,SAAS,oBAAoB,SAAS,MAAM,eAAe,OAAO;AACjF,UAAM,SAAS,IAAI,MAAM,IAAI,MAAM,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI;AAC/D,UAAM,SAAS,IAAI,MAAM,IAAI,MAAM,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI;AAE/D,UAAM,UAAU,IAAI,MAAM,IAAI,QAAQ,UAAU,MAAM,IAAI,QAAQ,SAAS;AAC3E,UAAM,UAAU,IAAI,MAAM,IAAI,QAAQ,SAAS,MAAM,IAAI,QAAQ,OAAO;AAGxE,WAAO;AAAA,EACT;AAEA,QAAM,wBAAoB,gBAAAA,SAAS,MAAM;AACvC,YAAQ,YAAY,CAAC;AAAA,EACvB,GAAG,GAAG;AAMN,WAAS,WAAW;AAClB,YAAQ,YAAY,CAAC;AACrB,sBAAkB;AAAA,EACpB;AAEA,QAAM,EAAE,KAAK,QAAQ,KAAK,OAAO,QAAQ,QAAI,2BAAW;AAAA,IAItD,OAAO;AAAA,MACL,GAAG,OAAO;AAAA,MACV,GAAG,OAAO;AAAA,MACV,SAAS;AAAA,QACP,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,MAAM;AAAA,QACJ,GAAG,OAAO;AAAA,QACV,GAAG,OAAO;AAAA,MACZ;AAAA,MACA,OAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,KAAK;AAAA,QACH,IAAI,SAAS,oBAAoB,SAAS,MAAM,cAAc,OAAO;AAAA,QACrE,IAAI,SAAS,oBAAoB,SAAS,MAAM,eAAe,OAAO;AAAA,MACxE;AAAA,MACA,UAAU;AAAA,QACR,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,WAAW;AAAA,QACT,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,IACF;AAAA,IACA,OAAO;AACL,eAAS,iBAAiB,UAAU,UAAU,EAAE,SAAS,MAAM,SAAS,KAAK,CAAC;AAAA,IAChF;AAAA,IACA,OAAO;AACL,eAAS,oBAAoB,UAAU,QAAQ;AAAA,IACjD;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,MAAM;AAAA,EACf;AACF;AAEA,IAAI;AAeW,SAAR,YAA6B;AAClC,MAAI,CAAC,QAAQ;AACX,aAAS,oBAAoB;AAAA,EAC/B;AAEA,SAAO;AACT;",
3
+ "sources": ["../../packages/js-toolkit/services/scroll.ts"],
4
+ "sourcesContent": ["/* eslint-disable no-use-before-define, @typescript-eslint/no-use-before-define */\nimport { useService } from './service.js';\nimport debounce from '../utils/debounce.js';\nimport type { ServiceInterface } from './index.js';\n\nexport type ScrollService = ServiceInterface<ScrollServiceProps>;\n\nexport interface ScrollServiceProps {\n x: number;\n y: number;\n changed: { x: boolean; y: boolean };\n last: { x: number; y: number };\n delta: { x: number; y: number };\n progress: { x: number; y: number };\n max: { x: number; y: number };\n direction: { x: 'LEFT' | 'RIGHT' | 'NONE'; y: 'UP' | 'DOWN' | 'NONE' };\n}\n\n/**\n * Create scroll service.\n */\nfunction createScrollService(): ScrollService {\n /**\n * Update props.\n */\n function updateProps(): ScrollServiceProps {\n const yLast = props.y;\n const xLast = props.x;\n\n // Check scroll Y\n if (window.pageYOffset !== props.y) {\n props.y = window.pageYOffset;\n }\n\n // Check scroll x\n if (window.pageXOffset !== props.x) {\n props.x = window.pageXOffset;\n }\n\n props.changed.x = props.x !== xLast;\n props.changed.y = props.y !== yLast;\n props.last.x = xLast;\n props.last.y = yLast;\n props.delta.x = props.x - xLast;\n props.delta.y = props.y - yLast;\n props.max.x = (document.scrollingElement || document.body).scrollWidth - window.innerWidth;\n props.max.y = (document.scrollingElement || document.body).scrollHeight - window.innerHeight;\n props.progress.x = props.max.x === 0 ? 1 : props.x / props.max.x;\n props.progress.y = props.max.y === 0 ? 1 : props.y / props.max.y;\n /* eslint-disable no-nested-ternary */\n props.direction.x = props.x > xLast ? 'RIGHT' : props.x < xLast ? 'LEFT' : 'NONE';\n props.direction.y = props.y > yLast ? 'DOWN' : props.y < yLast ? 'UP' : 'NONE';\n /* eslint-enable no-nested-ternary */\n\n return props;\n }\n\n const onScrollDebounced = debounce(() => {\n trigger(updateProps());\n }, 100);\n\n /**\n * Scroll handler.\n */\n function onScroll() {\n trigger(updateProps());\n onScrollDebounced();\n }\n\n const { add, remove, has, props, trigger } = useService({\n props: {\n x: window.pageXOffset,\n y: window.pageYOffset,\n changed: {\n x: false,\n y: false,\n },\n last: {\n x: window.pageXOffset,\n y: window.pageYOffset,\n },\n delta: {\n x: 0,\n y: 0,\n },\n max: {\n x: (document.scrollingElement || document.body).scrollWidth - window.innerWidth,\n y: (document.scrollingElement || document.body).scrollHeight - window.innerHeight,\n },\n progress: {\n x: 0,\n y: 0,\n },\n direction: {\n x: 'NONE',\n y: 'NONE',\n },\n } as ScrollServiceProps,\n init() {\n document.addEventListener('scroll', onScroll, { passive: true, capture: true });\n },\n kill() {\n document.removeEventListener('scroll', onScroll);\n },\n });\n\n return {\n add,\n remove,\n has,\n props: () => props,\n };\n}\n\nlet scroll;\n\n/**\n * Use the scroll service.\n *\n * ```js\n * import { useScroll } from '@studiometa/js-toolkit/services';\n * const { add, remove, props } = useScroll();\n * add(key, (props) => {});\n * remove(key);\n * props();\n * ```\n */\nexport default function useScroll(): ScrollService {\n if (!scroll) {\n scroll = createScrollService();\n }\n\n return scroll;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAA2B;AAC3B,sBAAqB;AAmBrB,SAAS,sBAAqC;AAI5C,WAAS,cAAkC;AACzC,UAAM,QAAQ,MAAM;AACpB,UAAM,QAAQ,MAAM;AAGpB,QAAI,OAAO,gBAAgB,MAAM,GAAG;AAClC,YAAM,IAAI,OAAO;AAAA,IACnB;AAGA,QAAI,OAAO,gBAAgB,MAAM,GAAG;AAClC,YAAM,IAAI,OAAO;AAAA,IACnB;AAEA,UAAM,QAAQ,IAAI,MAAM,MAAM;AAC9B,UAAM,QAAQ,IAAI,MAAM,MAAM;AAC9B,UAAM,KAAK,IAAI;AACf,UAAM,KAAK,IAAI;AACf,UAAM,MAAM,IAAI,MAAM,IAAI;AAC1B,UAAM,MAAM,IAAI,MAAM,IAAI;AAC1B,UAAM,IAAI,KAAK,SAAS,oBAAoB,SAAS,MAAM,cAAc,OAAO;AAChF,UAAM,IAAI,KAAK,SAAS,oBAAoB,SAAS,MAAM,eAAe,OAAO;AACjF,UAAM,SAAS,IAAI,MAAM,IAAI,MAAM,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI;AAC/D,UAAM,SAAS,IAAI,MAAM,IAAI,MAAM,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI;AAE/D,UAAM,UAAU,IAAI,MAAM,IAAI,QAAQ,UAAU,MAAM,IAAI,QAAQ,SAAS;AAC3E,UAAM,UAAU,IAAI,MAAM,IAAI,QAAQ,SAAS,MAAM,IAAI,QAAQ,OAAO;AAGxE,WAAO;AAAA,EACT;AAEA,QAAM,wBAAoB,gBAAAA,SAAS,MAAM;AACvC,YAAQ,YAAY,CAAC;AAAA,EACvB,GAAG,GAAG;AAKN,WAAS,WAAW;AAClB,YAAQ,YAAY,CAAC;AACrB,sBAAkB;AAAA,EACpB;AAEA,QAAM,EAAE,KAAK,QAAQ,KAAK,OAAO,QAAQ,QAAI,2BAAW;AAAA,IACtD,OAAO;AAAA,MACL,GAAG,OAAO;AAAA,MACV,GAAG,OAAO;AAAA,MACV,SAAS;AAAA,QACP,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,MAAM;AAAA,QACJ,GAAG,OAAO;AAAA,QACV,GAAG,OAAO;AAAA,MACZ;AAAA,MACA,OAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,KAAK;AAAA,QACH,IAAI,SAAS,oBAAoB,SAAS,MAAM,cAAc,OAAO;AAAA,QACrE,IAAI,SAAS,oBAAoB,SAAS,MAAM,eAAe,OAAO;AAAA,MACxE;AAAA,MACA,UAAU;AAAA,QACR,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,WAAW;AAAA,QACT,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,IACF;AAAA,IACA,OAAO;AACL,eAAS,iBAAiB,UAAU,UAAU,EAAE,SAAS,MAAM,SAAS,KAAK,CAAC;AAAA,IAChF;AAAA,IACA,OAAO;AACL,eAAS,oBAAoB,UAAU,QAAQ;AAAA,IACjD;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,MAAM;AAAA,EACf;AACF;AAEA,IAAI;AAaW,SAAR,YAA4C;AACjD,MAAI,CAAC,QAAQ;AACX,aAAS,oBAAoB;AAAA,EAC/B;AAEA,SAAO;AACT;",
6
6
  "names": ["debounce"]
7
7
  }
@@ -1,19 +1,6 @@
1
- /**
2
- * Use the scroll service.
3
- *
4
- * ```js
5
- * import { useScroll } from '@studiometa/js-toolkit/services';
6
- * const { add, remove, props } = useScroll();
7
- * add(key, (props) => {});
8
- * remove(key);
9
- * props();
10
- * ```
11
- *
12
- * @returns {ScrollService}
13
- */
14
- export default function useScroll(): import("./index").ServiceInterface<ScrollServiceProps>;
15
- export type ScrollService = import('./index').ServiceInterface<ScrollServiceProps>;
16
- export type ScrollServiceProps = {
1
+ import type { ServiceInterface } from './index.js';
2
+ export type ScrollService = ServiceInterface<ScrollServiceProps>;
3
+ export interface ScrollServiceProps {
17
4
  x: number;
18
5
  y: number;
19
6
  changed: {
@@ -40,4 +27,16 @@ export type ScrollServiceProps = {
40
27
  x: 'LEFT' | 'RIGHT' | 'NONE';
41
28
  y: 'UP' | 'DOWN' | 'NONE';
42
29
  };
43
- };
30
+ }
31
+ /**
32
+ * Use the scroll service.
33
+ *
34
+ * ```js
35
+ * import { useScroll } from '@studiometa/js-toolkit/services';
36
+ * const { add, remove, props } = useScroll();
37
+ * add(key, (props) => {});
38
+ * remove(key);
39
+ * props();
40
+ * ```
41
+ */
42
+ export default function useScroll(): ScrollService;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../packages/js-toolkit/services/scroll.js"],
4
- "sourcesContent": ["/* eslint-disable no-use-before-define */\nimport { useService } from './service.js';\nimport debounce from '../utils/debounce.js';\n\n/**\n * @typedef {import('./index').ServiceInterface<ScrollServiceProps>} ScrollService\n * @typedef {Object} ScrollServiceProps\n * @property {number} x\n * @property {number} y\n * @property {{ x: boolean, y: boolean }} changed\n * @property {{ x: number, y: number }} last\n * @property {{ x: number, y: number }} delta\n * @property {{ x: number, y: number }} progress\n * @property {{ x: number, y: number }} max\n * @property {{ x: 'LEFT'|'RIGHT'|'NONE', y: 'UP'|'DOWN'|'NONE' }} direction\n */\n\n/**\n * Create scroll service.\n * @returns {ScrollService}\n */\nfunction createScrollService() {\n /**\n * Update props.\n * @returns {ScrollServiceProps}\n */\n function updateProps() {\n const yLast = props.y;\n const xLast = props.x;\n\n // Check scroll Y\n if (window.pageYOffset !== props.y) {\n props.y = window.pageYOffset;\n }\n\n // Check scroll x\n if (window.pageXOffset !== props.x) {\n props.x = window.pageXOffset;\n }\n\n props.changed.x = props.x !== xLast;\n props.changed.y = props.y !== yLast;\n props.last.x = xLast;\n props.last.y = yLast;\n props.delta.x = props.x - xLast;\n props.delta.y = props.y - yLast;\n props.max.x = (document.scrollingElement || document.body).scrollWidth - window.innerWidth;\n props.max.y = (document.scrollingElement || document.body).scrollHeight - window.innerHeight;\n props.progress.x = props.max.x === 0 ? 1 : props.x / props.max.x;\n props.progress.y = props.max.y === 0 ? 1 : props.y / props.max.y;\n /* eslint-disable no-nested-ternary */\n props.direction.x = props.x > xLast ? 'RIGHT' : props.x < xLast ? 'LEFT' : 'NONE';\n props.direction.y = props.y > yLast ? 'DOWN' : props.y < yLast ? 'UP' : 'NONE';\n /* eslint-enable no-nested-ternary */\n\n return props;\n }\n\n const onScrollDebounced = debounce(() => {\n trigger(updateProps());\n }, 100);\n\n /**\n * Scroll handler.\n * @returns {void}\n */\n function onScroll() {\n trigger(updateProps());\n onScrollDebounced();\n }\n\n const { add, remove, has, props, trigger } = useService({\n /**\n * @type {ScrollServiceProps}\n */\n props: {\n x: window.pageXOffset,\n y: window.pageYOffset,\n changed: {\n x: false,\n y: false,\n },\n last: {\n x: window.pageXOffset,\n y: window.pageYOffset,\n },\n delta: {\n x: 0,\n y: 0,\n },\n max: {\n x: (document.scrollingElement || document.body).scrollWidth - window.innerWidth,\n y: (document.scrollingElement || document.body).scrollHeight - window.innerHeight,\n },\n progress: {\n x: 0,\n y: 0,\n },\n direction: {\n x: 'NONE',\n y: 'NONE',\n },\n },\n init() {\n document.addEventListener('scroll', onScroll, { passive: true, capture: true });\n },\n kill() {\n document.removeEventListener('scroll', onScroll);\n },\n });\n\n return {\n add,\n remove,\n has,\n props: () => props,\n };\n}\n\nlet scroll;\n\n/**\n * Use the scroll service.\n *\n * ```js\n * import { useScroll } from '@studiometa/js-toolkit/services';\n * const { add, remove, props } = useScroll();\n * add(key, (props) => {});\n * remove(key);\n * props();\n * ```\n *\n * @returns {ScrollService}\n */\nexport default function useScroll() {\n if (!scroll) {\n scroll = createScrollService();\n }\n\n return scroll;\n}\n"],
5
- "mappings": "AACA,SAAS,kBAAkB;AAC3B,OAAO,cAAc;AAmBrB,SAAS,sBAAsB;AAK7B,WAAS,cAAc;AACrB,UAAM,QAAQ,MAAM;AACpB,UAAM,QAAQ,MAAM;AAGpB,QAAI,OAAO,gBAAgB,MAAM,GAAG;AAClC,YAAM,IAAI,OAAO;AAAA,IACnB;AAGA,QAAI,OAAO,gBAAgB,MAAM,GAAG;AAClC,YAAM,IAAI,OAAO;AAAA,IACnB;AAEA,UAAM,QAAQ,IAAI,MAAM,MAAM;AAC9B,UAAM,QAAQ,IAAI,MAAM,MAAM;AAC9B,UAAM,KAAK,IAAI;AACf,UAAM,KAAK,IAAI;AACf,UAAM,MAAM,IAAI,MAAM,IAAI;AAC1B,UAAM,MAAM,IAAI,MAAM,IAAI;AAC1B,UAAM,IAAI,KAAK,SAAS,oBAAoB,SAAS,MAAM,cAAc,OAAO;AAChF,UAAM,IAAI,KAAK,SAAS,oBAAoB,SAAS,MAAM,eAAe,OAAO;AACjF,UAAM,SAAS,IAAI,MAAM,IAAI,MAAM,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI;AAC/D,UAAM,SAAS,IAAI,MAAM,IAAI,MAAM,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI;AAE/D,UAAM,UAAU,IAAI,MAAM,IAAI,QAAQ,UAAU,MAAM,IAAI,QAAQ,SAAS;AAC3E,UAAM,UAAU,IAAI,MAAM,IAAI,QAAQ,SAAS,MAAM,IAAI,QAAQ,OAAO;AAGxE,WAAO;AAAA,EACT;AAEA,QAAM,oBAAoB,SAAS,MAAM;AACvC,YAAQ,YAAY,CAAC;AAAA,EACvB,GAAG,GAAG;AAMN,WAAS,WAAW;AAClB,YAAQ,YAAY,CAAC;AACrB,sBAAkB;AAAA,EACpB;AAEA,QAAM,EAAE,KAAK,QAAQ,KAAK,OAAO,QAAQ,IAAI,WAAW;AAAA,IAItD,OAAO;AAAA,MACL,GAAG,OAAO;AAAA,MACV,GAAG,OAAO;AAAA,MACV,SAAS;AAAA,QACP,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,MAAM;AAAA,QACJ,GAAG,OAAO;AAAA,QACV,GAAG,OAAO;AAAA,MACZ;AAAA,MACA,OAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,KAAK;AAAA,QACH,IAAI,SAAS,oBAAoB,SAAS,MAAM,cAAc,OAAO;AAAA,QACrE,IAAI,SAAS,oBAAoB,SAAS,MAAM,eAAe,OAAO;AAAA,MACxE;AAAA,MACA,UAAU;AAAA,QACR,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,WAAW;AAAA,QACT,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,IACF;AAAA,IACA,OAAO;AACL,eAAS,iBAAiB,UAAU,UAAU,EAAE,SAAS,MAAM,SAAS,KAAK,CAAC;AAAA,IAChF;AAAA,IACA,OAAO;AACL,eAAS,oBAAoB,UAAU,QAAQ;AAAA,IACjD;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,MAAM;AAAA,EACf;AACF;AAEA,IAAI;AAeW,SAAR,YAA6B;AAClC,MAAI,CAAC,QAAQ;AACX,aAAS,oBAAoB;AAAA,EAC/B;AAEA,SAAO;AACT;",
3
+ "sources": ["../../packages/js-toolkit/services/scroll.ts"],
4
+ "sourcesContent": ["/* eslint-disable no-use-before-define, @typescript-eslint/no-use-before-define */\nimport { useService } from './service.js';\nimport debounce from '../utils/debounce.js';\nimport type { ServiceInterface } from './index.js';\n\nexport type ScrollService = ServiceInterface<ScrollServiceProps>;\n\nexport interface ScrollServiceProps {\n x: number;\n y: number;\n changed: { x: boolean; y: boolean };\n last: { x: number; y: number };\n delta: { x: number; y: number };\n progress: { x: number; y: number };\n max: { x: number; y: number };\n direction: { x: 'LEFT' | 'RIGHT' | 'NONE'; y: 'UP' | 'DOWN' | 'NONE' };\n}\n\n/**\n * Create scroll service.\n */\nfunction createScrollService(): ScrollService {\n /**\n * Update props.\n */\n function updateProps(): ScrollServiceProps {\n const yLast = props.y;\n const xLast = props.x;\n\n // Check scroll Y\n if (window.pageYOffset !== props.y) {\n props.y = window.pageYOffset;\n }\n\n // Check scroll x\n if (window.pageXOffset !== props.x) {\n props.x = window.pageXOffset;\n }\n\n props.changed.x = props.x !== xLast;\n props.changed.y = props.y !== yLast;\n props.last.x = xLast;\n props.last.y = yLast;\n props.delta.x = props.x - xLast;\n props.delta.y = props.y - yLast;\n props.max.x = (document.scrollingElement || document.body).scrollWidth - window.innerWidth;\n props.max.y = (document.scrollingElement || document.body).scrollHeight - window.innerHeight;\n props.progress.x = props.max.x === 0 ? 1 : props.x / props.max.x;\n props.progress.y = props.max.y === 0 ? 1 : props.y / props.max.y;\n /* eslint-disable no-nested-ternary */\n props.direction.x = props.x > xLast ? 'RIGHT' : props.x < xLast ? 'LEFT' : 'NONE';\n props.direction.y = props.y > yLast ? 'DOWN' : props.y < yLast ? 'UP' : 'NONE';\n /* eslint-enable no-nested-ternary */\n\n return props;\n }\n\n const onScrollDebounced = debounce(() => {\n trigger(updateProps());\n }, 100);\n\n /**\n * Scroll handler.\n */\n function onScroll() {\n trigger(updateProps());\n onScrollDebounced();\n }\n\n const { add, remove, has, props, trigger } = useService({\n props: {\n x: window.pageXOffset,\n y: window.pageYOffset,\n changed: {\n x: false,\n y: false,\n },\n last: {\n x: window.pageXOffset,\n y: window.pageYOffset,\n },\n delta: {\n x: 0,\n y: 0,\n },\n max: {\n x: (document.scrollingElement || document.body).scrollWidth - window.innerWidth,\n y: (document.scrollingElement || document.body).scrollHeight - window.innerHeight,\n },\n progress: {\n x: 0,\n y: 0,\n },\n direction: {\n x: 'NONE',\n y: 'NONE',\n },\n } as ScrollServiceProps,\n init() {\n document.addEventListener('scroll', onScroll, { passive: true, capture: true });\n },\n kill() {\n document.removeEventListener('scroll', onScroll);\n },\n });\n\n return {\n add,\n remove,\n has,\n props: () => props,\n };\n}\n\nlet scroll;\n\n/**\n * Use the scroll service.\n *\n * ```js\n * import { useScroll } from '@studiometa/js-toolkit/services';\n * const { add, remove, props } = useScroll();\n * add(key, (props) => {});\n * remove(key);\n * props();\n * ```\n */\nexport default function useScroll(): ScrollService {\n if (!scroll) {\n scroll = createScrollService();\n }\n\n return scroll;\n}\n"],
5
+ "mappings": "AACA,SAAS,kBAAkB;AAC3B,OAAO,cAAc;AAmBrB,SAAS,sBAAqC;AAI5C,WAAS,cAAkC;AACzC,UAAM,QAAQ,MAAM;AACpB,UAAM,QAAQ,MAAM;AAGpB,QAAI,OAAO,gBAAgB,MAAM,GAAG;AAClC,YAAM,IAAI,OAAO;AAAA,IACnB;AAGA,QAAI,OAAO,gBAAgB,MAAM,GAAG;AAClC,YAAM,IAAI,OAAO;AAAA,IACnB;AAEA,UAAM,QAAQ,IAAI,MAAM,MAAM;AAC9B,UAAM,QAAQ,IAAI,MAAM,MAAM;AAC9B,UAAM,KAAK,IAAI;AACf,UAAM,KAAK,IAAI;AACf,UAAM,MAAM,IAAI,MAAM,IAAI;AAC1B,UAAM,MAAM,IAAI,MAAM,IAAI;AAC1B,UAAM,IAAI,KAAK,SAAS,oBAAoB,SAAS,MAAM,cAAc,OAAO;AAChF,UAAM,IAAI,KAAK,SAAS,oBAAoB,SAAS,MAAM,eAAe,OAAO;AACjF,UAAM,SAAS,IAAI,MAAM,IAAI,MAAM,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI;AAC/D,UAAM,SAAS,IAAI,MAAM,IAAI,MAAM,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI;AAE/D,UAAM,UAAU,IAAI,MAAM,IAAI,QAAQ,UAAU,MAAM,IAAI,QAAQ,SAAS;AAC3E,UAAM,UAAU,IAAI,MAAM,IAAI,QAAQ,SAAS,MAAM,IAAI,QAAQ,OAAO;AAGxE,WAAO;AAAA,EACT;AAEA,QAAM,oBAAoB,SAAS,MAAM;AACvC,YAAQ,YAAY,CAAC;AAAA,EACvB,GAAG,GAAG;AAKN,WAAS,WAAW;AAClB,YAAQ,YAAY,CAAC;AACrB,sBAAkB;AAAA,EACpB;AAEA,QAAM,EAAE,KAAK,QAAQ,KAAK,OAAO,QAAQ,IAAI,WAAW;AAAA,IACtD,OAAO;AAAA,MACL,GAAG,OAAO;AAAA,MACV,GAAG,OAAO;AAAA,MACV,SAAS;AAAA,QACP,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,MAAM;AAAA,QACJ,GAAG,OAAO;AAAA,QACV,GAAG,OAAO;AAAA,MACZ;AAAA,MACA,OAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,KAAK;AAAA,QACH,IAAI,SAAS,oBAAoB,SAAS,MAAM,cAAc,OAAO;AAAA,QACrE,IAAI,SAAS,oBAAoB,SAAS,MAAM,eAAe,OAAO;AAAA,MACxE;AAAA,MACA,UAAU;AAAA,QACR,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,MACA,WAAW;AAAA,QACT,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,IACF;AAAA,IACA,OAAO;AACL,eAAS,iBAAiB,UAAU,UAAU,EAAE,SAAS,MAAM,SAAS,KAAK,CAAC;AAAA,IAChF;AAAA,IACA,OAAO;AACL,eAAS,oBAAoB,UAAU,QAAQ;AAAA,IACjD;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,MAAM;AAAA,EACf;AACF;AAEA,IAAI;AAaW,SAAR,YAA4C;AACjD,MAAI,CAAC,QAAQ;AACX,aAAS,oBAAoB;AAAA,EAC/B;AAEA,SAAO;AACT;",
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/services/service.js
19
+ // packages/js-toolkit/services/service.ts
20
20
  var service_exports = {};
21
21
  __export(service_exports, {
22
22
  useService: () => useService
@@ -51,7 +51,7 @@ function useService(options) {
51
51
  }
52
52
  }
53
53
  function trigger(p) {
54
- callbacks.forEach(function forEachCallback(callback) {
54
+ callbacks.forEach((callback) => {
55
55
  callback(p);
56
56
  });
57
57
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../packages/js-toolkit/services/service.js"],
4
- "sourcesContent": ["// eslint-disable-next-line jsdoc/require-returns\n/**\n * Use a service.\n * @template {Record<string, any>} T\n * @param {{ init: () => void, kill: () => void, props: T }} options\n */\nexport function useService(options) {\n /**\n * @type {Map<string, (props:T) => any>}\n */\n const callbacks = new Map();\n let isInit = false;\n\n const { init, kill, props } = options;\n\n /**\n * Does the service has the given key?\n * @param {string} key\n * @returns {boolean}\n */\n function has(key) {\n return callbacks.has(key);\n }\n\n /**\n * Get a service callback by its key.\n * @param {string} key\n * @returns {(props:T) => any}\n */\n function get(key) {\n return callbacks.get(key);\n }\n\n /**\n * Add a callback to the service.\n * @param {string} key\n * @param {(props:T) => any} callback\n */\n function add(key, callback) {\n if (has(key)) {\n console.warn(`The key \\`${key}\\` has already been added.`);\n return;\n }\n\n // Initialize the service when we add the first callback\n if (callbacks.size === 0 && !isInit) {\n init();\n isInit = true;\n }\n\n callbacks.set(key, callback);\n }\n\n /**\n * Remove a callback from the service by its key.\n * @param {string} key\n * @returns {void}\n */\n function remove(key) {\n callbacks.delete(key);\n\n // Kill the service when we remove the last callback\n if (callbacks.size === 0 && isInit) {\n kill();\n isInit = false;\n }\n }\n\n /**\n * Trigger all service callbacks with service props.\n * @param {T} p\n * @returns {void}\n */\n function trigger(p) {\n callbacks.forEach(function forEachCallback(callback) {\n callback(p);\n });\n }\n\n return {\n callbacks,\n props,\n add,\n remove,\n has,\n get,\n trigger,\n };\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,SAAS,WAAW,SAAS;AAIlC,QAAM,YAAY,oBAAI,IAAI;AAC1B,MAAI,SAAS;AAEb,QAAM,EAAE,MAAM,MAAM,MAAM,IAAI;AAO9B,WAAS,IAAI,KAAK;AAChB,WAAO,UAAU,IAAI,GAAG;AAAA,EAC1B;AAOA,WAAS,IAAI,KAAK;AAChB,WAAO,UAAU,IAAI,GAAG;AAAA,EAC1B;AAOA,WAAS,IAAI,KAAK,UAAU;AAC1B,QAAI,IAAI,GAAG,GAAG;AACZ,cAAQ,KAAK,aAAa,+BAA+B;AACzD;AAAA,IACF;AAGA,QAAI,UAAU,SAAS,KAAK,CAAC,QAAQ;AACnC,WAAK;AACL,eAAS;AAAA,IACX;AAEA,cAAU,IAAI,KAAK,QAAQ;AAAA,EAC7B;AAOA,WAAS,OAAO,KAAK;AACnB,cAAU,OAAO,GAAG;AAGpB,QAAI,UAAU,SAAS,KAAK,QAAQ;AAClC,WAAK;AACL,eAAS;AAAA,IACX;AAAA,EACF;AAOA,WAAS,QAAQ,GAAG;AAClB,cAAU,QAAQ,SAAS,gBAAgB,UAAU;AACnD,eAAS,CAAC;AAAA,IACZ,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
3
+ "sources": ["../../packages/js-toolkit/services/service.ts"],
4
+ "sourcesContent": ["// eslint-disable-next-line jsdoc/require-returns\nimport type { ServiceInterface } from './index.js';\n\nexport interface ServiceOptions<T> {\n init: () => void;\n kill: () => void;\n props: T;\n}\n\nexport interface UseServiceInterface<T> extends Omit<ServiceInterface<T>, 'props'> {\n callbacks: Map<string, (props: T) => unknown>;\n props: T;\n get: (key: string) => (props: T) => unknown;\n trigger: (props: T) => unknown;\n}\n\n/**\n * Use a service.\n */\nexport function useService<T>(options: ServiceOptions<T>): UseServiceInterface<T> {\n const callbacks: Map<string, (props: T) => unknown> = new Map();\n let isInit = false;\n\n const { init, kill, props } = options;\n\n /**\n * Does the service has the given key?\n */\n function has(key: string): boolean {\n return callbacks.has(key);\n }\n\n /**\n * Get a service callback by its key.\n */\n function get(key: string): (props: T) => unknown {\n return callbacks.get(key);\n }\n\n /**\n * Add a callback to the service.\n */\n function add(key: string, callback: (props: T) => unknown) {\n if (has(key)) {\n console.warn(`The key \\`${key}\\` has already been added.`);\n return;\n }\n\n // Initialize the service when we add the first callback\n if (callbacks.size === 0 && !isInit) {\n init();\n isInit = true;\n }\n\n callbacks.set(key, callback);\n }\n\n /**\n * Remove a callback from the service by its key.\n */\n function remove(key: string) {\n callbacks.delete(key);\n\n // Kill the service when we remove the last callback\n if (callbacks.size === 0 && isInit) {\n kill();\n isInit = false;\n }\n }\n\n /**\n * Trigger all service callbacks with service props.\n */\n function trigger(p: T) {\n callbacks.forEach((callback) => {\n callback(p);\n });\n }\n\n return {\n callbacks,\n props,\n add,\n remove,\n has,\n get,\n trigger,\n };\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBO,SAAS,WAAc,SAAoD;AAChF,QAAM,YAAgD,oBAAI,IAAI;AAC9D,MAAI,SAAS;AAEb,QAAM,EAAE,MAAM,MAAM,MAAM,IAAI;AAK9B,WAAS,IAAI,KAAsB;AACjC,WAAO,UAAU,IAAI,GAAG;AAAA,EAC1B;AAKA,WAAS,IAAI,KAAoC;AAC/C,WAAO,UAAU,IAAI,GAAG;AAAA,EAC1B;AAKA,WAAS,IAAI,KAAa,UAAiC;AACzD,QAAI,IAAI,GAAG,GAAG;AACZ,cAAQ,KAAK,aAAa,+BAA+B;AACzD;AAAA,IACF;AAGA,QAAI,UAAU,SAAS,KAAK,CAAC,QAAQ;AACnC,WAAK;AACL,eAAS;AAAA,IACX;AAEA,cAAU,IAAI,KAAK,QAAQ;AAAA,EAC7B;AAKA,WAAS,OAAO,KAAa;AAC3B,cAAU,OAAO,GAAG;AAGpB,QAAI,UAAU,SAAS,KAAK,QAAQ;AAClC,WAAK;AACL,eAAS;AAAA,IACX;AAAA,EACF;AAKA,WAAS,QAAQ,GAAM;AACrB,cAAU,QAAQ,CAAC,aAAa;AAC9B,eAAS,CAAC;AAAA,IACZ,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,18 +1,16 @@
1
- /**
2
- * Use a service.
3
- * @template {Record<string, any>} T
4
- * @param {{ init: () => void, kill: () => void, props: T }} options
5
- */
6
- export function useService<T extends Record<string, any>>(options: {
1
+ import type { ServiceInterface } from './index.js';
2
+ export interface ServiceOptions<T> {
7
3
  init: () => void;
8
4
  kill: () => void;
9
5
  props: T;
10
- }): {
11
- callbacks: Map<string, (props: T) => any>;
6
+ }
7
+ export interface UseServiceInterface<T> extends Omit<ServiceInterface<T>, 'props'> {
8
+ callbacks: Map<string, (props: T) => unknown>;
12
9
  props: T;
13
- add: (key: string, callback: (props: T) => any) => void;
14
- remove: (key: string) => void;
15
- has: (key: string) => boolean;
16
- get: (key: string) => (props: T) => any;
17
- trigger: (p: T) => void;
18
- };
10
+ get: (key: string) => (props: T) => unknown;
11
+ trigger: (props: T) => unknown;
12
+ }
13
+ /**
14
+ * Use a service.
15
+ */
16
+ export declare function useService<T>(options: ServiceOptions<T>): UseServiceInterface<T>;
@@ -27,7 +27,7 @@ function useService(options) {
27
27
  }
28
28
  }
29
29
  function trigger(p) {
30
- callbacks.forEach(function forEachCallback(callback) {
30
+ callbacks.forEach((callback) => {
31
31
  callback(p);
32
32
  });
33
33
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../packages/js-toolkit/services/service.js"],
4
- "sourcesContent": ["// eslint-disable-next-line jsdoc/require-returns\n/**\n * Use a service.\n * @template {Record<string, any>} T\n * @param {{ init: () => void, kill: () => void, props: T }} options\n */\nexport function useService(options) {\n /**\n * @type {Map<string, (props:T) => any>}\n */\n const callbacks = new Map();\n let isInit = false;\n\n const { init, kill, props } = options;\n\n /**\n * Does the service has the given key?\n * @param {string} key\n * @returns {boolean}\n */\n function has(key) {\n return callbacks.has(key);\n }\n\n /**\n * Get a service callback by its key.\n * @param {string} key\n * @returns {(props:T) => any}\n */\n function get(key) {\n return callbacks.get(key);\n }\n\n /**\n * Add a callback to the service.\n * @param {string} key\n * @param {(props:T) => any} callback\n */\n function add(key, callback) {\n if (has(key)) {\n console.warn(`The key \\`${key}\\` has already been added.`);\n return;\n }\n\n // Initialize the service when we add the first callback\n if (callbacks.size === 0 && !isInit) {\n init();\n isInit = true;\n }\n\n callbacks.set(key, callback);\n }\n\n /**\n * Remove a callback from the service by its key.\n * @param {string} key\n * @returns {void}\n */\n function remove(key) {\n callbacks.delete(key);\n\n // Kill the service when we remove the last callback\n if (callbacks.size === 0 && isInit) {\n kill();\n isInit = false;\n }\n }\n\n /**\n * Trigger all service callbacks with service props.\n * @param {T} p\n * @returns {void}\n */\n function trigger(p) {\n callbacks.forEach(function forEachCallback(callback) {\n callback(p);\n });\n }\n\n return {\n callbacks,\n props,\n add,\n remove,\n has,\n get,\n trigger,\n };\n}\n"],
5
- "mappings": "AAMO,SAAS,WAAW,SAAS;AAIlC,QAAM,YAAY,oBAAI,IAAI;AAC1B,MAAI,SAAS;AAEb,QAAM,EAAE,MAAM,MAAM,MAAM,IAAI;AAO9B,WAAS,IAAI,KAAK;AAChB,WAAO,UAAU,IAAI,GAAG;AAAA,EAC1B;AAOA,WAAS,IAAI,KAAK;AAChB,WAAO,UAAU,IAAI,GAAG;AAAA,EAC1B;AAOA,WAAS,IAAI,KAAK,UAAU;AAC1B,QAAI,IAAI,GAAG,GAAG;AACZ,cAAQ,KAAK,aAAa,+BAA+B;AACzD;AAAA,IACF;AAGA,QAAI,UAAU,SAAS,KAAK,CAAC,QAAQ;AACnC,WAAK;AACL,eAAS;AAAA,IACX;AAEA,cAAU,IAAI,KAAK,QAAQ;AAAA,EAC7B;AAOA,WAAS,OAAO,KAAK;AACnB,cAAU,OAAO,GAAG;AAGpB,QAAI,UAAU,SAAS,KAAK,QAAQ;AAClC,WAAK;AACL,eAAS;AAAA,IACX;AAAA,EACF;AAOA,WAAS,QAAQ,GAAG;AAClB,cAAU,QAAQ,SAAS,gBAAgB,UAAU;AACnD,eAAS,CAAC;AAAA,IACZ,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
3
+ "sources": ["../../packages/js-toolkit/services/service.ts"],
4
+ "sourcesContent": ["// eslint-disable-next-line jsdoc/require-returns\nimport type { ServiceInterface } from './index.js';\n\nexport interface ServiceOptions<T> {\n init: () => void;\n kill: () => void;\n props: T;\n}\n\nexport interface UseServiceInterface<T> extends Omit<ServiceInterface<T>, 'props'> {\n callbacks: Map<string, (props: T) => unknown>;\n props: T;\n get: (key: string) => (props: T) => unknown;\n trigger: (props: T) => unknown;\n}\n\n/**\n * Use a service.\n */\nexport function useService<T>(options: ServiceOptions<T>): UseServiceInterface<T> {\n const callbacks: Map<string, (props: T) => unknown> = new Map();\n let isInit = false;\n\n const { init, kill, props } = options;\n\n /**\n * Does the service has the given key?\n */\n function has(key: string): boolean {\n return callbacks.has(key);\n }\n\n /**\n * Get a service callback by its key.\n */\n function get(key: string): (props: T) => unknown {\n return callbacks.get(key);\n }\n\n /**\n * Add a callback to the service.\n */\n function add(key: string, callback: (props: T) => unknown) {\n if (has(key)) {\n console.warn(`The key \\`${key}\\` has already been added.`);\n return;\n }\n\n // Initialize the service when we add the first callback\n if (callbacks.size === 0 && !isInit) {\n init();\n isInit = true;\n }\n\n callbacks.set(key, callback);\n }\n\n /**\n * Remove a callback from the service by its key.\n */\n function remove(key: string) {\n callbacks.delete(key);\n\n // Kill the service when we remove the last callback\n if (callbacks.size === 0 && isInit) {\n kill();\n isInit = false;\n }\n }\n\n /**\n * Trigger all service callbacks with service props.\n */\n function trigger(p: T) {\n callbacks.forEach((callback) => {\n callback(p);\n });\n }\n\n return {\n callbacks,\n props,\n add,\n remove,\n has,\n get,\n trigger,\n };\n}\n"],
5
+ "mappings": "AAmBO,SAAS,WAAc,SAAoD;AAChF,QAAM,YAAgD,oBAAI,IAAI;AAC9D,MAAI,SAAS;AAEb,QAAM,EAAE,MAAM,MAAM,MAAM,IAAI;AAK9B,WAAS,IAAI,KAAsB;AACjC,WAAO,UAAU,IAAI,GAAG;AAAA,EAC1B;AAKA,WAAS,IAAI,KAAoC;AAC/C,WAAO,UAAU,IAAI,GAAG;AAAA,EAC1B;AAKA,WAAS,IAAI,KAAa,UAAiC;AACzD,QAAI,IAAI,GAAG,GAAG;AACZ,cAAQ,KAAK,aAAa,+BAA+B;AACzD;AAAA,IACF;AAGA,QAAI,UAAU,SAAS,KAAK,CAAC,QAAQ;AACnC,WAAK;AACL,eAAS;AAAA,IACX;AAEA,cAAU,IAAI,KAAK,QAAQ;AAAA,EAC7B;AAKA,WAAS,OAAO,KAAa;AAC3B,cAAU,OAAO,GAAG;AAGpB,QAAI,UAAU,SAAS,KAAK,QAAQ;AAClC,WAAK;AACL,eAAS;AAAA,IACX;AAAA,EACF;AAKA,WAAS,QAAQ,GAAM;AACrB,cAAU,QAAQ,CAAC,aAAa;AAC9B,eAAS,CAAC;AAAA,IACZ,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,60 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // packages/js-toolkit/utils/Queue.ts
20
+ var Queue_exports = {};
21
+ __export(Queue_exports, {
22
+ Queue: () => Queue
23
+ });
24
+ module.exports = __toCommonJS(Queue_exports);
25
+ var Queue = class {
26
+ tasks = [];
27
+ concurrency = 10;
28
+ waiter;
29
+ isScheduled = false;
30
+ constructor(concurrency, waiter = (cb) => cb()) {
31
+ this.concurrency = concurrency;
32
+ this.waiter = waiter;
33
+ }
34
+ add(task) {
35
+ this.tasks.push(task);
36
+ this.scheduleFlush();
37
+ }
38
+ scheduleFlush() {
39
+ if (this.isScheduled) {
40
+ return;
41
+ }
42
+ this.isScheduled = true;
43
+ this.waiter(() => this.flush());
44
+ }
45
+ flush() {
46
+ this.run(this.tasks.splice(0, this.concurrency));
47
+ this.isScheduled = false;
48
+ if (this.tasks.length > 0) {
49
+ this.scheduleFlush();
50
+ }
51
+ }
52
+ run(tasks) {
53
+ let task;
54
+ while (task = tasks.shift()) {
55
+ task();
56
+ }
57
+ }
58
+ };
59
+ if (module.exports.default) module.exports = module.exports.default;
60
+ //# sourceMappingURL=Queue.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../packages/js-toolkit/utils/Queue.ts"],
4
+ "sourcesContent": ["/**\n * Manage tasks in a queue.\n */\nexport class Queue {\n /**\n * List of tasks.\n */\n tasks: Array<(...args: unknown[]) => unknown> = [];\n\n /**\n * Number of tasks running in a single batch.\n */\n concurrency = 10;\n\n /**\n * A function to schedule the next batch.\n */\n waiter: (cb: (...args: unknown[]) => unknown) => unknown;\n\n /**\n * Is schedule running?\n */\n isScheduled = false;\n\n /**\n * Constructor.\n *\n * @param {number} concurrency Number of tasks running in a single batch.\n * @param {(cb: (...args:unknown[]) => unknown) => unknown} waiter Scheduler for the next batch execution.\n */\n constructor(\n concurrency: number,\n waiter: (cb: (...args: unknown[]) => unknown) => unknown = (cb) => cb(),\n ) {\n this.concurrency = concurrency;\n this.waiter = waiter;\n }\n\n /**\n * Add a task to the queue.\n */\n add(task: (...args: unknown[]) => unknown) {\n this.tasks.push(task);\n this.scheduleFlush();\n }\n\n /**\n * Schedule next flush.\n */\n scheduleFlush() {\n if (this.isScheduled) {\n return;\n }\n\n this.isScheduled = true;\n this.waiter(() => this.flush());\n }\n\n /**\n * Flush current batch.\n */\n flush() {\n this.run(this.tasks.splice(0, this.concurrency));\n this.isScheduled = false;\n\n if (this.tasks.length > 0) {\n this.scheduleFlush();\n }\n }\n\n /**\n * Run the queue.\n */\n run(tasks: Array<(...args: unknown[]) => unknown>) {\n let task;\n // eslint-disable-next-line no-cond-assign\n while ((task = tasks.shift())) {\n task();\n }\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,IAAM,QAAN,MAAY;AAAA,EAIjB,QAAgD,CAAC;AAAA,EAKjD,cAAc;AAAA,EAKd;AAAA,EAKA,cAAc;AAAA,EAQd,YACE,aACA,SAA2D,CAAC,OAAO,GAAG,GACtE;AACA,SAAK,cAAc;AACnB,SAAK,SAAS;AAAA,EAChB;AAAA,EAKA,IAAI,MAAuC;AACzC,SAAK,MAAM,KAAK,IAAI;AACpB,SAAK,cAAc;AAAA,EACrB;AAAA,EAKA,gBAAgB;AACd,QAAI,KAAK,aAAa;AACpB;AAAA,IACF;AAEA,SAAK,cAAc;AACnB,SAAK,OAAO,MAAM,KAAK,MAAM,CAAC;AAAA,EAChC;AAAA,EAKA,QAAQ;AACN,SAAK,IAAI,KAAK,MAAM,OAAO,GAAG,KAAK,WAAW,CAAC;AAC/C,SAAK,cAAc;AAEnB,QAAI,KAAK,MAAM,SAAS,GAAG;AACzB,WAAK,cAAc;AAAA,IACrB;AAAA,EACF;AAAA,EAKA,IAAI,OAA+C;AACjD,QAAI;AAEJ,WAAQ,OAAO,MAAM,MAAM,GAAI;AAC7B,WAAK;AAAA,IACP;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Manage tasks in a queue.
3
+ */
4
+ export declare class Queue {
5
+ /**
6
+ * List of tasks.
7
+ */
8
+ tasks: Array<(...args: unknown[]) => unknown>;
9
+ /**
10
+ * Number of tasks running in a single batch.
11
+ */
12
+ concurrency: number;
13
+ /**
14
+ * A function to schedule the next batch.
15
+ */
16
+ waiter: (cb: (...args: unknown[]) => unknown) => unknown;
17
+ /**
18
+ * Is schedule running?
19
+ */
20
+ isScheduled: boolean;
21
+ /**
22
+ * Constructor.
23
+ *
24
+ * @param {number} concurrency Number of tasks running in a single batch.
25
+ * @param {(cb: (...args:unknown[]) => unknown) => unknown} waiter Scheduler for the next batch execution.
26
+ */
27
+ constructor(concurrency: number, waiter?: (cb: (...args: unknown[]) => unknown) => unknown);
28
+ /**
29
+ * Add a task to the queue.
30
+ */
31
+ add(task: (...args: unknown[]) => unknown): void;
32
+ /**
33
+ * Schedule next flush.
34
+ */
35
+ scheduleFlush(): void;
36
+ /**
37
+ * Flush current batch.
38
+ */
39
+ flush(): void;
40
+ /**
41
+ * Run the queue.
42
+ */
43
+ run(tasks: Array<(...args: unknown[]) => unknown>): void;
44
+ }
package/utils/Queue.js ADDED
@@ -0,0 +1,38 @@
1
+ class Queue {
2
+ tasks = [];
3
+ concurrency = 10;
4
+ waiter;
5
+ isScheduled = false;
6
+ constructor(concurrency, waiter = (cb) => cb()) {
7
+ this.concurrency = concurrency;
8
+ this.waiter = waiter;
9
+ }
10
+ add(task) {
11
+ this.tasks.push(task);
12
+ this.scheduleFlush();
13
+ }
14
+ scheduleFlush() {
15
+ if (this.isScheduled) {
16
+ return;
17
+ }
18
+ this.isScheduled = true;
19
+ this.waiter(() => this.flush());
20
+ }
21
+ flush() {
22
+ this.run(this.tasks.splice(0, this.concurrency));
23
+ this.isScheduled = false;
24
+ if (this.tasks.length > 0) {
25
+ this.scheduleFlush();
26
+ }
27
+ }
28
+ run(tasks) {
29
+ let task;
30
+ while (task = tasks.shift()) {
31
+ task();
32
+ }
33
+ }
34
+ }
35
+ export {
36
+ Queue
37
+ };
38
+ //# sourceMappingURL=Queue.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../packages/js-toolkit/utils/Queue.ts"],
4
+ "sourcesContent": ["/**\n * Manage tasks in a queue.\n */\nexport class Queue {\n /**\n * List of tasks.\n */\n tasks: Array<(...args: unknown[]) => unknown> = [];\n\n /**\n * Number of tasks running in a single batch.\n */\n concurrency = 10;\n\n /**\n * A function to schedule the next batch.\n */\n waiter: (cb: (...args: unknown[]) => unknown) => unknown;\n\n /**\n * Is schedule running?\n */\n isScheduled = false;\n\n /**\n * Constructor.\n *\n * @param {number} concurrency Number of tasks running in a single batch.\n * @param {(cb: (...args:unknown[]) => unknown) => unknown} waiter Scheduler for the next batch execution.\n */\n constructor(\n concurrency: number,\n waiter: (cb: (...args: unknown[]) => unknown) => unknown = (cb) => cb(),\n ) {\n this.concurrency = concurrency;\n this.waiter = waiter;\n }\n\n /**\n * Add a task to the queue.\n */\n add(task: (...args: unknown[]) => unknown) {\n this.tasks.push(task);\n this.scheduleFlush();\n }\n\n /**\n * Schedule next flush.\n */\n scheduleFlush() {\n if (this.isScheduled) {\n return;\n }\n\n this.isScheduled = true;\n this.waiter(() => this.flush());\n }\n\n /**\n * Flush current batch.\n */\n flush() {\n this.run(this.tasks.splice(0, this.concurrency));\n this.isScheduled = false;\n\n if (this.tasks.length > 0) {\n this.scheduleFlush();\n }\n }\n\n /**\n * Run the queue.\n */\n run(tasks: Array<(...args: unknown[]) => unknown>) {\n let task;\n // eslint-disable-next-line no-cond-assign\n while ((task = tasks.shift())) {\n task();\n }\n }\n}\n"],
5
+ "mappings": "AAGO,MAAM,MAAM;AAAA,EAIjB,QAAgD,CAAC;AAAA,EAKjD,cAAc;AAAA,EAKd;AAAA,EAKA,cAAc;AAAA,EAQd,YACE,aACA,SAA2D,CAAC,OAAO,GAAG,GACtE;AACA,SAAK,cAAc;AACnB,SAAK,SAAS;AAAA,EAChB;AAAA,EAKA,IAAI,MAAuC;AACzC,SAAK,MAAM,KAAK,IAAI;AACpB,SAAK,cAAc;AAAA,EACrB;AAAA,EAKA,gBAAgB;AACd,QAAI,KAAK,aAAa;AACpB;AAAA,IACF;AAEA,SAAK,cAAc;AACnB,SAAK,OAAO,MAAM,KAAK,MAAM,CAAC;AAAA,EAChC;AAAA,EAKA,QAAQ;AACN,SAAK,IAAI,KAAK,MAAM,OAAO,GAAG,KAAK,WAAW,CAAC;AAC/C,SAAK,cAAc;AAEnB,QAAI,KAAK,MAAM,SAAS,GAAG;AACzB,WAAK,cAAc;AAAA,IACrB;AAAA,EACF;AAAA,EAKA,IAAI,OAA+C;AACjD,QAAI;AAEJ,WAAQ,OAAO,MAAM,MAAM,GAAI;AAC7B,WAAK;AAAA,IACP;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -16,15 +16,16 @@ 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/collide/boundingRectToCircle.js
19
+ // packages/js-toolkit/utils/collide/boundingRectToCircle.ts
20
20
  var boundingRectToCircle_exports = {};
21
21
  __export(boundingRectToCircle_exports, {
22
22
  default: () => boundingRectToCircle
23
23
  });
24
24
  module.exports = __toCommonJS(boundingRectToCircle_exports);
25
25
  function boundingRectToCircle({ x, y, width, height }, force = false) {
26
- if (width !== height && !force)
26
+ if (width !== height && !force) {
27
27
  throw new Error("Initial DOMElement is not a square. Please use the force mode.");
28
+ }
28
29
  return {
29
30
  x: x + width / 2,
30
31
  y: y + height / 2,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../packages/js-toolkit/utils/collide/boundingRectToCircle.js"],
4
- "sourcesContent": ["/**\n * @typedef {Object} Circle\n * @property {number} x Circle's x position\n * @property {number} y Circle's y position\n * @property {number} radius Circle's radius\n */\n\n/**\n * Convert clientRect to a formatted circle object\n *\n * @param {Partial<DOMRect>} domRect DOMRect of a square DOMElement\n * @param {boolean} force Force usage of non-square DOMElements\n * @returns {Circle} Circle object that can be used in collides functions\n */\nexport default function boundingRectToCircle({ x, y, width, height }, force = false) {\n if (width !== height && !force)\n throw new Error('Initial DOMElement is not a square. Please use the force mode.');\n return {\n x: x + width / 2,\n y: y + height / 2,\n radius: (width + height) / 4,\n };\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAce,SAAR,qBAAsC,EAAE,GAAG,GAAG,OAAO,OAAO,GAAG,QAAQ,OAAO;AACnF,MAAI,UAAU,UAAU,CAAC;AACvB,UAAM,IAAI,MAAM,gEAAgE;AAClF,SAAO;AAAA,IACL,GAAG,IAAI,QAAQ;AAAA,IACf,GAAG,IAAI,SAAS;AAAA,IAChB,SAAS,QAAQ,UAAU;AAAA,EAC7B;AACF;",
3
+ "sources": ["../../../packages/js-toolkit/utils/collide/boundingRectToCircle.ts"],
4
+ "sourcesContent": ["/**\n * @typedef {Object} Circle\n * @property {number} x Circle's x position\n * @property {number} y Circle's y position\n * @property {number} radius Circle's radius\n */\n\n/**\n * Convert clientRect to a formatted circle object\n *\n * @param {Partial<DOMRect>} domRect DOMRect of a square DOMElement\n * @param {boolean} force Force usage of non-square DOMElements\n * @returns {Circle} Circle object that can be used in collides functions\n */\nexport default function boundingRectToCircle({ x, y, width, height }, force = false) {\n if (width !== height && !force) {\n throw new Error('Initial DOMElement is not a square. Please use the force mode.');\n }\n return {\n x: x + width / 2,\n y: y + height / 2,\n radius: (width + height) / 4,\n };\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAce,SAAR,qBAAsC,EAAE,GAAG,GAAG,OAAO,OAAO,GAAG,QAAQ,OAAO;AACnF,MAAI,UAAU,UAAU,CAAC,OAAO;AAC9B,UAAM,IAAI,MAAM,gEAAgE;AAAA,EAClF;AACA,SAAO;AAAA,IACL,GAAG,IAAI,QAAQ;AAAA,IACf,GAAG,IAAI,SAAS;AAAA,IAChB,SAAS,QAAQ,UAAU;AAAA,EAC7B;AACF;",
6
6
  "names": []
7
7
  }
@@ -11,18 +11,13 @@
11
11
  * @param {boolean} force Force usage of non-square DOMElements
12
12
  * @returns {Circle} Circle object that can be used in collides functions
13
13
  */
14
- export default function boundingRectToCircle({ x, y, width, height }: Partial<DOMRect>, force?: boolean): Circle;
15
- export type Circle = {
16
- /**
17
- * Circle's x position
18
- */
19
- x: number;
20
- /**
21
- * Circle's y position
22
- */
23
- y: number;
24
- /**
25
- * Circle's radius
26
- */
14
+ export default function boundingRectToCircle({ x, y, width, height }: {
15
+ x: any;
16
+ y: any;
17
+ width: any;
18
+ height: any;
19
+ }, force?: boolean): {
20
+ x: any;
21
+ y: any;
27
22
  radius: number;
28
23
  };
@@ -1,6 +1,7 @@
1
1
  function boundingRectToCircle({ x, y, width, height }, force = false) {
2
- if (width !== height && !force)
2
+ if (width !== height && !force) {
3
3
  throw new Error("Initial DOMElement is not a square. Please use the force mode.");
4
+ }
4
5
  return {
5
6
  x: x + width / 2,
6
7
  y: y + height / 2,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../packages/js-toolkit/utils/collide/boundingRectToCircle.js"],
4
- "sourcesContent": ["/**\n * @typedef {Object} Circle\n * @property {number} x Circle's x position\n * @property {number} y Circle's y position\n * @property {number} radius Circle's radius\n */\n\n/**\n * Convert clientRect to a formatted circle object\n *\n * @param {Partial<DOMRect>} domRect DOMRect of a square DOMElement\n * @param {boolean} force Force usage of non-square DOMElements\n * @returns {Circle} Circle object that can be used in collides functions\n */\nexport default function boundingRectToCircle({ x, y, width, height }, force = false) {\n if (width !== height && !force)\n throw new Error('Initial DOMElement is not a square. Please use the force mode.');\n return {\n x: x + width / 2,\n y: y + height / 2,\n radius: (width + height) / 4,\n };\n}\n"],
5
- "mappings": "AAce,SAAR,qBAAsC,EAAE,GAAG,GAAG,OAAO,OAAO,GAAG,QAAQ,OAAO;AACnF,MAAI,UAAU,UAAU,CAAC;AACvB,UAAM,IAAI,MAAM,gEAAgE;AAClF,SAAO;AAAA,IACL,GAAG,IAAI,QAAQ;AAAA,IACf,GAAG,IAAI,SAAS;AAAA,IAChB,SAAS,QAAQ,UAAU;AAAA,EAC7B;AACF;",
3
+ "sources": ["../../../packages/js-toolkit/utils/collide/boundingRectToCircle.ts"],
4
+ "sourcesContent": ["/**\n * @typedef {Object} Circle\n * @property {number} x Circle's x position\n * @property {number} y Circle's y position\n * @property {number} radius Circle's radius\n */\n\n/**\n * Convert clientRect to a formatted circle object\n *\n * @param {Partial<DOMRect>} domRect DOMRect of a square DOMElement\n * @param {boolean} force Force usage of non-square DOMElements\n * @returns {Circle} Circle object that can be used in collides functions\n */\nexport default function boundingRectToCircle({ x, y, width, height }, force = false) {\n if (width !== height && !force) {\n throw new Error('Initial DOMElement is not a square. Please use the force mode.');\n }\n return {\n x: x + width / 2,\n y: y + height / 2,\n radius: (width + height) / 4,\n };\n}\n"],
5
+ "mappings": "AAce,SAAR,qBAAsC,EAAE,GAAG,GAAG,OAAO,OAAO,GAAG,QAAQ,OAAO;AACnF,MAAI,UAAU,UAAU,CAAC,OAAO;AAC9B,UAAM,IAAI,MAAM,gEAAgE;AAAA,EAClF;AACA,SAAO;AAAA,IACL,GAAG,IAAI,QAAQ;AAAA,IACf,GAAG,IAAI,SAAS;AAAA,IAChB,SAAS,QAAQ,UAAU;AAAA,EAC7B;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/collide/collideCircleCircle.js
19
+ // packages/js-toolkit/utils/collide/collideCircleCircle.ts
20
20
  var collideCircleCircle_exports = {};
21
21
  __export(collideCircleCircle_exports, {
22
22
  default: () => collideCircleCircle
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../packages/js-toolkit/utils/collide/collideCircleCircle.js"],
3
+ "sources": ["../../../packages/js-toolkit/utils/collide/collideCircleCircle.ts"],
4
4
  "sourcesContent": ["/**\n * @typedef {Object} Circle\n * @property {number} x Circle's x position\n * @property {number} y Circle's y position\n * @property {number} radius Circle's radius\n */\n\n/**\n * Test if a circle collides with another.\n * Inspired by http://www.jeffreythompson.org/collision-detection/circle-circle.php\n *\n * @param {Circle} circle1 Circle 1\n * @param {Circle} circle2 Circle 2\n * @returns {boolean} Are the sides of one circle touching the other ?\n */\nexport default function collideCircleCircle(circle1, circle2) {\n // get distance between the circle's centers\n // use the Pythagorean Theorem to compute the distance\n const distX = circle1.x - circle2.x;\n const distY = circle1.y - circle2.y;\n const distance = Math.sqrt(distX * distX + distY * distY);\n\n // if the distance is less than the sum of the circle's\n // radii, the circles are touching!\n if (distance <= circle1.radius + circle2.radius) {\n return true;\n }\n return false;\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAee,SAAR,oBAAqC,SAAS,SAAS;AAG5D,QAAM,QAAQ,QAAQ,IAAI,QAAQ;AAClC,QAAM,QAAQ,QAAQ,IAAI,QAAQ;AAClC,QAAM,WAAW,KAAK,KAAK,QAAQ,QAAQ,QAAQ,KAAK;AAIxD,MAAI,YAAY,QAAQ,SAAS,QAAQ,QAAQ;AAC/C,WAAO;AAAA,EACT;AACA,SAAO;AACT;",
6
6
  "names": []
@@ -12,18 +12,4 @@
12
12
  * @param {Circle} circle2 Circle 2
13
13
  * @returns {boolean} Are the sides of one circle touching the other ?
14
14
  */
15
- export default function collideCircleCircle(circle1: Circle, circle2: Circle): boolean;
16
- export type Circle = {
17
- /**
18
- * Circle's x position
19
- */
20
- x: number;
21
- /**
22
- * Circle's y position
23
- */
24
- y: number;
25
- /**
26
- * Circle's radius
27
- */
28
- radius: number;
29
- };
15
+ export default function collideCircleCircle(circle1: any, circle2: any): boolean;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../packages/js-toolkit/utils/collide/collideCircleCircle.js"],
3
+ "sources": ["../../../packages/js-toolkit/utils/collide/collideCircleCircle.ts"],
4
4
  "sourcesContent": ["/**\n * @typedef {Object} Circle\n * @property {number} x Circle's x position\n * @property {number} y Circle's y position\n * @property {number} radius Circle's radius\n */\n\n/**\n * Test if a circle collides with another.\n * Inspired by http://www.jeffreythompson.org/collision-detection/circle-circle.php\n *\n * @param {Circle} circle1 Circle 1\n * @param {Circle} circle2 Circle 2\n * @returns {boolean} Are the sides of one circle touching the other ?\n */\nexport default function collideCircleCircle(circle1, circle2) {\n // get distance between the circle's centers\n // use the Pythagorean Theorem to compute the distance\n const distX = circle1.x - circle2.x;\n const distY = circle1.y - circle2.y;\n const distance = Math.sqrt(distX * distX + distY * distY);\n\n // if the distance is less than the sum of the circle's\n // radii, the circles are touching!\n if (distance <= circle1.radius + circle2.radius) {\n return true;\n }\n return false;\n}\n"],
5
5
  "mappings": "AAee,SAAR,oBAAqC,SAAS,SAAS;AAG5D,QAAM,QAAQ,QAAQ,IAAI,QAAQ;AAClC,QAAM,QAAQ,QAAQ,IAAI,QAAQ;AAClC,QAAM,WAAW,KAAK,KAAK,QAAQ,QAAQ,QAAQ,KAAK;AAIxD,MAAI,YAAY,QAAQ,SAAS,QAAQ,QAAQ;AAC/C,WAAO;AAAA,EACT;AACA,SAAO;AACT;",
6
6
  "names": []
@@ -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/collide/collideCircleRect.js
19
+ // packages/js-toolkit/utils/collide/collideCircleRect.ts
20
20
  var collideCircleRect_exports = {};
21
21
  __export(collideCircleRect_exports, {
22
22
  default: () => collideCircleRect