@studiometa/js-toolkit 2.6.0 → 2.6.3

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 (387) hide show
  1. package/Base/index.cjs +41 -41
  2. package/Base/index.cjs.map +7 -0
  3. package/Base/index.js +58 -64
  4. package/Base/index.js.map +7 -0
  5. package/Base/managers/AbstractManager.cjs +6 -10
  6. package/Base/managers/AbstractManager.cjs.map +7 -0
  7. package/Base/managers/AbstractManager.js +6 -11
  8. package/Base/managers/AbstractManager.js.map +7 -0
  9. package/Base/managers/ChildrenManager.cjs +3 -11
  10. package/Base/managers/ChildrenManager.cjs.map +7 -0
  11. package/Base/managers/ChildrenManager.js +3 -12
  12. package/Base/managers/ChildrenManager.js.map +7 -0
  13. package/Base/managers/EventsManager.cjs +57 -61
  14. package/Base/managers/EventsManager.cjs.map +7 -0
  15. package/Base/managers/EventsManager.js +57 -62
  16. package/Base/managers/EventsManager.js.map +7 -0
  17. package/Base/managers/OptionsManager.cjs +8 -14
  18. package/Base/managers/OptionsManager.cjs.map +7 -0
  19. package/Base/managers/OptionsManager.js +8 -15
  20. package/Base/managers/OptionsManager.js.map +7 -0
  21. package/Base/managers/RefsManager.cjs +2 -2
  22. package/Base/managers/RefsManager.cjs.map +7 -0
  23. package/Base/managers/RefsManager.js +2 -2
  24. package/Base/managers/RefsManager.js.map +7 -0
  25. package/Base/managers/ResponsiveOptionsManager.cjs +1 -0
  26. package/Base/managers/ResponsiveOptionsManager.cjs.map +7 -0
  27. package/Base/managers/ResponsiveOptionsManager.js +1 -0
  28. package/Base/managers/ResponsiveOptionsManager.js.map +7 -0
  29. package/Base/managers/ServicesManager.cjs +3 -12
  30. package/Base/managers/ServicesManager.cjs.map +7 -0
  31. package/Base/managers/ServicesManager.js +3 -13
  32. package/Base/managers/ServicesManager.js.map +7 -0
  33. package/Base/types.cjs +1 -0
  34. package/Base/types.cjs.map +7 -0
  35. package/Base/types.js +1 -0
  36. package/Base/types.js.map +7 -0
  37. package/Base/utils.cjs +1 -0
  38. package/Base/utils.cjs.map +7 -0
  39. package/Base/utils.js +1 -0
  40. package/Base/utils.js.map +7 -0
  41. package/decorators/index.cjs +1 -0
  42. package/decorators/index.cjs.map +7 -0
  43. package/decorators/index.js +1 -0
  44. package/decorators/index.js.map +7 -0
  45. package/decorators/withBreakpointManager.cjs +1 -0
  46. package/decorators/withBreakpointManager.cjs.map +7 -0
  47. package/decorators/withBreakpointManager.js +1 -0
  48. package/decorators/withBreakpointManager.js.map +7 -0
  49. package/decorators/withBreakpointObserver.cjs +10 -15
  50. package/decorators/withBreakpointObserver.cjs.map +7 -0
  51. package/decorators/withBreakpointObserver.js +10 -16
  52. package/decorators/withBreakpointObserver.js.map +7 -0
  53. package/decorators/withDrag.cjs +5 -9
  54. package/decorators/withDrag.cjs.map +7 -0
  55. package/decorators/withDrag.js +5 -10
  56. package/decorators/withDrag.js.map +7 -0
  57. package/decorators/withExtraConfig.cjs +2 -6
  58. package/decorators/withExtraConfig.cjs.map +7 -0
  59. package/decorators/withExtraConfig.js +2 -7
  60. package/decorators/withExtraConfig.js.map +7 -0
  61. package/decorators/withFreezedOptions.cjs +2 -9
  62. package/decorators/withFreezedOptions.cjs.map +7 -0
  63. package/decorators/withFreezedOptions.js +2 -10
  64. package/decorators/withFreezedOptions.js.map +7 -0
  65. package/decorators/withIntersectionObserver.cjs +11 -16
  66. package/decorators/withIntersectionObserver.cjs.map +7 -0
  67. package/decorators/withIntersectionObserver.js +11 -17
  68. package/decorators/withIntersectionObserver.js.map +7 -0
  69. package/decorators/withMountWhenInView.cjs +11 -16
  70. package/decorators/withMountWhenInView.cjs.map +7 -0
  71. package/decorators/withMountWhenInView.js +11 -17
  72. package/decorators/withMountWhenInView.js.map +7 -0
  73. package/decorators/withResponsiveOptions.cjs +1 -0
  74. package/decorators/withResponsiveOptions.cjs.map +7 -0
  75. package/decorators/withResponsiveOptions.js +1 -0
  76. package/decorators/withResponsiveOptions.js.map +7 -0
  77. package/decorators/withScrolledInView.cjs +45 -50
  78. package/decorators/withScrolledInView.cjs.map +7 -0
  79. package/decorators/withScrolledInView.js +45 -51
  80. package/decorators/withScrolledInView.js.map +7 -0
  81. package/decorators/withVue2.cjs +9 -15
  82. package/decorators/withVue2.cjs.map +7 -0
  83. package/decorators/withVue2.js +9 -16
  84. package/decorators/withVue2.js.map +7 -0
  85. package/helpers/createApp.cjs +1 -0
  86. package/helpers/createApp.cjs.map +7 -0
  87. package/helpers/createApp.js +1 -0
  88. package/helpers/createApp.js.map +7 -0
  89. package/helpers/getClosestParent.cjs +1 -0
  90. package/helpers/getClosestParent.cjs.map +7 -0
  91. package/helpers/getClosestParent.js +1 -0
  92. package/helpers/getClosestParent.js.map +7 -0
  93. package/helpers/getDirectChildren.cjs +1 -0
  94. package/helpers/getDirectChildren.cjs.map +7 -0
  95. package/helpers/getDirectChildren.js +1 -0
  96. package/helpers/getDirectChildren.js.map +7 -0
  97. package/helpers/getInstanceFromElement.cjs +1 -0
  98. package/helpers/getInstanceFromElement.cjs.map +7 -0
  99. package/helpers/getInstanceFromElement.js +1 -0
  100. package/helpers/getInstanceFromElement.js.map +7 -0
  101. package/helpers/importOnInteraction.cjs +2 -1
  102. package/helpers/importOnInteraction.cjs.map +7 -0
  103. package/helpers/importOnInteraction.js +2 -1
  104. package/helpers/importOnInteraction.js.map +7 -0
  105. package/helpers/importWhenIdle.cjs +1 -0
  106. package/helpers/importWhenIdle.cjs.map +7 -0
  107. package/helpers/importWhenIdle.js +1 -0
  108. package/helpers/importWhenIdle.js.map +7 -0
  109. package/helpers/importWhenVisible.cjs +2 -1
  110. package/helpers/importWhenVisible.cjs.map +7 -0
  111. package/helpers/importWhenVisible.js +2 -1
  112. package/helpers/importWhenVisible.js.map +7 -0
  113. package/helpers/index.cjs +1 -0
  114. package/helpers/index.cjs.map +7 -0
  115. package/helpers/index.js +1 -0
  116. package/helpers/index.js.map +7 -0
  117. package/helpers/utils.cjs +1 -0
  118. package/helpers/utils.cjs.map +7 -0
  119. package/helpers/utils.js +1 -0
  120. package/helpers/utils.js.map +7 -0
  121. package/index.cjs +1 -0
  122. package/index.cjs.map +7 -0
  123. package/index.js +1 -0
  124. package/index.js.map +7 -0
  125. package/package.json +1 -1
  126. package/services/drag.cjs +1 -0
  127. package/services/drag.cjs.map +7 -0
  128. package/services/drag.js +1 -0
  129. package/services/drag.js.map +7 -0
  130. package/services/index.cjs +1 -0
  131. package/services/index.cjs.map +7 -0
  132. package/services/index.js +1 -0
  133. package/services/index.js.map +7 -0
  134. package/services/key.cjs +2 -1
  135. package/services/key.cjs.map +7 -0
  136. package/services/key.js +2 -1
  137. package/services/key.js.map +7 -0
  138. package/services/load.cjs +1 -0
  139. package/services/load.cjs.map +7 -0
  140. package/services/load.js +1 -0
  141. package/services/load.js.map +7 -0
  142. package/services/pointer.cjs +3 -3
  143. package/services/pointer.cjs.map +7 -0
  144. package/services/pointer.js +3 -3
  145. package/services/pointer.js.map +7 -0
  146. package/services/raf.cjs +1 -0
  147. package/services/raf.cjs.map +7 -0
  148. package/services/raf.js +1 -0
  149. package/services/raf.js.map +7 -0
  150. package/services/resize.cjs +1 -0
  151. package/services/resize.cjs.map +7 -0
  152. package/services/resize.js +1 -0
  153. package/services/resize.js.map +7 -0
  154. package/services/scroll.cjs +1 -0
  155. package/services/scroll.cjs.map +7 -0
  156. package/services/scroll.js +1 -0
  157. package/services/scroll.js.map +7 -0
  158. package/services/service.cjs +1 -0
  159. package/services/service.cjs.map +7 -0
  160. package/services/service.js +1 -0
  161. package/services/service.js.map +7 -0
  162. package/utils/collide/boundingRectToCircle.cjs +1 -0
  163. package/utils/collide/boundingRectToCircle.cjs.map +7 -0
  164. package/utils/collide/boundingRectToCircle.js +1 -0
  165. package/utils/collide/boundingRectToCircle.js.map +7 -0
  166. package/utils/collide/collideCircleCircle.cjs +1 -0
  167. package/utils/collide/collideCircleCircle.cjs.map +7 -0
  168. package/utils/collide/collideCircleCircle.js +1 -0
  169. package/utils/collide/collideCircleCircle.js.map +7 -0
  170. package/utils/collide/collideCircleRect.cjs +1 -0
  171. package/utils/collide/collideCircleRect.cjs.map +7 -0
  172. package/utils/collide/collideCircleRect.js +1 -0
  173. package/utils/collide/collideCircleRect.js.map +7 -0
  174. package/utils/collide/collidePointCircle.cjs +1 -0
  175. package/utils/collide/collidePointCircle.cjs.map +7 -0
  176. package/utils/collide/collidePointCircle.js +1 -0
  177. package/utils/collide/collidePointCircle.js.map +7 -0
  178. package/utils/collide/collidePointRect.cjs +1 -0
  179. package/utils/collide/collidePointRect.cjs.map +7 -0
  180. package/utils/collide/collidePointRect.js +1 -0
  181. package/utils/collide/collidePointRect.js.map +7 -0
  182. package/utils/collide/collideRectRect.cjs +1 -0
  183. package/utils/collide/collideRectRect.cjs.map +7 -0
  184. package/utils/collide/collideRectRect.js +1 -0
  185. package/utils/collide/collideRectRect.js.map +7 -0
  186. package/utils/collide/index.cjs +1 -0
  187. package/utils/collide/index.cjs.map +7 -0
  188. package/utils/collide/index.js +1 -0
  189. package/utils/collide/index.js.map +7 -0
  190. package/utils/css/animate.cjs +10 -13
  191. package/utils/css/animate.cjs.map +7 -0
  192. package/utils/css/animate.js +10 -13
  193. package/utils/css/animate.js.map +7 -0
  194. package/utils/css/classes.cjs +2 -1
  195. package/utils/css/classes.cjs.map +7 -0
  196. package/utils/css/classes.js +2 -1
  197. package/utils/css/classes.js.map +7 -0
  198. package/utils/css/getOffsetSizes.cjs +1 -0
  199. package/utils/css/getOffsetSizes.cjs.map +7 -0
  200. package/utils/css/getOffsetSizes.js +1 -0
  201. package/utils/css/getOffsetSizes.js.map +7 -0
  202. package/utils/css/index.cjs +1 -0
  203. package/utils/css/index.cjs.map +7 -0
  204. package/utils/css/index.js +1 -0
  205. package/utils/css/index.js.map +7 -0
  206. package/utils/css/matrix.cjs +2 -2
  207. package/utils/css/matrix.cjs.map +7 -0
  208. package/utils/css/matrix.js +2 -2
  209. package/utils/css/matrix.js.map +7 -0
  210. package/utils/css/styles.cjs +1 -0
  211. package/utils/css/styles.cjs.map +7 -0
  212. package/utils/css/styles.js +1 -0
  213. package/utils/css/styles.js.map +7 -0
  214. package/utils/css/transform.cjs +2 -2
  215. package/utils/css/transform.cjs.map +7 -0
  216. package/utils/css/transform.js +2 -2
  217. package/utils/css/transform.js.map +7 -0
  218. package/utils/css/transition.cjs +3 -7
  219. package/utils/css/transition.cjs.map +7 -0
  220. package/utils/css/transition.js +3 -8
  221. package/utils/css/transition.js.map +7 -0
  222. package/utils/css/utils.cjs +1 -0
  223. package/utils/css/utils.cjs.map +7 -0
  224. package/utils/css/utils.js +1 -0
  225. package/utils/css/utils.js.map +7 -0
  226. package/utils/debounce.cjs +1 -0
  227. package/utils/debounce.cjs.map +7 -0
  228. package/utils/debounce.js +1 -0
  229. package/utils/debounce.js.map +7 -0
  230. package/utils/focusTrap.cjs +1 -0
  231. package/utils/focusTrap.cjs.map +7 -0
  232. package/utils/focusTrap.js +1 -0
  233. package/utils/focusTrap.js.map +7 -0
  234. package/utils/has.cjs +1 -0
  235. package/utils/has.cjs.map +7 -0
  236. package/utils/has.js +1 -0
  237. package/utils/has.js.map +7 -0
  238. package/utils/history.cjs +1 -0
  239. package/utils/history.cjs.map +7 -0
  240. package/utils/history.js +1 -0
  241. package/utils/history.js.map +7 -0
  242. package/utils/index.cjs +1 -0
  243. package/utils/index.cjs.map +7 -0
  244. package/utils/index.js +1 -0
  245. package/utils/index.js.map +7 -0
  246. package/utils/is.cjs +1 -0
  247. package/utils/is.cjs.map +7 -0
  248. package/utils/is.js +1 -0
  249. package/utils/is.js.map +7 -0
  250. package/utils/keyCodes.cjs +1 -0
  251. package/utils/keyCodes.cjs.map +7 -0
  252. package/utils/keyCodes.js +1 -0
  253. package/utils/keyCodes.js.map +7 -0
  254. package/utils/math/clamp.cjs +1 -0
  255. package/utils/math/clamp.cjs.map +7 -0
  256. package/utils/math/clamp.js +1 -0
  257. package/utils/math/clamp.js.map +7 -0
  258. package/utils/math/clamp01.cjs +1 -0
  259. package/utils/math/clamp01.cjs.map +7 -0
  260. package/utils/math/clamp01.js +1 -0
  261. package/utils/math/clamp01.js.map +7 -0
  262. package/utils/math/createEases.cjs +1 -0
  263. package/utils/math/createEases.cjs.map +7 -0
  264. package/utils/math/createEases.js +1 -0
  265. package/utils/math/createEases.js.map +7 -0
  266. package/utils/math/damp.cjs +1 -0
  267. package/utils/math/damp.cjs.map +7 -0
  268. package/utils/math/damp.js +1 -0
  269. package/utils/math/damp.js.map +7 -0
  270. package/utils/math/ease.cjs +1 -0
  271. package/utils/math/ease.cjs.map +7 -0
  272. package/utils/math/ease.js +1 -0
  273. package/utils/math/ease.js.map +7 -0
  274. package/utils/math/index.cjs +1 -0
  275. package/utils/math/index.cjs.map +7 -0
  276. package/utils/math/index.js +1 -0
  277. package/utils/math/index.js.map +7 -0
  278. package/utils/math/inertiaFinalValue.cjs +1 -0
  279. package/utils/math/inertiaFinalValue.cjs.map +7 -0
  280. package/utils/math/inertiaFinalValue.js +1 -0
  281. package/utils/math/inertiaFinalValue.js.map +7 -0
  282. package/utils/math/lerp.cjs +1 -0
  283. package/utils/math/lerp.cjs.map +7 -0
  284. package/utils/math/lerp.js +1 -0
  285. package/utils/math/lerp.js.map +7 -0
  286. package/utils/math/map.cjs +1 -0
  287. package/utils/math/map.cjs.map +7 -0
  288. package/utils/math/map.js +1 -0
  289. package/utils/math/map.js.map +7 -0
  290. package/utils/math/round.cjs +1 -0
  291. package/utils/math/round.cjs.map +7 -0
  292. package/utils/math/round.js +1 -0
  293. package/utils/math/round.js.map +7 -0
  294. package/utils/memoize.cjs +1 -0
  295. package/utils/memoize.cjs.map +7 -0
  296. package/utils/memoize.js +1 -0
  297. package/utils/memoize.js.map +7 -0
  298. package/utils/nextFrame.cjs +1 -0
  299. package/utils/nextFrame.cjs.map +7 -0
  300. package/utils/nextFrame.js +1 -0
  301. package/utils/nextFrame.js.map +7 -0
  302. package/utils/nextMicrotask.cjs +1 -0
  303. package/utils/nextMicrotask.cjs.map +7 -0
  304. package/utils/nextMicrotask.js +1 -0
  305. package/utils/nextMicrotask.js.map +7 -0
  306. package/utils/nextTick.cjs +1 -0
  307. package/utils/nextTick.cjs.map +7 -0
  308. package/utils/nextTick.js +1 -0
  309. package/utils/nextTick.js.map +7 -0
  310. package/utils/noop.cjs +1 -0
  311. package/utils/noop.cjs.map +7 -0
  312. package/utils/noop.js +1 -0
  313. package/utils/noop.js.map +7 -0
  314. package/utils/object/autoBind.cjs +1 -0
  315. package/utils/object/autoBind.cjs.map +7 -0
  316. package/utils/object/autoBind.js +1 -0
  317. package/utils/object/autoBind.js.map +7 -0
  318. package/utils/object/getAllProperties.cjs +1 -0
  319. package/utils/object/getAllProperties.cjs.map +7 -0
  320. package/utils/object/getAllProperties.js +1 -0
  321. package/utils/object/getAllProperties.js.map +7 -0
  322. package/utils/object/index.cjs +1 -0
  323. package/utils/object/index.cjs.map +7 -0
  324. package/utils/object/index.js +1 -0
  325. package/utils/object/index.js.map +7 -0
  326. package/utils/scheduler.cjs +1 -0
  327. package/utils/scheduler.cjs.map +7 -0
  328. package/utils/scheduler.js +1 -0
  329. package/utils/scheduler.js.map +7 -0
  330. package/utils/scrollTo.cjs +1 -0
  331. package/utils/scrollTo.cjs.map +7 -0
  332. package/utils/scrollTo.d.ts +1 -1
  333. package/utils/scrollTo.js +1 -0
  334. package/utils/scrollTo.js.map +7 -0
  335. package/utils/string/index.cjs +1 -0
  336. package/utils/string/index.cjs.map +7 -0
  337. package/utils/string/index.js +1 -0
  338. package/utils/string/index.js.map +7 -0
  339. package/utils/string/withLeadingCharacters.cjs +1 -0
  340. package/utils/string/withLeadingCharacters.cjs.map +7 -0
  341. package/utils/string/withLeadingCharacters.js +1 -0
  342. package/utils/string/withLeadingCharacters.js.map +7 -0
  343. package/utils/string/withLeadingSlash.cjs +1 -0
  344. package/utils/string/withLeadingSlash.cjs.map +7 -0
  345. package/utils/string/withLeadingSlash.js +1 -0
  346. package/utils/string/withLeadingSlash.js.map +7 -0
  347. package/utils/string/withTrailingCharacters.cjs +1 -0
  348. package/utils/string/withTrailingCharacters.cjs.map +7 -0
  349. package/utils/string/withTrailingCharacters.js +1 -0
  350. package/utils/string/withTrailingCharacters.js.map +7 -0
  351. package/utils/string/withTrailingSlash.cjs +1 -0
  352. package/utils/string/withTrailingSlash.cjs.map +7 -0
  353. package/utils/string/withTrailingSlash.js +1 -0
  354. package/utils/string/withTrailingSlash.js.map +7 -0
  355. package/utils/string/withoutLeadingCharacters.cjs +1 -0
  356. package/utils/string/withoutLeadingCharacters.cjs.map +7 -0
  357. package/utils/string/withoutLeadingCharacters.js +1 -0
  358. package/utils/string/withoutLeadingCharacters.js.map +7 -0
  359. package/utils/string/withoutLeadingCharactersRecursive.cjs +1 -0
  360. package/utils/string/withoutLeadingCharactersRecursive.cjs.map +7 -0
  361. package/utils/string/withoutLeadingCharactersRecursive.js +1 -0
  362. package/utils/string/withoutLeadingCharactersRecursive.js.map +7 -0
  363. package/utils/string/withoutLeadingSlash.cjs +1 -0
  364. package/utils/string/withoutLeadingSlash.cjs.map +7 -0
  365. package/utils/string/withoutLeadingSlash.js +1 -0
  366. package/utils/string/withoutLeadingSlash.js.map +7 -0
  367. package/utils/string/withoutTrailingCharacters.cjs +1 -0
  368. package/utils/string/withoutTrailingCharacters.cjs.map +7 -0
  369. package/utils/string/withoutTrailingCharacters.js +1 -0
  370. package/utils/string/withoutTrailingCharacters.js.map +7 -0
  371. package/utils/string/withoutTrailingCharactersRecursive.cjs +1 -0
  372. package/utils/string/withoutTrailingCharactersRecursive.cjs.map +7 -0
  373. package/utils/string/withoutTrailingCharactersRecursive.js +1 -0
  374. package/utils/string/withoutTrailingCharactersRecursive.js.map +7 -0
  375. package/utils/string/withoutTrailingSlash.cjs +1 -0
  376. package/utils/string/withoutTrailingSlash.cjs.map +7 -0
  377. package/utils/string/withoutTrailingSlash.js +1 -0
  378. package/utils/string/withoutTrailingSlash.js.map +7 -0
  379. package/utils/throttle.cjs +1 -0
  380. package/utils/throttle.cjs.map +7 -0
  381. package/utils/throttle.js +1 -0
  382. package/utils/throttle.js.map +7 -0
  383. package/utils/tween.cjs +2 -2
  384. package/utils/tween.cjs.map +7 -0
  385. package/utils/tween.d.ts +7 -1
  386. package/utils/tween.js +2 -2
  387. package/utils/tween.js.map +7 -0
package/Base/index.cjs CHANGED
@@ -72,43 +72,11 @@ function createAndTestManagers(instance) {
72
72
  });
73
73
  }
74
74
  var Base = class extends EventTarget {
75
- constructor(element) {
76
- super();
77
- __publicField(this, "$parent", null);
78
- __publicField(this, "$id");
79
- __publicField(this, "$el");
80
- __publicField(this, "$isMounted", false);
81
- __publicField(this, "__eventHandlers", /* @__PURE__ */ new Map());
82
- __publicField(this, "__services");
83
- __publicField(this, "__refs");
84
- __publicField(this, "__options");
85
- __publicField(this, "__children");
86
- __publicField(this, "__events");
87
- if (!element) {
88
- if (import_utils2.isDev) {
89
- throw new Error("The root element must be defined.");
90
- }
91
- return;
92
- }
93
- const { __config } = this;
94
- if (__config.name === "Base") {
95
- if (import_utils2.isDev) {
96
- throw new Error("The `config.name` property is required.");
97
- }
98
- return;
99
- }
100
- this.$id = `${__config.name}-${id}`;
101
- id += 1;
102
- this.$el = element;
103
- if (!this.$el.__base__) {
104
- this.$el.__base__ = /* @__PURE__ */ new WeakMap();
105
- }
106
- this.$el.__base__.set(this.__ctor, this);
107
- createAndTestManagers(this);
108
- if (import_utils2.isDev) {
109
- this.__debug("constructor", this);
110
- }
111
- }
75
+ $parent = null;
76
+ $id;
77
+ $el;
78
+ $isMounted = false;
79
+ __eventHandlers = /* @__PURE__ */ new Map();
112
80
  get $root() {
113
81
  if (!this.$parent) {
114
82
  return this;
@@ -124,7 +92,6 @@ var Base = class extends EventTarget {
124
92
  return root;
125
93
  }
126
94
  get __config() {
127
- var _a, _b, _c;
128
95
  let proto = Object.getPrototypeOf(this);
129
96
  let { config } = proto.constructor;
130
97
  while (proto.constructor.config && proto.constructor.$isBase) {
@@ -137,23 +104,28 @@ var Base = class extends EventTarget {
137
104
  }
138
105
  proto = Object.getPrototypeOf(proto);
139
106
  }
140
- config.options = (_a = config.options) != null ? _a : {};
141
- config.refs = (_b = config.refs) != null ? _b : [];
142
- config.components = (_c = config.components) != null ? _c : {};
107
+ config.options = config.options ?? {};
108
+ config.refs = config.refs ?? [];
109
+ config.components = config.components ?? {};
143
110
  return config;
144
111
  }
112
+ __services;
145
113
  get $services() {
146
114
  return this.__services;
147
115
  }
116
+ __refs;
148
117
  get $refs() {
149
118
  return this.__refs;
150
119
  }
120
+ __options;
151
121
  get $options() {
152
122
  return this.__options;
153
123
  }
124
+ __children;
154
125
  get $children() {
155
126
  return this.__children;
156
127
  }
128
+ __events;
157
129
  get $log() {
158
130
  return this.__options.log ? window.console.log.bind(window, `[${this.__config.name}]`) : import_utils2.noop;
159
131
  }
@@ -186,6 +158,33 @@ var Base = class extends EventTarget {
186
158
  const eventHandlers = this.__eventHandlers.get(event);
187
159
  return eventHandlers && eventHandlers.size > 0;
188
160
  }
161
+ constructor(element) {
162
+ super();
163
+ if (!element) {
164
+ if (import_utils2.isDev) {
165
+ throw new Error("The root element must be defined.");
166
+ }
167
+ return;
168
+ }
169
+ const { __config } = this;
170
+ if (__config.name === "Base") {
171
+ if (import_utils2.isDev) {
172
+ throw new Error("The `config.name` property is required.");
173
+ }
174
+ return;
175
+ }
176
+ this.$id = `${__config.name}-${id}`;
177
+ id += 1;
178
+ this.$el = element;
179
+ if (!this.$el.__base__) {
180
+ this.$el.__base__ = /* @__PURE__ */ new WeakMap();
181
+ }
182
+ this.$el.__base__.set(this.__ctor, this);
183
+ createAndTestManagers(this);
184
+ if (import_utils2.isDev) {
185
+ this.__debug("constructor", this);
186
+ }
187
+ }
189
188
  $mount() {
190
189
  if (this.$isMounted) {
191
190
  return this;
@@ -312,3 +311,4 @@ __publicField(Base, "config", {
312
311
  ]
313
312
  });
314
313
  if (module.exports.default) module.exports = module.exports.default;
314
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../packages/js-toolkit/Base/index.ts"],
4
+ "sourcesContent": ["/* eslint-disable no-use-before-define */\nimport { getComponentElements, getEventTarget } from './utils.js';\nimport { ChildrenManager } from './managers/ChildrenManager.js';\nimport { RefsManager } from './managers/RefsManager.js';\nimport { ServicesManager } from './managers/ServicesManager.js';\nimport { EventsManager } from './managers/EventsManager.js';\nimport { OptionsManager } from './managers/OptionsManager.js';\nimport { noop, isDev, isFunction, isArray } from '../utils/index.js';\n\nlet id = 0;\n\n/**\n * Test if the managers' instances implement the default manager.\n * @throws\n */\nfunction createAndTestManagers(instance: Base): void {\n [\n {\n prop: '__options',\n constructorName: 'OptionsManager',\n constructor: OptionsManager,\n },\n {\n prop: '__services',\n constructorName: 'ServicesManager',\n constructor: ServicesManager,\n },\n {\n prop: '__events',\n constructorName: 'EventsManager',\n constructor: EventsManager,\n },\n {\n prop: '__refs',\n constructorName: 'RefsManager',\n constructor: RefsManager,\n },\n {\n prop: '__children',\n constructorName: 'ChildrenManager',\n constructor: ChildrenManager,\n },\n ].forEach(({ prop, constructorName, constructor }) => {\n instance[prop] = new instance.__managers[constructorName](instance);\n if (isDev && !(instance[prop] instanceof constructor)) {\n throw new Error(\n `The \\`$managers.${constructorName}\\` must extend the \\`${constructorName}\\` class.`,\n );\n }\n });\n}\n\nexport type BaseEl = HTMLElement & { __base__?: WeakMap<BaseConstructor, Base | 'terminated'> };\nexport type BaseConstructor<T extends Base = Base> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n prototype: Base;\n} & Pick<typeof Base, keyof typeof Base>;\nexport type BaseAsyncConstructor<T extends Base = Base> = (\n Base\n) => Promise<BaseConstructor<T> | { default: BaseConstructor<T> }>;\nexport type BaseOptions = { [name: string]: unknown };\nexport type BaseRefs = { [name: string]: HTMLElement | HTMLElement[] };\nexport type BaseChildren = { [nameOrSelector: string]: Base[] | Promise<Base>[] };\nexport type BaseConfigComponents = {\n [nameOrSelector: string]: BaseConstructor | BaseAsyncConstructor;\n};\n\nexport type BaseConfig = {\n name: string;\n debug?: boolean;\n log?: boolean;\n refs?: string[];\n emits?: string[];\n components?: BaseConfigComponents;\n options?: import('./managers/OptionsManager').OptionsSchema;\n};\n\nexport type BaseProps = {\n $el?: HTMLElement;\n $options?: BaseOptions;\n $refs?: BaseRefs;\n $children?: BaseChildren;\n $parent?: Base;\n};\n\nexport type Managers = {\n ChildrenManager: typeof ChildrenManager;\n EventsManager: typeof EventsManager;\n OptionsManager: typeof OptionsManager;\n RefsManager: typeof RefsManager;\n ServicesManager: typeof ServicesManager;\n};\n\n/**\n * Base class.\n */\nexport class Base<T extends BaseProps = BaseProps> extends EventTarget {\n /**\n * This is a Base instance.\n */\n static readonly $isBase = true as const;\n\n /**\n * The instance parent.\n */\n $parent: T['$parent'] & Base = null;\n\n /**\n * The instance id.\n */\n $id: string;\n\n /**\n * The root element.\n */\n $el: T['$el'] & BaseEl;\n\n /**\n * The state of the component.\n */\n $isMounted = false;\n\n /**\n * Store the event handlers.\n */\n __eventHandlers: Map<string, Set<EventListenerOrEventListenerObject>> = new Map();\n\n /**\n * Get the root instance of the app.\n */\n get $root(): Base {\n if (!this.$parent) {\n return this;\n }\n\n let parent = this.$parent;\n let root = this.$parent;\n\n while (parent) {\n if (!parent.$parent) {\n root = parent;\n }\n\n parent = parent.$parent;\n }\n\n return root;\n }\n\n /**\n * Merge configuration with the parents' configurations.\n */\n get __config(): BaseConfig {\n let proto = Object.getPrototypeOf(this);\n let { config } = proto.constructor;\n\n while (proto.constructor.config && proto.constructor.$isBase) {\n config = { ...proto.constructor.config, ...config };\n\n if (proto.constructor.config.options) {\n config.options = { ...proto.constructor.config.options, ...config.options };\n }\n\n if (proto.constructor.config.emits && config.emits) {\n config.emits = [...proto.constructor.config.emits, ...config.emits];\n }\n\n proto = Object.getPrototypeOf(proto);\n }\n\n config.options = config.options ?? {};\n config.refs = config.refs ?? [];\n config.components = config.components ?? {};\n\n return config;\n }\n\n static config: BaseConfig = {\n name: 'Base',\n emits: [\n // hook events\n 'before-mounted',\n 'mounted',\n 'updated',\n 'destroyed',\n 'terminated',\n // default services' events\n 'ticked',\n 'scrolled',\n 'resized',\n 'moved',\n 'loaded',\n 'keyed',\n ],\n };\n\n __services: ServicesManager;\n\n get $services(): ServicesManager {\n return this.__services;\n }\n\n __refs: RefsManager & T['$refs'] & BaseRefs;\n\n get $refs(): RefsManager & T['$refs'] & BaseRefs {\n return this.__refs;\n }\n\n __options: OptionsManager & T['$options'] & BaseOptions;\n\n get $options(): OptionsManager & T['$options'] & BaseOptions {\n return this.__options;\n }\n\n __children: ChildrenManager & T['$children'] & BaseChildren;\n\n get $children(): ChildrenManager & T['$children'] & BaseChildren {\n return this.__children;\n }\n\n __events: EventsManager;\n\n /**\n * Small helper to log stuff.\n */\n get $log(): (...args: unknown[]) => void {\n return this.__options.log ? window.console.log.bind(window, `[${this.__config.name}]`) : noop;\n }\n\n /**\n * Small helper to debug information.\n */\n get __debug(): (...args: unknown[]) => void {\n return isDev && this.__options.debug\n ? window.console.log.bind(window, `[debug] [${this.$id}]`)\n : noop;\n }\n\n /**\n * Get manager constructors.\n */\n get __managers(): Managers {\n return {\n ChildrenManager,\n EventsManager,\n OptionsManager,\n RefsManager,\n ServicesManager,\n };\n }\n\n /**\n * Call an instance method and emit corresponding events.\n */\n __callMethod(method: string, ...args: unknown[]): unknown {\n if (isDev) {\n this.__debug('callMethod', method, ...args);\n }\n\n this.$emit(method, ...args);\n\n // We always emit an event, but we do not call the method if it does not exist\n if (!isFunction(this[method])) {\n return null;\n }\n\n if (isDev) {\n this.__debug(method, this, ...args);\n }\n\n return this[method].call(this, ...args);\n }\n\n /**\n * Test if the given event has been bound to the instance.\n *\n * @param {string} event The event's name.\n * @returns {boolean} Wether the given event has been bound or not.\n */\n __hasEvent(event: string): boolean {\n const eventHandlers = this.__eventHandlers.get(event);\n return eventHandlers && eventHandlers.size > 0;\n }\n\n /**\n * Class constructor where all the magic takes place.\n *\n * @param {HTMLElement} element The component's root element dd.\n */\n constructor(element: HTMLElement) {\n super();\n\n if (!element) {\n if (isDev) {\n throw new Error('The root element must be defined.');\n }\n return;\n }\n\n const { __config } = this;\n\n if (__config.name === 'Base') {\n if (isDev) {\n throw new Error('The `config.name` property is required.');\n }\n return;\n }\n\n this.$id = `${__config.name}-${id}`;\n id += 1;\n\n this.$el = element;\n\n if (!this.$el.__base__) {\n this.$el.__base__ = new WeakMap();\n }\n\n this.$el.__base__.set(this.__ctor, this);\n\n createAndTestManagers(this);\n\n if (isDev) {\n this.__debug('constructor', this);\n }\n }\n\n /**\n * Trigger the `mounted` callback.\n */\n $mount(): this {\n if (this.$isMounted) {\n return this;\n }\n\n this.$emit('before-mounted');\n\n this.$isMounted = true;\n if (isDev) {\n this.__debug('$mount');\n }\n this.$children.registerAll();\n this.$refs.registerAll();\n this.__events.bindRootElement();\n this.$services.enableAll();\n this.$children.mountAll();\n\n this.__callMethod('mounted');\n\n return this;\n }\n\n /**\n * Update the instance children.\n */\n $update(): this {\n if (isDev) {\n this.__debug('$update');\n }\n\n // Undo\n this.$refs.unregisterAll();\n this.$services.disableAll();\n\n // Redo\n this.$children.registerAll();\n this.$refs.registerAll();\n this.$services.enableAll();\n\n // Update\n this.$children.updateAll();\n\n this.__callMethod('updated');\n return this;\n }\n\n /**\n * Trigger the `destroyed` callback.\n */\n $destroy(): this {\n if (!this.$isMounted) {\n return this;\n }\n\n this.$isMounted = false;\n if (isDev) {\n this.__debug('$destroy');\n }\n this.__events.unbindRootElement();\n this.$refs.unregisterAll();\n this.$services.disableAll();\n this.$children.destroyAll();\n this.__callMethod('destroyed');\n\n return this;\n }\n\n /**\n * Terminate a child instance when it is not needed anymore.\n */\n $terminate(): void {\n if (isDev) {\n this.__debug('$terminate');\n }\n\n // First, destroy the component.\n this.$destroy();\n\n // Execute the `terminated` hook if it exists\n this.__callMethod('terminated');\n\n // Delete instance\n this.$el.__base__.set(this.__ctor, 'terminated');\n }\n\n /**\n * Add an emitted event.\n *\n * @param {string} event The event name.\n * @returns {void}\n */\n __addEmits(event: string): void {\n const ctor = this.__ctor;\n if (isArray(ctor.config.emits)) {\n ctor.config.emits.push(event);\n } else {\n ctor.config.emits = [event];\n }\n }\n\n /**\n * Remove an emitted event.\n *\n * @param {string} event The event name.\n * @returns {void}\n */\n __removeEmits(event: string): void {\n const ctor = this.__ctor;\n const index = ctor.config.emits.indexOf(event);\n ctor.config.emits.splice(index, 1);\n }\n\n /**\n * Get the instance constructor.\n */\n get __ctor(): BaseConstructor {\n return this.constructor as BaseConstructor;\n }\n\n /**\n * Bind a listener function to an event.\n *\n * @param {string} event\n * Name of the event.\n * @param {EventListenerOrEventListenerObject} listener\n * Function to be called.\n * @param {boolean|AddEventListenerOptions} [options]\n * Options for the `removeEventListener` method.\n * @returns {() => void}\n * A function to unbind the listener.\n */\n $on(\n event: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): () => void {\n if (isDev) {\n this.__debug('$on', event, listener, options);\n }\n\n let set = this.__eventHandlers.get(event);\n\n if (!set) {\n set = new Set();\n this.__eventHandlers.set(event, set);\n }\n\n set.add(listener);\n\n const target = getEventTarget(this, event, this.__config);\n target.addEventListener(event, listener, options);\n\n return () => {\n this.$off(event, listener, options);\n };\n }\n\n /**\n * Unbind a listener function from an event.\n *\n * @param {string} event\n * Name of the event.\n * @param {EventListenerOrEventListenerObject} listener\n * Function to be removed.\n * @param {boolean|EventListenerOptions} [options]\n * Options for the `removeEventListener` method.\n * @returns {void}\n */\n $off(\n event: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ) {\n if (isDev) {\n this.__debug('$off', event, listener);\n }\n\n this.__eventHandlers.get(event).delete(listener);\n\n const target = getEventTarget(this, event, this.__config);\n target.removeEventListener(event, listener, options);\n }\n\n /**\n * Emits an event.\n *\n * @param {string} event Name of the event.\n * @param {any[]} args The arguments to apply to the functions bound to this event.\n * @returns {void}\n */\n $emit(event: string, ...args: unknown[]) {\n if (isDev) {\n this.__debug('$emit', event, args);\n }\n\n this.dispatchEvent(new CustomEvent(event, { detail: args }));\n }\n\n /**\n * Factory method to generate multiple instance of the class.\n */\n static $factory(nameOrSelector: string): Base[] {\n if (isDev && !nameOrSelector) {\n throw new Error(\n 'The $factory method requires a component\u2019s name or selector to be specified.',\n );\n }\n\n return getComponentElements(nameOrSelector).map((el) => new this(el).$mount());\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["import_utils"]
7
+ }
package/Base/index.js CHANGED
@@ -1,9 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => {
4
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
- return value;
6
- };
7
1
  import { getComponentElements, getEventTarget } from "./utils.js";
8
2
  import { ChildrenManager } from "./managers/ChildrenManager.js";
9
3
  import { RefsManager } from "./managers/RefsManager.js";
@@ -49,43 +43,12 @@ function createAndTestManagers(instance) {
49
43
  });
50
44
  }
51
45
  class Base extends EventTarget {
52
- constructor(element) {
53
- super();
54
- __publicField(this, "$parent", null);
55
- __publicField(this, "$id");
56
- __publicField(this, "$el");
57
- __publicField(this, "$isMounted", false);
58
- __publicField(this, "__eventHandlers", /* @__PURE__ */ new Map());
59
- __publicField(this, "__services");
60
- __publicField(this, "__refs");
61
- __publicField(this, "__options");
62
- __publicField(this, "__children");
63
- __publicField(this, "__events");
64
- if (!element) {
65
- if (isDev) {
66
- throw new Error("The root element must be defined.");
67
- }
68
- return;
69
- }
70
- const { __config } = this;
71
- if (__config.name === "Base") {
72
- if (isDev) {
73
- throw new Error("The `config.name` property is required.");
74
- }
75
- return;
76
- }
77
- this.$id = `${__config.name}-${id}`;
78
- id += 1;
79
- this.$el = element;
80
- if (!this.$el.__base__) {
81
- this.$el.__base__ = /* @__PURE__ */ new WeakMap();
82
- }
83
- this.$el.__base__.set(this.__ctor, this);
84
- createAndTestManagers(this);
85
- if (isDev) {
86
- this.__debug("constructor", this);
87
- }
88
- }
46
+ static $isBase = true;
47
+ $parent = null;
48
+ $id;
49
+ $el;
50
+ $isMounted = false;
51
+ __eventHandlers = /* @__PURE__ */ new Map();
89
52
  get $root() {
90
53
  if (!this.$parent) {
91
54
  return this;
@@ -101,7 +64,6 @@ class Base extends EventTarget {
101
64
  return root;
102
65
  }
103
66
  get __config() {
104
- var _a, _b, _c;
105
67
  let proto = Object.getPrototypeOf(this);
106
68
  let { config } = proto.constructor;
107
69
  while (proto.constructor.config && proto.constructor.$isBase) {
@@ -114,23 +76,44 @@ class Base extends EventTarget {
114
76
  }
115
77
  proto = Object.getPrototypeOf(proto);
116
78
  }
117
- config.options = (_a = config.options) != null ? _a : {};
118
- config.refs = (_b = config.refs) != null ? _b : [];
119
- config.components = (_c = config.components) != null ? _c : {};
79
+ config.options = config.options ?? {};
80
+ config.refs = config.refs ?? [];
81
+ config.components = config.components ?? {};
120
82
  return config;
121
83
  }
84
+ static config = {
85
+ name: "Base",
86
+ emits: [
87
+ "before-mounted",
88
+ "mounted",
89
+ "updated",
90
+ "destroyed",
91
+ "terminated",
92
+ "ticked",
93
+ "scrolled",
94
+ "resized",
95
+ "moved",
96
+ "loaded",
97
+ "keyed"
98
+ ]
99
+ };
100
+ __services;
122
101
  get $services() {
123
102
  return this.__services;
124
103
  }
104
+ __refs;
125
105
  get $refs() {
126
106
  return this.__refs;
127
107
  }
108
+ __options;
128
109
  get $options() {
129
110
  return this.__options;
130
111
  }
112
+ __children;
131
113
  get $children() {
132
114
  return this.__children;
133
115
  }
116
+ __events;
134
117
  get $log() {
135
118
  return this.__options.log ? window.console.log.bind(window, `[${this.__config.name}]`) : noop;
136
119
  }
@@ -163,6 +146,33 @@ class Base extends EventTarget {
163
146
  const eventHandlers = this.__eventHandlers.get(event);
164
147
  return eventHandlers && eventHandlers.size > 0;
165
148
  }
149
+ constructor(element) {
150
+ super();
151
+ if (!element) {
152
+ if (isDev) {
153
+ throw new Error("The root element must be defined.");
154
+ }
155
+ return;
156
+ }
157
+ const { __config } = this;
158
+ if (__config.name === "Base") {
159
+ if (isDev) {
160
+ throw new Error("The `config.name` property is required.");
161
+ }
162
+ return;
163
+ }
164
+ this.$id = `${__config.name}-${id}`;
165
+ id += 1;
166
+ this.$el = element;
167
+ if (!this.$el.__base__) {
168
+ this.$el.__base__ = /* @__PURE__ */ new WeakMap();
169
+ }
170
+ this.$el.__base__.set(this.__ctor, this);
171
+ createAndTestManagers(this);
172
+ if (isDev) {
173
+ this.__debug("constructor", this);
174
+ }
175
+ }
166
176
  $mount() {
167
177
  if (this.$isMounted) {
168
178
  return this;
@@ -271,23 +281,7 @@ class Base extends EventTarget {
271
281
  return getComponentElements(nameOrSelector).map((el) => new this(el).$mount());
272
282
  }
273
283
  }
274
- __publicField(Base, "$isBase", true);
275
- __publicField(Base, "config", {
276
- name: "Base",
277
- emits: [
278
- "before-mounted",
279
- "mounted",
280
- "updated",
281
- "destroyed",
282
- "terminated",
283
- "ticked",
284
- "scrolled",
285
- "resized",
286
- "moved",
287
- "loaded",
288
- "keyed"
289
- ]
290
- });
291
284
  export {
292
285
  Base
293
286
  };
287
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../packages/js-toolkit/Base/index.ts"],
4
+ "sourcesContent": ["/* eslint-disable no-use-before-define */\nimport { getComponentElements, getEventTarget } from './utils.js';\nimport { ChildrenManager } from './managers/ChildrenManager.js';\nimport { RefsManager } from './managers/RefsManager.js';\nimport { ServicesManager } from './managers/ServicesManager.js';\nimport { EventsManager } from './managers/EventsManager.js';\nimport { OptionsManager } from './managers/OptionsManager.js';\nimport { noop, isDev, isFunction, isArray } from '../utils/index.js';\n\nlet id = 0;\n\n/**\n * Test if the managers' instances implement the default manager.\n * @throws\n */\nfunction createAndTestManagers(instance: Base): void {\n [\n {\n prop: '__options',\n constructorName: 'OptionsManager',\n constructor: OptionsManager,\n },\n {\n prop: '__services',\n constructorName: 'ServicesManager',\n constructor: ServicesManager,\n },\n {\n prop: '__events',\n constructorName: 'EventsManager',\n constructor: EventsManager,\n },\n {\n prop: '__refs',\n constructorName: 'RefsManager',\n constructor: RefsManager,\n },\n {\n prop: '__children',\n constructorName: 'ChildrenManager',\n constructor: ChildrenManager,\n },\n ].forEach(({ prop, constructorName, constructor }) => {\n instance[prop] = new instance.__managers[constructorName](instance);\n if (isDev && !(instance[prop] instanceof constructor)) {\n throw new Error(\n `The \\`$managers.${constructorName}\\` must extend the \\`${constructorName}\\` class.`,\n );\n }\n });\n}\n\nexport type BaseEl = HTMLElement & { __base__?: WeakMap<BaseConstructor, Base | 'terminated'> };\nexport type BaseConstructor<T extends Base = Base> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n prototype: Base;\n} & Pick<typeof Base, keyof typeof Base>;\nexport type BaseAsyncConstructor<T extends Base = Base> = (\n Base\n) => Promise<BaseConstructor<T> | { default: BaseConstructor<T> }>;\nexport type BaseOptions = { [name: string]: unknown };\nexport type BaseRefs = { [name: string]: HTMLElement | HTMLElement[] };\nexport type BaseChildren = { [nameOrSelector: string]: Base[] | Promise<Base>[] };\nexport type BaseConfigComponents = {\n [nameOrSelector: string]: BaseConstructor | BaseAsyncConstructor;\n};\n\nexport type BaseConfig = {\n name: string;\n debug?: boolean;\n log?: boolean;\n refs?: string[];\n emits?: string[];\n components?: BaseConfigComponents;\n options?: import('./managers/OptionsManager').OptionsSchema;\n};\n\nexport type BaseProps = {\n $el?: HTMLElement;\n $options?: BaseOptions;\n $refs?: BaseRefs;\n $children?: BaseChildren;\n $parent?: Base;\n};\n\nexport type Managers = {\n ChildrenManager: typeof ChildrenManager;\n EventsManager: typeof EventsManager;\n OptionsManager: typeof OptionsManager;\n RefsManager: typeof RefsManager;\n ServicesManager: typeof ServicesManager;\n};\n\n/**\n * Base class.\n */\nexport class Base<T extends BaseProps = BaseProps> extends EventTarget {\n /**\n * This is a Base instance.\n */\n static readonly $isBase = true as const;\n\n /**\n * The instance parent.\n */\n $parent: T['$parent'] & Base = null;\n\n /**\n * The instance id.\n */\n $id: string;\n\n /**\n * The root element.\n */\n $el: T['$el'] & BaseEl;\n\n /**\n * The state of the component.\n */\n $isMounted = false;\n\n /**\n * Store the event handlers.\n */\n __eventHandlers: Map<string, Set<EventListenerOrEventListenerObject>> = new Map();\n\n /**\n * Get the root instance of the app.\n */\n get $root(): Base {\n if (!this.$parent) {\n return this;\n }\n\n let parent = this.$parent;\n let root = this.$parent;\n\n while (parent) {\n if (!parent.$parent) {\n root = parent;\n }\n\n parent = parent.$parent;\n }\n\n return root;\n }\n\n /**\n * Merge configuration with the parents' configurations.\n */\n get __config(): BaseConfig {\n let proto = Object.getPrototypeOf(this);\n let { config } = proto.constructor;\n\n while (proto.constructor.config && proto.constructor.$isBase) {\n config = { ...proto.constructor.config, ...config };\n\n if (proto.constructor.config.options) {\n config.options = { ...proto.constructor.config.options, ...config.options };\n }\n\n if (proto.constructor.config.emits && config.emits) {\n config.emits = [...proto.constructor.config.emits, ...config.emits];\n }\n\n proto = Object.getPrototypeOf(proto);\n }\n\n config.options = config.options ?? {};\n config.refs = config.refs ?? [];\n config.components = config.components ?? {};\n\n return config;\n }\n\n static config: BaseConfig = {\n name: 'Base',\n emits: [\n // hook events\n 'before-mounted',\n 'mounted',\n 'updated',\n 'destroyed',\n 'terminated',\n // default services' events\n 'ticked',\n 'scrolled',\n 'resized',\n 'moved',\n 'loaded',\n 'keyed',\n ],\n };\n\n __services: ServicesManager;\n\n get $services(): ServicesManager {\n return this.__services;\n }\n\n __refs: RefsManager & T['$refs'] & BaseRefs;\n\n get $refs(): RefsManager & T['$refs'] & BaseRefs {\n return this.__refs;\n }\n\n __options: OptionsManager & T['$options'] & BaseOptions;\n\n get $options(): OptionsManager & T['$options'] & BaseOptions {\n return this.__options;\n }\n\n __children: ChildrenManager & T['$children'] & BaseChildren;\n\n get $children(): ChildrenManager & T['$children'] & BaseChildren {\n return this.__children;\n }\n\n __events: EventsManager;\n\n /**\n * Small helper to log stuff.\n */\n get $log(): (...args: unknown[]) => void {\n return this.__options.log ? window.console.log.bind(window, `[${this.__config.name}]`) : noop;\n }\n\n /**\n * Small helper to debug information.\n */\n get __debug(): (...args: unknown[]) => void {\n return isDev && this.__options.debug\n ? window.console.log.bind(window, `[debug] [${this.$id}]`)\n : noop;\n }\n\n /**\n * Get manager constructors.\n */\n get __managers(): Managers {\n return {\n ChildrenManager,\n EventsManager,\n OptionsManager,\n RefsManager,\n ServicesManager,\n };\n }\n\n /**\n * Call an instance method and emit corresponding events.\n */\n __callMethod(method: string, ...args: unknown[]): unknown {\n if (isDev) {\n this.__debug('callMethod', method, ...args);\n }\n\n this.$emit(method, ...args);\n\n // We always emit an event, but we do not call the method if it does not exist\n if (!isFunction(this[method])) {\n return null;\n }\n\n if (isDev) {\n this.__debug(method, this, ...args);\n }\n\n return this[method].call(this, ...args);\n }\n\n /**\n * Test if the given event has been bound to the instance.\n *\n * @param {string} event The event's name.\n * @returns {boolean} Wether the given event has been bound or not.\n */\n __hasEvent(event: string): boolean {\n const eventHandlers = this.__eventHandlers.get(event);\n return eventHandlers && eventHandlers.size > 0;\n }\n\n /**\n * Class constructor where all the magic takes place.\n *\n * @param {HTMLElement} element The component's root element dd.\n */\n constructor(element: HTMLElement) {\n super();\n\n if (!element) {\n if (isDev) {\n throw new Error('The root element must be defined.');\n }\n return;\n }\n\n const { __config } = this;\n\n if (__config.name === 'Base') {\n if (isDev) {\n throw new Error('The `config.name` property is required.');\n }\n return;\n }\n\n this.$id = `${__config.name}-${id}`;\n id += 1;\n\n this.$el = element;\n\n if (!this.$el.__base__) {\n this.$el.__base__ = new WeakMap();\n }\n\n this.$el.__base__.set(this.__ctor, this);\n\n createAndTestManagers(this);\n\n if (isDev) {\n this.__debug('constructor', this);\n }\n }\n\n /**\n * Trigger the `mounted` callback.\n */\n $mount(): this {\n if (this.$isMounted) {\n return this;\n }\n\n this.$emit('before-mounted');\n\n this.$isMounted = true;\n if (isDev) {\n this.__debug('$mount');\n }\n this.$children.registerAll();\n this.$refs.registerAll();\n this.__events.bindRootElement();\n this.$services.enableAll();\n this.$children.mountAll();\n\n this.__callMethod('mounted');\n\n return this;\n }\n\n /**\n * Update the instance children.\n */\n $update(): this {\n if (isDev) {\n this.__debug('$update');\n }\n\n // Undo\n this.$refs.unregisterAll();\n this.$services.disableAll();\n\n // Redo\n this.$children.registerAll();\n this.$refs.registerAll();\n this.$services.enableAll();\n\n // Update\n this.$children.updateAll();\n\n this.__callMethod('updated');\n return this;\n }\n\n /**\n * Trigger the `destroyed` callback.\n */\n $destroy(): this {\n if (!this.$isMounted) {\n return this;\n }\n\n this.$isMounted = false;\n if (isDev) {\n this.__debug('$destroy');\n }\n this.__events.unbindRootElement();\n this.$refs.unregisterAll();\n this.$services.disableAll();\n this.$children.destroyAll();\n this.__callMethod('destroyed');\n\n return this;\n }\n\n /**\n * Terminate a child instance when it is not needed anymore.\n */\n $terminate(): void {\n if (isDev) {\n this.__debug('$terminate');\n }\n\n // First, destroy the component.\n this.$destroy();\n\n // Execute the `terminated` hook if it exists\n this.__callMethod('terminated');\n\n // Delete instance\n this.$el.__base__.set(this.__ctor, 'terminated');\n }\n\n /**\n * Add an emitted event.\n *\n * @param {string} event The event name.\n * @returns {void}\n */\n __addEmits(event: string): void {\n const ctor = this.__ctor;\n if (isArray(ctor.config.emits)) {\n ctor.config.emits.push(event);\n } else {\n ctor.config.emits = [event];\n }\n }\n\n /**\n * Remove an emitted event.\n *\n * @param {string} event The event name.\n * @returns {void}\n */\n __removeEmits(event: string): void {\n const ctor = this.__ctor;\n const index = ctor.config.emits.indexOf(event);\n ctor.config.emits.splice(index, 1);\n }\n\n /**\n * Get the instance constructor.\n */\n get __ctor(): BaseConstructor {\n return this.constructor as BaseConstructor;\n }\n\n /**\n * Bind a listener function to an event.\n *\n * @param {string} event\n * Name of the event.\n * @param {EventListenerOrEventListenerObject} listener\n * Function to be called.\n * @param {boolean|AddEventListenerOptions} [options]\n * Options for the `removeEventListener` method.\n * @returns {() => void}\n * A function to unbind the listener.\n */\n $on(\n event: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): () => void {\n if (isDev) {\n this.__debug('$on', event, listener, options);\n }\n\n let set = this.__eventHandlers.get(event);\n\n if (!set) {\n set = new Set();\n this.__eventHandlers.set(event, set);\n }\n\n set.add(listener);\n\n const target = getEventTarget(this, event, this.__config);\n target.addEventListener(event, listener, options);\n\n return () => {\n this.$off(event, listener, options);\n };\n }\n\n /**\n * Unbind a listener function from an event.\n *\n * @param {string} event\n * Name of the event.\n * @param {EventListenerOrEventListenerObject} listener\n * Function to be removed.\n * @param {boolean|EventListenerOptions} [options]\n * Options for the `removeEventListener` method.\n * @returns {void}\n */\n $off(\n event: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ) {\n if (isDev) {\n this.__debug('$off', event, listener);\n }\n\n this.__eventHandlers.get(event).delete(listener);\n\n const target = getEventTarget(this, event, this.__config);\n target.removeEventListener(event, listener, options);\n }\n\n /**\n * Emits an event.\n *\n * @param {string} event Name of the event.\n * @param {any[]} args The arguments to apply to the functions bound to this event.\n * @returns {void}\n */\n $emit(event: string, ...args: unknown[]) {\n if (isDev) {\n this.__debug('$emit', event, args);\n }\n\n this.dispatchEvent(new CustomEvent(event, { detail: args }));\n }\n\n /**\n * Factory method to generate multiple instance of the class.\n */\n static $factory(nameOrSelector: string): Base[] {\n if (isDev && !nameOrSelector) {\n throw new Error(\n 'The $factory method requires a component\u2019s name or selector to be specified.',\n );\n }\n\n return getComponentElements(nameOrSelector).map((el) => new this(el).$mount());\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -2,7 +2,6 @@ var __defProp = Object.defineProperty;
2
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
4
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
5
  var __export = (target, all) => {
7
6
  for (var name in all)
8
7
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -16,10 +15,6 @@ var __copyProps = (to, from, except, desc) => {
16
15
  return to;
17
16
  };
18
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var __publicField = (obj, key, value) => {
20
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
21
- return value;
22
- };
23
18
 
24
19
  // packages/js-toolkit/Base/managers/AbstractManager.ts
25
20
  var AbstractManager_exports = {};
@@ -28,11 +23,7 @@ __export(AbstractManager_exports, {
28
23
  });
29
24
  module.exports = __toCommonJS(AbstractManager_exports);
30
25
  var AbstractManager = class {
31
- constructor(base) {
32
- __publicField(this, "__base");
33
- this.__base = base;
34
- this.__hideProperties(["__base"]);
35
- }
26
+ __base;
36
27
  get __element() {
37
28
  return this.__base.$el;
38
29
  }
@@ -42,6 +33,10 @@ var AbstractManager = class {
42
33
  get __eventsManager() {
43
34
  return this.__base.__events;
44
35
  }
36
+ constructor(base) {
37
+ this.__base = base;
38
+ this.__hideProperties(["__base"]);
39
+ }
45
40
  __hideProperties(properties) {
46
41
  Object.defineProperties(
47
42
  this,
@@ -59,3 +54,4 @@ var AbstractManager = class {
59
54
  }
60
55
  };
61
56
  if (module.exports.default) module.exports = module.exports.default;
57
+ //# sourceMappingURL=AbstractManager.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/js-toolkit/Base/managers/AbstractManager.ts"],
4
+ "sourcesContent": ["import type { Base } from '../index.js';\n\n/**\n * AbstractManager class.\n */\nexport class AbstractManager {\n /**\n * Base instance.\n */\n __base: Base;\n\n /**\n * Get the base instance root element.\n */\n get __element() {\n return this.__base.$el;\n }\n\n /**\n * Get the base instance config.\n */\n get __config() {\n return this.__base.__config;\n }\n\n /**\n * Get the events manager.\n */\n get __eventsManager() {\n return this.__base.__events;\n }\n\n /**\n * Class constructor.\n */\n constructor(base: Base) {\n this.__base = base;\n this.__hideProperties(['__base']);\n }\n\n /**\n * Prevent a list of properties from being enumerable and writable.\n * @param {string[]} properties\n * @returns {void}\n */\n __hideProperties(properties: string[]) {\n Object.defineProperties(\n this,\n Object.fromEntries(\n properties.map((property) => [\n property,\n {\n enumerable: false,\n writable: false,\n value: this[property],\n },\n ]),\n ),\n );\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,IAAM,kBAAN,MAAsB;AAAA,EAI3B;AAAA,EAKA,IAAI,YAAY;AACd,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAKA,IAAI,WAAW;AACb,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAKA,IAAI,kBAAkB;AACpB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAKA,YAAY,MAAY;AACtB,SAAK,SAAS;AACd,SAAK,iBAAiB,CAAC,QAAQ,CAAC;AAAA,EAClC;AAAA,EAOA,iBAAiB,YAAsB;AACrC,WAAO;AAAA,MACL;AAAA,MACA,OAAO;AAAA,QACL,WAAW,IAAI,CAAC,aAAa;AAAA,UAC3B;AAAA,UACA;AAAA,YACE,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,OAAO,KAAK;AAAA,UACd;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -1,15 +1,5 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => {
4
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
- return value;
6
- };
7
1
  class AbstractManager {
8
- constructor(base) {
9
- __publicField(this, "__base");
10
- this.__base = base;
11
- this.__hideProperties(["__base"]);
12
- }
2
+ __base;
13
3
  get __element() {
14
4
  return this.__base.$el;
15
5
  }
@@ -19,6 +9,10 @@ class AbstractManager {
19
9
  get __eventsManager() {
20
10
  return this.__base.__events;
21
11
  }
12
+ constructor(base) {
13
+ this.__base = base;
14
+ this.__hideProperties(["__base"]);
15
+ }
22
16
  __hideProperties(properties) {
23
17
  Object.defineProperties(
24
18
  this,
@@ -38,3 +32,4 @@ class AbstractManager {
38
32
  export {
39
33
  AbstractManager
40
34
  };
35
+ //# sourceMappingURL=AbstractManager.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/js-toolkit/Base/managers/AbstractManager.ts"],
4
+ "sourcesContent": ["import type { Base } from '../index.js';\n\n/**\n * AbstractManager class.\n */\nexport class AbstractManager {\n /**\n * Base instance.\n */\n __base: Base;\n\n /**\n * Get the base instance root element.\n */\n get __element() {\n return this.__base.$el;\n }\n\n /**\n * Get the base instance config.\n */\n get __config() {\n return this.__base.__config;\n }\n\n /**\n * Get the events manager.\n */\n get __eventsManager() {\n return this.__base.__events;\n }\n\n /**\n * Class constructor.\n */\n constructor(base: Base) {\n this.__base = base;\n this.__hideProperties(['__base']);\n }\n\n /**\n * Prevent a list of properties from being enumerable and writable.\n * @param {string[]} properties\n * @returns {void}\n */\n __hideProperties(properties: string[]) {\n Object.defineProperties(\n this,\n Object.fromEntries(\n properties.map((property) => [\n property,\n {\n enumerable: false,\n writable: false,\n value: this[property],\n },\n ]),\n ),\n );\n }\n}\n"],
5
+ "mappings": "AAKO,MAAM,gBAAgB;AAAA,EAI3B;AAAA,EAKA,IAAI,YAAY;AACd,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAKA,IAAI,WAAW;AACb,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAKA,IAAI,kBAAkB;AACpB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAKA,YAAY,MAAY;AACtB,SAAK,SAAS;AACd,SAAK,iBAAiB,CAAC,QAAQ,CAAC;AAAA,EAClC;AAAA,EAOA,iBAAiB,YAAsB;AACrC,WAAO;AAAA,MACL;AAAA,MACA,OAAO;AAAA,QACL,WAAW,IAAI,CAAC,aAAa;AAAA,UAC3B;AAAA,UACA;AAAA,YACE,YAAY;AAAA,YACZ,UAAU;AAAA,YACV,OAAO,KAAK;AAAA,UACd;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -2,7 +2,6 @@ var __defProp = Object.defineProperty;
2
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
4
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
5
  var __export = (target, all) => {
7
6
  for (var name in all)
8
7
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -16,10 +15,6 @@ var __copyProps = (to, from, except, desc) => {
16
15
  return to;
17
16
  };
18
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var __publicField = (obj, key, value) => {
20
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
21
- return value;
22
- };
23
18
 
24
19
  // packages/js-toolkit/Base/managers/ChildrenManager.ts
25
20
  var ChildrenManager_exports = {};
@@ -52,8 +47,7 @@ function __getChild(that, el, ComponentClass, name) {
52
47
  });
53
48
  }
54
49
  return promise.then((module2) => {
55
- var _a;
56
- const ctor = (_a = module2.default) != null ? _a : module2;
50
+ const ctor = module2.default ?? module2;
57
51
  that.__asyncComponentPromises.set(ComponentClass, {
58
52
  promise,
59
53
  status: "resolved",
@@ -99,10 +93,7 @@ function __triggerHookForAll(that, hook) {
99
93
  });
100
94
  }
101
95
  var ChildrenManager = class extends import_AbstractManager.AbstractManager {
102
- constructor() {
103
- super(...arguments);
104
- __publicField(this, "__asyncComponentPromises", /* @__PURE__ */ new WeakMap());
105
- }
96
+ __asyncComponentPromises = /* @__PURE__ */ new WeakMap();
106
97
  get registeredNames() {
107
98
  return Object.keys(this).filter((key) => !key.startsWith("__"));
108
99
  }
@@ -122,3 +113,4 @@ var ChildrenManager = class extends import_AbstractManager.AbstractManager {
122
113
  }
123
114
  };
124
115
  if (module.exports.default) module.exports = module.exports.default;
116
+ //# sourceMappingURL=ChildrenManager.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/js-toolkit/Base/managers/ChildrenManager.ts"],
4
+ "sourcesContent": ["import type {\n Base,\n BaseConstructor,\n BaseAsyncConstructor,\n BaseEl,\n} from '../index.js';\nimport { AbstractManager } from './AbstractManager.js';\nimport { getComponentElements } from '../utils.js';\n\n/**\n * Get a child component's instance.\n *\n * @param {ChildrenManager} that\n * @param {HTMLElement & { __base__?: WeakMap<BaseConstructor, Base> }} el\n * The root element of the child component.\n * @param {BaseConstructor|BaseAsyncConstructor} ComponentClass\n * A Base class or a Promise for async components.\n * @param {string} name\n * The name of the child component.\n * @returns {Base|Promise<Base | 'terminated'>|'terminated'}\n * A Base instance or a Promise resolving to a Base instance.\n * @private\n */\nfunction __getChild(\n // eslint-disable-next-line no-use-before-define\n that: ChildrenManager,\n el: BaseEl,\n ComponentClass: BaseConstructor | BaseAsyncConstructor,\n name: string,\n): Base | Promise<Base | 'terminated'> | 'terminated' {\n const asyncComponentPromise = that.__asyncComponentPromises.get(ComponentClass as BaseAsyncConstructor);\n\n // Test if we have a constructor and not a promise or if the promise has been resolved\n if (\n '$isBase' in ComponentClass ||\n (asyncComponentPromise && asyncComponentPromise.status === 'resolved')\n ) {\n let ctor = ComponentClass as BaseConstructor;\n\n // Get resolved constructor from weakmap.\n // Only test for existence as the status was checked before.\n if (asyncComponentPromise) {\n ctor = asyncComponentPromise.ctor;\n }\n\n // Return existing instance if it exists\n if (el.__base__ && el.__base__.has(ctor)) {\n return el.__base__.get(ctor);\n }\n\n // Return a new instance if the component class is a child of the Base class\n // eslint-disable-next-line new-cap\n const child = new ctor(el);\n Object.defineProperty(child, '$parent', { get: () => that.__base });\n return child;\n }\n\n const promise = asyncComponentPromise\n ? asyncComponentPromise.promise\n : ComponentClass(that.__base);\n\n if (!asyncComponentPromise) {\n that.__asyncComponentPromises.set(ComponentClass, {\n promise,\n status: 'pending',\n ctor: undefined,\n });\n }\n\n // Resolve async components\n return promise.then((module) => {\n // @ts-ignore\n const ctor = module.default ?? module;\n\n that.__asyncComponentPromises.set(ComponentClass, {\n promise,\n status: 'resolved',\n ctor,\n });\n\n return __getChild(that, el, ctor, name);\n });\n}\n\n/**\n * Register instance of a child component.\n *\n * @param {ChildrenManager} that\n * @param {string} name\n * The name of the child component.\n * @param {BaseConstructor|BaseAsyncConstructor} component\n * A Base class or a Promise for async components.\n * @private\n */\nfunction __register(\n // eslint-disable-next-line no-use-before-define\n that: ChildrenManager,\n name: string,\n component: BaseConstructor | BaseAsyncConstructor,\n) {\n Object.defineProperty(that, name, {\n enumerable: true,\n configurable: true,\n get: () => {\n const elements = getComponentElements(name, that.__element);\n\n if (elements.length === 0) {\n return [];\n }\n\n return elements\n .map((element) => __getChild(that, element, component, name))\n .filter((instance) => instance !== 'terminated');\n },\n });\n}\n\n/**\n * Execute the given hook for the given instance.\n *\n * @param {ChildrenManager} that\n * @param {'$mount'|'$update'|'$destroy'} hook The hook to trigger.\n * @param {Base} instance The target instance.\n * @param {string} name The name of the component.\n * @private\n */\nfunction __triggerHook(\n // eslint-disable-next-line no-use-before-define\n that: ChildrenManager,\n hook: '$mount' | '$update' | '$destroy',\n instance: Base,\n name: string,\n) {\n if (hook === '$update' && !instance.$isMounted) {\n // eslint-disable-next-line no-param-reassign\n hook = '$mount';\n }\n\n if (hook === '$update' || hook === '$destroy') {\n that.__eventsManager.unbindChild(name, instance);\n }\n\n if (hook === '$update' || hook === '$mount') {\n that.__eventsManager.bindChild(name, instance);\n }\n\n instance[hook]();\n}\n\n/**\n * Execute the given hook for all children instances.\n *\n * @param {ChildrenManager} that\n * @param {'$mount'|'$update'|'$destroy'} hook The hook to execute.\n * @private\n */\n// eslint-disable-next-line no-use-before-define\nfunction __triggerHookForAll(that: ChildrenManager, hook: '$mount' | '$update' | '$destroy') {\n that.registeredNames.forEach((name) => {\n that[name].forEach((instance) => {\n if (instance instanceof Promise) {\n instance.then((resolvedInstance) => __triggerHook(that, hook, resolvedInstance, name));\n } else {\n __triggerHook(that, hook, instance, name);\n }\n });\n });\n}\n\n/**\n * Children manager.\n */\nexport class ChildrenManager extends AbstractManager {\n /**\n * Store async component promises to avoid calling them multiple times and\n * waiting for them when they are already resolved.\n */\n __asyncComponentPromises: WeakMap<\n BaseAsyncConstructor,\n {\n promise: ReturnType<BaseAsyncConstructor>;\n status: 'pending' | 'resolved';\n ctor?: BaseConstructor;\n }\n > = new WeakMap();\n\n get registeredNames():string[] {\n return Object.keys(this).filter((key) => !key.startsWith('__'));\n }\n\n /**\n * Register instances of all children components.\n */\n registerAll() {\n Object.entries(this.__config.components).forEach(([name, component]) =>\n __register(this, name, component),\n );\n }\n\n /**\n * Mount all child component instances.\n */\n mountAll() {\n __triggerHookForAll(this, '$mount');\n }\n\n /**\n * Update all child component instances.\n */\n updateAll() {\n __triggerHookForAll(this, '$update');\n }\n\n /**\n * Destroy all child component instances.\n */\n destroyAll() {\n __triggerHookForAll(this, '$destroy');\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["module"]
7
+ }
@@ -1,9 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => {
4
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
- return value;
6
- };
7
1
  import { AbstractManager } from "./AbstractManager.js";
8
2
  import { getComponentElements } from "../utils.js";
9
3
  function __getChild(that, el, ComponentClass, name) {
@@ -29,8 +23,7 @@ function __getChild(that, el, ComponentClass, name) {
29
23
  });
30
24
  }
31
25
  return promise.then((module) => {
32
- var _a;
33
- const ctor = (_a = module.default) != null ? _a : module;
26
+ const ctor = module.default ?? module;
34
27
  that.__asyncComponentPromises.set(ComponentClass, {
35
28
  promise,
36
29
  status: "resolved",
@@ -76,10 +69,7 @@ function __triggerHookForAll(that, hook) {
76
69
  });
77
70
  }
78
71
  class ChildrenManager extends AbstractManager {
79
- constructor() {
80
- super(...arguments);
81
- __publicField(this, "__asyncComponentPromises", /* @__PURE__ */ new WeakMap());
82
- }
72
+ __asyncComponentPromises = /* @__PURE__ */ new WeakMap();
83
73
  get registeredNames() {
84
74
  return Object.keys(this).filter((key) => !key.startsWith("__"));
85
75
  }
@@ -101,3 +91,4 @@ class ChildrenManager extends AbstractManager {
101
91
  export {
102
92
  ChildrenManager
103
93
  };
94
+ //# sourceMappingURL=ChildrenManager.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/js-toolkit/Base/managers/ChildrenManager.ts"],
4
+ "sourcesContent": ["import type {\n Base,\n BaseConstructor,\n BaseAsyncConstructor,\n BaseEl,\n} from '../index.js';\nimport { AbstractManager } from './AbstractManager.js';\nimport { getComponentElements } from '../utils.js';\n\n/**\n * Get a child component's instance.\n *\n * @param {ChildrenManager} that\n * @param {HTMLElement & { __base__?: WeakMap<BaseConstructor, Base> }} el\n * The root element of the child component.\n * @param {BaseConstructor|BaseAsyncConstructor} ComponentClass\n * A Base class or a Promise for async components.\n * @param {string} name\n * The name of the child component.\n * @returns {Base|Promise<Base | 'terminated'>|'terminated'}\n * A Base instance or a Promise resolving to a Base instance.\n * @private\n */\nfunction __getChild(\n // eslint-disable-next-line no-use-before-define\n that: ChildrenManager,\n el: BaseEl,\n ComponentClass: BaseConstructor | BaseAsyncConstructor,\n name: string,\n): Base | Promise<Base | 'terminated'> | 'terminated' {\n const asyncComponentPromise = that.__asyncComponentPromises.get(ComponentClass as BaseAsyncConstructor);\n\n // Test if we have a constructor and not a promise or if the promise has been resolved\n if (\n '$isBase' in ComponentClass ||\n (asyncComponentPromise && asyncComponentPromise.status === 'resolved')\n ) {\n let ctor = ComponentClass as BaseConstructor;\n\n // Get resolved constructor from weakmap.\n // Only test for existence as the status was checked before.\n if (asyncComponentPromise) {\n ctor = asyncComponentPromise.ctor;\n }\n\n // Return existing instance if it exists\n if (el.__base__ && el.__base__.has(ctor)) {\n return el.__base__.get(ctor);\n }\n\n // Return a new instance if the component class is a child of the Base class\n // eslint-disable-next-line new-cap\n const child = new ctor(el);\n Object.defineProperty(child, '$parent', { get: () => that.__base });\n return child;\n }\n\n const promise = asyncComponentPromise\n ? asyncComponentPromise.promise\n : ComponentClass(that.__base);\n\n if (!asyncComponentPromise) {\n that.__asyncComponentPromises.set(ComponentClass, {\n promise,\n status: 'pending',\n ctor: undefined,\n });\n }\n\n // Resolve async components\n return promise.then((module) => {\n // @ts-ignore\n const ctor = module.default ?? module;\n\n that.__asyncComponentPromises.set(ComponentClass, {\n promise,\n status: 'resolved',\n ctor,\n });\n\n return __getChild(that, el, ctor, name);\n });\n}\n\n/**\n * Register instance of a child component.\n *\n * @param {ChildrenManager} that\n * @param {string} name\n * The name of the child component.\n * @param {BaseConstructor|BaseAsyncConstructor} component\n * A Base class or a Promise for async components.\n * @private\n */\nfunction __register(\n // eslint-disable-next-line no-use-before-define\n that: ChildrenManager,\n name: string,\n component: BaseConstructor | BaseAsyncConstructor,\n) {\n Object.defineProperty(that, name, {\n enumerable: true,\n configurable: true,\n get: () => {\n const elements = getComponentElements(name, that.__element);\n\n if (elements.length === 0) {\n return [];\n }\n\n return elements\n .map((element) => __getChild(that, element, component, name))\n .filter((instance) => instance !== 'terminated');\n },\n });\n}\n\n/**\n * Execute the given hook for the given instance.\n *\n * @param {ChildrenManager} that\n * @param {'$mount'|'$update'|'$destroy'} hook The hook to trigger.\n * @param {Base} instance The target instance.\n * @param {string} name The name of the component.\n * @private\n */\nfunction __triggerHook(\n // eslint-disable-next-line no-use-before-define\n that: ChildrenManager,\n hook: '$mount' | '$update' | '$destroy',\n instance: Base,\n name: string,\n) {\n if (hook === '$update' && !instance.$isMounted) {\n // eslint-disable-next-line no-param-reassign\n hook = '$mount';\n }\n\n if (hook === '$update' || hook === '$destroy') {\n that.__eventsManager.unbindChild(name, instance);\n }\n\n if (hook === '$update' || hook === '$mount') {\n that.__eventsManager.bindChild(name, instance);\n }\n\n instance[hook]();\n}\n\n/**\n * Execute the given hook for all children instances.\n *\n * @param {ChildrenManager} that\n * @param {'$mount'|'$update'|'$destroy'} hook The hook to execute.\n * @private\n */\n// eslint-disable-next-line no-use-before-define\nfunction __triggerHookForAll(that: ChildrenManager, hook: '$mount' | '$update' | '$destroy') {\n that.registeredNames.forEach((name) => {\n that[name].forEach((instance) => {\n if (instance instanceof Promise) {\n instance.then((resolvedInstance) => __triggerHook(that, hook, resolvedInstance, name));\n } else {\n __triggerHook(that, hook, instance, name);\n }\n });\n });\n}\n\n/**\n * Children manager.\n */\nexport class ChildrenManager extends AbstractManager {\n /**\n * Store async component promises to avoid calling them multiple times and\n * waiting for them when they are already resolved.\n */\n __asyncComponentPromises: WeakMap<\n BaseAsyncConstructor,\n {\n promise: ReturnType<BaseAsyncConstructor>;\n status: 'pending' | 'resolved';\n ctor?: BaseConstructor;\n }\n > = new WeakMap();\n\n get registeredNames():string[] {\n return Object.keys(this).filter((key) => !key.startsWith('__'));\n }\n\n /**\n * Register instances of all children components.\n */\n registerAll() {\n Object.entries(this.__config.components).forEach(([name, component]) =>\n __register(this, name, component),\n );\n }\n\n /**\n * Mount all child component instances.\n */\n mountAll() {\n __triggerHookForAll(this, '$mount');\n }\n\n /**\n * Update all child component instances.\n */\n updateAll() {\n __triggerHookForAll(this, '$update');\n }\n\n /**\n * Destroy all child component instances.\n */\n destroyAll() {\n __triggerHookForAll(this, '$destroy');\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }