@gxpl/sdk 0.0.7 → 0.0.8

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 (283) hide show
  1. package/{dist → lib}/index.d.ts +3 -4
  2. package/lib/sdk/FontFaceGenerator/FontFaceGenerator.js +28 -0
  3. package/lib/sdk/ScrollPlaybackVideoManager/ScrollPlaybackVideoManager.js +221 -0
  4. package/lib/sdk/VideoDecoder/VideoDecoder.js +184 -0
  5. package/{dist → lib}/sdk/schemas/article/Article.schema.d.ts +12 -12
  6. package/{dist → lib}/sdk/schemas/article/ItemBase.schema.d.ts +10 -10
  7. package/{dist → lib}/sdk/schemas/article/RichTextItem.schema.d.ts +30 -30
  8. package/{dist → lib}/sdk/schemas/article/Section.schema.d.ts +3 -3
  9. package/{dist → lib}/sdk/types/component/Component.d.ts +1 -1
  10. package/{dist → lib}/sdk/types/keyframe/Keyframe.d.ts +1 -1
  11. package/lib/sdk/types/project/Meta.js +2 -0
  12. package/lib/sdk/types/project/Page.js +2 -0
  13. package/lib/sdk/types/project/Project.js +2 -0
  14. package/lib/sdk-nextjs/common/useCurrentLayout.js +42 -0
  15. package/lib/sdk-nextjs/common/useExemplary.js +13 -0
  16. package/lib/sdk-nextjs/common/useItemFXData.js +36 -0
  17. package/lib/sdk-nextjs/common/useKeyframeValue.js +75 -0
  18. package/lib/sdk-nextjs/common/useRegisterResize.js +22 -0
  19. package/lib/sdk-nextjs/components/Article.js +41 -0
  20. package/lib/sdk-nextjs/components/ArticleWrapper.js +12 -0
  21. package/lib/sdk-nextjs/components/Head.js +32 -0
  22. package/lib/sdk-nextjs/components/Page.js +20 -0
  23. package/{dist → lib}/sdk-nextjs/components/ScrollPlaybackVideo.d.ts +1 -1
  24. package/lib/sdk-nextjs/components/ScrollPlaybackVideo.js +46 -0
  25. package/lib/sdk-nextjs/components/Section/Section.js +85 -0
  26. package/lib/sdk-nextjs/components/Section/SectionImage.js +24 -0
  27. package/lib/sdk-nextjs/components/Section/SectionVideo.js +91 -0
  28. package/lib/sdk-nextjs/components/Section/useSectionHeightMap.js +20 -0
  29. package/lib/sdk-nextjs/components/items/CodeEmbedItem/CodeEmbedItem.js +120 -0
  30. package/lib/sdk-nextjs/components/items/CodeEmbedItem/useCodeEmbedItem.js +24 -0
  31. package/lib/sdk-nextjs/components/items/ComponentItem/ComponentItem.js +51 -0
  32. package/lib/sdk-nextjs/components/items/ComponentItem/useComponentItem.js +25 -0
  33. package/lib/sdk-nextjs/components/items/CompoundItem/CompoundChild.js +102 -0
  34. package/lib/sdk-nextjs/components/items/CompoundItem/CompoundItem.js +53 -0
  35. package/lib/sdk-nextjs/components/items/CompoundItem/useCompoundItem.js +16 -0
  36. package/lib/sdk-nextjs/components/items/CustomItem/CustomItem.js +40 -0
  37. package/{dist → lib}/sdk-nextjs/components/items/EmbedVideoItem/VimeoEmbed.d.ts +2 -2
  38. package/lib/sdk-nextjs/components/items/EmbedVideoItem/VimeoEmbed.js +170 -0
  39. package/lib/sdk-nextjs/components/items/EmbedVideoItem/YoutubeEmbed.js +166 -0
  40. package/lib/sdk-nextjs/components/items/EmbedVideoItem/useEmbedVideoItem.js +29 -0
  41. package/lib/sdk-nextjs/components/items/FileItem/ImageItem.js +140 -0
  42. package/lib/sdk-nextjs/components/items/FileItem/VideoItem.js +227 -0
  43. package/{dist → lib}/sdk-nextjs/components/items/FileItem/useFileItem.d.ts +1 -1
  44. package/lib/sdk-nextjs/components/items/FileItem/useFileItem.js +48 -0
  45. package/lib/sdk-nextjs/components/items/GroupItem/GroupItem.js +55 -0
  46. package/lib/sdk-nextjs/components/items/GroupItem/useGroupItem.js +22 -0
  47. package/lib/sdk-nextjs/components/items/Item.js +175 -0
  48. package/{dist → lib}/sdk-nextjs/components/items/LinkWrapper.d.ts +1 -1
  49. package/lib/sdk-nextjs/components/items/LinkWrapper.js +27 -0
  50. package/lib/sdk-nextjs/components/items/RectangleItem/RectangleItem.js +130 -0
  51. package/lib/sdk-nextjs/components/items/RectangleItem/useRectangleItem.js +54 -0
  52. package/lib/sdk-nextjs/components/items/RichTextItem/RichTextItem.js +83 -0
  53. package/lib/sdk-nextjs/components/items/RichTextItem/useRichTextItem.js +12 -0
  54. package/lib/sdk-nextjs/components/items/RichTextWrapper.js +10 -0
  55. package/lib/sdk-nextjs/components/items/itemsMap.js +28 -0
  56. package/lib/sdk-nextjs/components/items/useDraggable.js +177 -0
  57. package/lib/sdk-nextjs/components/items/useItemAngle.js +10 -0
  58. package/lib/sdk-nextjs/components/items/useItemArea.js +21 -0
  59. package/lib/sdk-nextjs/components/items/useItemPointerEvents.js +23 -0
  60. package/lib/sdk-nextjs/components/items/useItemScale.js +12 -0
  61. package/lib/sdk-nextjs/components/items/useItemTriggers.js +16 -0
  62. package/lib/sdk-nextjs/components/items/useRichTextItemValues.js +38 -0
  63. package/lib/sdk-nextjs/components/items/useSizing.js +22 -0
  64. package/lib/sdk-nextjs/components/items/useStickyItemTop.js +17 -0
  65. package/lib/sdk-nextjs/components/useLayoutContext.js +9 -0
  66. package/{dist → lib}/sdk-nextjs/interactions/CSSPropertyNameMap.d.ts +2 -2
  67. package/lib/sdk-nextjs/interactions/CSSPropertyNameMap.js +38 -0
  68. package/lib/sdk-nextjs/interactions/InteractionsRegistry.js +355 -0
  69. package/lib/sdk-nextjs/interactions/ItemInteractionCtrl.js +72 -0
  70. package/lib/sdk-nextjs/interactions/getTransition.js +20 -0
  71. package/{dist → lib}/sdk-nextjs/interactions/types.d.ts +3 -3
  72. package/lib/sdk-nextjs/interactions/useItemInteractionCtrl.js +16 -0
  73. package/{dist → lib}/sdk-nextjs/provider/ArticleRectContext.d.ts +1 -1
  74. package/lib/sdk-nextjs/provider/ArticleRectContext.js +5 -0
  75. package/{dist → lib}/sdk-nextjs/provider/CntrlContext.d.ts +1 -1
  76. package/lib/sdk-nextjs/provider/CntrlContext.js +6 -0
  77. package/lib/sdk-nextjs/provider/CntrlProvider.js +10 -0
  78. package/lib/sdk-nextjs/provider/CntrlSdkContext.js +76 -0
  79. package/lib/sdk-nextjs/provider/CustomItemRegistry.js +16 -0
  80. package/{dist → lib}/sdk-nextjs/provider/CustomSectionRegistry.d.ts +1 -1
  81. package/lib/sdk-nextjs/provider/CustomSectionRegistry.js +21 -0
  82. package/{dist → lib}/sdk-nextjs/provider/InteractionsContext.d.ts +1 -1
  83. package/lib/sdk-nextjs/provider/InteractionsContext.js +52 -0
  84. package/{dist → lib}/sdk-nextjs/provider/Keyframes.d.ts +1 -1
  85. package/lib/sdk-nextjs/provider/Keyframes.js +12 -0
  86. package/lib/sdk-nextjs/provider/KeyframesContext.d.ts +2 -0
  87. package/lib/sdk-nextjs/provider/KeyframesContext.js +6 -0
  88. package/lib/sdk-nextjs/provider/LayoutContext.d.ts +1 -0
  89. package/lib/sdk-nextjs/provider/LayoutContext.js +5 -0
  90. package/{dist → lib}/sdk-nextjs/provider/WebGLContextManagerContext.d.ts +1 -1
  91. package/lib/sdk-nextjs/provider/WebGLContextManagerContext.js +6 -0
  92. package/lib/sdk-nextjs/provider/defaultContext.js +9 -0
  93. package/lib/sdk-nextjs/provider/useCntrlContext.js +9 -0
  94. package/lib/sdk-nextjs/utils/Animator/Animator.js +443 -0
  95. package/lib/sdk-nextjs/utils/ArticleRectManager/ArticleRectObserver.js +88 -0
  96. package/lib/sdk-nextjs/utils/ArticleRectManager/useArticleRectObserver.js +18 -0
  97. package/lib/sdk-nextjs/utils/ArticleRectManager/useSectionRegistry.js +14 -0
  98. package/lib/sdk-nextjs/utils/EventEmitter.js +37 -0
  99. package/lib/sdk-nextjs/utils/RichTextConverter/RichTextConverter.js +288 -0
  100. package/lib/sdk-nextjs/utils/ScaleAnchorMap.js +15 -0
  101. package/lib/sdk-nextjs/utils/Youtube/YouTubeIframeApiLoader.js +64 -0
  102. package/lib/sdk-nextjs/utils/Youtube/YoutubeIframeApi.js +12 -0
  103. package/lib/sdk-nextjs/utils/Youtube/useYouTubeIframeApi.js +13 -0
  104. package/lib/sdk-nextjs/utils/areFillsVisible/areFillsVisible.js +22 -0
  105. package/lib/sdk-nextjs/utils/binSearchInsertAt.js +35 -0
  106. package/lib/sdk-nextjs/utils/checkOverflowClipSupport.js +18 -0
  107. package/lib/sdk-nextjs/utils/effects/useImageFx.js +114 -0
  108. package/lib/sdk-nextjs/utils/effects/useVideoFx.js +117 -0
  109. package/lib/sdk-nextjs/utils/getAnchoredItemTop.js +14 -0
  110. package/lib/sdk-nextjs/utils/getCompoundBoundaryStyles.js +60 -0
  111. package/lib/sdk-nextjs/utils/getFill.js +42 -0
  112. package/lib/sdk-nextjs/utils/getFontFamilyValue.js +6 -0
  113. package/lib/sdk-nextjs/utils/getItemTopStyle.js +17 -0
  114. package/lib/sdk-nextjs/utils/getStyleFromItemStateAndParams.js +8 -0
  115. package/lib/sdk-nextjs/utils/getValidYoutubeUrl.js +33 -0
  116. package/lib/sdk-nextjs/utils/isItemType.js +6 -0
  117. package/lib/sdk-nextjs/utils/rangeMap.js +11 -0
  118. package/lib/sdk-nextjs/utils/useElementRect.js +24 -0
  119. package/lib/utils.js +30 -0
  120. package/package.json +3 -3
  121. package/dist/cli.js +0 -64
  122. package/dist/index.js +0 -7765
  123. package/dist/index.mjs +0 -7748
  124. package/dist/sdk/Client/Client.test.d.ts +0 -1
  125. package/dist/sdk/Client/__mock__/articleMock.d.ts +0 -2
  126. package/dist/sdk/Client/__mock__/keyframesMock.d.ts +0 -2
  127. package/dist/sdk/Client/__mock__/projectMock.d.ts +0 -2
  128. package/dist/sdk/Components/ControlSlider/ControlSlider.d.ts +0 -90
  129. package/dist/sdk/Components/ControlSlider/ControlSliderComponent.d.ts +0 -519
  130. package/dist/sdk/Components/ImageRevealSlider/ControlImageRevealSliderComponent.d.ts +0 -209
  131. package/dist/sdk/Components/ImageRevealSlider/ImageRevealSlider.d.ts +0 -38
  132. package/dist/sdk/Components/components.d.ts +0 -2
  133. package/dist/sdk/Components/helpers/RichTextRenderer/RichTextRenderer.d.ts +0 -6
  134. package/dist/sdk/Components/helpers/SvgImage/SvgImage.d.ts +0 -9
  135. package/dist/sdk/Components/utils/scalingValue.d.ts +0 -1
  136. package/dist/sdk/FontFaceGenerator/FontFaceGenerator.test.d.ts +0 -1
  137. package/dist/sdk/schemas/shared/FillLayer.schema.d.ts +0 -186
  138. package/dist/sdk-nextjs/components/LayoutStyle.d.ts +0 -9
  139. package/dist/sdk-nextjs/components/Section/useSectionColor.d.ts +0 -4
  140. package/dist/sdk-nextjs/provider/KeyframesContext.d.ts +0 -2
  141. package/dist/sdk-nextjs/provider/LayoutContext.d.ts +0 -1
  142. package/dist/sdk-nextjs/utils/StickyManager/StickyManager.d.ts +0 -10
  143. package/dist/sdk-nextjs/utils/areFillsVisible/areFillsVisible.test.d.ts +0 -1
  144. package/dist/sdk-nextjs/utils/castObject.d.ts +0 -5
  145. package/dist/sdk-nextjs/utils/getInvertedRanges.d.ts +0 -10
  146. package/dist/sdk.css +0 -1
  147. /package/{dist → lib}/cli.d.ts +0 -0
  148. /package/{dist → lib}/sdk/Client/Client.d.ts +0 -0
  149. /package/{dist → lib}/sdk/Client/Client.js +0 -0
  150. /package/{dist → lib}/sdk/FontFaceGenerator/FontFaceGenerator.d.ts +0 -0
  151. /package/{dist → lib}/sdk/ScrollPlaybackVideoManager/ScrollPlaybackVideoManager.d.ts +0 -0
  152. /package/{dist → lib}/sdk/VideoDecoder/VideoDecoder.d.ts +0 -0
  153. /package/{dist → lib}/sdk/schemas/article/Article.schema.js +0 -0
  154. /package/{dist → lib}/sdk/schemas/article/FillLayer.schema.d.ts +0 -0
  155. /package/{dist → lib}/sdk/schemas/article/FillLayer.schema.js +0 -0
  156. /package/{dist → lib}/sdk/schemas/article/Interaction.schema.d.ts +0 -0
  157. /package/{dist → lib}/sdk/schemas/article/Interaction.schema.js +0 -0
  158. /package/{dist → lib}/sdk/schemas/article/Item.schema.d.ts +0 -0
  159. /package/{dist → lib}/sdk/schemas/article/Item.schema.js +0 -0
  160. /package/{dist → lib}/sdk/schemas/article/ItemArea.schema.d.ts +0 -0
  161. /package/{dist → lib}/sdk/schemas/article/ItemArea.schema.js +0 -0
  162. /package/{dist → lib}/sdk/schemas/article/ItemBase.schema.js +0 -0
  163. /package/{dist → lib}/sdk/schemas/article/ItemState.schema.d.ts +0 -0
  164. /package/{dist → lib}/sdk/schemas/article/ItemState.schema.js +0 -0
  165. /package/{dist → lib}/sdk/schemas/article/RichTextItem.schema.js +0 -0
  166. /package/{dist → lib}/sdk/schemas/article/Section.schema.js +0 -0
  167. /package/{dist → lib}/sdk/schemas/keyframe/Keyframes.schema.d.ts +0 -0
  168. /package/{dist → lib}/sdk/schemas/keyframe/Keyframes.schema.js +0 -0
  169. /package/{dist → lib}/sdk/schemas/project/Layout.schema.d.ts +0 -0
  170. /package/{dist → lib}/sdk/schemas/project/Layout.schema.js +0 -0
  171. /package/{dist → lib}/sdk/schemas/project/Project.schema.d.ts +0 -0
  172. /package/{dist → lib}/sdk/schemas/project/Project.schema.js +0 -0
  173. /package/{dist → lib}/sdk/types/article/Article.d.ts +0 -0
  174. /package/{dist/sdk/types/article/FX.js → lib/sdk/types/article/Article.js} +0 -0
  175. /package/{dist → lib}/sdk/types/article/ArticleItemType.d.ts +0 -0
  176. /package/{dist → lib}/sdk/types/article/ArticleItemType.js +0 -0
  177. /package/{dist → lib}/sdk/types/article/CompoundSettings.d.ts +0 -0
  178. /package/{dist/sdk/types/article/Interaction.js → lib/sdk/types/article/CompoundSettings.js} +0 -0
  179. /package/{dist → lib}/sdk/types/article/FX.d.ts +0 -0
  180. /package/{dist/sdk/types/project/Layout.js → lib/sdk/types/article/FX.js} +0 -0
  181. /package/{dist → lib}/sdk/types/article/Interaction.d.ts +0 -0
  182. /package/{dist/sdk/types/project/Meta.js → lib/sdk/types/article/Interaction.js} +0 -0
  183. /package/{dist → lib}/sdk/types/article/Item.d.ts +0 -0
  184. /package/{dist → lib}/sdk/types/article/Item.js +0 -0
  185. /package/{dist → lib}/sdk/types/article/ItemArea.d.ts +0 -0
  186. /package/{dist → lib}/sdk/types/article/ItemArea.js +0 -0
  187. /package/{dist → lib}/sdk/types/article/ItemState.d.ts +0 -0
  188. /package/{dist → lib}/sdk/types/article/ItemState.js +0 -0
  189. /package/{dist → lib}/sdk/types/article/RichText.d.ts +0 -0
  190. /package/{dist → lib}/sdk/types/article/RichText.js +0 -0
  191. /package/{dist → lib}/sdk/types/article/Section.d.ts +0 -0
  192. /package/{dist → lib}/sdk/types/article/Section.js +0 -0
  193. /package/{dist/sdk/types/project/Page.js → lib/sdk/types/component/Component.js} +0 -0
  194. /package/{dist → lib}/sdk/types/keyframe/Keyframe.js +0 -0
  195. /package/{dist → lib}/sdk/types/project/Fonts.d.ts +0 -0
  196. /package/{dist → lib}/sdk/types/project/Fonts.js +0 -0
  197. /package/{dist → lib}/sdk/types/project/Layout.d.ts +0 -0
  198. /package/{dist/sdk/types/project/Project.js → lib/sdk/types/project/Layout.js} +0 -0
  199. /package/{dist → lib}/sdk/types/project/Meta.d.ts +0 -0
  200. /package/{dist → lib}/sdk/types/project/Page.d.ts +0 -0
  201. /package/{dist → lib}/sdk/types/project/Project.d.ts +0 -0
  202. /package/{dist → lib}/sdk-nextjs/common/useCurrentLayout.d.ts +0 -0
  203. /package/{dist → lib}/sdk-nextjs/common/useExemplary.d.ts +0 -0
  204. /package/{dist → lib}/sdk-nextjs/common/useItemFXData.d.ts +0 -0
  205. /package/{dist → lib}/sdk-nextjs/common/useKeyframeValue.d.ts +0 -0
  206. /package/{dist → lib}/sdk-nextjs/common/useRegisterResize.d.ts +0 -0
  207. /package/{dist → lib}/sdk-nextjs/components/Article.d.ts +0 -0
  208. /package/{dist → lib}/sdk-nextjs/components/ArticleWrapper.d.ts +0 -0
  209. /package/{dist → lib}/sdk-nextjs/components/Head.d.ts +0 -0
  210. /package/{dist → lib}/sdk-nextjs/components/Page.d.ts +0 -0
  211. /package/{dist → lib}/sdk-nextjs/components/Section/Section.d.ts +0 -0
  212. /package/{dist → lib}/sdk-nextjs/components/Section/SectionImage.d.ts +0 -0
  213. /package/{dist → lib}/sdk-nextjs/components/Section/SectionVideo.d.ts +0 -0
  214. /package/{dist → lib}/sdk-nextjs/components/Section/useSectionHeightMap.d.ts +0 -0
  215. /package/{dist → lib}/sdk-nextjs/components/items/CodeEmbedItem/CodeEmbedItem.d.ts +0 -0
  216. /package/{dist → lib}/sdk-nextjs/components/items/CodeEmbedItem/useCodeEmbedItem.d.ts +0 -0
  217. /package/{dist → lib}/sdk-nextjs/components/items/ComponentItem/ComponentItem.d.ts +0 -0
  218. /package/{dist → lib}/sdk-nextjs/components/items/ComponentItem/useComponentItem.d.ts +0 -0
  219. /package/{dist → lib}/sdk-nextjs/components/items/CompoundItem/CompoundChild.d.ts +0 -0
  220. /package/{dist → lib}/sdk-nextjs/components/items/CompoundItem/CompoundItem.d.ts +0 -0
  221. /package/{dist → lib}/sdk-nextjs/components/items/CompoundItem/useCompoundItem.d.ts +0 -0
  222. /package/{dist → lib}/sdk-nextjs/components/items/CustomItem/CustomItem.d.ts +0 -0
  223. /package/{dist → lib}/sdk-nextjs/components/items/EmbedVideoItem/YoutubeEmbed.d.ts +0 -0
  224. /package/{dist → lib}/sdk-nextjs/components/items/EmbedVideoItem/useEmbedVideoItem.d.ts +0 -0
  225. /package/{dist → lib}/sdk-nextjs/components/items/FileItem/ImageItem.d.ts +0 -0
  226. /package/{dist → lib}/sdk-nextjs/components/items/FileItem/VideoItem.d.ts +0 -0
  227. /package/{dist → lib}/sdk-nextjs/components/items/GroupItem/GroupItem.d.ts +0 -0
  228. /package/{dist → lib}/sdk-nextjs/components/items/GroupItem/useGroupItem.d.ts +0 -0
  229. /package/{dist → lib}/sdk-nextjs/components/items/Item.d.ts +0 -0
  230. /package/{dist → lib}/sdk-nextjs/components/items/RectangleItem/RectangleItem.d.ts +0 -0
  231. /package/{dist → lib}/sdk-nextjs/components/items/RectangleItem/useRectangleItem.d.ts +0 -0
  232. /package/{dist → lib}/sdk-nextjs/components/items/RichTextItem/RichTextItem.d.ts +0 -0
  233. /package/{dist → lib}/sdk-nextjs/components/items/RichTextItem/useRichTextItem.d.ts +0 -0
  234. /package/{dist → lib}/sdk-nextjs/components/items/RichTextWrapper.d.ts +0 -0
  235. /package/{dist → lib}/sdk-nextjs/components/items/itemsMap.d.ts +0 -0
  236. /package/{dist → lib}/sdk-nextjs/components/items/useDraggable.d.ts +0 -0
  237. /package/{dist → lib}/sdk-nextjs/components/items/useItemAngle.d.ts +0 -0
  238. /package/{dist → lib}/sdk-nextjs/components/items/useItemArea.d.ts +0 -0
  239. /package/{dist → lib}/sdk-nextjs/components/items/useItemPointerEvents.d.ts +0 -0
  240. /package/{dist → lib}/sdk-nextjs/components/items/useItemScale.d.ts +0 -0
  241. /package/{dist → lib}/sdk-nextjs/components/items/useItemTriggers.d.ts +0 -0
  242. /package/{dist → lib}/sdk-nextjs/components/items/useRichTextItemValues.d.ts +0 -0
  243. /package/{dist → lib}/sdk-nextjs/components/items/useSizing.d.ts +0 -0
  244. /package/{dist → lib}/sdk-nextjs/components/items/useStickyItemTop.d.ts +0 -0
  245. /package/{dist → lib}/sdk-nextjs/components/useLayoutContext.d.ts +0 -0
  246. /package/{dist → lib}/sdk-nextjs/interactions/InteractionsRegistry.d.ts +0 -0
  247. /package/{dist → lib}/sdk-nextjs/interactions/ItemInteractionCtrl.d.ts +0 -0
  248. /package/{dist → lib}/sdk-nextjs/interactions/getTransition.d.ts +0 -0
  249. /package/{dist/sdk/types/article/Article.js → lib/sdk-nextjs/interactions/types.js} +0 -0
  250. /package/{dist → lib}/sdk-nextjs/interactions/useItemInteractionCtrl.d.ts +0 -0
  251. /package/{dist → lib}/sdk-nextjs/provider/CntrlProvider.d.ts +0 -0
  252. /package/{dist → lib}/sdk-nextjs/provider/CntrlSdkContext.d.ts +0 -0
  253. /package/{dist → lib}/sdk-nextjs/provider/CustomItemRegistry.d.ts +0 -0
  254. /package/{dist → lib}/sdk-nextjs/provider/CustomItemTypes.d.ts +0 -0
  255. /package/{dist/sdk/types/article/CompoundSettings.js → lib/sdk-nextjs/provider/CustomItemTypes.js} +0 -0
  256. /package/{dist → lib}/sdk-nextjs/provider/defaultContext.d.ts +0 -0
  257. /package/{dist → lib}/sdk-nextjs/provider/useCntrlContext.d.ts +0 -0
  258. /package/{dist → lib}/sdk-nextjs/utils/Animator/Animator.d.ts +0 -0
  259. /package/{dist → lib}/sdk-nextjs/utils/ArticleRectManager/ArticleRectObserver.d.ts +0 -0
  260. /package/{dist → lib}/sdk-nextjs/utils/ArticleRectManager/useArticleRectObserver.d.ts +0 -0
  261. /package/{dist → lib}/sdk-nextjs/utils/ArticleRectManager/useSectionRegistry.d.ts +0 -0
  262. /package/{dist → lib}/sdk-nextjs/utils/EventEmitter.d.ts +0 -0
  263. /package/{dist → lib}/sdk-nextjs/utils/RichTextConverter/RichTextConverter.d.ts +0 -0
  264. /package/{dist → lib}/sdk-nextjs/utils/ScaleAnchorMap.d.ts +0 -0
  265. /package/{dist → lib}/sdk-nextjs/utils/Youtube/YouTubeIframeApiLoader.d.ts +0 -0
  266. /package/{dist → lib}/sdk-nextjs/utils/Youtube/YoutubeIframeApi.d.ts +0 -0
  267. /package/{dist → lib}/sdk-nextjs/utils/Youtube/useYouTubeIframeApi.d.ts +0 -0
  268. /package/{dist → lib}/sdk-nextjs/utils/areFillsVisible/areFillsVisible.d.ts +0 -0
  269. /package/{dist → lib}/sdk-nextjs/utils/binSearchInsertAt.d.ts +0 -0
  270. /package/{dist → lib}/sdk-nextjs/utils/checkOverflowClipSupport.d.ts +0 -0
  271. /package/{dist → lib}/sdk-nextjs/utils/effects/useImageFx.d.ts +0 -0
  272. /package/{dist → lib}/sdk-nextjs/utils/effects/useVideoFx.d.ts +0 -0
  273. /package/{dist → lib}/sdk-nextjs/utils/getAnchoredItemTop.d.ts +0 -0
  274. /package/{dist → lib}/sdk-nextjs/utils/getCompoundBoundaryStyles.d.ts +0 -0
  275. /package/{dist → lib}/sdk-nextjs/utils/getFill.d.ts +0 -0
  276. /package/{dist → lib}/sdk-nextjs/utils/getFontFamilyValue.d.ts +0 -0
  277. /package/{dist → lib}/sdk-nextjs/utils/getItemTopStyle.d.ts +0 -0
  278. /package/{dist → lib}/sdk-nextjs/utils/getStyleFromItemStateAndParams.d.ts +0 -0
  279. /package/{dist → lib}/sdk-nextjs/utils/getValidYoutubeUrl.d.ts +0 -0
  280. /package/{dist → lib}/sdk-nextjs/utils/isItemType.d.ts +0 -0
  281. /package/{dist → lib}/sdk-nextjs/utils/rangeMap.d.ts +0 -0
  282. /package/{dist → lib}/sdk-nextjs/utils/useElementRect.d.ts +0 -0
  283. /package/{dist → lib}/utils.d.ts +0 -0
@@ -0,0 +1,443 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Animator = void 0;
4
+ const color_1 = require("@cntrl-site/color");
5
+ const binSearchInsertAt_1 = require("../binSearchInsertAt");
6
+ const rangeMap_1 = require("../rangeMap");
7
+ const Keyframe_1 = require("../../../sdk/types/keyframe/Keyframe");
8
+ const compare = (lhs, rhs) => lhs.position - rhs.position;
9
+ const insertBin = (0, binSearchInsertAt_1.createInsert)(binSearchInsertAt_1.binSearchInsertAt, compare);
10
+ class Animator {
11
+ static pushKeyframeToMap(keyframe, map) {
12
+ insertBin(map[keyframe.type], keyframe);
13
+ }
14
+ constructor(keyframes) {
15
+ this.keyframes = keyframes;
16
+ this.keyframesMap = createKeyframesMap();
17
+ this.fillKeyframesMap();
18
+ }
19
+ getFXParams(valuesMap, pos) {
20
+ const keyframes = this.keyframesMap[Keyframe_1.KeyframeType.FXParams];
21
+ if (!keyframes.length)
22
+ return valuesMap;
23
+ if (keyframes.length === 1) {
24
+ const [keyframe] = keyframes;
25
+ return Object.entries(valuesMap).reduce((acc, [key, fallbackValue]) => {
26
+ var _a;
27
+ acc[key] = (_a = keyframe.value[key]) !== null && _a !== void 0 ? _a : fallbackValue;
28
+ return acc;
29
+ }, {});
30
+ }
31
+ const { start, end } = this.getStartEnd(pos, keyframes);
32
+ return Object.entries(valuesMap).reduce((acc, [key, fallbackValue]) => {
33
+ var _a, _b;
34
+ acc[key] = (0, rangeMap_1.rangeMap)(pos, start.position, end.position, (_a = start.value[key]) !== null && _a !== void 0 ? _a : fallbackValue, (_b = end.value[key]) !== null && _b !== void 0 ? _b : fallbackValue, true);
35
+ return acc;
36
+ }, {});
37
+ }
38
+ getDimensions(values, pos) {
39
+ const keyframes = this.keyframesMap[Keyframe_1.KeyframeType.Dimensions];
40
+ if (!keyframes || !keyframes.length)
41
+ return values;
42
+ if (keyframes.length === 1) {
43
+ const [keyframe] = keyframes;
44
+ return {
45
+ width: keyframe.value.width,
46
+ height: keyframe.value.height
47
+ };
48
+ }
49
+ const { start, end } = this.getStartEnd(pos, keyframes);
50
+ return {
51
+ width: (0, rangeMap_1.rangeMap)(pos, start.position, end.position, start.value.width, end.value.width, true),
52
+ height: (0, rangeMap_1.rangeMap)(pos, start.position, end.position, start.value.height, end.value.height, true)
53
+ };
54
+ }
55
+ getPositions(values, pos) {
56
+ const keyframes = this.keyframesMap[Keyframe_1.KeyframeType.Position];
57
+ if (!keyframes || !keyframes.length)
58
+ return values;
59
+ if (keyframes.length === 1) {
60
+ const [keyframe] = keyframes;
61
+ return {
62
+ left: keyframe.value.left,
63
+ top: keyframe.value.top
64
+ };
65
+ }
66
+ const { start, end } = this.getStartEnd(pos, keyframes);
67
+ return {
68
+ left: (0, rangeMap_1.rangeMap)(pos, start.position, end.position, start.value.left, end.value.left, true),
69
+ top: (0, rangeMap_1.rangeMap)(pos, start.position, end.position, start.value.top, end.value.top, true)
70
+ };
71
+ }
72
+ getBorderFill(values, pos) {
73
+ const keyframes = this.keyframesMap[Keyframe_1.KeyframeType.BorderFill];
74
+ if (!keyframes || !keyframes.length)
75
+ return values;
76
+ if (keyframes.length === 1) {
77
+ const [keyframe] = keyframes;
78
+ return keyframe.value;
79
+ }
80
+ const { start, end } = this.getStartEnd(pos, keyframes);
81
+ return this.getRangeGradient(start, end, pos);
82
+ }
83
+ getFill(values, pos) {
84
+ const keyframes = this.keyframesMap[Keyframe_1.KeyframeType.Fill];
85
+ if (!keyframes || !keyframes.length)
86
+ return values;
87
+ if (keyframes.length === 1) {
88
+ const [keyframe] = keyframes;
89
+ return keyframe.value;
90
+ }
91
+ const { start, end } = this.getStartEnd(pos, keyframes);
92
+ return this.getRangeGradient(start, end, pos);
93
+ }
94
+ getRadius(values, pos) {
95
+ const keyframes = this.keyframesMap[Keyframe_1.KeyframeType.BorderRadius];
96
+ if (!keyframes || !keyframes.length)
97
+ return values;
98
+ if (keyframes.length === 1) {
99
+ const [keyframe] = keyframes;
100
+ return {
101
+ radius: keyframe.value.radius
102
+ };
103
+ }
104
+ const { start, end } = this.getStartEnd(pos, keyframes);
105
+ return {
106
+ radius: (0, rangeMap_1.rangeMap)(pos, start.position, end.position, start.value.radius, end.value.radius, true)
107
+ };
108
+ }
109
+ getBorderWidth(values, pos) {
110
+ const keyframes = this.keyframesMap[Keyframe_1.KeyframeType.BorderWidth];
111
+ if (!keyframes || !keyframes.length)
112
+ return values;
113
+ if (keyframes.length === 1) {
114
+ const [keyframe] = keyframes;
115
+ return {
116
+ borderWidth: keyframe.value.borderWidth
117
+ };
118
+ }
119
+ const { start, end } = this.getStartEnd(pos, keyframes);
120
+ return {
121
+ borderWidth: (0, rangeMap_1.rangeMap)(pos, start.position, end.position, start.value.borderWidth, end.value.borderWidth, true)
122
+ };
123
+ }
124
+ getRotation(values, pos) {
125
+ const keyframes = this.keyframesMap[Keyframe_1.KeyframeType.Rotation];
126
+ if (!keyframes || !keyframes.length)
127
+ return values;
128
+ if (keyframes.length === 1) {
129
+ const [keyframe] = keyframes;
130
+ return {
131
+ angle: keyframe.value.angle
132
+ };
133
+ }
134
+ const { start, end } = this.getStartEnd(pos, keyframes);
135
+ return {
136
+ angle: (0, rangeMap_1.rangeMap)(pos, start.position, end.position, start.value.angle, end.value.angle, true)
137
+ };
138
+ }
139
+ getOpacity(values, pos) {
140
+ const keyframes = this.keyframesMap[Keyframe_1.KeyframeType.Opacity];
141
+ if (!keyframes || !keyframes.length)
142
+ return values;
143
+ if (keyframes.length === 1) {
144
+ const [keyframe] = keyframes;
145
+ return {
146
+ opacity: keyframe.value.opacity
147
+ };
148
+ }
149
+ const { start, end } = this.getStartEnd(pos, keyframes);
150
+ return {
151
+ opacity: (0, rangeMap_1.rangeMap)(pos, start.position, end.position, start.value.opacity, end.value.opacity, true)
152
+ };
153
+ }
154
+ getScale(values, pos) {
155
+ const keyframes = this.keyframesMap[Keyframe_1.KeyframeType.Scale];
156
+ if (!keyframes || !keyframes.length)
157
+ return values;
158
+ if (keyframes.length === 1) {
159
+ const [keyframe] = keyframes;
160
+ return {
161
+ scale: keyframe.value.scale
162
+ };
163
+ }
164
+ const { start, end } = this.getStartEnd(pos, keyframes);
165
+ return {
166
+ scale: (0, rangeMap_1.rangeMap)(pos, start.position, end.position, start.value.scale, end.value.scale, true)
167
+ };
168
+ }
169
+ getBlur(values, pos) {
170
+ const keyframes = this.keyframesMap[Keyframe_1.KeyframeType.Blur];
171
+ if (!keyframes || !keyframes.length)
172
+ return values;
173
+ if (keyframes.length === 1) {
174
+ const [keyframe] = keyframes;
175
+ return {
176
+ blur: keyframe.value.blur
177
+ };
178
+ }
179
+ const { start, end } = this.getStartEnd(pos, keyframes);
180
+ return {
181
+ blur: (0, rangeMap_1.rangeMap)(pos, start.position, end.position, start.value.blur, end.value.blur, true)
182
+ };
183
+ }
184
+ getBackdropBlur(values, pos) {
185
+ const keyframes = this.keyframesMap[Keyframe_1.KeyframeType.BackdropBlur];
186
+ if (!keyframes || !keyframes.length)
187
+ return values;
188
+ if (keyframes.length === 1) {
189
+ const [keyframe] = keyframes;
190
+ return {
191
+ backdropBlur: keyframe.value.backdropBlur
192
+ };
193
+ }
194
+ const { start, end } = this.getStartEnd(pos, keyframes);
195
+ return {
196
+ backdropBlur: (0, rangeMap_1.rangeMap)(pos, start.position, end.position, start.value.backdropBlur, end.value.backdropBlur, true)
197
+ };
198
+ }
199
+ getTextColor(values, pos) {
200
+ const keyframes = this.keyframesMap[Keyframe_1.KeyframeType.TextColor];
201
+ if (!keyframes || !keyframes.length)
202
+ return values;
203
+ if (keyframes.length === 1) {
204
+ const [keyframe] = keyframes;
205
+ return {
206
+ color: keyframe.value.color
207
+ };
208
+ }
209
+ const { start, end } = this.getStartEnd(pos, keyframes);
210
+ return {
211
+ color: this.getRangeColor(start, end, pos)
212
+ };
213
+ }
214
+ getLetterSpacing(values, pos) {
215
+ const keyframes = this.keyframesMap[Keyframe_1.KeyframeType.LetterSpacing];
216
+ if (!keyframes || !keyframes.length)
217
+ return values;
218
+ if (keyframes.length === 1) {
219
+ const [keyframe] = keyframes;
220
+ return {
221
+ letterSpacing: keyframe.value.letterSpacing
222
+ };
223
+ }
224
+ const { start, end } = this.getStartEnd(pos, keyframes);
225
+ return {
226
+ letterSpacing: (0, rangeMap_1.rangeMap)(pos, start.position, end.position, start.value.letterSpacing, end.value.letterSpacing, true)
227
+ };
228
+ }
229
+ getWordSpacing(values, pos) {
230
+ const keyframes = this.keyframesMap[Keyframe_1.KeyframeType.WordSpacing];
231
+ if (!keyframes || !keyframes.length)
232
+ return values;
233
+ if (keyframes.length === 1) {
234
+ const [keyframe] = keyframes;
235
+ return {
236
+ wordSpacing: keyframe.value.wordSpacing
237
+ };
238
+ }
239
+ const { start, end } = this.getStartEnd(pos, keyframes);
240
+ return {
241
+ wordSpacing: (0, rangeMap_1.rangeMap)(pos, start.position, end.position, start.value.wordSpacing, end.value.wordSpacing, true)
242
+ };
243
+ }
244
+ getStartEnd(position, keyframes) {
245
+ const index = (0, binSearchInsertAt_1.binSearchInsertAt)(keyframes, { position }, compare);
246
+ const end = index === keyframes.length ? index - 1 : index;
247
+ const start = end === 0 ? end : end - 1;
248
+ return { start: keyframes[start], end: keyframes[end] };
249
+ }
250
+ fillKeyframesMap() {
251
+ this.keyframesMap = createKeyframesMap();
252
+ for (const keyframe of this.keyframes) {
253
+ Animator.pushKeyframeToMap(keyframe, this.keyframesMap);
254
+ }
255
+ }
256
+ getRangeColor(start, end, position) {
257
+ const rangeAmount = (0, rangeMap_1.rangeMap)(position, start.position, end.position, 0, 1, true);
258
+ const startColor = color_1.CntrlColor.parse(start.value.color);
259
+ const endColor = color_1.CntrlColor.parse(end.value.color);
260
+ const mixedColor = startColor.mix(endColor, rangeAmount);
261
+ return mixedColor.fmt('oklch');
262
+ }
263
+ getRangeGradient(start, end, position) {
264
+ const rangeAmount = (0, rangeMap_1.rangeMap)(position, start.position, end.position, 0, 1, true);
265
+ const allLayerIds = new Set([
266
+ ...start.value.map(layer => layer.id),
267
+ ...end.value.map(layer => layer.id)
268
+ ]);
269
+ const result = [];
270
+ for (const layerId of allLayerIds) {
271
+ const startLayers = start.value.find(layer => layer.id === layerId);
272
+ const endLayers = end.value.find(layer => layer.id === layerId);
273
+ const startLayersArray = Array.isArray(startLayers) ? startLayers : startLayers ? [startLayers] : [];
274
+ const endLayersArray = Array.isArray(endLayers) ? endLayers : endLayers ? [endLayers] : [];
275
+ if (startLayersArray.length > 0 && endLayersArray.length === 0) {
276
+ result.push(...startLayersArray);
277
+ continue;
278
+ }
279
+ if (startLayersArray.length === 0 && endLayersArray.length > 0) {
280
+ result.push(...endLayersArray);
281
+ continue;
282
+ }
283
+ if (startLayersArray.length > 0 && endLayersArray.length > 0) {
284
+ result.push(...this.interpolateFillLayerArray(startLayersArray, endLayersArray, rangeAmount));
285
+ }
286
+ }
287
+ return result;
288
+ }
289
+ interpolateFillLayerArray(startLayers, endLayers, rangeAmount) {
290
+ const startLayerMap = new Map(startLayers.map(layer => [layer.id, layer]));
291
+ const endLayerMap = new Map(endLayers.map(layer => [layer.id, layer]));
292
+ const allLayerIds = new Set([
293
+ ...startLayers.map(layer => layer.id),
294
+ ...endLayers.map(layer => layer.id)
295
+ ]);
296
+ const interpolatedLayers = [];
297
+ for (const layerId of allLayerIds) {
298
+ const startLayer = startLayerMap.get(layerId);
299
+ const endLayer = endLayerMap.get(layerId);
300
+ if (startLayer && !endLayer) {
301
+ interpolatedLayers.push(startLayer);
302
+ continue;
303
+ }
304
+ if (!startLayer && endLayer) {
305
+ interpolatedLayers.push(endLayer);
306
+ continue;
307
+ }
308
+ if (startLayer && endLayer) {
309
+ interpolatedLayers.push(this.interpolateFillLayer(startLayer, endLayer, rangeAmount));
310
+ }
311
+ }
312
+ const result = [];
313
+ for (const startLayer of startLayers) {
314
+ const interpolatedLayer = interpolatedLayers.find(layer => layer.id === startLayer.id);
315
+ if (interpolatedLayer) {
316
+ result.push(interpolatedLayer);
317
+ }
318
+ }
319
+ for (const endLayer of endLayers) {
320
+ if (!startLayerMap.has(endLayer.id)) {
321
+ const interpolatedLayer = interpolatedLayers.find(layer => layer.id === endLayer.id);
322
+ if (interpolatedLayer) {
323
+ result.push(interpolatedLayer);
324
+ }
325
+ }
326
+ }
327
+ return result;
328
+ }
329
+ interpolateFillLayer(startLayer, endLayer, rangeAmount) {
330
+ if (startLayer.type !== endLayer.type) {
331
+ return startLayer;
332
+ }
333
+ switch (startLayer.type) {
334
+ case 'solid': {
335
+ const endSolidLayer = endLayer;
336
+ const startColor = color_1.CntrlColor.parse(startLayer.value);
337
+ const endColor = color_1.CntrlColor.parse(endSolidLayer.value);
338
+ const mixedColor = startColor.mix(endColor, rangeAmount);
339
+ return Object.assign(Object.assign({}, startLayer), { value: mixedColor.fmt('oklch') });
340
+ }
341
+ case 'linear-gradient': {
342
+ const endLinearLayer = endLayer;
343
+ const interpolatedColors = this.interpolateColorStops(startLayer.colors, endLinearLayer.colors, rangeAmount);
344
+ const angle = startLayer.angle + (endLinearLayer.angle - startLayer.angle) * rangeAmount;
345
+ const startPoint = [
346
+ startLayer.start[0] + (endLinearLayer.start[0] - startLayer.start[0]) * rangeAmount,
347
+ startLayer.start[1] + (endLinearLayer.start[1] - startLayer.start[1]) * rangeAmount
348
+ ];
349
+ const endPoint = [
350
+ startLayer.end[0] + (endLinearLayer.end[0] - startLayer.end[0]) * rangeAmount,
351
+ startLayer.end[1] + (endLinearLayer.end[1] - startLayer.end[1]) * rangeAmount
352
+ ];
353
+ return Object.assign(Object.assign({}, startLayer), { colors: interpolatedColors, angle, start: startPoint, end: endPoint });
354
+ }
355
+ case 'radial-gradient': {
356
+ const endRadialLayer = endLayer;
357
+ const interpolatedColors = this.interpolateColorStops(startLayer.colors, endRadialLayer.colors, rangeAmount);
358
+ const angle = startLayer.angle + (endRadialLayer.angle - startLayer.angle) * rangeAmount;
359
+ const center = [
360
+ startLayer.center[0] + (endRadialLayer.center[0] - startLayer.center[0]) * rangeAmount,
361
+ startLayer.center[1] + (endRadialLayer.center[1] - startLayer.center[1]) * rangeAmount
362
+ ];
363
+ const diameter = startLayer.diameter + (endRadialLayer.diameter - startLayer.diameter) * rangeAmount;
364
+ return Object.assign(Object.assign({}, startLayer), { colors: interpolatedColors, angle,
365
+ center,
366
+ diameter });
367
+ }
368
+ case 'conic-gradient': {
369
+ const endConicLayer = endLayer;
370
+ const interpolatedColors = this.interpolateColorStops(startLayer.colors, endConicLayer.colors, rangeAmount);
371
+ const angle = startLayer.angle + (endConicLayer.angle - startLayer.angle) * rangeAmount;
372
+ const center = [
373
+ startLayer.center[0] + (endConicLayer.center[0] - startLayer.center[0]) * rangeAmount,
374
+ startLayer.center[1] + (endConicLayer.center[1] - startLayer.center[1]) * rangeAmount
375
+ ];
376
+ return Object.assign(Object.assign({}, startLayer), { colors: interpolatedColors, angle,
377
+ center });
378
+ }
379
+ case 'image': {
380
+ const endImageLayer = endLayer;
381
+ const opacity = startLayer.opacity + (endImageLayer.opacity - startLayer.opacity) * rangeAmount;
382
+ const backgroundSize = startLayer.backgroundSize + (endImageLayer.backgroundSize - startLayer.backgroundSize) * rangeAmount;
383
+ return Object.assign(Object.assign({}, startLayer), { opacity,
384
+ backgroundSize });
385
+ }
386
+ default:
387
+ return startLayer;
388
+ }
389
+ }
390
+ interpolateColorStops(startColors, endColors, rangeAmount) {
391
+ const startColorMap = new Map(startColors.map(stop => [stop.id, stop]));
392
+ const endColorMap = new Map(endColors.map(stop => [stop.id, stop]));
393
+ const allStopIds = new Set([
394
+ ...startColors.map(stop => stop.id),
395
+ ...endColors.map(stop => stop.id)
396
+ ]);
397
+ const interpolatedStops = [];
398
+ for (const stopId of allStopIds) {
399
+ const startStop = startColorMap.get(stopId);
400
+ const endStop = endColorMap.get(stopId);
401
+ if (startStop && !endStop) {
402
+ interpolatedStops.push(startStop);
403
+ continue;
404
+ }
405
+ if (!startStop && endStop) {
406
+ interpolatedStops.push(endStop);
407
+ continue;
408
+ }
409
+ if (startStop && endStop) {
410
+ const startColor = color_1.CntrlColor.parse(startStop.value);
411
+ const endColor = color_1.CntrlColor.parse(endStop.value);
412
+ const mixedColor = startColor.mix(endColor, rangeAmount);
413
+ const position = startStop.position + (endStop.position - startStop.position) * rangeAmount;
414
+ interpolatedStops.push({
415
+ id: stopId,
416
+ value: mixedColor.fmt('oklch'),
417
+ position
418
+ });
419
+ }
420
+ }
421
+ return interpolatedStops.sort((a, b) => a.position - b.position);
422
+ }
423
+ }
424
+ exports.Animator = Animator;
425
+ function createKeyframesMap() {
426
+ return {
427
+ [Keyframe_1.KeyframeType.Dimensions]: [],
428
+ [Keyframe_1.KeyframeType.Position]: [],
429
+ [Keyframe_1.KeyframeType.BorderWidth]: [],
430
+ [Keyframe_1.KeyframeType.BorderRadius]: [],
431
+ [Keyframe_1.KeyframeType.Rotation]: [],
432
+ [Keyframe_1.KeyframeType.BorderFill]: [],
433
+ [Keyframe_1.KeyframeType.Opacity]: [],
434
+ [Keyframe_1.KeyframeType.Scale]: [],
435
+ [Keyframe_1.KeyframeType.Blur]: [],
436
+ [Keyframe_1.KeyframeType.BackdropBlur]: [],
437
+ [Keyframe_1.KeyframeType.LetterSpacing]: [],
438
+ [Keyframe_1.KeyframeType.WordSpacing]: [],
439
+ [Keyframe_1.KeyframeType.TextColor]: [],
440
+ [Keyframe_1.KeyframeType.FXParams]: [],
441
+ [Keyframe_1.KeyframeType.Fill]: []
442
+ };
443
+ }
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ArticleRectObserver = void 0;
7
+ const EventEmitter_1 = require("../EventEmitter");
8
+ const resize_observer_polyfill_1 = __importDefault(require("resize-observer-polyfill"));
9
+ class ArticleRectObserver extends EventEmitter_1.EventEmitter {
10
+ constructor() {
11
+ super();
12
+ this.articleWidth = 0;
13
+ this.registry = new Map();
14
+ this.scrollPos = window.scrollY;
15
+ this.animationFrame = NaN;
16
+ this.parent = undefined;
17
+ this.sectionsScrollMap = new Map();
18
+ this.handleScroll = (scroll) => {
19
+ this.setScroll(scroll / this.articleWidth);
20
+ };
21
+ this.resizeObserver = new resize_observer_polyfill_1.default(this.handleResize.bind(this));
22
+ }
23
+ get scroll() {
24
+ return this.scrollPos;
25
+ }
26
+ getSectionScroll(sectionId) {
27
+ const sectionTop = this.sectionsScrollMap.get(sectionId);
28
+ if (sectionTop === undefined)
29
+ return 0;
30
+ return -(sectionTop / this.articleWidth - this.scrollPos);
31
+ }
32
+ getSectionTop(sectionId) {
33
+ const sectionTop = this.sectionsScrollMap.get(sectionId);
34
+ return sectionTop !== null && sectionTop !== void 0 ? sectionTop : 0;
35
+ }
36
+ get width() {
37
+ return this.articleWidth;
38
+ }
39
+ setScroll(scroll) {
40
+ this.scrollPos = scroll;
41
+ }
42
+ init(parent) {
43
+ this.parent = parent;
44
+ const onScroll = () => {
45
+ this.handleScroll(window.scrollY);
46
+ if (!isNaN(this.animationFrame))
47
+ return;
48
+ this.animationFrame = window.requestAnimationFrame(() => {
49
+ this.animationFrame = NaN;
50
+ this.emit('scroll', undefined);
51
+ });
52
+ };
53
+ window.addEventListener('scroll', onScroll);
54
+ return () => {
55
+ this.parent = undefined;
56
+ window.removeEventListener('scroll', onScroll);
57
+ if (!isNaN(this.animationFrame)) {
58
+ window.cancelAnimationFrame(this.animationFrame);
59
+ this.animationFrame = NaN;
60
+ }
61
+ };
62
+ }
63
+ register(el, sectionId) {
64
+ this.registry.set(sectionId, el);
65
+ this.resizeObserver.observe(el);
66
+ return () => {
67
+ this.registry.delete(sectionId);
68
+ this.resizeObserver.unobserve(el);
69
+ };
70
+ }
71
+ handleResize() {
72
+ if (!this.parent)
73
+ return;
74
+ const parentBoundary = this.parent.getBoundingClientRect();
75
+ this.articleWidth = parentBoundary.width;
76
+ this.setScroll(window.scrollY / this.articleWidth);
77
+ this.emit('resize', parentBoundary);
78
+ for (const sectionId of this.registry.keys()) {
79
+ const el = this.registry.get(sectionId);
80
+ if (!el)
81
+ continue;
82
+ const rect = el.getBoundingClientRect();
83
+ this.sectionsScrollMap.set(sectionId, rect.top - parentBoundary.top);
84
+ }
85
+ }
86
+ ;
87
+ }
88
+ exports.ArticleRectObserver = ArticleRectObserver;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useArticleRectObserver = void 0;
4
+ const react_1 = require("react");
5
+ const ArticleRectObserver_1 = require("./ArticleRectObserver");
6
+ const useArticleRectObserver = (el) => {
7
+ const [articleRectObserver, setArticleRectObserver] = (0, react_1.useState)(null);
8
+ (0, react_1.useEffect)(() => {
9
+ setArticleRectObserver(new ArticleRectObserver_1.ArticleRectObserver());
10
+ }, []);
11
+ (0, react_1.useEffect)(() => {
12
+ if (!el || !articleRectObserver)
13
+ return;
14
+ return articleRectObserver.init(el);
15
+ }, [el, articleRectObserver]);
16
+ return articleRectObserver;
17
+ };
18
+ exports.useArticleRectObserver = useArticleRectObserver;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSectionRegistry = void 0;
4
+ const react_1 = require("react");
5
+ const ArticleRectContext_1 = require("../../provider/ArticleRectContext");
6
+ const useSectionRegistry = (sectionId, el) => {
7
+ const articleRectObserver = (0, react_1.useContext)(ArticleRectContext_1.ArticleRectContext);
8
+ (0, react_1.useEffect)(() => {
9
+ if (!el || !articleRectObserver)
10
+ return;
11
+ return articleRectObserver.register(el, sectionId);
12
+ }, [el, articleRectObserver]);
13
+ };
14
+ exports.useSectionRegistry = useSectionRegistry;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventEmitter = void 0;
4
+ class EventEmitter {
5
+ constructor() {
6
+ this.listeners = {};
7
+ }
8
+ on(event, listener) {
9
+ var _a;
10
+ if (!Array.isArray(this.listeners[event])) {
11
+ this.listeners[event] = [];
12
+ }
13
+ (_a = this.listeners[event]) === null || _a === void 0 ? void 0 : _a.push(listener);
14
+ return () => {
15
+ this.off(event, listener);
16
+ };
17
+ }
18
+ off(event, listener) {
19
+ var _a;
20
+ const filtered = (_a = this.listeners[event]) === null || _a === void 0 ? void 0 : _a.filter(l => l !== listener);
21
+ this.listeners[event] = filtered && filtered.length > 0 ? filtered : undefined;
22
+ }
23
+ emit(event, payload) {
24
+ const listeners = this.listeners[event];
25
+ if (!Array.isArray(listeners))
26
+ return;
27
+ for (const listener of listeners) {
28
+ try {
29
+ listener(payload);
30
+ }
31
+ catch (error) {
32
+ console.error(error instanceof Error ? error.stack : error);
33
+ }
34
+ }
35
+ }
36
+ }
37
+ exports.EventEmitter = EventEmitter;