@studiometa/js-toolkit 3.9.0-beta.1 → 3.9.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 (668) hide show
  1. package/dist/Base/Base.d.ts +5 -1
  2. package/dist/Base/Base.js +12 -13
  3. package/dist/Base/Base.js.map +2 -2
  4. package/dist/Base/managers/AbstractManager.d.ts +1 -1
  5. package/dist/Base/managers/AbstractManager.js.map +1 -1
  6. package/dist/Base/managers/ChildrenManager.d.ts +1 -1
  7. package/dist/Base/managers/ChildrenManager.js +1 -1
  8. package/dist/Base/managers/ChildrenManager.js.map +2 -2
  9. package/dist/Base/managers/EventsManager.d.ts +1 -1
  10. package/dist/Base/managers/EventsManager.js +3 -2
  11. package/dist/Base/managers/EventsManager.js.map +2 -2
  12. package/dist/Base/managers/OptionsManager.d.ts +1 -1
  13. package/dist/Base/managers/OptionsManager.js +2 -9
  14. package/dist/Base/managers/OptionsManager.js.map +2 -2
  15. package/dist/Base/managers/RefsManager.js +6 -9
  16. package/dist/Base/managers/RefsManager.js.map +2 -2
  17. package/dist/Base/managers/ResponsiveOptionsManager.d.ts +1 -2
  18. package/dist/Base/managers/ResponsiveOptionsManager.js +3 -3
  19. package/dist/Base/managers/ResponsiveOptionsManager.js.map +2 -2
  20. package/dist/Base/managers/ServicesManager.d.ts +6 -2
  21. package/dist/Base/managers/ServicesManager.js +7 -2
  22. package/dist/Base/managers/ServicesManager.js.map +2 -2
  23. package/dist/Base/types.d.ts +7 -3
  24. package/dist/Base/utils.d.ts +1 -1
  25. package/dist/Base/utils.js +3 -1
  26. package/dist/Base/utils.js.map +2 -2
  27. package/dist/autoload/define-manifest.js.map +1 -1
  28. package/dist/autoload/loader.d.ts +1 -1
  29. package/dist/autoload/loader.js.map +2 -2
  30. package/dist/autoload/types.d.ts +1 -1
  31. package/dist/decorators/withBreakpointManager.d.ts +1 -1
  32. package/dist/decorators/withBreakpointManager.js +2 -2
  33. package/dist/decorators/withBreakpointManager.js.map +2 -2
  34. package/dist/decorators/withBreakpointObserver.d.ts +1 -1
  35. package/dist/decorators/withBreakpointObserver.js +3 -2
  36. package/dist/decorators/withBreakpointObserver.js.map +2 -2
  37. package/dist/decorators/withDrag.d.ts +2 -2
  38. package/dist/decorators/withDrag.js +3 -1
  39. package/dist/decorators/withDrag.js.map +2 -2
  40. package/dist/decorators/withExtraConfig.d.ts +1 -1
  41. package/dist/decorators/withExtraConfig.js.map +1 -1
  42. package/dist/decorators/withFreezedOptions.d.ts +1 -1
  43. package/dist/decorators/withFreezedOptions.js.map +1 -1
  44. package/dist/decorators/withGroup.d.ts +1 -1
  45. package/dist/decorators/withGroup.js.map +1 -1
  46. package/dist/decorators/withIntersectionObserver.d.ts +1 -1
  47. package/dist/decorators/withIntersectionObserver.js +1 -1
  48. package/dist/decorators/withIntersectionObserver.js.map +1 -1
  49. package/dist/decorators/withMountOnMediaQuery.d.ts +2 -2
  50. package/dist/decorators/withMountOnMediaQuery.js.map +1 -1
  51. package/dist/decorators/withMountWhenInView.d.ts +2 -2
  52. package/dist/decorators/withMountWhenInView.js.map +1 -1
  53. package/dist/decorators/withMountWhenPrefersMotion.d.ts +1 -1
  54. package/dist/decorators/withMountWhenPrefersMotion.js.map +2 -2
  55. package/dist/decorators/withMutation.d.ts +2 -2
  56. package/dist/decorators/withMutation.js +3 -1
  57. package/dist/decorators/withMutation.js.map +2 -2
  58. package/dist/decorators/withName.d.ts +1 -1
  59. package/dist/decorators/withName.js.map +1 -1
  60. package/dist/decorators/withRelativePointer.d.ts +2 -2
  61. package/dist/decorators/withRelativePointer.js +1 -1
  62. package/dist/decorators/withRelativePointer.js.map +2 -2
  63. package/dist/decorators/withResponsiveOptions.d.ts +2 -2
  64. package/dist/decorators/withResponsiveOptions.js +1 -1
  65. package/dist/decorators/withResponsiveOptions.js.map +2 -2
  66. package/dist/decorators/withScrolledInView/utils.js +2 -1
  67. package/dist/decorators/withScrolledInView/utils.js.map +2 -2
  68. package/dist/decorators/withScrolledInView/withScrolledInView.d.ts +5 -3
  69. package/dist/decorators/withScrolledInView/withScrolledInView.js +8 -10
  70. package/dist/decorators/withScrolledInView/withScrolledInView.js.map +2 -2
  71. package/dist/helpers/createApp.d.ts +2 -2
  72. package/dist/helpers/createApp.js +1 -1
  73. package/dist/helpers/createApp.js.map +2 -2
  74. package/dist/helpers/defineFeatures.d.ts +1 -1
  75. package/dist/helpers/defineFeatures.js +1 -1
  76. package/dist/helpers/defineFeatures.js.map +2 -2
  77. package/dist/helpers/getClosestParent.d.ts +1 -1
  78. package/dist/helpers/getClosestParent.js +1 -1
  79. package/dist/helpers/getClosestParent.js.map +2 -2
  80. package/dist/helpers/getDirectChildren.d.ts +1 -1
  81. package/dist/helpers/getDirectChildren.js +1 -1
  82. package/dist/helpers/getDirectChildren.js.map +1 -1
  83. package/dist/helpers/getInstanceFromElement.d.ts +1 -1
  84. package/dist/helpers/getInstanceFromElement.js.map +1 -1
  85. package/dist/helpers/importOnInteraction.d.ts +1 -1
  86. package/dist/helpers/importOnInteraction.js +2 -1
  87. package/dist/helpers/importOnInteraction.js.map +2 -2
  88. package/dist/helpers/importOnMediaQuery.d.ts +1 -1
  89. package/dist/helpers/importOnMediaQuery.js +1 -1
  90. package/dist/helpers/importOnMediaQuery.js.map +1 -1
  91. package/dist/helpers/importWhenIdle.d.ts +1 -1
  92. package/dist/helpers/importWhenIdle.js +1 -1
  93. package/dist/helpers/importWhenIdle.js.map +1 -1
  94. package/dist/helpers/importWhenPrefersMotion.d.ts +1 -1
  95. package/dist/helpers/importWhenPrefersMotion.js.map +1 -1
  96. package/dist/helpers/importWhenVisible.d.ts +1 -1
  97. package/dist/helpers/importWhenVisible.js +1 -1
  98. package/dist/helpers/importWhenVisible.js.map +2 -2
  99. package/dist/helpers/logTree.js +1 -1
  100. package/dist/helpers/logTree.js.map +1 -1
  101. package/dist/helpers/queryComponent.d.ts +1 -1
  102. package/dist/helpers/queryComponent.js.map +1 -1
  103. package/dist/helpers/registerComponent.js +1 -1
  104. package/dist/helpers/registerComponent.js.map +1 -1
  105. package/dist/helpers/registerComponents.js +1 -1
  106. package/dist/helpers/registerComponents.js.map +1 -1
  107. package/dist/helpers/utils.js +1 -1
  108. package/dist/helpers/utils.js.map +2 -2
  109. package/dist/services/DragService.d.ts +1 -2
  110. package/dist/services/DragService.js +2 -2
  111. package/dist/services/DragService.js.map +2 -2
  112. package/dist/subpaths/AbstractService.d.ts +1 -1
  113. package/dist/subpaths/AbstractService.js +1 -1
  114. package/dist/subpaths/AbstractService.js.map +1 -1
  115. package/dist/subpaths/AutoloadHandle.d.ts +1 -1
  116. package/dist/subpaths/AutoloadOptions.d.ts +1 -1
  117. package/dist/subpaths/AutoloadRuntime.d.ts +1 -1
  118. package/dist/subpaths/Base.d.ts +1 -1
  119. package/dist/subpaths/Base.js +1 -1
  120. package/dist/subpaths/Base.js.map +1 -1
  121. package/dist/subpaths/BaseAsyncConstructor.d.ts +1 -1
  122. package/dist/subpaths/BaseChildren.d.ts +1 -1
  123. package/dist/subpaths/BaseConfig.d.ts +1 -1
  124. package/dist/subpaths/BaseConfigComponents.d.ts +1 -1
  125. package/dist/subpaths/BaseConstructor.d.ts +1 -1
  126. package/dist/subpaths/BaseEl.d.ts +1 -1
  127. package/dist/subpaths/BaseOptions.d.ts +1 -1
  128. package/dist/subpaths/BaseProps.d.ts +1 -1
  129. package/dist/subpaths/BaseRefs.d.ts +1 -1
  130. package/dist/subpaths/ComponentLoadStrategy.d.ts +1 -1
  131. package/dist/subpaths/ComponentLoader.d.ts +1 -1
  132. package/dist/subpaths/ComponentLoader.js +1 -1
  133. package/dist/subpaths/ComponentLoader.js.map +1 -1
  134. package/dist/subpaths/ComponentLoaderOptions.d.ts +1 -1
  135. package/dist/subpaths/ComponentLoaderStartOptions.d.ts +1 -1
  136. package/dist/subpaths/ComponentManifest.d.ts +1 -1
  137. package/dist/subpaths/ComponentManifestEntry.d.ts +1 -1
  138. package/dist/subpaths/ComponentOverride.d.ts +1 -1
  139. package/dist/subpaths/CreateAppOptions.d.ts +1 -1
  140. package/dist/subpaths/DEFAULT_DIAGNOSTIC_PREFIX.d.ts +1 -1
  141. package/dist/subpaths/DEFAULT_DIAGNOSTIC_PREFIX.js +1 -1
  142. package/dist/subpaths/DEFAULT_DIAGNOSTIC_PREFIX.js.map +1 -1
  143. package/dist/subpaths/DefineManifestOptions.d.ts +1 -1
  144. package/dist/subpaths/DragDecoratorOptions.d.ts +1 -1
  145. package/dist/subpaths/DragService.d.ts +1 -1
  146. package/dist/subpaths/DragService.js +1 -1
  147. package/dist/subpaths/DragService.js.map +1 -1
  148. package/dist/subpaths/DragServiceInterface.d.ts +1 -1
  149. package/dist/subpaths/DragServiceOptions.d.ts +1 -1
  150. package/dist/subpaths/DragServiceProps.d.ts +1 -1
  151. package/dist/subpaths/IDLE_TIMEOUT.d.ts +1 -1
  152. package/dist/subpaths/IDLE_TIMEOUT.js +1 -1
  153. package/dist/subpaths/IDLE_TIMEOUT.js.map +1 -1
  154. package/dist/subpaths/KeyService.d.ts +1 -1
  155. package/dist/subpaths/KeyService.js +1 -1
  156. package/dist/subpaths/KeyService.js.map +1 -1
  157. package/dist/subpaths/KeyServiceInterface.d.ts +1 -1
  158. package/dist/subpaths/KeyServiceProps.d.ts +1 -1
  159. package/dist/subpaths/LoadService.d.ts +1 -1
  160. package/dist/subpaths/LoadService.js +1 -1
  161. package/dist/subpaths/LoadService.js.map +1 -1
  162. package/dist/subpaths/LoadServiceInterface.d.ts +1 -1
  163. package/dist/subpaths/LoadServiceProps.d.ts +1 -1
  164. package/dist/subpaths/LoaderDependencies.d.ts +1 -1
  165. package/dist/subpaths/Managers.d.ts +1 -1
  166. package/dist/subpaths/ModuleRecord.d.ts +1 -1
  167. package/dist/subpaths/MutationDecoratorOptions.d.ts +1 -1
  168. package/dist/subpaths/MutationService.d.ts +1 -1
  169. package/dist/subpaths/MutationService.js +1 -1
  170. package/dist/subpaths/MutationService.js.map +1 -1
  171. package/dist/subpaths/MutationServiceInterface.d.ts +1 -1
  172. package/dist/subpaths/MutationServiceOptions.d.ts +1 -1
  173. package/dist/subpaths/MutationServiceProps.d.ts +1 -1
  174. package/dist/subpaths/NormalizedOffset.d.ts +1 -1
  175. package/dist/subpaths/OffsetValue.d.ts +1 -1
  176. package/dist/subpaths/PointerService.d.ts +1 -1
  177. package/dist/subpaths/PointerService.js +1 -1
  178. package/dist/subpaths/PointerService.js.map +1 -1
  179. package/dist/subpaths/PointerServiceInterface.d.ts +1 -1
  180. package/dist/subpaths/PointerServiceProps.d.ts +1 -1
  181. package/dist/subpaths/QueryOptions.d.ts +1 -1
  182. package/dist/subpaths/RafService.d.ts +1 -1
  183. package/dist/subpaths/RafService.js +1 -1
  184. package/dist/subpaths/RafService.js.map +1 -1
  185. package/dist/subpaths/RafServiceInterface.d.ts +1 -1
  186. package/dist/subpaths/RafServiceProps.d.ts +1 -1
  187. package/dist/subpaths/RegisterManifestOptions.d.ts +1 -1
  188. package/dist/subpaths/RelativePointerDecoratorOptions.d.ts +1 -1
  189. package/dist/subpaths/RelativePointerInterface.d.ts +1 -1
  190. package/dist/subpaths/ResizeService.d.ts +1 -1
  191. package/dist/subpaths/ResizeService.js +1 -1
  192. package/dist/subpaths/ResizeService.js.map +1 -1
  193. package/dist/subpaths/ResizeServiceInterface.d.ts +1 -1
  194. package/dist/subpaths/ResizeServiceProps.d.ts +1 -1
  195. package/dist/subpaths/ScrollInViewProps.d.ts +1 -1
  196. package/dist/subpaths/ScrollService.d.ts +1 -1
  197. package/dist/subpaths/ScrollService.js +1 -1
  198. package/dist/subpaths/ScrollService.js.map +1 -1
  199. package/dist/subpaths/ScrollServiceInterface.d.ts +1 -1
  200. package/dist/subpaths/ScrollServiceProps.d.ts +1 -1
  201. package/dist/subpaths/ServiceConfig.d.ts +1 -1
  202. package/dist/subpaths/ServiceInterface.d.ts +1 -1
  203. package/dist/subpaths/VISIBLE_ROOT_MARGIN.d.ts +1 -1
  204. package/dist/subpaths/VISIBLE_ROOT_MARGIN.js +1 -1
  205. package/dist/subpaths/VISIBLE_ROOT_MARGIN.js.map +1 -1
  206. package/dist/subpaths/WebpackContextLike.d.ts +1 -1
  207. package/dist/subpaths/WithBreakpointObserverInterface.d.ts +1 -1
  208. package/dist/subpaths/WithBreakpointObserverProps.d.ts +1 -1
  209. package/dist/subpaths/WithDragInterface.d.ts +1 -1
  210. package/dist/subpaths/WithFreezedOptionsInterface.d.ts +1 -1
  211. package/dist/subpaths/WithGroupInterface.d.ts +1 -1
  212. package/dist/subpaths/WithGroupOptions.d.ts +1 -1
  213. package/dist/subpaths/WithGroupProps.d.ts +1 -1
  214. package/dist/subpaths/WithIntersectionObserverInterface.d.ts +1 -1
  215. package/dist/subpaths/WithIntersectionObserverProps.d.ts +1 -1
  216. package/dist/subpaths/WithMountWhenInViewInterface.d.ts +1 -1
  217. package/dist/subpaths/WithMountWhenInViewProps.d.ts +1 -1
  218. package/dist/subpaths/WithMutationInterface.d.ts +1 -1
  219. package/dist/subpaths/WithScrolledInViewInterface.d.ts +1 -1
  220. package/dist/subpaths/WithScrolledInViewOptions.d.ts +1 -1
  221. package/dist/subpaths/WithScrolledInViewProps.d.ts +1 -1
  222. package/dist/subpaths/autoload.d.ts +1 -1
  223. package/dist/subpaths/autoload.js +1 -1
  224. package/dist/subpaths/autoload.js.map +1 -1
  225. package/dist/subpaths/closestComponent.d.ts +1 -1
  226. package/dist/subpaths/closestComponent.js +1 -1
  227. package/dist/subpaths/closestComponent.js.map +1 -1
  228. package/dist/subpaths/composeManifests.d.ts +1 -1
  229. package/dist/subpaths/composeManifests.js +1 -1
  230. package/dist/subpaths/composeManifests.js.map +1 -1
  231. package/dist/subpaths/createApp.d.ts +1 -1
  232. package/dist/subpaths/createApp.js +1 -1
  233. package/dist/subpaths/createApp.js.map +1 -1
  234. package/dist/subpaths/defineFeatures.d.ts +1 -1
  235. package/dist/subpaths/defineFeatures.js +1 -1
  236. package/dist/subpaths/defineFeatures.js.map +1 -1
  237. package/dist/subpaths/defineManifest.d.ts +1 -1
  238. package/dist/subpaths/defineManifest.js +1 -1
  239. package/dist/subpaths/defineManifest.js.map +1 -1
  240. package/dist/subpaths/fromMetaGlob.d.ts +1 -1
  241. package/dist/subpaths/fromMetaGlob.js +1 -1
  242. package/dist/subpaths/fromMetaGlob.js.map +1 -1
  243. package/dist/subpaths/fromWebpackContext.d.ts +1 -1
  244. package/dist/subpaths/fromWebpackContext.js +1 -1
  245. package/dist/subpaths/fromWebpackContext.js.map +1 -1
  246. package/dist/subpaths/getClosestParent.d.ts +1 -1
  247. package/dist/subpaths/getClosestParent.js +1 -1
  248. package/dist/subpaths/getClosestParent.js.map +1 -1
  249. package/dist/subpaths/getDirectChildren.d.ts +1 -1
  250. package/dist/subpaths/getDirectChildren.js +1 -1
  251. package/dist/subpaths/getDirectChildren.js.map +1 -1
  252. package/dist/subpaths/getInstanceFromElement.d.ts +1 -1
  253. package/dist/subpaths/getInstanceFromElement.js +1 -1
  254. package/dist/subpaths/getInstanceFromElement.js.map +1 -1
  255. package/dist/subpaths/getInstances.d.ts +1 -1
  256. package/dist/subpaths/getInstances.js +1 -1
  257. package/dist/subpaths/getInstances.js.map +1 -1
  258. package/dist/subpaths/getScopedGroups.d.ts +1 -1
  259. package/dist/subpaths/getScopedGroups.js +1 -1
  260. package/dist/subpaths/getScopedGroups.js.map +1 -1
  261. package/dist/subpaths/importOnInteraction.d.ts +1 -1
  262. package/dist/subpaths/importOnInteraction.js +1 -1
  263. package/dist/subpaths/importOnInteraction.js.map +1 -1
  264. package/dist/subpaths/importOnMediaQuery.d.ts +1 -1
  265. package/dist/subpaths/importOnMediaQuery.js +1 -1
  266. package/dist/subpaths/importOnMediaQuery.js.map +1 -1
  267. package/dist/subpaths/importWhenIdle.d.ts +1 -1
  268. package/dist/subpaths/importWhenIdle.js +1 -1
  269. package/dist/subpaths/importWhenIdle.js.map +1 -1
  270. package/dist/subpaths/importWhenPrefersMotion.d.ts +1 -1
  271. package/dist/subpaths/importWhenPrefersMotion.js +1 -1
  272. package/dist/subpaths/importWhenPrefersMotion.js.map +1 -1
  273. package/dist/subpaths/importWhenVisible.d.ts +1 -1
  274. package/dist/subpaths/importWhenVisible.js +1 -1
  275. package/dist/subpaths/importWhenVisible.js.map +1 -1
  276. package/dist/subpaths/isDirectChild.d.ts +1 -1
  277. package/dist/subpaths/isDirectChild.js +1 -1
  278. package/dist/subpaths/isDirectChild.js.map +1 -1
  279. package/dist/subpaths/logTree.d.ts +1 -1
  280. package/dist/subpaths/logTree.js +1 -1
  281. package/dist/subpaths/logTree.js.map +1 -1
  282. package/dist/subpaths/queryComponent.d.ts +1 -1
  283. package/dist/subpaths/queryComponent.js +1 -1
  284. package/dist/subpaths/queryComponent.js.map +1 -1
  285. package/dist/subpaths/queryComponentAll.d.ts +1 -1
  286. package/dist/subpaths/queryComponentAll.js +1 -1
  287. package/dist/subpaths/queryComponentAll.js.map +1 -1
  288. package/dist/subpaths/readEagerTokens.d.ts +1 -1
  289. package/dist/subpaths/readEagerTokens.js +1 -1
  290. package/dist/subpaths/readEagerTokens.js.map +1 -1
  291. package/dist/subpaths/registerComponent.d.ts +1 -1
  292. package/dist/subpaths/registerComponent.js +1 -1
  293. package/dist/subpaths/registerComponent.js.map +1 -1
  294. package/dist/subpaths/registerComponents.d.ts +1 -1
  295. package/dist/subpaths/registerComponents.js +1 -1
  296. package/dist/subpaths/registerComponents.js.map +1 -1
  297. package/dist/subpaths/registerManifest.d.ts +1 -1
  298. package/dist/subpaths/registerManifest.js +1 -1
  299. package/dist/subpaths/registerManifest.js.map +1 -1
  300. package/dist/subpaths/registerManifests.d.ts +1 -1
  301. package/dist/subpaths/registerManifests.js +1 -1
  302. package/dist/subpaths/registerManifests.js.map +1 -1
  303. package/dist/subpaths/useDrag.d.ts +1 -1
  304. package/dist/subpaths/useDrag.js +1 -1
  305. package/dist/subpaths/useDrag.js.map +1 -1
  306. package/dist/subpaths/useKey.d.ts +1 -1
  307. package/dist/subpaths/useKey.js +1 -1
  308. package/dist/subpaths/useKey.js.map +1 -1
  309. package/dist/subpaths/useLoad.d.ts +1 -1
  310. package/dist/subpaths/useLoad.js +1 -1
  311. package/dist/subpaths/useLoad.js.map +1 -1
  312. package/dist/subpaths/useMutation.d.ts +1 -1
  313. package/dist/subpaths/useMutation.js +1 -1
  314. package/dist/subpaths/useMutation.js.map +1 -1
  315. package/dist/subpaths/usePointer.d.ts +1 -1
  316. package/dist/subpaths/usePointer.js +1 -1
  317. package/dist/subpaths/usePointer.js.map +1 -1
  318. package/dist/subpaths/useRaf.d.ts +1 -1
  319. package/dist/subpaths/useRaf.js +1 -1
  320. package/dist/subpaths/useRaf.js.map +1 -1
  321. package/dist/subpaths/useResize.d.ts +1 -1
  322. package/dist/subpaths/useResize.js +1 -1
  323. package/dist/subpaths/useResize.js.map +1 -1
  324. package/dist/subpaths/useScroll.d.ts +1 -1
  325. package/dist/subpaths/useScroll.js +1 -1
  326. package/dist/subpaths/useScroll.js.map +1 -1
  327. package/dist/subpaths/utils/Animate.1.d.ts +1 -1
  328. package/dist/subpaths/utils/AnimateOptions.d.ts +1 -1
  329. package/dist/subpaths/utils/CSSCustomPropertyName.d.ts +1 -1
  330. package/dist/subpaths/utils/EasingFunction.d.ts +1 -1
  331. package/dist/subpaths/utils/Keyframe.d.ts +1 -1
  332. package/dist/subpaths/utils/NormalizedKeyframe.d.ts +1 -1
  333. package/dist/subpaths/utils/StorageInstance.d.ts +1 -1
  334. package/dist/subpaths/utils/StorageOptions.d.ts +1 -1
  335. package/dist/subpaths/utils/StorageProvider.d.ts +1 -1
  336. package/dist/subpaths/utils/StorageSerializer.d.ts +1 -1
  337. package/dist/subpaths/utils/TransformProps.d.ts +1 -1
  338. package/dist/subpaths/utils/UrlProviderOptions.d.ts +1 -1
  339. package/dist/subpaths/utils/addClass.d.ts +1 -1
  340. package/dist/subpaths/utils/addClass.js +3 -3
  341. package/dist/subpaths/utils/addClass.js.map +3 -3
  342. package/dist/subpaths/utils/addStyle.d.ts +1 -1
  343. package/dist/subpaths/utils/addStyle.js +3 -3
  344. package/dist/subpaths/utils/addStyle.js.map +3 -3
  345. package/dist/subpaths/utils/animate.d.ts +1 -1
  346. package/dist/subpaths/utils/animate.js +1 -1
  347. package/dist/subpaths/utils/animate.js.map +1 -1
  348. package/dist/subpaths/utils/boundingRectToCircle.d.ts +1 -1
  349. package/dist/subpaths/utils/boundingRectToCircle.js +1 -1
  350. package/dist/subpaths/utils/boundingRectToCircle.js.map +1 -1
  351. package/dist/subpaths/utils/camelCase.d.ts +1 -1
  352. package/dist/subpaths/utils/camelCase.js +1 -1
  353. package/dist/subpaths/utils/camelCase.js.map +1 -1
  354. package/dist/subpaths/utils/clamp.d.ts +1 -1
  355. package/dist/subpaths/utils/clamp.js +1 -1
  356. package/dist/subpaths/utils/clamp.js.map +1 -1
  357. package/dist/subpaths/utils/clamp01.d.ts +1 -1
  358. package/dist/subpaths/utils/clamp01.js +1 -1
  359. package/dist/subpaths/utils/clamp01.js.map +1 -1
  360. package/dist/subpaths/utils/collideCircleCircle.d.ts +1 -1
  361. package/dist/subpaths/utils/collideCircleCircle.js +1 -1
  362. package/dist/subpaths/utils/collideCircleCircle.js.map +1 -1
  363. package/dist/subpaths/utils/collideCircleRect.d.ts +1 -1
  364. package/dist/subpaths/utils/collideCircleRect.js +1 -1
  365. package/dist/subpaths/utils/collideCircleRect.js.map +1 -1
  366. package/dist/subpaths/utils/collidePointCircle.d.ts +1 -1
  367. package/dist/subpaths/utils/collidePointCircle.js +1 -1
  368. package/dist/subpaths/utils/collidePointCircle.js.map +1 -1
  369. package/dist/subpaths/utils/collidePointRect.d.ts +1 -1
  370. package/dist/subpaths/utils/collidePointRect.js +1 -1
  371. package/dist/subpaths/utils/collidePointRect.js.map +1 -1
  372. package/dist/subpaths/utils/collideRectRect.d.ts +1 -1
  373. package/dist/subpaths/utils/collideRectRect.js +1 -1
  374. package/dist/subpaths/utils/collideRectRect.js.map +1 -1
  375. package/dist/subpaths/utils/createEaseInOut.d.ts +1 -1
  376. package/dist/subpaths/utils/createEaseInOut.js +1 -1
  377. package/dist/subpaths/utils/createEaseInOut.js.map +1 -1
  378. package/dist/subpaths/utils/createEaseOut.d.ts +1 -1
  379. package/dist/subpaths/utils/createEaseOut.js +1 -1
  380. package/dist/subpaths/utils/createEaseOut.js.map +1 -1
  381. package/dist/subpaths/utils/createElement.d.ts +1 -1
  382. package/dist/subpaths/utils/createElement.js +1 -1
  383. package/dist/subpaths/utils/createElement.js.map +1 -1
  384. package/dist/subpaths/utils/createLocalStorage.d.ts +1 -1
  385. package/dist/subpaths/utils/createLocalStorage.js +1 -1
  386. package/dist/subpaths/utils/createLocalStorage.js.map +1 -1
  387. package/dist/subpaths/utils/createLocalStorageProvider.d.ts +1 -1
  388. package/dist/subpaths/utils/createLocalStorageProvider.js +1 -1
  389. package/dist/subpaths/utils/createLocalStorageProvider.js.map +1 -1
  390. package/dist/subpaths/utils/createMemoryStorageProvider.d.ts +1 -1
  391. package/dist/subpaths/utils/createMemoryStorageProvider.js +1 -1
  392. package/dist/subpaths/utils/createMemoryStorageProvider.js.map +1 -1
  393. package/dist/subpaths/utils/createNoopProvider.d.ts +1 -1
  394. package/dist/subpaths/utils/createNoopProvider.js +1 -1
  395. package/dist/subpaths/utils/createNoopProvider.js.map +1 -1
  396. package/dist/subpaths/utils/createRange.d.ts +1 -1
  397. package/dist/subpaths/utils/createRange.js +1 -1
  398. package/dist/subpaths/utils/createRange.js.map +1 -1
  399. package/dist/subpaths/utils/createSessionStorage.d.ts +1 -1
  400. package/dist/subpaths/utils/createSessionStorage.js +1 -1
  401. package/dist/subpaths/utils/createSessionStorage.js.map +1 -1
  402. package/dist/subpaths/utils/createSessionStorageProvider.d.ts +1 -1
  403. package/dist/subpaths/utils/createSessionStorageProvider.js +1 -1
  404. package/dist/subpaths/utils/createSessionStorageProvider.js.map +1 -1
  405. package/dist/subpaths/utils/createStorage.d.ts +1 -1
  406. package/dist/subpaths/utils/createStorage.js +1 -1
  407. package/dist/subpaths/utils/createStorage.js.map +1 -1
  408. package/dist/subpaths/utils/createUrlSearchParamsInHashProvider.d.ts +1 -1
  409. package/dist/subpaths/utils/createUrlSearchParamsInHashProvider.js +1 -1
  410. package/dist/subpaths/utils/createUrlSearchParamsInHashProvider.js.map +1 -1
  411. package/dist/subpaths/utils/createUrlSearchParamsInHashStorage.d.ts +1 -1
  412. package/dist/subpaths/utils/createUrlSearchParamsInHashStorage.js +1 -1
  413. package/dist/subpaths/utils/createUrlSearchParamsInHashStorage.js.map +1 -1
  414. package/dist/subpaths/utils/createUrlSearchParamsProvider.d.ts +1 -1
  415. package/dist/subpaths/utils/createUrlSearchParamsProvider.js +1 -1
  416. package/dist/subpaths/utils/createUrlSearchParamsProvider.js.map +1 -1
  417. package/dist/subpaths/utils/createUrlSearchParamsStorage.d.ts +1 -1
  418. package/dist/subpaths/utils/createUrlSearchParamsStorage.js +1 -1
  419. package/dist/subpaths/utils/createUrlSearchParamsStorage.js.map +1 -1
  420. package/dist/subpaths/utils/damp.d.ts +1 -1
  421. package/dist/subpaths/utils/damp.js +1 -1
  422. package/dist/subpaths/utils/damp.js.map +1 -1
  423. package/dist/subpaths/utils/dashCase.d.ts +1 -1
  424. package/dist/subpaths/utils/dashCase.js +1 -1
  425. package/dist/subpaths/utils/dashCase.js.map +1 -1
  426. package/dist/subpaths/utils/easeInCirc.d.ts +1 -1
  427. package/dist/subpaths/utils/easeInCirc.js +1 -1
  428. package/dist/subpaths/utils/easeInCirc.js.map +1 -1
  429. package/dist/subpaths/utils/easeInCubic.d.ts +1 -1
  430. package/dist/subpaths/utils/easeInCubic.js +1 -1
  431. package/dist/subpaths/utils/easeInCubic.js.map +1 -1
  432. package/dist/subpaths/utils/easeInExpo.d.ts +1 -1
  433. package/dist/subpaths/utils/easeInExpo.js +1 -1
  434. package/dist/subpaths/utils/easeInExpo.js.map +1 -1
  435. package/dist/subpaths/utils/easeInOutCirc.d.ts +1 -1
  436. package/dist/subpaths/utils/easeInOutCirc.js +1 -1
  437. package/dist/subpaths/utils/easeInOutCirc.js.map +1 -1
  438. package/dist/subpaths/utils/easeInOutCubic.d.ts +1 -1
  439. package/dist/subpaths/utils/easeInOutCubic.js +1 -1
  440. package/dist/subpaths/utils/easeInOutCubic.js.map +1 -1
  441. package/dist/subpaths/utils/easeInOutExpo.d.ts +1 -1
  442. package/dist/subpaths/utils/easeInOutExpo.js +1 -1
  443. package/dist/subpaths/utils/easeInOutExpo.js.map +1 -1
  444. package/dist/subpaths/utils/easeInOutQuad.d.ts +1 -1
  445. package/dist/subpaths/utils/easeInOutQuad.js +1 -1
  446. package/dist/subpaths/utils/easeInOutQuad.js.map +1 -1
  447. package/dist/subpaths/utils/easeInOutQuart.d.ts +1 -1
  448. package/dist/subpaths/utils/easeInOutQuart.js +1 -1
  449. package/dist/subpaths/utils/easeInOutQuart.js.map +1 -1
  450. package/dist/subpaths/utils/easeInOutQuint.d.ts +1 -1
  451. package/dist/subpaths/utils/easeInOutQuint.js +1 -1
  452. package/dist/subpaths/utils/easeInOutQuint.js.map +1 -1
  453. package/dist/subpaths/utils/easeInOutSine.d.ts +1 -1
  454. package/dist/subpaths/utils/easeInOutSine.js +1 -1
  455. package/dist/subpaths/utils/easeInOutSine.js.map +1 -1
  456. package/dist/subpaths/utils/easeInQuad.d.ts +1 -1
  457. package/dist/subpaths/utils/easeInQuad.js +1 -1
  458. package/dist/subpaths/utils/easeInQuad.js.map +1 -1
  459. package/dist/subpaths/utils/easeInQuart.d.ts +1 -1
  460. package/dist/subpaths/utils/easeInQuart.js +1 -1
  461. package/dist/subpaths/utils/easeInQuart.js.map +1 -1
  462. package/dist/subpaths/utils/easeInQuint.d.ts +1 -1
  463. package/dist/subpaths/utils/easeInQuint.js +1 -1
  464. package/dist/subpaths/utils/easeInQuint.js.map +1 -1
  465. package/dist/subpaths/utils/easeInSine.d.ts +1 -1
  466. package/dist/subpaths/utils/easeInSine.js +1 -1
  467. package/dist/subpaths/utils/easeInSine.js.map +1 -1
  468. package/dist/subpaths/utils/easeLinear.d.ts +1 -1
  469. package/dist/subpaths/utils/easeLinear.js +3 -3
  470. package/dist/subpaths/utils/easeLinear.js.map +3 -3
  471. package/dist/subpaths/utils/easeOutCirc.d.ts +1 -1
  472. package/dist/subpaths/utils/easeOutCirc.js +1 -1
  473. package/dist/subpaths/utils/easeOutCirc.js.map +1 -1
  474. package/dist/subpaths/utils/easeOutCubic.d.ts +1 -1
  475. package/dist/subpaths/utils/easeOutCubic.js +1 -1
  476. package/dist/subpaths/utils/easeOutCubic.js.map +1 -1
  477. package/dist/subpaths/utils/easeOutExpo.d.ts +1 -1
  478. package/dist/subpaths/utils/easeOutExpo.js +1 -1
  479. package/dist/subpaths/utils/easeOutExpo.js.map +1 -1
  480. package/dist/subpaths/utils/easeOutQuad.d.ts +1 -1
  481. package/dist/subpaths/utils/easeOutQuad.js +1 -1
  482. package/dist/subpaths/utils/easeOutQuad.js.map +1 -1
  483. package/dist/subpaths/utils/easeOutQuart.d.ts +1 -1
  484. package/dist/subpaths/utils/easeOutQuart.js +1 -1
  485. package/dist/subpaths/utils/easeOutQuart.js.map +1 -1
  486. package/dist/subpaths/utils/easeOutQuint.d.ts +1 -1
  487. package/dist/subpaths/utils/easeOutQuint.js +1 -1
  488. package/dist/subpaths/utils/easeOutQuint.js.map +1 -1
  489. package/dist/subpaths/utils/easeOutSine.d.ts +1 -1
  490. package/dist/subpaths/utils/easeOutSine.js +1 -1
  491. package/dist/subpaths/utils/easeOutSine.js.map +1 -1
  492. package/dist/subpaths/utils/endsWith.d.ts +1 -1
  493. package/dist/subpaths/utils/endsWith.js +1 -1
  494. package/dist/subpaths/utils/endsWith.js.map +1 -1
  495. package/dist/subpaths/utils/fold.d.ts +1 -1
  496. package/dist/subpaths/utils/fold.js +1 -1
  497. package/dist/subpaths/utils/fold.js.map +1 -1
  498. package/dist/subpaths/utils/getAncestorWhere.d.ts +1 -1
  499. package/dist/subpaths/utils/getAncestorWhere.js +1 -1
  500. package/dist/subpaths/utils/getAncestorWhere.js.map +1 -1
  501. package/dist/subpaths/utils/getAncestorWhereUntil.d.ts +1 -1
  502. package/dist/subpaths/utils/getAncestorWhereUntil.js +1 -1
  503. package/dist/subpaths/utils/getAncestorWhereUntil.js.map +1 -1
  504. package/dist/subpaths/utils/getOffsetSizes.d.ts +1 -1
  505. package/dist/subpaths/utils/getOffsetSizes.js +1 -1
  506. package/dist/subpaths/utils/getOffsetSizes.js.map +1 -1
  507. package/dist/subpaths/utils/inertiaFinalValue.d.ts +1 -1
  508. package/dist/subpaths/utils/inertiaFinalValue.js +1 -1
  509. package/dist/subpaths/utils/inertiaFinalValue.js.map +1 -1
  510. package/dist/subpaths/utils/lerp.d.ts +1 -1
  511. package/dist/subpaths/utils/lerp.js +1 -1
  512. package/dist/subpaths/utils/lerp.js.map +1 -1
  513. package/dist/subpaths/utils/localStorageProvider.d.ts +1 -1
  514. package/dist/subpaths/utils/localStorageProvider.js +1 -1
  515. package/dist/subpaths/utils/localStorageProvider.js.map +1 -1
  516. package/dist/subpaths/utils/lowerCase.d.ts +1 -1
  517. package/dist/subpaths/utils/lowerCase.js +1 -1
  518. package/dist/subpaths/utils/lowerCase.js.map +1 -1
  519. package/dist/subpaths/utils/map.d.ts +1 -1
  520. package/dist/subpaths/utils/map.js +1 -1
  521. package/dist/subpaths/utils/map.js.map +1 -1
  522. package/dist/subpaths/utils/matrix.d.ts +1 -1
  523. package/dist/subpaths/utils/matrix.js +1 -1
  524. package/dist/subpaths/utils/matrix.js.map +1 -1
  525. package/dist/subpaths/utils/mean.d.ts +1 -1
  526. package/dist/subpaths/utils/mean.js +1 -1
  527. package/dist/subpaths/utils/mean.js.map +1 -1
  528. package/dist/subpaths/utils/memoryStorageProvider.d.ts +1 -1
  529. package/dist/subpaths/utils/memoryStorageProvider.js +1 -1
  530. package/dist/subpaths/utils/memoryStorageProvider.js.map +1 -1
  531. package/dist/subpaths/utils/pascalCase.d.ts +1 -1
  532. package/dist/subpaths/utils/pascalCase.js +1 -1
  533. package/dist/subpaths/utils/pascalCase.js.map +1 -1
  534. package/dist/subpaths/utils/removeClass.d.ts +1 -1
  535. package/dist/subpaths/utils/removeClass.js +3 -3
  536. package/dist/subpaths/utils/removeClass.js.map +3 -3
  537. package/dist/subpaths/utils/removeStyle.d.ts +1 -1
  538. package/dist/subpaths/utils/removeStyle.js +3 -3
  539. package/dist/subpaths/utils/removeStyle.js.map +3 -3
  540. package/dist/subpaths/utils/round.d.ts +1 -1
  541. package/dist/subpaths/utils/round.js +1 -1
  542. package/dist/subpaths/utils/round.js.map +1 -1
  543. package/dist/subpaths/utils/sessionStorageProvider.d.ts +1 -1
  544. package/dist/subpaths/utils/sessionStorageProvider.js +1 -1
  545. package/dist/subpaths/utils/sessionStorageProvider.js.map +1 -1
  546. package/dist/subpaths/utils/smoothTo.d.ts +1 -1
  547. package/dist/subpaths/utils/smoothTo.js +1 -1
  548. package/dist/subpaths/utils/smoothTo.js.map +1 -1
  549. package/dist/subpaths/utils/snakeCase.d.ts +1 -1
  550. package/dist/subpaths/utils/snakeCase.js +1 -1
  551. package/dist/subpaths/utils/snakeCase.js.map +1 -1
  552. package/dist/subpaths/utils/spring.d.ts +1 -1
  553. package/dist/subpaths/utils/spring.js +1 -1
  554. package/dist/subpaths/utils/spring.js.map +1 -1
  555. package/dist/subpaths/utils/startsWith.d.ts +1 -1
  556. package/dist/subpaths/utils/startsWith.js +1 -1
  557. package/dist/subpaths/utils/startsWith.js.map +1 -1
  558. package/dist/subpaths/utils/toggleClass.d.ts +1 -1
  559. package/dist/subpaths/utils/toggleClass.js +3 -3
  560. package/dist/subpaths/utils/toggleClass.js.map +3 -3
  561. package/dist/subpaths/utils/transform.d.ts +1 -1
  562. package/dist/subpaths/utils/transform.js +1 -1
  563. package/dist/subpaths/utils/transform.js.map +1 -1
  564. package/dist/subpaths/utils/transition.d.ts +1 -1
  565. package/dist/subpaths/utils/transition.js +1 -1
  566. package/dist/subpaths/utils/transition.js.map +1 -1
  567. package/dist/subpaths/utils/upperCase.d.ts +1 -1
  568. package/dist/subpaths/utils/upperCase.js +1 -1
  569. package/dist/subpaths/utils/upperCase.js.map +1 -1
  570. package/dist/subpaths/utils/urlSearchParamsInHashProvider.d.ts +1 -1
  571. package/dist/subpaths/utils/urlSearchParamsInHashProvider.js +1 -1
  572. package/dist/subpaths/utils/urlSearchParamsInHashProvider.js.map +1 -1
  573. package/dist/subpaths/utils/urlSearchParamsProvider.d.ts +1 -1
  574. package/dist/subpaths/utils/urlSearchParamsProvider.js +1 -1
  575. package/dist/subpaths/utils/urlSearchParamsProvider.js.map +1 -1
  576. package/dist/subpaths/utils/withLeadingCharacters.d.ts +1 -1
  577. package/dist/subpaths/utils/withLeadingCharacters.js +1 -1
  578. package/dist/subpaths/utils/withLeadingCharacters.js.map +1 -1
  579. package/dist/subpaths/utils/withLeadingSlash.d.ts +1 -1
  580. package/dist/subpaths/utils/withLeadingSlash.js +1 -1
  581. package/dist/subpaths/utils/withLeadingSlash.js.map +1 -1
  582. package/dist/subpaths/utils/withTrailingCharacters.d.ts +1 -1
  583. package/dist/subpaths/utils/withTrailingCharacters.js +1 -1
  584. package/dist/subpaths/utils/withTrailingCharacters.js.map +1 -1
  585. package/dist/subpaths/utils/withTrailingSlash.d.ts +1 -1
  586. package/dist/subpaths/utils/withTrailingSlash.js +1 -1
  587. package/dist/subpaths/utils/withTrailingSlash.js.map +1 -1
  588. package/dist/subpaths/utils/withoutLeadingCharacters.d.ts +1 -1
  589. package/dist/subpaths/utils/withoutLeadingCharacters.js +1 -1
  590. package/dist/subpaths/utils/withoutLeadingCharacters.js.map +1 -1
  591. package/dist/subpaths/utils/withoutLeadingCharactersRecursive.d.ts +1 -1
  592. package/dist/subpaths/utils/withoutLeadingCharactersRecursive.js +1 -1
  593. package/dist/subpaths/utils/withoutLeadingCharactersRecursive.js.map +1 -1
  594. package/dist/subpaths/utils/withoutLeadingSlash.d.ts +1 -1
  595. package/dist/subpaths/utils/withoutLeadingSlash.js +1 -1
  596. package/dist/subpaths/utils/withoutLeadingSlash.js.map +1 -1
  597. package/dist/subpaths/utils/withoutTrailingCharacters.d.ts +1 -1
  598. package/dist/subpaths/utils/withoutTrailingCharacters.js +1 -1
  599. package/dist/subpaths/utils/withoutTrailingCharacters.js.map +1 -1
  600. package/dist/subpaths/utils/withoutTrailingCharactersRecursive.d.ts +1 -1
  601. package/dist/subpaths/utils/withoutTrailingCharactersRecursive.js +1 -1
  602. package/dist/subpaths/utils/withoutTrailingCharactersRecursive.js.map +1 -1
  603. package/dist/subpaths/utils/withoutTrailingSlash.d.ts +1 -1
  604. package/dist/subpaths/utils/withoutTrailingSlash.js +1 -1
  605. package/dist/subpaths/utils/withoutTrailingSlash.js.map +1 -1
  606. package/dist/subpaths/utils/wrap.d.ts +1 -1
  607. package/dist/subpaths/utils/wrap.js +1 -1
  608. package/dist/subpaths/utils/wrap.js.map +1 -1
  609. package/dist/subpaths/withBreakpointManager.d.ts +1 -1
  610. package/dist/subpaths/withBreakpointManager.js +1 -1
  611. package/dist/subpaths/withBreakpointManager.js.map +1 -1
  612. package/dist/subpaths/withBreakpointObserver.d.ts +1 -1
  613. package/dist/subpaths/withBreakpointObserver.js +1 -1
  614. package/dist/subpaths/withBreakpointObserver.js.map +1 -1
  615. package/dist/subpaths/withDrag.d.ts +1 -1
  616. package/dist/subpaths/withDrag.js +1 -1
  617. package/dist/subpaths/withDrag.js.map +1 -1
  618. package/dist/subpaths/withExtraConfig.d.ts +1 -1
  619. package/dist/subpaths/withExtraConfig.js +1 -1
  620. package/dist/subpaths/withExtraConfig.js.map +1 -1
  621. package/dist/subpaths/withFreezedOptions.d.ts +1 -1
  622. package/dist/subpaths/withFreezedOptions.js +1 -1
  623. package/dist/subpaths/withFreezedOptions.js.map +1 -1
  624. package/dist/subpaths/withGroup.d.ts +1 -1
  625. package/dist/subpaths/withGroup.js +1 -1
  626. package/dist/subpaths/withGroup.js.map +1 -1
  627. package/dist/subpaths/withIntersectionObserver.d.ts +1 -1
  628. package/dist/subpaths/withIntersectionObserver.js +1 -1
  629. package/dist/subpaths/withIntersectionObserver.js.map +1 -1
  630. package/dist/subpaths/withMountOnMediaQuery.d.ts +1 -1
  631. package/dist/subpaths/withMountOnMediaQuery.js +1 -1
  632. package/dist/subpaths/withMountOnMediaQuery.js.map +1 -1
  633. package/dist/subpaths/withMountOnMediaQueryInterface.d.ts +1 -1
  634. package/dist/subpaths/withMountOnMediaQueryProps.d.ts +1 -1
  635. package/dist/subpaths/withMountWhenInView.d.ts +1 -1
  636. package/dist/subpaths/withMountWhenInView.js +1 -1
  637. package/dist/subpaths/withMountWhenInView.js.map +1 -1
  638. package/dist/subpaths/withMountWhenPrefersMotion.d.ts +1 -1
  639. package/dist/subpaths/withMountWhenPrefersMotion.js +1 -1
  640. package/dist/subpaths/withMountWhenPrefersMotion.js.map +1 -1
  641. package/dist/subpaths/withMutation.d.ts +1 -1
  642. package/dist/subpaths/withMutation.js +1 -1
  643. package/dist/subpaths/withMutation.js.map +1 -1
  644. package/dist/subpaths/withName.d.ts +1 -1
  645. package/dist/subpaths/withName.js +1 -1
  646. package/dist/subpaths/withName.js.map +1 -1
  647. package/dist/subpaths/withRelativePointer.d.ts +1 -1
  648. package/dist/subpaths/withRelativePointer.js +1 -1
  649. package/dist/subpaths/withRelativePointer.js.map +1 -1
  650. package/dist/subpaths/withResponsiveOptions.d.ts +1 -1
  651. package/dist/subpaths/withResponsiveOptions.js +1 -1
  652. package/dist/subpaths/withResponsiveOptions.js.map +1 -1
  653. package/dist/subpaths/withScrolledInView.d.ts +1 -1
  654. package/dist/subpaths/withScrolledInView.js +1 -1
  655. package/dist/subpaths/withScrolledInView.js.map +1 -1
  656. package/dist/utils/css/animate.d.ts +2 -2
  657. package/dist/utils/css/animate.js +5 -3
  658. package/dist/utils/css/animate.js.map +2 -2
  659. package/dist/utils/history.js +1 -1
  660. package/dist/utils/history.js.map +2 -2
  661. package/dist/utils/scrollTo.d.ts +1 -1
  662. package/dist/utils/scrollTo.js +2 -2
  663. package/dist/utils/scrollTo.js.map +2 -2
  664. package/dist/utils/tween.js +7 -2
  665. package/dist/utils/tween.js.map +2 -2
  666. package/dist/version.d.ts +1 -1
  667. package/dist/version.js +1 -1
  668. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { withMutation, withMutation as withMutation2 } from "../decorators/index.js";
1
+ import { withMutation, withMutation as withMutation2 } from "../decorators/withMutation.js";
2
2
  export {
3
3
  withMutation2 as default,
4
4
  withMutation
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/subpaths/withMutation.ts"],
4
- "sourcesContent": ["export { withMutation, withMutation as default } from '../decorators/index.js';\n"],
4
+ "sourcesContent": ["export { withMutation, withMutation as default } from '../decorators/withMutation.js';\n"],
5
5
  "mappings": "AAAA,SAAS,cAA8B,gBAAhBA,qBAA+B;",
6
6
  "names": ["withMutation"]
7
7
  }
@@ -1 +1 @@
1
- export { withName, withName as default } from '../decorators/index.js';
1
+ export { withName, withName as default } from '../decorators/withName.js';
@@ -1,4 +1,4 @@
1
- import { withName, withName as withName2 } from "../decorators/index.js";
1
+ import { withName, withName as withName2 } from "../decorators/withName.js";
2
2
  export {
3
3
  withName2 as default,
4
4
  withName
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/subpaths/withName.ts"],
4
- "sourcesContent": ["export { withName, withName as default } from '../decorators/index.js';\n"],
4
+ "sourcesContent": ["export { withName, withName as default } from '../decorators/withName.js';\n"],
5
5
  "mappings": "AAAA,SAAS,UAAsB,YAAZA,iBAA2B;",
6
6
  "names": ["withName"]
7
7
  }
@@ -1 +1 @@
1
- export { withRelativePointer, withRelativePointer as default } from '../decorators/index.js';
1
+ export { withRelativePointer, withRelativePointer as default } from '../decorators/withRelativePointer.js';
@@ -1,4 +1,4 @@
1
- import { withRelativePointer, withRelativePointer as withRelativePointer2 } from "../decorators/index.js";
1
+ import { withRelativePointer, withRelativePointer as withRelativePointer2 } from "../decorators/withRelativePointer.js";
2
2
  export {
3
3
  withRelativePointer2 as default,
4
4
  withRelativePointer
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/subpaths/withRelativePointer.ts"],
4
- "sourcesContent": ["export { withRelativePointer, withRelativePointer as default } from '../decorators/index.js';\n"],
4
+ "sourcesContent": ["export { withRelativePointer, withRelativePointer as default } from '../decorators/withRelativePointer.js';\n"],
5
5
  "mappings": "AAAA,SAAS,qBAA4C,uBAAvBA,4BAAsC;",
6
6
  "names": ["withRelativePointer"]
7
7
  }
@@ -1 +1 @@
1
- export { withResponsiveOptions, withResponsiveOptions as default } from '../decorators/index.js';
1
+ export { withResponsiveOptions, withResponsiveOptions as default } from '../decorators/withResponsiveOptions.js';
@@ -1,4 +1,4 @@
1
- import { withResponsiveOptions, withResponsiveOptions as withResponsiveOptions2 } from "../decorators/index.js";
1
+ import { withResponsiveOptions, withResponsiveOptions as withResponsiveOptions2 } from "../decorators/withResponsiveOptions.js";
2
2
  export {
3
3
  withResponsiveOptions2 as default,
4
4
  withResponsiveOptions
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/subpaths/withResponsiveOptions.ts"],
4
- "sourcesContent": ["export { withResponsiveOptions, withResponsiveOptions as default } from '../decorators/index.js';\n"],
4
+ "sourcesContent": ["export { withResponsiveOptions, withResponsiveOptions as default } from '../decorators/withResponsiveOptions.js';\n"],
5
5
  "mappings": "AAAA,SAAS,uBAAgD,yBAAzBA,8BAAwC;",
6
6
  "names": ["withResponsiveOptions"]
7
7
  }
@@ -1 +1 @@
1
- export { withScrolledInView, withScrolledInView as default } from '../decorators/index.js';
1
+ export { withScrolledInView, withScrolledInView as default } from '../decorators/withScrolledInView/withScrolledInView.js';
@@ -1,4 +1,4 @@
1
- import { withScrolledInView, withScrolledInView as withScrolledInView2 } from "../decorators/index.js";
1
+ import { withScrolledInView, withScrolledInView as withScrolledInView2 } from "../decorators/withScrolledInView/withScrolledInView.js";
2
2
  export {
3
3
  withScrolledInView2 as default,
4
4
  withScrolledInView
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/subpaths/withScrolledInView.ts"],
4
- "sourcesContent": ["export { withScrolledInView, withScrolledInView as default } from '../decorators/index.js';\n"],
4
+ "sourcesContent": ["export { withScrolledInView, withScrolledInView as default } from '../decorators/withScrolledInView/withScrolledInView.js';\n"],
5
5
  "mappings": "AAAA,SAAS,oBAA0C,sBAAtBA,2BAAqC;",
6
6
  "names": ["withScrolledInView"]
7
7
  }
@@ -1,6 +1,6 @@
1
+ import type { EasingFunction } from '../math/createEases.js';
2
+ import { type BezierCurve, type Tween, type TweenOptions } from '../tween.js';
1
3
  import type { TransformProps } from './transform.js';
2
- import type { EasingFunction } from '../math/index.js';
3
- import type { BezierCurve, Tween, TweenOptions } from '../tween.js';
4
4
  export type CSSCustomPropertyName = `--${string}`;
5
5
  type KeyframeTransforms<Type> = {
6
6
  [Property in keyof Type]: number | [number, string];
@@ -1,9 +1,11 @@
1
- import { clamp01, lerp, map } from "../math/index.js";
1
+ import { clamp01 } from "../math/clamp01.js";
2
+ import { lerp } from "../math/lerp.js";
3
+ import { map } from "../math/map.js";
4
+ import { startsWith } from "../string/startsWith.js";
5
+ import { normalizeEase, tween } from "../tween.js";
2
6
  import { isFunction } from "../is.js";
3
7
  import { domScheduler as scheduler } from "../scheduler.js";
4
- import { tween, normalizeEase } from "../tween.js";
5
8
  import { eachElements } from "./utils.js";
6
- import { startsWith } from "../string/index.js";
7
9
  let id = 0;
8
10
  const running = /* @__PURE__ */ new WeakMap();
9
11
  const CSSUnitConverter = {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../packages/js-toolkit/utils/css/animate.ts"],
4
- "sourcesContent": ["import { clamp01, lerp, map } from '../math/index.js';\nimport { isFunction } from '../is.js';\nimport { domScheduler as scheduler } from '../scheduler.js';\nimport { tween, normalizeEase } from '../tween.js';\nimport { eachElements } from './utils.js';\nimport { startsWith } from '../string/index.js';\nimport type { TransformProps } from './transform.js';\nimport type { EasingFunction } from '../math/index.js';\nimport type { BezierCurve, Tween, TweenOptions } from '../tween.js';\n\nexport type CSSCustomPropertyName = `--${string}`;\n\ntype KeyframeTransforms<Type> = {\n [Property in keyof Type]: number | [number, string];\n};\n\nexport type Keyframe = Partial<\n KeyframeTransforms<TransformProps> & {\n opacity: number;\n transformOrigin: string;\n easing: EasingFunction | BezierCurve;\n offset: number;\n [key: CSSCustomPropertyName]: number;\n }\n>;\n\nexport type NormalizedKeyframe = Keyframe & {\n easing: EasingFunction;\n offset: number;\n vars: string[];\n};\n\n/**\n * A pre-compiled segment between two keyframes.\n * All constant parts (deltas, offsets, writers) are resolved once at creation.\n * The render loop only does multiply-add and string concatenation.\n */\ninterface CompiledSegment {\n fromOffset: number;\n toOffset: number;\n easing: EasingFunction;\n /** Parallel arrays for transform properties (structure-of-arrays layout) */\n transformStarts: number[];\n transformDeltas: number[];\n transformCssFunctions: string[];\n transformUnits: string[];\n /** Whether translate3d is needed */\n hasTranslate: boolean;\n /** Indices into transformStarts/transformDeltas for x, y, z axes */\n translateAxisIndices: number[];\n /** The index where non-translate transforms start in the parallel arrays */\n simpleTransformStart: number;\n /** Translate properties that need element size for CSS unit conversion at render time */\n dynamicTranslates: Array<{\n index: number;\n from: number | [number, string];\n to: number | [number, string];\n sizeRef: string;\n }>;\n /** Opacity: pre-computed start and delta, or null if not animated */\n opacityStart: number;\n opacityDelta: number;\n hasOpacity: boolean;\n /** CSS custom properties: parallel arrays */\n customPropertyNames: string[];\n customPropertyStarts: number[];\n customPropertyDeltas: number[];\n /** Transform origin for this segment, or false */\n transformOrigin: string | false;\n}\n\nexport interface AnimateOptions extends Omit<TweenOptions, 'duration'> {\n /**\n * The duration of the tween, in seconds.\n * When using multiple targets, it can be a function which will be\n * called with the current target and its index and should return\n * the duration in seconds for this element.\n *\n * Defaults to `1`.\n */\n duration?: number | ((target: HTMLElement, index: number) => number);\n /**\n * Delay between the start of each target animation, in seconds.\n * When using multiple targets, it can be a function which will be called\n * with the current target and its index and should return the delay\n * in seconds for this element's tween.\n *\n * Defaults to `0`.\n */\n stagger?: number | ((target: HTMLElement, index: number) => number);\n}\n\nexport type Animate = Tween;\n\nlet id = 0;\nconst running = new WeakMap();\n\nconst CSSUnitConverter = {\n '%': (value: number, size: number) => (value * size) / 100,\n vh: (value: number) => (value * window.innerHeight) / 100,\n vw: (value: number) => (value * window.innerWidth) / 100,\n vmin: (value: number) => (value * Math.min(window.innerWidth, window.innerHeight)) / 100,\n vmax: (value: number) => (value * Math.max(window.innerWidth, window.innerHeight)) / 100,\n};\n\n/**\n * Resolve a keyframe value that may have a CSS unit (e.g. [50, '%']).\n */\nfunction resolveUnitValue(val: number | [number, string], elementSize: number): number {\n if (typeof val === 'number') {\n return val;\n }\n\n if (!val[1] || !CSSUnitConverter[val[1]]) {\n return val[0];\n }\n\n return CSSUnitConverter[val[1]](val[0], elementSize);\n}\n\n/**\n * Non-translate transform property definitions: [keyframeProp, cssFn, unit, defaultValue].\n */\nconst SIMPLE_TRANSFORM_DEFS: ReadonlyArray<readonly [string, string, string, number]> = [\n ['rotate', 'rotate', 'deg', 0],\n ['rotateX', 'rotateX', 'deg', 0],\n ['rotateY', 'rotateY', 'deg', 0],\n ['rotateZ', 'rotateZ', 'deg', 0],\n ['scale', 'scale', '', 1],\n ['scaleX', 'scaleX', '', 1],\n ['scaleY', 'scaleY', '', 1],\n ['scaleZ', 'scaleZ', '', 1],\n ['skew', 'skew', 'deg', 0],\n ['skewX', 'skewX', 'deg', 0],\n ['skewY', 'skewY', 'deg', 0],\n];\n\n/**\n * Translate axis definitions: [keyframeProp, defaultValue, sizeRef].\n * These are grouped into a single translate3d() call during rendering.\n */\nconst TRANSLATE_DEFS: ReadonlyArray<readonly [string, number, string]> = [\n ['x', 0, 'offsetWidth'],\n ['y', 0, 'offsetHeight'],\n ['z', 0, 'offsetWidth'],\n];\n\n/**\n * Compile a pair of keyframes into a pre-computed segment.\n * All constant work (deltas, property filtering) is done here once.\n */\nfunction compileSegment(from: NormalizedKeyframe, to: NormalizedKeyframe): CompiledSegment {\n const transformStarts: number[] = [];\n const transformDeltas: number[] = [];\n const transformCssFunctions: string[] = [];\n const transformUnits: string[] = [];\n const dynamicTranslates: CompiledSegment['dynamicTranslates'] = [];\n\n // Translate axes: grouped into translate3d(x, y, z) during rendering.\n // We track indices into the parallel arrays for x, y, z.\n let hasTranslate = false;\n const translateAxisIndices: number[] = [];\n\n for (const [prop, defaultValue, sizeRef] of TRANSLATE_DEFS) {\n const propertyExists = from[prop] !== undefined || to[prop] !== undefined;\n if (propertyExists) hasTranslate = true;\n\n const fromValue = from[prop] ?? defaultValue;\n const toValue = to[prop] ?? defaultValue;\n const arrayIndex = transformStarts.length;\n translateAxisIndices.push(arrayIndex);\n\n // Placeholder CSS function/unit \u2014 not used for translate (special rendering)\n transformCssFunctions.push('');\n transformUnits.push('px');\n\n if (typeof fromValue !== 'number' || typeof toValue !== 'number') {\n transformStarts.push(0);\n transformDeltas.push(0);\n dynamicTranslates.push({ index: arrayIndex, from: fromValue, to: toValue, sizeRef });\n } else {\n transformStarts.push(fromValue);\n transformDeltas.push(toValue - fromValue);\n }\n }\n\n // Non-translate transforms: each gets its own CSS function\n for (const [prop, cssFunction, unit, defaultValue] of SIMPLE_TRANSFORM_DEFS) {\n if (from[prop] === undefined && to[prop] === undefined) continue;\n\n const startValue = (from[prop] as number) ?? defaultValue;\n transformCssFunctions.push(cssFunction);\n transformUnits.push(unit);\n transformStarts.push(startValue);\n transformDeltas.push(((to[prop] as number) ?? defaultValue) - startValue);\n }\n\n // Opacity\n const hasOpacity = from.opacity !== undefined || to.opacity !== undefined;\n const opacityStart = hasOpacity ? (from.opacity ?? 1) : 0;\n const opacityDelta = hasOpacity ? (to.opacity ?? 1) - opacityStart : 0;\n\n // CSS custom properties\n const customPropertyNames: string[] = [];\n const customPropertyStarts: number[] = [];\n const customPropertyDeltas: number[] = [];\n if (from.vars && to.vars) {\n for (const name of from.vars) {\n const startValue = from[name] as number;\n const endValue = (to[name] as number | undefined) ?? startValue;\n customPropertyNames.push(name);\n customPropertyStarts.push(startValue);\n customPropertyDeltas.push(endValue - startValue);\n }\n }\n\n return {\n fromOffset: from.offset,\n toOffset: to.offset,\n easing: to.easing,\n transformStarts,\n transformDeltas,\n transformCssFunctions,\n transformUnits,\n hasTranslate,\n translateAxisIndices,\n simpleTransformStart: TRANSLATE_DEFS.length,\n dynamicTranslates,\n hasOpacity,\n opacityStart,\n opacityDelta,\n customPropertyNames,\n customPropertyStarts,\n customPropertyDeltas,\n transformOrigin: to.transformOrigin !== undefined ? to.transformOrigin : false,\n };\n}\n\n/**\n * Render an element using a pre-compiled segment and a progress value.\n * The hot path: only multiply-add, string concatenation, and DOM writes.\n */\nfunction renderSegment(element: HTMLElement, segment: CompiledSegment, progress: number) {\n const easedProgress = segment.easing(map(progress, segment.fromOffset, segment.toOffset, 0, 1));\n\n scheduler.read(() => {\n // Resolve dynamic (CSS-unit) transforms that need element size\n for (let i = 0; i < segment.dynamicTranslates.length; i++) {\n const dynamic = segment.dynamicTranslates[i];\n const elementSize = element[dynamic.sizeRef];\n const startValue = resolveUnitValue(dynamic.from, elementSize);\n segment.transformStarts[dynamic.index] = startValue;\n segment.transformDeltas[dynamic.index] =\n resolveUnitValue(dynamic.to, elementSize) - startValue;\n }\n\n // Build transform string: translate3d grouped, then individual transforms\n let transformValue = '';\n\n if (segment.hasTranslate) {\n const xIndex = segment.translateAxisIndices[0];\n const yIndex = segment.translateAxisIndices[1];\n const zIndex = segment.translateAxisIndices[2];\n const x = segment.transformStarts[xIndex] + segment.transformDeltas[xIndex] * easedProgress;\n const y = segment.transformStarts[yIndex] + segment.transformDeltas[yIndex] * easedProgress;\n const z = segment.transformStarts[zIndex] + segment.transformDeltas[zIndex] * easedProgress;\n transformValue += `translate3d(${x}px, ${y}px, ${z}px) `;\n }\n\n for (let i = segment.simpleTransformStart; i < segment.transformStarts.length; i++) {\n const value = segment.transformStarts[i] + segment.transformDeltas[i] * easedProgress;\n transformValue += `${segment.transformCssFunctions[i]}(${value}${segment.transformUnits[i]}) `;\n }\n\n // Compute opacity\n let opacity: false | number | string = false;\n if (segment.hasOpacity) {\n opacity = segment.opacityStart + segment.opacityDelta * easedProgress;\n } else if (element.style.opacity) {\n opacity = '';\n }\n\n // Compute transform origin\n let transformOrigin: false | string = false;\n if (segment.transformOrigin !== false) {\n transformOrigin = segment.transformOrigin;\n } else if (element.style.transformOrigin) {\n transformOrigin = '';\n }\n\n // Compute CSS custom properties\n const hasCustomProperties = segment.customPropertyNames.length > 0;\n\n scheduler.write(() => {\n if (opacity !== false) {\n // @ts-ignore\n element.style.opacity = opacity;\n }\n if (transformOrigin !== false) {\n element.style.transformOrigin = transformOrigin;\n }\n if (hasCustomProperties) {\n for (let i = 0; i < segment.customPropertyNames.length; i++) {\n element.style.setProperty(\n segment.customPropertyNames[i],\n (\n segment.customPropertyStarts[i] +\n segment.customPropertyDeltas[i] * easedProgress\n ).toString(),\n );\n }\n }\n element.style.transform = transformValue;\n });\n });\n}\n\n/**\n * Animate an element.\n */\nfunction singleAnimate(\n element: HTMLElement,\n keyframes: Keyframe[],\n options: TweenOptions = {},\n): Animate {\n const keyframesCount = keyframes.length - 1;\n const normalizedKeyframes = keyframes.map(\n (keyframe, index): NormalizedKeyframe => ({\n ...keyframe,\n offset: keyframe.offset ?? index / keyframesCount,\n easing: normalizeEase(keyframe.easing),\n vars: Object.keys(keyframe).filter((key) => startsWith(key, '--')),\n }),\n );\n\n // Compile keyframe pairs into pre-computed segments (stage 1: partial evaluation)\n const segments: CompiledSegment[] = [];\n for (let i = 1; i < normalizedKeyframes.length; i++) {\n segments.push(compileSegment(normalizedKeyframes[i - 1], normalizedKeyframes[i]));\n }\n\n if (!running.has(element)) {\n running.set(element, new Map());\n }\n\n const key = `animate-${id}`;\n id += 1;\n\n /**\n * Set the progress value.\n */\n function callback(progress: number) {\n let segmentIndex = 0;\n while (\n segmentIndex < segments.length - 1 &&\n segments[segmentIndex].toOffset <= progress &&\n segments[segmentIndex].toOffset !== 1\n ) {\n segmentIndex += 1;\n }\n\n renderSegment(element, segments[segmentIndex], progress);\n }\n\n const controls = tween(callback, {\n ...options,\n onStart(progress) {\n if (isFunction(options.onStart)) {\n options.onStart(progress);\n }\n // Stop running instances\n const runningKeys = running.get(element);\n for (const [runningKey, runningPause] of runningKeys.entries()) {\n runningPause();\n runningKeys.delete(runningKey);\n }\n runningKeys.set(key, controls.pause);\n running.set(element, runningKeys);\n },\n });\n\n return controls;\n}\n\ntype Duration = number;\ntype Delay = number;\ntype DurationWithDelay = number;\n\n/**\n * Animate one or more elements.\n * @link https://js-toolkit.studiometa.dev/utils/css/animate.html\n */\nexport function animate(\n elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>,\n keyframes: Keyframe[],\n options: AnimateOptions = {},\n): Animate {\n if (elementOrElements instanceof HTMLElement) {\n return singleAnimate(elementOrElements, keyframes, {\n ...options,\n duration: isFunction(options.duration)\n ? options.duration(elementOrElements, 0)\n : options.duration,\n });\n }\n\n const stagger = options.stagger ?? 0;\n const staggerIsFunction = isFunction(stagger);\n const durationFn = isFunction(options.duration) ? options.duration : null;\n const progressFn = isFunction(options.onProgress) ? options.onProgress : null;\n const progresses: number[] = [];\n const timings: [Duration, Delay, DurationWithDelay][] = [];\n let duration = 0;\n let progressSum = 0;\n let elementCount = 0;\n\n const controls = eachElements(elementOrElements, (element, index) => {\n const delay = staggerIsFunction ? stagger(element, index) : stagger * index;\n const itemOptions = { ...options, delay } as TweenOptions;\n\n if (durationFn) {\n itemOptions.duration = durationFn(element, index);\n } else if (itemOptions.duration === undefined) {\n itemOptions.duration = 1;\n }\n\n timings[index] = [itemOptions.duration, delay, itemOptions.duration + delay];\n\n if (timings[index][2] > duration) {\n // eslint-disable-next-line prefer-destructuring\n duration = timings[index][2];\n }\n\n progresses[index] = 0;\n elementCount = index + 1;\n itemOptions.onProgress = (itemProgress) => {\n progressSum += itemProgress - progresses[index];\n progresses[index] = itemProgress;\n if (progressFn) {\n progressFn(progressSum / elementCount);\n }\n };\n\n return singleAnimate(element, keyframes, itemOptions);\n });\n\n function forAll(key: string) {\n for (const control of controls) {\n control[key]();\n }\n }\n\n function progress(newProgress?: number) {\n if (newProgress !== undefined) {\n const newTime = lerp(0, duration, newProgress);\n for (let i = 0; i < controls.length; i++) {\n const controlProgress = clamp01(map(newTime, timings[i][1], timings[i][2], 0, 1));\n controls[i].progress(controlProgress);\n }\n }\n\n return progressSum / elementCount;\n }\n\n return {\n start: () => forAll('start'),\n pause: () => forAll('pause'),\n finish: () => forAll('finish'),\n play: () => forAll('play'),\n progress,\n };\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { clamp01 } from '../math/clamp01.js';\nimport type { EasingFunction } from '../math/createEases.js';\nimport { lerp } from '../math/lerp.js';\nimport { map } from '../math/map.js';\nimport { startsWith } from '../string/startsWith.js';\nimport { type BezierCurve, normalizeEase, tween, type Tween, type TweenOptions } from '../tween.js';\nimport { isFunction } from '../is.js';\nimport { domScheduler as scheduler } from '../scheduler.js';\nimport { eachElements } from './utils.js';\nimport type { TransformProps } from './transform.js';\n\nexport type CSSCustomPropertyName = `--${string}`;\n\ntype KeyframeTransforms<Type> = {\n [Property in keyof Type]: number | [number, string];\n};\n\nexport type Keyframe = Partial<\n KeyframeTransforms<TransformProps> & {\n opacity: number;\n transformOrigin: string;\n easing: EasingFunction | BezierCurve;\n offset: number;\n [key: CSSCustomPropertyName]: number;\n }\n>;\n\nexport type NormalizedKeyframe = Keyframe & {\n easing: EasingFunction;\n offset: number;\n vars: string[];\n};\n\n/**\n * A pre-compiled segment between two keyframes.\n * All constant parts (deltas, offsets, writers) are resolved once at creation.\n * The render loop only does multiply-add and string concatenation.\n */\ninterface CompiledSegment {\n fromOffset: number;\n toOffset: number;\n easing: EasingFunction;\n /** Parallel arrays for transform properties (structure-of-arrays layout) */\n transformStarts: number[];\n transformDeltas: number[];\n transformCssFunctions: string[];\n transformUnits: string[];\n /** Whether translate3d is needed */\n hasTranslate: boolean;\n /** Indices into transformStarts/transformDeltas for x, y, z axes */\n translateAxisIndices: number[];\n /** The index where non-translate transforms start in the parallel arrays */\n simpleTransformStart: number;\n /** Translate properties that need element size for CSS unit conversion at render time */\n dynamicTranslates: Array<{\n index: number;\n from: number | [number, string];\n to: number | [number, string];\n sizeRef: string;\n }>;\n /** Opacity: pre-computed start and delta, or null if not animated */\n opacityStart: number;\n opacityDelta: number;\n hasOpacity: boolean;\n /** CSS custom properties: parallel arrays */\n customPropertyNames: string[];\n customPropertyStarts: number[];\n customPropertyDeltas: number[];\n /** Transform origin for this segment, or false */\n transformOrigin: string | false;\n}\n\nexport interface AnimateOptions extends Omit<TweenOptions, 'duration'> {\n /**\n * The duration of the tween, in seconds.\n * When using multiple targets, it can be a function which will be\n * called with the current target and its index and should return\n * the duration in seconds for this element.\n *\n * Defaults to `1`.\n */\n duration?: number | ((target: HTMLElement, index: number) => number);\n /**\n * Delay between the start of each target animation, in seconds.\n * When using multiple targets, it can be a function which will be called\n * with the current target and its index and should return the delay\n * in seconds for this element's tween.\n *\n * Defaults to `0`.\n */\n stagger?: number | ((target: HTMLElement, index: number) => number);\n}\n\nexport type Animate = Tween;\n\nlet id = 0;\nconst running = new WeakMap();\n\nconst CSSUnitConverter = {\n '%': (value: number, size: number) => (value * size) / 100,\n vh: (value: number) => (value * window.innerHeight) / 100,\n vw: (value: number) => (value * window.innerWidth) / 100,\n vmin: (value: number) => (value * Math.min(window.innerWidth, window.innerHeight)) / 100,\n vmax: (value: number) => (value * Math.max(window.innerWidth, window.innerHeight)) / 100,\n};\n\n/**\n * Resolve a keyframe value that may have a CSS unit (e.g. [50, '%']).\n */\nfunction resolveUnitValue(val: number | [number, string], elementSize: number): number {\n if (typeof val === 'number') {\n return val;\n }\n\n if (!val[1] || !CSSUnitConverter[val[1]]) {\n return val[0];\n }\n\n return CSSUnitConverter[val[1]](val[0], elementSize);\n}\n\n/**\n * Non-translate transform property definitions: [keyframeProp, cssFn, unit, defaultValue].\n */\nconst SIMPLE_TRANSFORM_DEFS: ReadonlyArray<readonly [string, string, string, number]> = [\n ['rotate', 'rotate', 'deg', 0],\n ['rotateX', 'rotateX', 'deg', 0],\n ['rotateY', 'rotateY', 'deg', 0],\n ['rotateZ', 'rotateZ', 'deg', 0],\n ['scale', 'scale', '', 1],\n ['scaleX', 'scaleX', '', 1],\n ['scaleY', 'scaleY', '', 1],\n ['scaleZ', 'scaleZ', '', 1],\n ['skew', 'skew', 'deg', 0],\n ['skewX', 'skewX', 'deg', 0],\n ['skewY', 'skewY', 'deg', 0],\n];\n\n/**\n * Translate axis definitions: [keyframeProp, defaultValue, sizeRef].\n * These are grouped into a single translate3d() call during rendering.\n */\nconst TRANSLATE_DEFS: ReadonlyArray<readonly [string, number, string]> = [\n ['x', 0, 'offsetWidth'],\n ['y', 0, 'offsetHeight'],\n ['z', 0, 'offsetWidth'],\n];\n\n/**\n * Compile a pair of keyframes into a pre-computed segment.\n * All constant work (deltas, property filtering) is done here once.\n */\nfunction compileSegment(from: NormalizedKeyframe, to: NormalizedKeyframe): CompiledSegment {\n const transformStarts: number[] = [];\n const transformDeltas: number[] = [];\n const transformCssFunctions: string[] = [];\n const transformUnits: string[] = [];\n const dynamicTranslates: CompiledSegment['dynamicTranslates'] = [];\n\n // Translate axes: grouped into translate3d(x, y, z) during rendering.\n // We track indices into the parallel arrays for x, y, z.\n let hasTranslate = false;\n const translateAxisIndices: number[] = [];\n\n for (const [prop, defaultValue, sizeRef] of TRANSLATE_DEFS) {\n const propertyExists = from[prop] !== undefined || to[prop] !== undefined;\n if (propertyExists) hasTranslate = true;\n\n const fromValue = from[prop] ?? defaultValue;\n const toValue = to[prop] ?? defaultValue;\n const arrayIndex = transformStarts.length;\n translateAxisIndices.push(arrayIndex);\n\n // Placeholder CSS function/unit \u2014 not used for translate (special rendering)\n transformCssFunctions.push('');\n transformUnits.push('px');\n\n if (typeof fromValue !== 'number' || typeof toValue !== 'number') {\n transformStarts.push(0);\n transformDeltas.push(0);\n dynamicTranslates.push({ index: arrayIndex, from: fromValue, to: toValue, sizeRef });\n } else {\n transformStarts.push(fromValue);\n transformDeltas.push(toValue - fromValue);\n }\n }\n\n // Non-translate transforms: each gets its own CSS function\n for (const [prop, cssFunction, unit, defaultValue] of SIMPLE_TRANSFORM_DEFS) {\n if (from[prop] === undefined && to[prop] === undefined) continue;\n\n const startValue = (from[prop] as number) ?? defaultValue;\n transformCssFunctions.push(cssFunction);\n transformUnits.push(unit);\n transformStarts.push(startValue);\n transformDeltas.push(((to[prop] as number) ?? defaultValue) - startValue);\n }\n\n // Opacity\n const hasOpacity = from.opacity !== undefined || to.opacity !== undefined;\n const opacityStart = hasOpacity ? (from.opacity ?? 1) : 0;\n const opacityDelta = hasOpacity ? (to.opacity ?? 1) - opacityStart : 0;\n\n // CSS custom properties\n const customPropertyNames: string[] = [];\n const customPropertyStarts: number[] = [];\n const customPropertyDeltas: number[] = [];\n if (from.vars && to.vars) {\n for (const name of from.vars) {\n const startValue = from[name] as number;\n const endValue = (to[name] as number | undefined) ?? startValue;\n customPropertyNames.push(name);\n customPropertyStarts.push(startValue);\n customPropertyDeltas.push(endValue - startValue);\n }\n }\n\n return {\n fromOffset: from.offset,\n toOffset: to.offset,\n easing: to.easing,\n transformStarts,\n transformDeltas,\n transformCssFunctions,\n transformUnits,\n hasTranslate,\n translateAxisIndices,\n simpleTransformStart: TRANSLATE_DEFS.length,\n dynamicTranslates,\n hasOpacity,\n opacityStart,\n opacityDelta,\n customPropertyNames,\n customPropertyStarts,\n customPropertyDeltas,\n transformOrigin: to.transformOrigin !== undefined ? to.transformOrigin : false,\n };\n}\n\n/**\n * Render an element using a pre-compiled segment and a progress value.\n * The hot path: only multiply-add, string concatenation, and DOM writes.\n */\nfunction renderSegment(element: HTMLElement, segment: CompiledSegment, progress: number) {\n const easedProgress = segment.easing(map(progress, segment.fromOffset, segment.toOffset, 0, 1));\n\n scheduler.read(() => {\n // Resolve dynamic (CSS-unit) transforms that need element size\n for (let i = 0; i < segment.dynamicTranslates.length; i++) {\n const dynamic = segment.dynamicTranslates[i];\n const elementSize = element[dynamic.sizeRef];\n const startValue = resolveUnitValue(dynamic.from, elementSize);\n segment.transformStarts[dynamic.index] = startValue;\n segment.transformDeltas[dynamic.index] =\n resolveUnitValue(dynamic.to, elementSize) - startValue;\n }\n\n // Build transform string: translate3d grouped, then individual transforms\n let transformValue = '';\n\n if (segment.hasTranslate) {\n const xIndex = segment.translateAxisIndices[0];\n const yIndex = segment.translateAxisIndices[1];\n const zIndex = segment.translateAxisIndices[2];\n const x = segment.transformStarts[xIndex] + segment.transformDeltas[xIndex] * easedProgress;\n const y = segment.transformStarts[yIndex] + segment.transformDeltas[yIndex] * easedProgress;\n const z = segment.transformStarts[zIndex] + segment.transformDeltas[zIndex] * easedProgress;\n transformValue += `translate3d(${x}px, ${y}px, ${z}px) `;\n }\n\n for (let i = segment.simpleTransformStart; i < segment.transformStarts.length; i++) {\n const value = segment.transformStarts[i] + segment.transformDeltas[i] * easedProgress;\n transformValue += `${segment.transformCssFunctions[i]}(${value}${segment.transformUnits[i]}) `;\n }\n\n // Compute opacity\n let opacity: false | number | string = false;\n if (segment.hasOpacity) {\n opacity = segment.opacityStart + segment.opacityDelta * easedProgress;\n } else if (element.style.opacity) {\n opacity = '';\n }\n\n // Compute transform origin\n let transformOrigin: false | string = false;\n if (segment.transformOrigin !== false) {\n transformOrigin = segment.transformOrigin;\n } else if (element.style.transformOrigin) {\n transformOrigin = '';\n }\n\n // Compute CSS custom properties\n const hasCustomProperties = segment.customPropertyNames.length > 0;\n\n scheduler.write(() => {\n if (opacity !== false) {\n // @ts-ignore\n element.style.opacity = opacity;\n }\n if (transformOrigin !== false) {\n element.style.transformOrigin = transformOrigin;\n }\n if (hasCustomProperties) {\n for (let i = 0; i < segment.customPropertyNames.length; i++) {\n element.style.setProperty(\n segment.customPropertyNames[i],\n (\n segment.customPropertyStarts[i] +\n segment.customPropertyDeltas[i] * easedProgress\n ).toString(),\n );\n }\n }\n element.style.transform = transformValue;\n });\n });\n}\n\n/**\n * Animate an element.\n */\nfunction singleAnimate(\n element: HTMLElement,\n keyframes: Keyframe[],\n options: TweenOptions = {},\n): Animate {\n const keyframesCount = keyframes.length - 1;\n const normalizedKeyframes = keyframes.map(\n (keyframe, index): NormalizedKeyframe => ({\n ...keyframe,\n offset: keyframe.offset ?? index / keyframesCount,\n easing: normalizeEase(keyframe.easing),\n vars: Object.keys(keyframe).filter((key) => startsWith(key, '--')),\n }),\n );\n\n // Compile keyframe pairs into pre-computed segments (stage 1: partial evaluation)\n const segments: CompiledSegment[] = [];\n for (let i = 1; i < normalizedKeyframes.length; i++) {\n segments.push(compileSegment(normalizedKeyframes[i - 1], normalizedKeyframes[i]));\n }\n\n if (!running.has(element)) {\n running.set(element, new Map());\n }\n\n const key = `animate-${id}`;\n id += 1;\n\n /**\n * Set the progress value.\n */\n function callback(progress: number) {\n let segmentIndex = 0;\n while (\n segmentIndex < segments.length - 1 &&\n segments[segmentIndex].toOffset <= progress &&\n segments[segmentIndex].toOffset !== 1\n ) {\n segmentIndex += 1;\n }\n\n renderSegment(element, segments[segmentIndex], progress);\n }\n\n const controls = tween(callback, {\n ...options,\n onStart(progress) {\n if (isFunction(options.onStart)) {\n options.onStart(progress);\n }\n // Stop running instances\n const runningKeys = running.get(element);\n for (const [runningKey, runningPause] of runningKeys.entries()) {\n runningPause();\n runningKeys.delete(runningKey);\n }\n runningKeys.set(key, controls.pause);\n running.set(element, runningKeys);\n },\n });\n\n return controls;\n}\n\ntype Duration = number;\ntype Delay = number;\ntype DurationWithDelay = number;\n\n/**\n * Animate one or more elements.\n * @link https://js-toolkit.studiometa.dev/utils/css/animate.html\n */\nexport function animate(\n elementOrElements: HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>,\n keyframes: Keyframe[],\n options: AnimateOptions = {},\n): Animate {\n if (elementOrElements instanceof HTMLElement) {\n return singleAnimate(elementOrElements, keyframes, {\n ...options,\n duration: isFunction(options.duration)\n ? options.duration(elementOrElements, 0)\n : options.duration,\n });\n }\n\n const stagger = options.stagger ?? 0;\n const staggerIsFunction = isFunction(stagger);\n const durationFn = isFunction(options.duration) ? options.duration : null;\n const progressFn = isFunction(options.onProgress) ? options.onProgress : null;\n const progresses: number[] = [];\n const timings: [Duration, Delay, DurationWithDelay][] = [];\n let duration = 0;\n let progressSum = 0;\n let elementCount = 0;\n\n const controls = eachElements(elementOrElements, (element, index) => {\n const delay = staggerIsFunction ? stagger(element, index) : stagger * index;\n const itemOptions = { ...options, delay } as TweenOptions;\n\n if (durationFn) {\n itemOptions.duration = durationFn(element, index);\n } else if (itemOptions.duration === undefined) {\n itemOptions.duration = 1;\n }\n\n timings[index] = [itemOptions.duration, delay, itemOptions.duration + delay];\n\n if (timings[index][2] > duration) {\n // eslint-disable-next-line prefer-destructuring\n duration = timings[index][2];\n }\n\n progresses[index] = 0;\n elementCount = index + 1;\n itemOptions.onProgress = (itemProgress) => {\n progressSum += itemProgress - progresses[index];\n progresses[index] = itemProgress;\n if (progressFn) {\n progressFn(progressSum / elementCount);\n }\n };\n\n return singleAnimate(element, keyframes, itemOptions);\n });\n\n function forAll(key: string) {\n for (const control of controls) {\n control[key]();\n }\n }\n\n function progress(newProgress?: number) {\n if (newProgress !== undefined) {\n const newTime = lerp(0, duration, newProgress);\n for (let i = 0; i < controls.length; i++) {\n const controlProgress = clamp01(map(newTime, timings[i][1], timings[i][2], 0, 1));\n controls[i].progress(controlProgress);\n }\n }\n\n return progressSum / elementCount;\n }\n\n return {\n start: () => forAll('start'),\n pause: () => forAll('pause'),\n finish: () => forAll('finish'),\n play: () => forAll('play'),\n progress,\n };\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["key"]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import { isArray, isObject } from "./is.js";
2
+ import { startsWith } from "./string/startsWith.js";
2
3
  import { hasWindow } from "./has.js";
3
- import { startsWith } from "./string/index.js";
4
4
  function updateUrlSearchParam(params, name, value) {
5
5
  if (value === "" || value === null || value === void 0) {
6
6
  if (params.has(name)) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/utils/history.ts"],
4
- "sourcesContent": ["import { isArray, isObject } from './is.js';\nimport { hasWindow } from './has.js';\nimport { startsWith } from './string/index.js';\n\nexport interface HistoryOptions {\n path?: string;\n search?: URLSearchParams | { [key: string]: unknown };\n hash?: string;\n}\n\ntype SearchParamValue = string | number | boolean;\n\n/**\n * Set a param in a URLSearchParam instance.\n *\n * @param {URLSearchParams} params The params to update.\n * @param {string} name The name of the param to update.\n * @param {string|number|boolean|Array|Object} value The value for this param.\n * @return {URLSearchParams} The updated URLSearchParams instance.\n */\nfunction updateUrlSearchParam(\n params: URLSearchParams,\n name: string,\n value: SearchParamValue | Array<SearchParamValue> | Record<string, SearchParamValue>,\n): URLSearchParams {\n if (value === '' || value === null || value === undefined) {\n if (params.has(name)) {\n params.delete(name);\n }\n return params;\n }\n\n if (isArray(value)) {\n for (const [index, val] of value.entries()) {\n const arrayName = `${name}[${index}]`;\n updateUrlSearchParam(params, arrayName, val);\n }\n return params;\n }\n\n if (isObject(value)) {\n for (const [key, val] of Object.entries(value)) {\n const objectName = `${name}[${key}]`;\n updateUrlSearchParam(params, objectName, val);\n }\n return params;\n }\n\n params.set(name, value as string);\n return params;\n}\n\n/**\n * Transform an object to an URLSearchParams instance.\n *\n * @param {Object} obj The object to convert.\n * @param {string} defaultSearch A string of defaults search params.\n * @return {URLSearchParams}\n * @link https://js-toolkit.studiometa.dev/utils/history/objectToURLSearchParams.html\n */\nexport function objectToURLSearchParams(\n obj: unknown,\n defaultSearch = hasWindow() ? window.location.search : '',\n): URLSearchParams {\n return Object.entries(obj).reduce(\n (urlSearchParams: URLSearchParams, [name, value]) =>\n updateUrlSearchParam(urlSearchParams, name, value),\n new URLSearchParams(defaultSearch),\n ) as URLSearchParams;\n}\n\n/**\n * Update the history with a new state.\n *\n * @param {string} mode\n * @param {HistoryOptions} options\n * @param {Object} [data]\n * @param {string} [title]\n * @return {void}\n */\nfunction updateHistory(\n mode: 'push' | 'replace',\n options: HistoryOptions,\n data: unknown = {},\n title = '',\n) {\n if (!window.history) {\n return;\n }\n\n const { path, search, hash }: HistoryOptions = {\n path: window.location.pathname,\n search: new URLSearchParams(window.location.search),\n hash: window.location.hash,\n ...options,\n };\n\n let url = path;\n\n const mergedSearch = search instanceof URLSearchParams ? search : objectToURLSearchParams(search);\n\n if (mergedSearch.toString()) {\n url += `?${mergedSearch.toString()}`;\n }\n\n if (hash) {\n if (startsWith(hash, '#')) {\n url += hash;\n } else {\n url += `#${hash}`;\n }\n }\n\n const method = `${mode}State`;\n window.history[method](data, title, url);\n}\n\n/**\n * Push a new state.\n *\n * @param {HistoryOptions} options The new state.\n * @param {Object} [data] The data for the new state.\n * @param {string} [title] The title for the new state.\n * @return {void}\n * @link https://js-toolkit.studiometa.dev/utils/history/historyPush.html\n */\nexport function push(options: HistoryOptions, data: unknown = {}, title = '') {\n updateHistory('push', options, data, title);\n}\n\n/**\n * Replace a new state.\n *\n * @param {HistoryOptions} options The new state.\n * @param {Object} [data] The data for the new state.\n * @param {string} [title] The title for the new state.\n * @return {void}\n * @link https://js-toolkit.studiometa.dev/utils/history/historyReplace.html\n */\nexport function replace(options: HistoryOptions, data: unknown = {}, title = '') {\n updateHistory('replace', options, data, title);\n}\n"],
5
- "mappings": "AAAA,SAAS,SAAS,gBAAgB;AAClC,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAkB3B,SAAS,qBACP,QACA,MACA,OACiB;AACjB,MAAI,UAAU,MAAM,UAAU,QAAQ,UAAU,QAAW;AACzD,QAAI,OAAO,IAAI,IAAI,GAAG;AACpB,aAAO,OAAO,IAAI;AAAA,IACpB;AACA,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ,KAAK,GAAG;AAClB,eAAW,CAAC,OAAO,GAAG,KAAK,MAAM,QAAQ,GAAG;AAC1C,YAAM,YAAY,GAAG,IAAI,IAAI,KAAK;AAClC,2BAAqB,QAAQ,WAAW,GAAG;AAAA,IAC7C;AACA,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,KAAK,GAAG;AACnB,eAAW,CAAC,KAAK,GAAG,KAAK,OAAO,QAAQ,KAAK,GAAG;AAC9C,YAAM,aAAa,GAAG,IAAI,IAAI,GAAG;AACjC,2BAAqB,QAAQ,YAAY,GAAG;AAAA,IAC9C;AACA,WAAO;AAAA,EACT;AAEA,SAAO,IAAI,MAAM,KAAe;AAChC,SAAO;AACT;AAUO,SAAS,wBACd,KACA,gBAAgB,UAAU,IAAI,OAAO,SAAS,SAAS,IACtC;AACjB,SAAO,OAAO,QAAQ,GAAG,EAAE;AAAA,IACzB,CAAC,iBAAkC,CAAC,MAAM,KAAK,MAC7C,qBAAqB,iBAAiB,MAAM,KAAK;AAAA,IACnD,IAAI,gBAAgB,aAAa;AAAA,EACnC;AACF;AAWA,SAAS,cACP,MACA,SACA,OAAgB,CAAC,GACjB,QAAQ,IACR;AACA,MAAI,CAAC,OAAO,SAAS;AACnB;AAAA,EACF;AAEA,QAAM,EAAE,MAAM,QAAQ,KAAK,IAAoB;AAAA,IAC7C,MAAM,OAAO,SAAS;AAAA,IACtB,QAAQ,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAAA,IAClD,MAAM,OAAO,SAAS;AAAA,IACtB,GAAG;AAAA,EACL;AAEA,MAAI,MAAM;AAEV,QAAM,eAAe,kBAAkB,kBAAkB,SAAS,wBAAwB,MAAM;AAEhG,MAAI,aAAa,SAAS,GAAG;AAC3B,WAAO,IAAI,aAAa,SAAS,CAAC;AAAA,EACpC;AAEA,MAAI,MAAM;AACR,QAAI,WAAW,MAAM,GAAG,GAAG;AACzB,aAAO;AAAA,IACT,OAAO;AACL,aAAO,IAAI,IAAI;AAAA,IACjB;AAAA,EACF;AAEA,QAAM,SAAS,GAAG,IAAI;AACtB,SAAO,QAAQ,MAAM,EAAE,MAAM,OAAO,GAAG;AACzC;AAWO,SAAS,KAAK,SAAyB,OAAgB,CAAC,GAAG,QAAQ,IAAI;AAC5E,gBAAc,QAAQ,SAAS,MAAM,KAAK;AAC5C;AAWO,SAAS,QAAQ,SAAyB,OAAgB,CAAC,GAAG,QAAQ,IAAI;AAC/E,gBAAc,WAAW,SAAS,MAAM,KAAK;AAC/C;",
4
+ "sourcesContent": ["import { isArray, isObject } from './is.js';\nimport { startsWith } from './string/startsWith.js';\nimport { hasWindow } from './has.js';\n\nexport interface HistoryOptions {\n path?: string;\n search?: URLSearchParams | { [key: string]: unknown };\n hash?: string;\n}\n\ntype SearchParamValue = string | number | boolean;\n\n/**\n * Set a param in a URLSearchParam instance.\n *\n * @param {URLSearchParams} params The params to update.\n * @param {string} name The name of the param to update.\n * @param {string|number|boolean|Array|Object} value The value for this param.\n * @return {URLSearchParams} The updated URLSearchParams instance.\n */\nfunction updateUrlSearchParam(\n params: URLSearchParams,\n name: string,\n value: SearchParamValue | Array<SearchParamValue> | Record<string, SearchParamValue>,\n): URLSearchParams {\n if (value === '' || value === null || value === undefined) {\n if (params.has(name)) {\n params.delete(name);\n }\n return params;\n }\n\n if (isArray(value)) {\n for (const [index, val] of value.entries()) {\n const arrayName = `${name}[${index}]`;\n updateUrlSearchParam(params, arrayName, val);\n }\n return params;\n }\n\n if (isObject(value)) {\n for (const [key, val] of Object.entries(value)) {\n const objectName = `${name}[${key}]`;\n updateUrlSearchParam(params, objectName, val);\n }\n return params;\n }\n\n params.set(name, value as string);\n return params;\n}\n\n/**\n * Transform an object to an URLSearchParams instance.\n *\n * @param {Object} obj The object to convert.\n * @param {string} defaultSearch A string of defaults search params.\n * @return {URLSearchParams}\n * @link https://js-toolkit.studiometa.dev/utils/history/objectToURLSearchParams.html\n */\nexport function objectToURLSearchParams(\n obj: unknown,\n defaultSearch = hasWindow() ? window.location.search : '',\n): URLSearchParams {\n return Object.entries(obj).reduce(\n (urlSearchParams: URLSearchParams, [name, value]) =>\n updateUrlSearchParam(urlSearchParams, name, value),\n new URLSearchParams(defaultSearch),\n ) as URLSearchParams;\n}\n\n/**\n * Update the history with a new state.\n *\n * @param {string} mode\n * @param {HistoryOptions} options\n * @param {Object} [data]\n * @param {string} [title]\n * @return {void}\n */\nfunction updateHistory(\n mode: 'push' | 'replace',\n options: HistoryOptions,\n data: unknown = {},\n title = '',\n) {\n if (!window.history) {\n return;\n }\n\n const { path, search, hash }: HistoryOptions = {\n path: window.location.pathname,\n search: new URLSearchParams(window.location.search),\n hash: window.location.hash,\n ...options,\n };\n\n let url = path;\n\n const mergedSearch = search instanceof URLSearchParams ? search : objectToURLSearchParams(search);\n\n if (mergedSearch.toString()) {\n url += `?${mergedSearch.toString()}`;\n }\n\n if (hash) {\n if (startsWith(hash, '#')) {\n url += hash;\n } else {\n url += `#${hash}`;\n }\n }\n\n const method = `${mode}State`;\n window.history[method](data, title, url);\n}\n\n/**\n * Push a new state.\n *\n * @param {HistoryOptions} options The new state.\n * @param {Object} [data] The data for the new state.\n * @param {string} [title] The title for the new state.\n * @return {void}\n * @link https://js-toolkit.studiometa.dev/utils/history/historyPush.html\n */\nexport function push(options: HistoryOptions, data: unknown = {}, title = '') {\n updateHistory('push', options, data, title);\n}\n\n/**\n * Replace a new state.\n *\n * @param {HistoryOptions} options The new state.\n * @param {Object} [data] The data for the new state.\n * @param {string} [title] The title for the new state.\n * @return {void}\n * @link https://js-toolkit.studiometa.dev/utils/history/historyReplace.html\n */\nexport function replace(options: HistoryOptions, data: unknown = {}, title = '') {\n updateHistory('replace', options, data, title);\n}\n"],
5
+ "mappings": "AAAA,SAAS,SAAS,gBAAgB;AAClC,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAkB1B,SAAS,qBACP,QACA,MACA,OACiB;AACjB,MAAI,UAAU,MAAM,UAAU,QAAQ,UAAU,QAAW;AACzD,QAAI,OAAO,IAAI,IAAI,GAAG;AACpB,aAAO,OAAO,IAAI;AAAA,IACpB;AACA,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ,KAAK,GAAG;AAClB,eAAW,CAAC,OAAO,GAAG,KAAK,MAAM,QAAQ,GAAG;AAC1C,YAAM,YAAY,GAAG,IAAI,IAAI,KAAK;AAClC,2BAAqB,QAAQ,WAAW,GAAG;AAAA,IAC7C;AACA,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,KAAK,GAAG;AACnB,eAAW,CAAC,KAAK,GAAG,KAAK,OAAO,QAAQ,KAAK,GAAG;AAC9C,YAAM,aAAa,GAAG,IAAI,IAAI,GAAG;AACjC,2BAAqB,QAAQ,YAAY,GAAG;AAAA,IAC9C;AACA,WAAO;AAAA,EACT;AAEA,SAAO,IAAI,MAAM,KAAe;AAChC,SAAO;AACT;AAUO,SAAS,wBACd,KACA,gBAAgB,UAAU,IAAI,OAAO,SAAS,SAAS,IACtC;AACjB,SAAO,OAAO,QAAQ,GAAG,EAAE;AAAA,IACzB,CAAC,iBAAkC,CAAC,MAAM,KAAK,MAC7C,qBAAqB,iBAAiB,MAAM,KAAK;AAAA,IACnD,IAAI,gBAAgB,aAAa;AAAA,EACnC;AACF;AAWA,SAAS,cACP,MACA,SACA,OAAgB,CAAC,GACjB,QAAQ,IACR;AACA,MAAI,CAAC,OAAO,SAAS;AACnB;AAAA,EACF;AAEA,QAAM,EAAE,MAAM,QAAQ,KAAK,IAAoB;AAAA,IAC7C,MAAM,OAAO,SAAS;AAAA,IACtB,QAAQ,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAAA,IAClD,MAAM,OAAO,SAAS;AAAA,IACtB,GAAG;AAAA,EACL;AAEA,MAAI,MAAM;AAEV,QAAM,eAAe,kBAAkB,kBAAkB,SAAS,wBAAwB,MAAM;AAEhG,MAAI,aAAa,SAAS,GAAG;AAC3B,WAAO,IAAI,aAAa,SAAS,CAAC;AAAA,EACpC;AAEA,MAAI,MAAM;AACR,QAAI,WAAW,MAAM,GAAG,GAAG;AACzB,aAAO;AAAA,IACT,OAAO;AACL,aAAO,IAAI,IAAI;AAAA,IACjB;AAAA,EACF;AAEA,QAAM,SAAS,GAAG,IAAI;AACtB,SAAO,QAAQ,MAAM,EAAE,MAAM,OAAO,GAAG;AACzC;AAWO,SAAS,KAAK,SAAyB,OAAgB,CAAC,GAAG,QAAQ,IAAI;AAC5E,gBAAc,QAAQ,SAAS,MAAM,KAAK;AAC5C;AAWO,SAAS,QAAQ,SAAyB,OAAgB,CAAC,GAAG,QAAQ,IAAI;AAC/E,gBAAc,WAAW,SAAS,MAAM,KAAK;AAC/C;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,4 @@
1
- import type { TweenOptions } from './tween.js';
1
+ import { type TweenOptions } from './tween.js';
2
2
  export interface ScrollPosition {
3
3
  left: number;
4
4
  top: number;
@@ -1,6 +1,6 @@
1
+ import { isDefined, isFunction, isNumber, isString } from "./is.js";
2
+ import { lerp } from "./math/lerp.js";
1
3
  import { tween } from "./tween.js";
2
- import { isString, isNumber, isFunction, isDefined } from "./is.js";
3
- import { lerp } from "./math/index.js";
4
4
  const xAxis = Symbol(0);
5
5
  const yAxis = Symbol(1);
6
6
  const bothAxis = Symbol(2);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/utils/scrollTo.ts"],
4
- "sourcesContent": ["import { tween } from './tween.js';\nimport type { TweenOptions } from './tween.js';\nimport { isString, isNumber, isFunction, isDefined } from './is.js';\nimport { lerp } from './math/index.js';\n\nexport interface ScrollPosition {\n left: number;\n top: number;\n}\n\nexport type ScrollTarget = string | HTMLElement | number | Partial<ScrollPosition>;\n\nexport interface ScrollToOptions extends TweenOptions {\n /**\n * Root element that will be scrolled.\n */\n rootElement?: HTMLElement | typeof window;\n /**\n * Scroll direction.\n */\n axis?: (typeof scrollTo.axis)[keyof typeof scrollTo.axis];\n /**\n * Distance from the target.\n */\n offset?: number;\n}\n\nconst xAxis = Symbol(0);\nconst yAxis = Symbol(1);\nconst bothAxis = Symbol(2);\n\nfunction isHtmlElement(rootElement: ScrollToOptions['rootElement']): rootElement is HTMLElement {\n return rootElement instanceof HTMLElement;\n}\n\n/**\n * Get the current root element or window scroll position.\n */\nfunction getCurrentScrollPosition(rootElement: ScrollToOptions['rootElement']): ScrollPosition {\n return {\n left: isHtmlElement(rootElement) ? rootElement.scrollTop : rootElement.scrollX,\n top: isHtmlElement(rootElement) ? rootElement.scrollLeft : rootElement.scrollY,\n };\n}\n\n/**\n * Get the maximum scroll position values.\n */\nfunction getMaxScrollPosition(rootElement?: ScrollToOptions['rootElement']): ScrollPosition {\n return {\n left: isHtmlElement(rootElement)\n ? rootElement.scrollWidth - rootElement.offsetWidth\n : document.documentElement.scrollWidth - window.innerWidth,\n top: isHtmlElement(rootElement)\n ? rootElement.scrollHeight - rootElement.offsetHeight\n : document.documentElement.scrollHeight - window.innerHeight,\n };\n}\n\n/**\n * Get the target scroll position.\n */\nfunction getTargetScrollPosition(\n initialScrollPosition: ScrollPosition,\n maxScrollPosition: ScrollPosition,\n target: ScrollTarget,\n axis: ScrollToOptions['axis'],\n offset: number,\n): ScrollPosition {\n let { top, left } = initialScrollPosition;\n\n if (target instanceof HTMLElement || isString(target)) {\n const targetElement = target instanceof HTMLElement ? target : document.querySelector(target);\n\n if (!targetElement) {\n return { top, left };\n }\n\n const sizes = targetElement.getBoundingClientRect();\n const styles = getComputedStyle(targetElement);\n const scrollMargin = {\n left: Number.parseInt(styles.scrollMarginLeft || '0', 10),\n top: Number.parseInt(styles.scrollMarginTop || '0', 10),\n };\n\n // Set the scroll position of the target element.\n left = sizes.left + initialScrollPosition.left - scrollMargin.left;\n top = sizes.top + initialScrollPosition.top - scrollMargin.top;\n } else if (isNumber(target)) {\n left = target;\n top = target;\n } else {\n left = target.left ?? left;\n top = target.top ?? top;\n }\n\n left -= offset;\n top -= offset;\n\n if (axis !== bothAxis) {\n if (axis !== xAxis && !isDefined((target as Partial<ScrollPosition>).left)) {\n left = initialScrollPosition.left;\n }\n\n if (axis !== yAxis) {\n top = initialScrollPosition.top;\n }\n }\n\n return {\n left: Math.min(left, maxScrollPosition.left),\n top: Math.min(top, maxScrollPosition.top),\n };\n}\n\n/**\n * Scroll to an element.\n *\n * @return {Promise<ScrollPosition>} A promising resolving with the scroll position.\n * @link https://js-toolkit.studiometa.dev/utils/scrollTo.html\n */\nexport function scrollTo(\n target: string | HTMLElement | number | Partial<ScrollPosition>,\n { rootElement = window, axis = yAxis, offset = 0, ...tweenOptions }: ScrollToOptions = {},\n): Promise<ScrollPosition> {\n const initialScrollPosition = getCurrentScrollPosition(rootElement);\n const maxScrollPosition = getMaxScrollPosition(rootElement);\n const targetScrollPosition = getTargetScrollPosition(\n initialScrollPosition,\n maxScrollPosition,\n target,\n axis,\n offset,\n );\n\n return new Promise((resolve) => {\n function eventHandler() {\n /* eslint-disable @typescript-eslint/no-use-before-define */\n tw.pause();\n stop();\n /* eslint-enable @typescript-eslint/no-use-before-define */\n }\n\n function stop() {\n rootElement.removeEventListener('wheel', eventHandler);\n rootElement.removeEventListener('touchmove', eventHandler);\n\n // Resolve the promise on animation finish.\n resolve(getCurrentScrollPosition(rootElement));\n }\n\n // Setup tween.\n const tw = tween(\n (progress) => {\n rootElement.scrollTo({\n left: lerp(initialScrollPosition.left, targetScrollPosition.left, progress),\n top: lerp(initialScrollPosition.top, targetScrollPosition.top, progress),\n behavior: 'instant',\n });\n },\n {\n smooth: 0.2,\n ...tweenOptions,\n onFinish(progress) {\n if (isFunction(tweenOptions.onFinish)) {\n tweenOptions.onFinish(progress);\n }\n\n stop();\n },\n },\n );\n\n rootElement.addEventListener('wheel', eventHandler, { passive: true });\n rootElement.addEventListener('touchmove', eventHandler, { passive: true });\n tw.start();\n });\n}\n\nscrollTo.axis = {\n x: xAxis,\n y: yAxis,\n both: bothAxis,\n};\n"],
5
- "mappings": "AAAA,SAAS,aAAa;AAEtB,SAAS,UAAU,UAAU,YAAY,iBAAiB;AAC1D,SAAS,YAAY;AAwBrB,MAAM,QAAQ,OAAO,CAAC;AACtB,MAAM,QAAQ,OAAO,CAAC;AACtB,MAAM,WAAW,OAAO,CAAC;AAEzB,SAAS,cAAc,aAAyE;AAC9F,SAAO,uBAAuB;AAChC;AAKA,SAAS,yBAAyB,aAA6D;AAC7F,SAAO;AAAA,IACL,MAAM,cAAc,WAAW,IAAI,YAAY,YAAY,YAAY;AAAA,IACvE,KAAK,cAAc,WAAW,IAAI,YAAY,aAAa,YAAY;AAAA,EACzE;AACF;AAKA,SAAS,qBAAqB,aAA8D;AAC1F,SAAO;AAAA,IACL,MAAM,cAAc,WAAW,IAC3B,YAAY,cAAc,YAAY,cACtC,SAAS,gBAAgB,cAAc,OAAO;AAAA,IAClD,KAAK,cAAc,WAAW,IAC1B,YAAY,eAAe,YAAY,eACvC,SAAS,gBAAgB,eAAe,OAAO;AAAA,EACrD;AACF;AAKA,SAAS,wBACP,uBACA,mBACA,QACA,MACA,QACgB;AAChB,MAAI,EAAE,KAAK,KAAK,IAAI;AAEpB,MAAI,kBAAkB,eAAe,SAAS,MAAM,GAAG;AACrD,UAAM,gBAAgB,kBAAkB,cAAc,SAAS,SAAS,cAAc,MAAM;AAE5F,QAAI,CAAC,eAAe;AAClB,aAAO,EAAE,KAAK,KAAK;AAAA,IACrB;AAEA,UAAM,QAAQ,cAAc,sBAAsB;AAClD,UAAM,SAAS,iBAAiB,aAAa;AAC7C,UAAM,eAAe;AAAA,MACnB,MAAM,OAAO,SAAS,OAAO,oBAAoB,KAAK,EAAE;AAAA,MACxD,KAAK,OAAO,SAAS,OAAO,mBAAmB,KAAK,EAAE;AAAA,IACxD;AAGA,WAAO,MAAM,OAAO,sBAAsB,OAAO,aAAa;AAC9D,UAAM,MAAM,MAAM,sBAAsB,MAAM,aAAa;AAAA,EAC7D,WAAW,SAAS,MAAM,GAAG;AAC3B,WAAO;AACP,UAAM;AAAA,EACR,OAAO;AACL,WAAO,OAAO,QAAQ;AACtB,UAAM,OAAO,OAAO;AAAA,EACtB;AAEA,UAAQ;AACR,SAAO;AAEP,MAAI,SAAS,UAAU;AACrB,QAAI,SAAS,SAAS,CAAC,UAAW,OAAmC,IAAI,GAAG;AAC1E,aAAO,sBAAsB;AAAA,IAC/B;AAEA,QAAI,SAAS,OAAO;AAClB,YAAM,sBAAsB;AAAA,IAC9B;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,KAAK,IAAI,MAAM,kBAAkB,IAAI;AAAA,IAC3C,KAAK,KAAK,IAAI,KAAK,kBAAkB,GAAG;AAAA,EAC1C;AACF;AAQO,SAAS,SACd,QACA,EAAE,cAAc,QAAQ,OAAO,OAAO,SAAS,GAAG,GAAG,aAAa,IAAqB,CAAC,GAC/D;AACzB,QAAM,wBAAwB,yBAAyB,WAAW;AAClE,QAAM,oBAAoB,qBAAqB,WAAW;AAC1D,QAAM,uBAAuB;AAAA,IAC3B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,aAAS,eAAe;AAEtB,SAAG,MAAM;AACT,WAAK;AAAA,IAEP;AAEA,aAAS,OAAO;AACd,kBAAY,oBAAoB,SAAS,YAAY;AACrD,kBAAY,oBAAoB,aAAa,YAAY;AAGzD,cAAQ,yBAAyB,WAAW,CAAC;AAAA,IAC/C;AAGA,UAAM,KAAK;AAAA,MACT,CAAC,aAAa;AACZ,oBAAY,SAAS;AAAA,UACnB,MAAM,KAAK,sBAAsB,MAAM,qBAAqB,MAAM,QAAQ;AAAA,UAC1E,KAAK,KAAK,sBAAsB,KAAK,qBAAqB,KAAK,QAAQ;AAAA,UACvE,UAAU;AAAA,QACZ,CAAC;AAAA,MACH;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,GAAG;AAAA,QACH,SAAS,UAAU;AACjB,cAAI,WAAW,aAAa,QAAQ,GAAG;AACrC,yBAAa,SAAS,QAAQ;AAAA,UAChC;AAEA,eAAK;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAEA,gBAAY,iBAAiB,SAAS,cAAc,EAAE,SAAS,KAAK,CAAC;AACrE,gBAAY,iBAAiB,aAAa,cAAc,EAAE,SAAS,KAAK,CAAC;AACzE,OAAG,MAAM;AAAA,EACX,CAAC;AACH;AAEA,SAAS,OAAO;AAAA,EACd,GAAG;AAAA,EACH,GAAG;AAAA,EACH,MAAM;AACR;",
4
+ "sourcesContent": ["import { isDefined, isFunction, isNumber, isString } from './is.js';\nimport { lerp } from './math/lerp.js';\nimport { tween, type TweenOptions } from './tween.js';\n\nexport interface ScrollPosition {\n left: number;\n top: number;\n}\n\nexport type ScrollTarget = string | HTMLElement | number | Partial<ScrollPosition>;\n\nexport interface ScrollToOptions extends TweenOptions {\n /**\n * Root element that will be scrolled.\n */\n rootElement?: HTMLElement | typeof window;\n /**\n * Scroll direction.\n */\n axis?: (typeof scrollTo.axis)[keyof typeof scrollTo.axis];\n /**\n * Distance from the target.\n */\n offset?: number;\n}\n\nconst xAxis = Symbol(0);\nconst yAxis = Symbol(1);\nconst bothAxis = Symbol(2);\n\nfunction isHtmlElement(rootElement: ScrollToOptions['rootElement']): rootElement is HTMLElement {\n return rootElement instanceof HTMLElement;\n}\n\n/**\n * Get the current root element or window scroll position.\n */\nfunction getCurrentScrollPosition(rootElement: ScrollToOptions['rootElement']): ScrollPosition {\n return {\n left: isHtmlElement(rootElement) ? rootElement.scrollTop : rootElement.scrollX,\n top: isHtmlElement(rootElement) ? rootElement.scrollLeft : rootElement.scrollY,\n };\n}\n\n/**\n * Get the maximum scroll position values.\n */\nfunction getMaxScrollPosition(rootElement?: ScrollToOptions['rootElement']): ScrollPosition {\n return {\n left: isHtmlElement(rootElement)\n ? rootElement.scrollWidth - rootElement.offsetWidth\n : document.documentElement.scrollWidth - window.innerWidth,\n top: isHtmlElement(rootElement)\n ? rootElement.scrollHeight - rootElement.offsetHeight\n : document.documentElement.scrollHeight - window.innerHeight,\n };\n}\n\n/**\n * Get the target scroll position.\n */\nfunction getTargetScrollPosition(\n initialScrollPosition: ScrollPosition,\n maxScrollPosition: ScrollPosition,\n target: ScrollTarget,\n axis: ScrollToOptions['axis'],\n offset: number,\n): ScrollPosition {\n let { top, left } = initialScrollPosition;\n\n if (target instanceof HTMLElement || isString(target)) {\n const targetElement = target instanceof HTMLElement ? target : document.querySelector(target);\n\n if (!targetElement) {\n return { top, left };\n }\n\n const sizes = targetElement.getBoundingClientRect();\n const styles = getComputedStyle(targetElement);\n const scrollMargin = {\n left: Number.parseInt(styles.scrollMarginLeft || '0', 10),\n top: Number.parseInt(styles.scrollMarginTop || '0', 10),\n };\n\n // Set the scroll position of the target element.\n left = sizes.left + initialScrollPosition.left - scrollMargin.left;\n top = sizes.top + initialScrollPosition.top - scrollMargin.top;\n } else if (isNumber(target)) {\n left = target;\n top = target;\n } else {\n left = target.left ?? left;\n top = target.top ?? top;\n }\n\n left -= offset;\n top -= offset;\n\n if (axis !== bothAxis) {\n if (axis !== xAxis && !isDefined((target as Partial<ScrollPosition>).left)) {\n left = initialScrollPosition.left;\n }\n\n if (axis !== yAxis) {\n top = initialScrollPosition.top;\n }\n }\n\n return {\n left: Math.min(left, maxScrollPosition.left),\n top: Math.min(top, maxScrollPosition.top),\n };\n}\n\n/**\n * Scroll to an element.\n *\n * @return {Promise<ScrollPosition>} A promising resolving with the scroll position.\n * @link https://js-toolkit.studiometa.dev/utils/scrollTo.html\n */\nexport function scrollTo(\n target: string | HTMLElement | number | Partial<ScrollPosition>,\n { rootElement = window, axis = yAxis, offset = 0, ...tweenOptions }: ScrollToOptions = {},\n): Promise<ScrollPosition> {\n const initialScrollPosition = getCurrentScrollPosition(rootElement);\n const maxScrollPosition = getMaxScrollPosition(rootElement);\n const targetScrollPosition = getTargetScrollPosition(\n initialScrollPosition,\n maxScrollPosition,\n target,\n axis,\n offset,\n );\n\n return new Promise((resolve) => {\n function eventHandler() {\n /* eslint-disable @typescript-eslint/no-use-before-define */\n tw.pause();\n stop();\n /* eslint-enable @typescript-eslint/no-use-before-define */\n }\n\n function stop() {\n rootElement.removeEventListener('wheel', eventHandler);\n rootElement.removeEventListener('touchmove', eventHandler);\n\n // Resolve the promise on animation finish.\n resolve(getCurrentScrollPosition(rootElement));\n }\n\n // Setup tween.\n const tw = tween(\n (progress) => {\n rootElement.scrollTo({\n left: lerp(initialScrollPosition.left, targetScrollPosition.left, progress),\n top: lerp(initialScrollPosition.top, targetScrollPosition.top, progress),\n behavior: 'instant',\n });\n },\n {\n smooth: 0.2,\n ...tweenOptions,\n onFinish(progress) {\n if (isFunction(tweenOptions.onFinish)) {\n tweenOptions.onFinish(progress);\n }\n\n stop();\n },\n },\n );\n\n rootElement.addEventListener('wheel', eventHandler, { passive: true });\n rootElement.addEventListener('touchmove', eventHandler, { passive: true });\n tw.start();\n });\n}\n\nscrollTo.axis = {\n x: xAxis,\n y: yAxis,\n both: bothAxis,\n};\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,12 @@
1
+ import { clamp01 } from "./math/clamp01.js";
2
+ import { damp } from "./math/damp.js";
3
+ import { inertiaFinalValue } from "./math/inertiaFinalValue.js";
4
+ import { lerp } from "./math/lerp.js";
5
+ import { map } from "./math/map.js";
6
+ import { spring } from "./math/spring.js";
7
+ import { noopValue as linear, noop } from "./noop.js";
1
8
  import { cubicBezier } from "@motionone/easing";
2
- import { lerp, map, clamp01, damp, inertiaFinalValue, spring } from "./math/index.js";
3
9
  import { isArray, isNumber } from "./is.js";
4
- import { noop, noopValue as linear } from "./noop.js";
5
10
  import { useRaf } from "../services/RafService.js";
6
11
  let id = 0;
7
12
  const DEFAULT_PROGRESS_PRECISION = 1 / 1e4;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/js-toolkit/utils/tween.ts"],
4
- "sourcesContent": ["import { cubicBezier } from '@motionone/easing';\nimport { lerp, map, clamp01, damp, inertiaFinalValue, spring } from './math/index.js';\nimport { isArray, isNumber } from './is.js';\nimport { noop, noopValue as linear } from './noop.js';\nimport { useRaf } from '../services/RafService.js';\nimport type { EasingFunction } from './math/createEases.js';\n\nlet id = 0;\nconst DEFAULT_PROGRESS_PRECISION = 1 / 1e4;\n\nexport type BezierCurve = [number, number, number, number];\n\n/**\n * Controls for a tween.\n */\nexport interface Tween {\n /**\n * Start the tween from the beginning.\n */\n start: () => void;\n /**\n * Finish the tween and set its state to the end.\n */\n finish: () => void;\n /**\n * Pause the tween.\n */\n pause: () => void;\n /**\n * Start the tween from the current paused progress.\n */\n play: () => void;\n /**\n * Set and get the tween's progress.\n */\n progress: (progress?: number) => number;\n}\n\nexport interface TweenOptions {\n /**\n * The duration, in seconds.\n * Defaults to `1`.\n */\n duration?: number;\n /**\n * The delay, in seconds.\n * Defaults to `0`.\n */\n delay?: number;\n /**\n * The easing function or bezier curve to use.\n * Defaults to a linear easing function.\n */\n easing?: EasingFunction | BezierCurve;\n /**\n * The smooth factor. Setting this option to `true` or a `number` will disable the `duration` option.\n */\n smooth?: true | number;\n /**\n * Enable spring transition. Setting this option to `true` or a `number` will disable the `duration` option.\n * If `true`, a default stiffness of 0.1 will be used, if a `number` is given, it will be used instead.\n */\n spring?: true | number;\n /**\n * When spring physics are enabled, use the mass option to make the object heavier or lighter. Defaults to `1`.\n */\n mass?: number;\n /**\n * The precision for when to consider the tween finished.\n * Defaults to `0.00001`.\n */\n precision?: number;\n /**\n * A callback executed on start.\n */\n onStart?: (progress: number) => void;\n /**\n * A callback executed each time the progress is updated.\n */\n onProgress?: (progress: number) => void;\n /**\n * A callback executed when the tween is finished.\n */\n onFinish?: (progress: number) => void;\n}\n\n/**\n * Normalize a easing function with default fallbacks.\n */\nexport function normalizeEase(ease: EasingFunction | BezierCurve): EasingFunction {\n if (ease === undefined) {\n return linear;\n }\n\n if (isArray(ease)) {\n return cubicBezier(...ease);\n }\n\n return ease;\n}\n\n/**\n * Tween from 0 to 1.\n * @link https://js-toolkit.studiometa.dev/utils/tween.html\n */\nexport function tween(callback: (progress: number) => unknown, options: TweenOptions = {}): Tween {\n const raf = useRaf();\n\n let progressValue = 0;\n let easedProgress = 0;\n let velocity = 0;\n\n const isSmooth = options.smooth !== undefined && (isNumber(options.smooth) || options.smooth);\n const isSpring = options.spring !== undefined && (isNumber(options.spring) || options.spring);\n const stiffness = isNumber(options.spring) ? options.spring : 0.1;\n const mass = isNumber(options.mass) ? options.mass : 1;\n const damping = isNumber(options.smooth) ? options.smooth : 0.1;\n const precision = options.precision ?? DEFAULT_PROGRESS_PRECISION;\n const ease = normalizeEase(options.easing);\n\n let delay = options.delay ?? 0;\n delay *= 1000;\n let duration = options.duration ?? 1;\n duration *= 1000;\n\n /* eslint-disable @typescript-eslint/no-use-before-define */\n let startTime = getStartTime();\n let endTime = getEndTime(startTime);\n /* eslint-enable @typescript-eslint/no-use-before-define */\n\n const key = `tw-${id}`;\n id += 1;\n\n const { onStart = noop, onProgress = noop, onFinish = noop } = options;\n let isRunning = false;\n\n /**\n * Pause the animation.\n */\n function pause() {\n isRunning = false;\n raf.remove(key);\n }\n\n /**\n * Set the progress value.\n */\n function progress(newProgress: number) {\n if (newProgress === undefined) {\n return easedProgress;\n }\n\n let shouldStop = false;\n\n progressValue = newProgress;\n if (isSpring) {\n [easedProgress, velocity] = spring(\n progressValue,\n easedProgress,\n velocity,\n stiffness,\n damping,\n mass,\n precision,\n );\n } else {\n easedProgress = isSmooth\n ? damp(progressValue, easedProgress, damping, precision)\n : ease(progressValue);\n }\n\n // Stop when reaching precision\n if (Math.abs(1 - easedProgress) < precision) {\n progressValue = 1;\n easedProgress = 1;\n shouldStop = true;\n }\n\n callback(easedProgress);\n onProgress(easedProgress);\n\n if (shouldStop) {\n pause();\n requestAnimationFrame(() => onFinish(easedProgress));\n }\n\n return easedProgress;\n }\n\n /**\n * Loop for rendering the animation.\n */\n function tick(props: { time: number }) {\n progress(clamp01(map(props.time, startTime, endTime, 0, 1)));\n }\n\n function getStartTime() {\n return performance.now() + delay;\n }\n\n function getEndTime(time: number) {\n return isSmooth ? inertiaFinalValue(time, 1) : time + duration;\n }\n\n /**\n * Play the animation.\n */\n function start() {\n onStart(0);\n startTime = getStartTime();\n endTime = getEndTime(startTime);\n progressValue = 0;\n easedProgress = 0;\n isRunning = true;\n\n raf.add(key, tick);\n }\n\n /**\n * Play a paused animation.\n */\n function play() {\n if (isRunning) {\n return;\n }\n\n startTime = getStartTime() - lerp(0, duration, progressValue);\n endTime = getEndTime(startTime);\n isRunning = true;\n\n raf.add(key, tick);\n }\n\n return {\n start,\n finish: () => progress(1),\n pause,\n play,\n progress,\n };\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { clamp01 } from './math/clamp01.js';\nimport { damp } from './math/damp.js';\nimport { inertiaFinalValue } from './math/inertiaFinalValue.js';\nimport { lerp } from './math/lerp.js';\nimport { map } from './math/map.js';\nimport { spring } from './math/spring.js';\nimport { noopValue as linear, noop } from './noop.js';\nimport { cubicBezier } from '@motionone/easing';\nimport { isArray, isNumber } from './is.js';\nimport { useRaf } from '../services/RafService.js';\nimport type { EasingFunction } from './math/createEases.js';\n\nlet id = 0;\nconst DEFAULT_PROGRESS_PRECISION = 1 / 1e4;\n\nexport type BezierCurve = [number, number, number, number];\n\n/**\n * Controls for a tween.\n */\nexport interface Tween {\n /**\n * Start the tween from the beginning.\n */\n start: () => void;\n /**\n * Finish the tween and set its state to the end.\n */\n finish: () => void;\n /**\n * Pause the tween.\n */\n pause: () => void;\n /**\n * Start the tween from the current paused progress.\n */\n play: () => void;\n /**\n * Set and get the tween's progress.\n */\n progress: (progress?: number) => number;\n}\n\nexport interface TweenOptions {\n /**\n * The duration, in seconds.\n * Defaults to `1`.\n */\n duration?: number;\n /**\n * The delay, in seconds.\n * Defaults to `0`.\n */\n delay?: number;\n /**\n * The easing function or bezier curve to use.\n * Defaults to a linear easing function.\n */\n easing?: EasingFunction | BezierCurve;\n /**\n * The smooth factor. Setting this option to `true` or a `number` will disable the `duration` option.\n */\n smooth?: true | number;\n /**\n * Enable spring transition. Setting this option to `true` or a `number` will disable the `duration` option.\n * If `true`, a default stiffness of 0.1 will be used, if a `number` is given, it will be used instead.\n */\n spring?: true | number;\n /**\n * When spring physics are enabled, use the mass option to make the object heavier or lighter. Defaults to `1`.\n */\n mass?: number;\n /**\n * The precision for when to consider the tween finished.\n * Defaults to `0.00001`.\n */\n precision?: number;\n /**\n * A callback executed on start.\n */\n onStart?: (progress: number) => void;\n /**\n * A callback executed each time the progress is updated.\n */\n onProgress?: (progress: number) => void;\n /**\n * A callback executed when the tween is finished.\n */\n onFinish?: (progress: number) => void;\n}\n\n/**\n * Normalize a easing function with default fallbacks.\n */\nexport function normalizeEase(ease: EasingFunction | BezierCurve): EasingFunction {\n if (ease === undefined) {\n return linear;\n }\n\n if (isArray(ease)) {\n return cubicBezier(...ease);\n }\n\n return ease;\n}\n\n/**\n * Tween from 0 to 1.\n * @link https://js-toolkit.studiometa.dev/utils/tween.html\n */\nexport function tween(callback: (progress: number) => unknown, options: TweenOptions = {}): Tween {\n const raf = useRaf();\n\n let progressValue = 0;\n let easedProgress = 0;\n let velocity = 0;\n\n const isSmooth = options.smooth !== undefined && (isNumber(options.smooth) || options.smooth);\n const isSpring = options.spring !== undefined && (isNumber(options.spring) || options.spring);\n const stiffness = isNumber(options.spring) ? options.spring : 0.1;\n const mass = isNumber(options.mass) ? options.mass : 1;\n const damping = isNumber(options.smooth) ? options.smooth : 0.1;\n const precision = options.precision ?? DEFAULT_PROGRESS_PRECISION;\n const ease = normalizeEase(options.easing);\n\n let delay = options.delay ?? 0;\n delay *= 1000;\n let duration = options.duration ?? 1;\n duration *= 1000;\n\n /* eslint-disable @typescript-eslint/no-use-before-define */\n let startTime = getStartTime();\n let endTime = getEndTime(startTime);\n /* eslint-enable @typescript-eslint/no-use-before-define */\n\n const key = `tw-${id}`;\n id += 1;\n\n const { onStart = noop, onProgress = noop, onFinish = noop } = options;\n let isRunning = false;\n\n /**\n * Pause the animation.\n */\n function pause() {\n isRunning = false;\n raf.remove(key);\n }\n\n /**\n * Set the progress value.\n */\n function progress(newProgress: number) {\n if (newProgress === undefined) {\n return easedProgress;\n }\n\n let shouldStop = false;\n\n progressValue = newProgress;\n if (isSpring) {\n [easedProgress, velocity] = spring(\n progressValue,\n easedProgress,\n velocity,\n stiffness,\n damping,\n mass,\n precision,\n );\n } else {\n easedProgress = isSmooth\n ? damp(progressValue, easedProgress, damping, precision)\n : ease(progressValue);\n }\n\n // Stop when reaching precision\n if (Math.abs(1 - easedProgress) < precision) {\n progressValue = 1;\n easedProgress = 1;\n shouldStop = true;\n }\n\n callback(easedProgress);\n onProgress(easedProgress);\n\n if (shouldStop) {\n pause();\n requestAnimationFrame(() => onFinish(easedProgress));\n }\n\n return easedProgress;\n }\n\n /**\n * Loop for rendering the animation.\n */\n function tick(props: { time: number }) {\n progress(clamp01(map(props.time, startTime, endTime, 0, 1)));\n }\n\n function getStartTime() {\n return performance.now() + delay;\n }\n\n function getEndTime(time: number) {\n return isSmooth ? inertiaFinalValue(time, 1) : time + duration;\n }\n\n /**\n * Play the animation.\n */\n function start() {\n onStart(0);\n startTime = getStartTime();\n endTime = getEndTime(startTime);\n progressValue = 0;\n easedProgress = 0;\n isRunning = true;\n\n raf.add(key, tick);\n }\n\n /**\n * Play a paused animation.\n */\n function play() {\n if (isRunning) {\n return;\n }\n\n startTime = getStartTime() - lerp(0, duration, progressValue);\n endTime = getEndTime(startTime);\n isRunning = true;\n\n raf.add(key, tick);\n }\n\n return {\n start,\n finish: () => progress(1),\n pause,\n play,\n progress,\n };\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const version: '3.9.0-beta.1';
1
+ export declare const version: '3.9.0';
package/dist/version.js CHANGED
@@ -1,4 +1,4 @@
1
- const version = "3.9.0-beta.1";
1
+ const version = "3.9.0";
2
2
  export {
3
3
  version
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@studiometa/js-toolkit",
3
- "version": "3.9.0-beta.1",
3
+ "version": "3.9.0",
4
4
  "description": "A set of useful little bits of JavaScript to boost your project! 🚀",
5
5
  "publishConfig": {
6
6
  "access": "public"