@gxpl/sdk 0.0.1 → 0.0.2

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 (182) hide show
  1. package/dist/cli.js +1 -1
  2. package/dist/index.d.ts +32 -22
  3. package/dist/index.js +5086 -52
  4. package/dist/index.mjs +5088 -54
  5. package/dist/{Components → sdk/Components}/ControlSlider/ControlSlider.d.ts +1 -2
  6. package/dist/{Components → sdk/Components}/ImageRevealSlider/ImageRevealSlider.d.ts +1 -2
  7. package/dist/sdk/FontFaceGenerator/FontFaceGenerator.test.d.ts +1 -0
  8. package/dist/{schemas → sdk/schemas}/article/Article.schema.d.ts +12 -12
  9. package/dist/{schemas → sdk/schemas}/article/RichTextItem.schema.d.ts +30 -30
  10. package/dist/{schemas → sdk/schemas}/article/Section.schema.d.ts +3 -3
  11. package/dist/sdk-nextjs/common/useCurrentLayout.d.ts +6 -0
  12. package/dist/sdk-nextjs/common/useExemplary.d.ts +1 -0
  13. package/dist/sdk-nextjs/common/useItemFXData.d.ts +8 -0
  14. package/dist/sdk-nextjs/common/useKeyframeValue.d.ts +8 -0
  15. package/dist/sdk-nextjs/common/useRegisterResize.d.ts +1 -0
  16. package/dist/sdk-nextjs/components/Article.d.ts +9 -0
  17. package/dist/sdk-nextjs/components/ArticleWrapper.d.ts +2 -0
  18. package/dist/sdk-nextjs/components/Head.d.ts +9 -0
  19. package/dist/sdk-nextjs/components/LayoutStyle.d.ts +9 -0
  20. package/dist/sdk-nextjs/components/Page.d.ts +15 -0
  21. package/dist/sdk-nextjs/components/ScrollPlaybackVideo.d.ts +14 -0
  22. package/dist/sdk-nextjs/components/Section/Section.d.ts +11 -0
  23. package/dist/sdk-nextjs/components/Section/SectionImage.d.ts +14 -0
  24. package/dist/sdk-nextjs/components/Section/SectionVideo.d.ts +17 -0
  25. package/dist/sdk-nextjs/components/Section/useSectionColor.d.ts +4 -0
  26. package/dist/sdk-nextjs/components/Section/useSectionHeightMap.d.ts +3 -0
  27. package/dist/sdk-nextjs/components/items/CodeEmbedItem/CodeEmbedItem.d.ts +5 -0
  28. package/dist/sdk-nextjs/components/items/CodeEmbedItem/useCodeEmbedItem.d.ts +7 -0
  29. package/dist/sdk-nextjs/components/items/ComponentItem/ComponentItem.d.ts +4 -0
  30. package/dist/sdk-nextjs/components/items/ComponentItem/useComponentItem.d.ts +5 -0
  31. package/dist/sdk-nextjs/components/items/CompoundItem/CompoundChild.d.ts +9 -0
  32. package/dist/sdk-nextjs/components/items/CompoundItem/CompoundItem.d.ts +4 -0
  33. package/dist/sdk-nextjs/components/items/CompoundItem/useCompoundItem.d.ts +4 -0
  34. package/dist/sdk-nextjs/components/items/CustomItem/CustomItem.d.ts +4 -0
  35. package/dist/sdk-nextjs/components/items/EmbedVideoItem/VimeoEmbed.d.ts +4 -0
  36. package/dist/sdk-nextjs/components/items/EmbedVideoItem/YoutubeEmbed.d.ts +4 -0
  37. package/dist/sdk-nextjs/components/items/EmbedVideoItem/useEmbedVideoItem.d.ts +6 -0
  38. package/dist/sdk-nextjs/components/items/FileItem/ImageItem.d.ts +4 -0
  39. package/dist/sdk-nextjs/components/items/FileItem/VideoItem.d.ts +4 -0
  40. package/dist/sdk-nextjs/components/items/FileItem/useFileItem.d.ts +8 -0
  41. package/dist/sdk-nextjs/components/items/GroupItem/GroupItem.d.ts +4 -0
  42. package/dist/sdk-nextjs/components/items/GroupItem/useGroupItem.d.ts +5 -0
  43. package/dist/sdk-nextjs/components/items/Item.d.ts +20 -0
  44. package/dist/sdk-nextjs/components/items/LinkWrapper.d.ts +8 -0
  45. package/dist/sdk-nextjs/components/items/RectangleItem/RectangleItem.d.ts +4 -0
  46. package/dist/sdk-nextjs/components/items/RectangleItem/useRectangleItem.d.ts +9 -0
  47. package/dist/sdk-nextjs/components/items/RichTextItem/RichTextItem.d.ts +4 -0
  48. package/dist/sdk-nextjs/components/items/RichTextItem/useRichTextItem.d.ts +3 -0
  49. package/dist/sdk-nextjs/components/items/RichTextWrapper.d.ts +7 -0
  50. package/dist/sdk-nextjs/components/items/itemsMap.d.ts +4 -0
  51. package/dist/sdk-nextjs/components/items/useDraggable.d.ts +17 -0
  52. package/dist/sdk-nextjs/components/items/useItemAngle.d.ts +2 -0
  53. package/dist/sdk-nextjs/components/items/useItemArea.d.ts +12 -0
  54. package/dist/sdk-nextjs/components/items/useItemPointerEvents.d.ts +4 -0
  55. package/dist/sdk-nextjs/components/items/useItemScale.d.ts +2 -0
  56. package/dist/sdk-nextjs/components/items/useItemTriggers.d.ts +6 -0
  57. package/dist/sdk-nextjs/components/items/useRichTextItemValues.d.ts +9 -0
  58. package/dist/sdk-nextjs/components/items/useSizing.d.ts +8 -0
  59. package/dist/sdk-nextjs/components/items/useStickyItemTop.d.ts +2 -0
  60. package/dist/sdk-nextjs/components/useLayoutContext.d.ts +1 -0
  61. package/dist/sdk-nextjs/interactions/CSSPropertyNameMap.d.ts +4 -0
  62. package/dist/sdk-nextjs/interactions/InteractionsRegistry.d.ts +39 -0
  63. package/dist/sdk-nextjs/interactions/ItemInteractionCtrl.d.ts +21 -0
  64. package/dist/sdk-nextjs/interactions/getTransition.d.ts +9 -0
  65. package/dist/sdk-nextjs/interactions/types.d.ts +34 -0
  66. package/dist/sdk-nextjs/interactions/useItemInteractionCtrl.d.ts +2 -0
  67. package/dist/sdk-nextjs/provider/ArticleRectContext.d.ts +2 -0
  68. package/dist/sdk-nextjs/provider/CntrlContext.d.ts +2 -0
  69. package/dist/sdk-nextjs/provider/CntrlProvider.d.ts +2 -0
  70. package/dist/sdk-nextjs/provider/CntrlSdkContext.d.ts +31 -0
  71. package/dist/sdk-nextjs/provider/CustomItemRegistry.d.ts +6 -0
  72. package/dist/sdk-nextjs/provider/CustomItemTypes.d.ts +2 -0
  73. package/dist/sdk-nextjs/provider/CustomSectionRegistry.d.ts +15 -0
  74. package/dist/sdk-nextjs/provider/InteractionsContext.d.ts +10 -0
  75. package/dist/sdk-nextjs/provider/Keyframes.d.ts +6 -0
  76. package/dist/sdk-nextjs/provider/KeyframesContext.d.ts +2 -0
  77. package/dist/sdk-nextjs/provider/LayoutContext.d.ts +1 -0
  78. package/dist/sdk-nextjs/provider/WebGLContextManagerContext.d.ts +2 -0
  79. package/dist/sdk-nextjs/provider/defaultContext.d.ts +2 -0
  80. package/dist/sdk-nextjs/provider/useCntrlContext.d.ts +2 -0
  81. package/dist/sdk-nextjs/utils/Animator/Animator.d.ts +43 -0
  82. package/dist/sdk-nextjs/utils/ArticleRectManager/ArticleRectObserver.d.ts +25 -0
  83. package/dist/sdk-nextjs/utils/ArticleRectManager/useArticleRectObserver.d.ts +2 -0
  84. package/dist/sdk-nextjs/utils/ArticleRectManager/useSectionRegistry.d.ts +1 -0
  85. package/dist/sdk-nextjs/utils/EventEmitter.d.ts +11 -0
  86. package/dist/sdk-nextjs/utils/RichTextConverter/RichTextConverter.d.ts +11 -0
  87. package/dist/sdk-nextjs/utils/ScaleAnchorMap.d.ts +11 -0
  88. package/dist/sdk-nextjs/utils/StickyManager/StickyManager.d.ts +10 -0
  89. package/dist/sdk-nextjs/utils/Youtube/YouTubeIframeApiLoader.d.ts +10 -0
  90. package/dist/sdk-nextjs/utils/Youtube/YoutubeIframeApi.d.ts +89 -0
  91. package/dist/sdk-nextjs/utils/Youtube/useYouTubeIframeApi.d.ts +2 -0
  92. package/dist/sdk-nextjs/utils/areFillsVisible/areFillsVisible.d.ts +23 -0
  93. package/dist/sdk-nextjs/utils/binSearchInsertAt.d.ts +5 -0
  94. package/dist/sdk-nextjs/utils/castObject.d.ts +5 -0
  95. package/dist/sdk-nextjs/utils/checkOverflowClipSupport.d.ts +1 -0
  96. package/dist/sdk-nextjs/utils/effects/useImageFx.d.ts +7 -0
  97. package/dist/sdk-nextjs/utils/effects/useVideoFx.d.ts +7 -0
  98. package/dist/sdk-nextjs/utils/getAnchoredItemTop.d.ts +2 -0
  99. package/dist/sdk-nextjs/utils/getCompoundBoundaryStyles.d.ts +12 -0
  100. package/dist/sdk-nextjs/utils/getFill.d.ts +2 -0
  101. package/dist/sdk-nextjs/utils/getFontFamilyValue.d.ts +1 -0
  102. package/dist/sdk-nextjs/utils/getInvertedRanges.d.ts +10 -0
  103. package/dist/sdk-nextjs/utils/getItemTopStyle.d.ts +2 -0
  104. package/dist/sdk-nextjs/utils/getStyleFromItemStateAndParams.d.ts +1 -0
  105. package/dist/sdk-nextjs/utils/getValidYoutubeUrl.d.ts +1 -0
  106. package/dist/sdk-nextjs/utils/isItemType.d.ts +3 -0
  107. package/dist/sdk-nextjs/utils/rangeMap.d.ts +1 -0
  108. package/dist/sdk-nextjs/utils/useElementRect.d.ts +1 -0
  109. package/dist/sdk.css +1 -1
  110. package/dist/utils.d.ts +1 -1
  111. package/package.json +23 -5
  112. /package/dist/{Client → sdk/Client}/Client.d.ts +0 -0
  113. /package/dist/{Client → sdk/Client}/Client.js +0 -0
  114. /package/dist/{FontFaceGenerator/FontFaceGenerator.test.d.ts → sdk/Client/Client.test.d.ts} +0 -0
  115. /package/dist/{Client → sdk/Client}/__mock__/articleMock.d.ts +0 -0
  116. /package/dist/{Client → sdk/Client}/__mock__/keyframesMock.d.ts +0 -0
  117. /package/dist/{Client → sdk/Client}/__mock__/projectMock.d.ts +0 -0
  118. /package/dist/{Components → sdk/Components}/ControlSlider/ControlSliderComponent.d.ts +0 -0
  119. /package/dist/{Components → sdk/Components}/ImageRevealSlider/ControlImageRevealSliderComponent.d.ts +0 -0
  120. /package/dist/{Components → sdk/Components}/components.d.ts +0 -0
  121. /package/dist/{Components → sdk/Components}/helpers/RichTextRenderer/RichTextRenderer.d.ts +0 -0
  122. /package/dist/{Components → sdk/Components}/helpers/SvgImage/SvgImage.d.ts +0 -0
  123. /package/dist/{Components → sdk/Components}/utils/scalingValue.d.ts +0 -0
  124. /package/dist/{FontFaceGenerator → sdk/FontFaceGenerator}/FontFaceGenerator.d.ts +0 -0
  125. /package/dist/{ScrollPlaybackVideoManager → sdk/ScrollPlaybackVideoManager}/ScrollPlaybackVideoManager.d.ts +0 -0
  126. /package/dist/{VideoDecoder → sdk/VideoDecoder}/VideoDecoder.d.ts +0 -0
  127. /package/dist/{schemas → sdk/schemas}/article/Article.schema.js +0 -0
  128. /package/dist/{schemas → sdk/schemas}/article/FillLayer.schema.d.ts +0 -0
  129. /package/dist/{schemas → sdk/schemas}/article/FillLayer.schema.js +0 -0
  130. /package/dist/{schemas → sdk/schemas}/article/Interaction.schema.d.ts +0 -0
  131. /package/dist/{schemas → sdk/schemas}/article/Interaction.schema.js +0 -0
  132. /package/dist/{schemas → sdk/schemas}/article/Item.schema.d.ts +0 -0
  133. /package/dist/{schemas → sdk/schemas}/article/Item.schema.js +0 -0
  134. /package/dist/{schemas → sdk/schemas}/article/ItemArea.schema.d.ts +0 -0
  135. /package/dist/{schemas → sdk/schemas}/article/ItemArea.schema.js +0 -0
  136. /package/dist/{schemas → sdk/schemas}/article/ItemBase.schema.d.ts +0 -0
  137. /package/dist/{schemas → sdk/schemas}/article/ItemBase.schema.js +0 -0
  138. /package/dist/{schemas → sdk/schemas}/article/ItemState.schema.d.ts +0 -0
  139. /package/dist/{schemas → sdk/schemas}/article/ItemState.schema.js +0 -0
  140. /package/dist/{schemas → sdk/schemas}/article/RichTextItem.schema.js +0 -0
  141. /package/dist/{schemas → sdk/schemas}/article/Section.schema.js +0 -0
  142. /package/dist/{schemas → sdk/schemas}/keyframe/Keyframes.schema.d.ts +0 -0
  143. /package/dist/{schemas → sdk/schemas}/keyframe/Keyframes.schema.js +0 -0
  144. /package/dist/{schemas → sdk/schemas}/project/Layout.schema.d.ts +0 -0
  145. /package/dist/{schemas → sdk/schemas}/project/Layout.schema.js +0 -0
  146. /package/dist/{schemas → sdk/schemas}/project/Project.schema.d.ts +0 -0
  147. /package/dist/{schemas → sdk/schemas}/project/Project.schema.js +0 -0
  148. /package/dist/{schemas → sdk/schemas}/shared/FillLayer.schema.d.ts +0 -0
  149. /package/dist/{types → sdk/types}/article/Article.d.ts +0 -0
  150. /package/dist/{types → sdk/types}/article/Article.js +0 -0
  151. /package/dist/{types → sdk/types}/article/ArticleItemType.d.ts +0 -0
  152. /package/dist/{types → sdk/types}/article/ArticleItemType.js +0 -0
  153. /package/dist/{types → sdk/types}/article/CompoundSettings.d.ts +0 -0
  154. /package/dist/{types → sdk/types}/article/CompoundSettings.js +0 -0
  155. /package/dist/{types → sdk/types}/article/FX.d.ts +0 -0
  156. /package/dist/{types → sdk/types}/article/FX.js +0 -0
  157. /package/dist/{types → sdk/types}/article/Interaction.d.ts +0 -0
  158. /package/dist/{types → sdk/types}/article/Interaction.js +0 -0
  159. /package/dist/{types → sdk/types}/article/Item.d.ts +0 -0
  160. /package/dist/{types → sdk/types}/article/Item.js +0 -0
  161. /package/dist/{types → sdk/types}/article/ItemArea.d.ts +0 -0
  162. /package/dist/{types → sdk/types}/article/ItemArea.js +0 -0
  163. /package/dist/{types → sdk/types}/article/ItemState.d.ts +0 -0
  164. /package/dist/{types → sdk/types}/article/ItemState.js +0 -0
  165. /package/dist/{types → sdk/types}/article/RichText.d.ts +0 -0
  166. /package/dist/{types → sdk/types}/article/RichText.js +0 -0
  167. /package/dist/{types → sdk/types}/article/Section.d.ts +0 -0
  168. /package/dist/{types → sdk/types}/article/Section.js +0 -0
  169. /package/dist/{types → sdk/types}/component/Component.d.ts +0 -0
  170. /package/dist/{types → sdk/types}/keyframe/Keyframe.d.ts +0 -0
  171. /package/dist/{types → sdk/types}/keyframe/Keyframe.js +0 -0
  172. /package/dist/{types → sdk/types}/project/Fonts.d.ts +0 -0
  173. /package/dist/{types → sdk/types}/project/Fonts.js +0 -0
  174. /package/dist/{types → sdk/types}/project/Layout.d.ts +0 -0
  175. /package/dist/{types → sdk/types}/project/Layout.js +0 -0
  176. /package/dist/{types → sdk/types}/project/Meta.d.ts +0 -0
  177. /package/dist/{types → sdk/types}/project/Meta.js +0 -0
  178. /package/dist/{types → sdk/types}/project/Page.d.ts +0 -0
  179. /package/dist/{types → sdk/types}/project/Page.js +0 -0
  180. /package/dist/{types → sdk/types}/project/Project.d.ts +0 -0
  181. /package/dist/{types → sdk/types}/project/Project.js +0 -0
  182. /package/dist/{Client/Client.test.d.ts → sdk-nextjs/utils/areFillsVisible/areFillsVisible.test.d.ts} +0 -0
@@ -0,0 +1,12 @@
1
+ import { ItemAny } from '../../../sdk/types/article/Item';
2
+ export declare function useItemArea(item: ItemAny, sectionId: string, stateValues: {
3
+ top?: number;
4
+ left?: number;
5
+ width?: number;
6
+ height?: number;
7
+ }): {
8
+ width: number | undefined;
9
+ height: number | undefined;
10
+ top: number | undefined;
11
+ left: number | undefined;
12
+ };
@@ -0,0 +1,4 @@
1
+ export declare function useItemPointerEvents(pointerEvents: 'never' | 'when_visible' | 'always', isParentVisible: boolean): {
2
+ allowPointerEvents: boolean;
3
+ handleVisibilityChange: (isVisible: boolean) => void;
4
+ };
@@ -0,0 +1,2 @@
1
+ import { ItemAny } from '../../../sdk/types/article/Item';
2
+ export declare const useItemScale: (item: ItemAny, sectionId: string) => number | undefined;
@@ -0,0 +1,6 @@
1
+ import { ItemInteractionCtrl } from '../../interactions/types';
2
+ export declare function useItemTriggers(interactionCtrl: ItemInteractionCtrl | undefined): {
3
+ onClick: () => void;
4
+ onMouseEnter: () => void;
5
+ onMouseLeave: () => void;
6
+ };
@@ -0,0 +1,9 @@
1
+ import { RichTextItem } from '../../../sdk/types/article/Item';
2
+ export declare const useRichTextItemValues: (item: RichTextItem, sectionId: string) => {
3
+ blur: number | undefined;
4
+ letterSpacing: number | undefined;
5
+ wordSpacing: number | undefined;
6
+ color: string | undefined;
7
+ fontSize: number | undefined;
8
+ lineHeight: number | undefined;
9
+ };
@@ -0,0 +1,8 @@
1
+ import { ItemAny } from '../../../sdk/types/article/Item';
2
+ export declare function useSizing(item: ItemAny): Axis;
3
+ export declare function parseSizing(sizing?: string): Axis;
4
+ interface Axis {
5
+ x: 'manual' | 'auto';
6
+ y: 'manual' | 'auto';
7
+ }
8
+ export {};
@@ -0,0 +1,2 @@
1
+ import { ItemAny } from '../../../sdk/types/article/Item';
2
+ export declare function useStickyItemTop(item: ItemAny, sectionId: string, stateTop?: number): number;
@@ -0,0 +1 @@
1
+ export declare function useLayoutContext(): string | undefined;
@@ -0,0 +1,4 @@
1
+ import { ArticleItemType } from '../../sdk/types/article/ArticleItemType';
2
+ import { ItemState } from '../../sdk/types/article/ItemState';
3
+ export declare const CSSPropertyNameMap: Record<keyof ItemState<ArticleItemType>, string>;
4
+ export declare function getStyleKeysFromCSSProperty(cssProp: string): string[];
@@ -0,0 +1,39 @@
1
+ import { InteractionsRegistryPort, ItemInteractionCtrl } from './types';
2
+ import { InteractionItemTrigger } from '../../sdk/types/article/Interaction';
3
+ import { Article } from '../../sdk/types/article/Article';
4
+ export declare class InteractionsRegistry implements InteractionsRegistryPort {
5
+ private ctrls;
6
+ private items;
7
+ private interactions;
8
+ private stateItemsIdsMap;
9
+ private interactionStateMap;
10
+ private itemsStages;
11
+ private activeStateIdInteractionIdMap;
12
+ constructor(article: Article, layoutId: string);
13
+ register(itemId: ItemId, ctrl: ItemInteractionCtrl): void;
14
+ getStatePropsForItem(itemId: string): StateProps;
15
+ getItemAvailableTriggers(itemId: string): Set<InteractionItemTrigger['type']>;
16
+ notifyLoad(): void;
17
+ notifyScroll(position: number): void;
18
+ notifyItemTrigger(itemId: string, triggerType: TriggerType): void;
19
+ notifyTransitionStartForItems(itemsIds: string[], activeStateId: string): void;
20
+ notifyTransitionEnd(itemId: string): void;
21
+ private getCurrentStateByInteractionId;
22
+ private setCurrentStateForInteraction;
23
+ private getActiveInteractionState;
24
+ private notifyItemCtrlsChange;
25
+ private unpackItems;
26
+ private getNestedItems;
27
+ private getDefaultItemStages;
28
+ }
29
+ type TriggerType = InteractionItemTrigger['type'];
30
+ type ItemId = string;
31
+ type StateProps = Record<string, {
32
+ value?: string | number;
33
+ transition?: {
34
+ timing: string;
35
+ duration: number;
36
+ delay: number;
37
+ };
38
+ }>;
39
+ export {};
@@ -0,0 +1,21 @@
1
+ import { InteractionsRegistryPort, ItemInteractionCtrl } from './types';
2
+ import { InteractionItemTrigger } from '../../sdk/types/article/Interaction';
3
+ export declare class ItemInteractionController implements ItemInteractionCtrl {
4
+ private itemId;
5
+ private registry;
6
+ private onChange;
7
+ private transitionsInProgress;
8
+ private actionReceiver;
9
+ constructor(itemId: string, registry: InteractionsRegistryPort, onChange: () => void);
10
+ getState<T>(keys: string[]): {
11
+ styles: Record<string, T>;
12
+ transition: string;
13
+ };
14
+ getHasTrigger(itemId: string, triggerType: InteractionItemTrigger['type']): boolean;
15
+ sendTrigger(type: 'click' | 'hover-in' | 'hover-out'): void;
16
+ receiveAction(type: 'play' | 'pause'): void;
17
+ setActionReceiver(action: (type: 'play' | 'pause') => void): void;
18
+ handleTransitionStart: (types: string[]) => void;
19
+ handleTransitionEnd: (cssPropKey: string) => void;
20
+ receiveChange(): void;
21
+ }
@@ -0,0 +1,9 @@
1
+ export declare function getTransition(state: Record<string, StateInfo>, keys: string[]): string;
2
+ type StateInfo = {
3
+ transition?: {
4
+ duration: number;
5
+ delay: number;
6
+ timing: string;
7
+ };
8
+ };
9
+ export {};
@@ -0,0 +1,34 @@
1
+ import { ArticleItemType } from '../../sdk/types/article/ArticleItemType';
2
+ import { InteractionItemTrigger } from '../../sdk/types/article/Interaction';
3
+ import { ItemState } from '../../sdk/types/article/ItemState';
4
+ export interface ItemInteractionCtrl {
5
+ getState<T>(keys: string[]): StateCSSInfo<T>;
6
+ getHasTrigger(itemId: string, triggerType: InteractionItemTrigger['type']): boolean;
7
+ sendTrigger(type: 'click' | 'hover-in' | 'hover-out'): void;
8
+ handleTransitionEnd?: (styleKey: string) => void;
9
+ handleTransitionStart?: (styleKeys: string[]) => void;
10
+ receiveChange: () => void;
11
+ receiveAction: (type: 'play' | 'pause') => void;
12
+ setActionReceiver: (action: (type: 'play' | 'pause') => void) => void;
13
+ }
14
+ export interface InteractionsRegistryPort {
15
+ register(itemId: string, ctrl: ItemInteractionCtrl): void;
16
+ getStatePropsForItem(itemId: string): StateProps<unknown>;
17
+ getItemAvailableTriggers(itemId: string): Set<InteractionItemTrigger['type']>;
18
+ notifyItemTrigger(itemId: string, type: TriggerType): void;
19
+ notifyTransitionEnd(itemId: string): void;
20
+ }
21
+ type StateCSSInfo<T> = {
22
+ styles: Partial<Record<string, T>>;
23
+ transition?: string;
24
+ };
25
+ type StateProps<T> = Record<keyof ItemState<ArticleItemType>, {
26
+ value?: T;
27
+ transition?: {
28
+ timing: string;
29
+ duration: number;
30
+ delay: number;
31
+ };
32
+ }>;
33
+ type TriggerType = 'click' | 'hover-in' | 'hover-out';
34
+ export {};
@@ -0,0 +1,2 @@
1
+ import { ItemInteractionCtrl } from './types';
2
+ export declare function useItemInteractionCtrl(itemId: string): ItemInteractionCtrl | undefined;
@@ -0,0 +1,2 @@
1
+ import { ArticleRectObserver } from '../utils/ArticleRectManager/ArticleRectObserver';
2
+ export declare const ArticleRectContext: import('react').Context<ArticleRectObserver | null>;
@@ -0,0 +1,2 @@
1
+ import { CntrlSdkContext } from './CntrlSdkContext';
2
+ export declare const CntrlContext: import('react').Context<CntrlSdkContext>;
@@ -0,0 +1,2 @@
1
+ import { FC, PropsWithChildren } from 'react';
2
+ export declare const CntrlProvider: FC<PropsWithChildren<{}>>;
@@ -0,0 +1,31 @@
1
+ import { Article } from '../../sdk/types/article/Article';
2
+ import { Section, SectionHeight } from '../../sdk/types/article/Section';
3
+ import { Layout } from '../../sdk/types/project/Layout';
4
+ import { Project } from '../../sdk/types/project/Project';
5
+ import { CustomItemRegistry } from './CustomItemRegistry';
6
+ import { CustomSectionRegistry } from './CustomSectionRegistry';
7
+ import { Component as TComponent } from '../../sdk/types/component/Component';
8
+ interface SdkContextInitProps {
9
+ project: Project;
10
+ article: Article;
11
+ }
12
+ export declare class CntrlSdkContext {
13
+ readonly customItems: CustomItemRegistry;
14
+ readonly customSections: CustomSectionRegistry;
15
+ private _layouts;
16
+ private _fonts?;
17
+ private sectionHeightMap;
18
+ private components;
19
+ constructor(customItems: CustomItemRegistry, customSections: CustomSectionRegistry);
20
+ resolveSectionData(sections: Section[]): Promise<Record<string, any>>;
21
+ init({ project, article }: SdkContextInitProps): void;
22
+ setLayouts(layouts: Layout[]): void;
23
+ private setComponents;
24
+ private setFonts;
25
+ setSectionsHeight(sections: Section[]): void;
26
+ getSectionHeightData(sectionId: string): Record<string, SectionHeight> | undefined;
27
+ get layouts(): Layout[];
28
+ get fonts(): Project['fonts'] | undefined;
29
+ getComponent(id: string): TComponent | undefined;
30
+ }
31
+ export {};
@@ -0,0 +1,6 @@
1
+ import { CustomItemComponent } from './CustomItemTypes';
2
+ export declare class CustomItemRegistry {
3
+ private definitions;
4
+ define<T extends string>(type: T, component: CustomItemComponent<T>): this;
5
+ get(type: string): CustomItemComponent<string> | undefined;
6
+ }
@@ -0,0 +1,2 @@
1
+ import { FC } from 'react';
2
+ export type CustomItemComponent<T extends string> = FC<{}>;
@@ -0,0 +1,15 @@
1
+ import { default as React, PropsWithChildren } from 'react';
2
+ export declare class CustomSectionRegistry {
3
+ private definitions;
4
+ define<TData>(name: string, section: CustomSection<TData>): this;
5
+ getComponent(name: string): CustomSectionComponent<any> | undefined;
6
+ getResolver(name: string): (() => Promise<any>) | undefined;
7
+ }
8
+ type CustomSection<TData = {}> = {
9
+ component: CustomSectionComponent<TData>;
10
+ dataResolver?: () => Promise<TData>;
11
+ };
12
+ type CustomSectionComponent<TData> = React.FC<PropsWithChildren<{
13
+ data: TData;
14
+ }>>;
15
+ export {};
@@ -0,0 +1,10 @@
1
+ import { FC, PropsWithChildren } from 'react';
2
+ import { InteractionsRegistry } from '../interactions/InteractionsRegistry';
3
+ import { Article } from '../../sdk/types/article/Article';
4
+ export declare const InteractionsContext: import('react').Context<InteractionsRegistry | undefined>;
5
+ interface Props {
6
+ article: Article;
7
+ }
8
+ export declare const InteractionsProvider: FC<PropsWithChildren<Props>>;
9
+ export declare function useInteractionsRegistry(): InteractionsRegistry | undefined;
10
+ export {};
@@ -0,0 +1,6 @@
1
+ import { KeyframeAny } from '../../sdk/types/keyframe/Keyframe';
2
+ export declare class Keyframes {
3
+ private keyframes;
4
+ constructor(keyframes?: KeyframeAny[]);
5
+ getItemKeyframes(itemId: string): KeyframeAny[];
6
+ }
@@ -0,0 +1,2 @@
1
+ import { Keyframes } from './Keyframes';
2
+ export declare const KeyframesContext: import('react').Context<Keyframes>;
@@ -0,0 +1 @@
1
+ export declare const LayoutContext: import('react').Context<string | undefined>;
@@ -0,0 +1,2 @@
1
+ import { WebGLContextManager } from '@cntrl-site/effects';
2
+ export declare const WebglContextManagerContext: import('react').Context<WebGLContextManager>;
@@ -0,0 +1,2 @@
1
+ import { CntrlSdkContext } from './CntrlSdkContext';
2
+ export declare const cntrlSdkContext: CntrlSdkContext;
@@ -0,0 +1,2 @@
1
+ import { CntrlSdkContext } from './CntrlSdkContext';
2
+ export declare function useCntrlContext(): CntrlSdkContext;
@@ -0,0 +1,43 @@
1
+ import { KeyframeType, KeyframeValueMap } from '../../../sdk/types/keyframe/Keyframe';
2
+ import { FillLayer } from '../../../sdk/types/article/Item';
3
+ export interface AnimationData<T extends KeyframeType> {
4
+ position: number;
5
+ value: KeyframeValueMap[T];
6
+ type: T;
7
+ }
8
+ interface PositionKeyframes<T extends KeyframeType> {
9
+ start: AnimationData<T>;
10
+ end: AnimationData<T>;
11
+ }
12
+ export type KeyframesMap = {
13
+ [T in KeyframeType]: AnimationData<T>[];
14
+ };
15
+ export declare class Animator {
16
+ private keyframes;
17
+ private static pushKeyframeToMap;
18
+ private keyframesMap;
19
+ constructor(keyframes: AnimationData<KeyframeType>[]);
20
+ getFXParams(valuesMap: Record<string, number>, pos: number): KeyframeValueMap[KeyframeType.FXParams];
21
+ getDimensions(values: KeyframeValueMap[KeyframeType.Dimensions], pos: number): KeyframeValueMap[KeyframeType.Dimensions];
22
+ getPositions(values: KeyframeValueMap[KeyframeType.Position], pos: number): KeyframeValueMap[KeyframeType.Position];
23
+ getBorderFill(values: KeyframeValueMap[KeyframeType.BorderFill], pos: number): FillLayer[];
24
+ getFill(values: KeyframeValueMap[KeyframeType.Fill], pos: number): FillLayer[];
25
+ getRadius(values: KeyframeValueMap[KeyframeType.BorderRadius], pos: number): KeyframeValueMap[KeyframeType.BorderRadius];
26
+ getBorderWidth(values: KeyframeValueMap[KeyframeType.BorderWidth], pos: number): KeyframeValueMap[KeyframeType.BorderWidth];
27
+ getRotation(values: KeyframeValueMap[KeyframeType.Rotation], pos: number): KeyframeValueMap[KeyframeType.Rotation];
28
+ getOpacity(values: KeyframeValueMap[KeyframeType.Opacity], pos: number): KeyframeValueMap[KeyframeType.Opacity];
29
+ getScale(values: KeyframeValueMap[KeyframeType.Scale], pos: number): KeyframeValueMap[KeyframeType.Scale];
30
+ getBlur(values: KeyframeValueMap[KeyframeType.Blur], pos: number): KeyframeValueMap[KeyframeType.Blur];
31
+ getBackdropBlur(values: KeyframeValueMap[KeyframeType.BackdropBlur], pos: number): KeyframeValueMap[KeyframeType.BackdropBlur];
32
+ getTextColor(values: KeyframeValueMap[KeyframeType.TextColor], pos: number): KeyframeValueMap[KeyframeType.TextColor];
33
+ getLetterSpacing(values: KeyframeValueMap[KeyframeType.LetterSpacing], pos: number): KeyframeValueMap[KeyframeType.LetterSpacing];
34
+ getWordSpacing(values: KeyframeValueMap[KeyframeType.WordSpacing], pos: number): KeyframeValueMap[KeyframeType.WordSpacing];
35
+ getStartEnd<T extends KeyframeType>(position: number, keyframes: AnimationData<T>[]): PositionKeyframes<T>;
36
+ private fillKeyframesMap;
37
+ private getRangeColor;
38
+ private getRangeGradient;
39
+ private interpolateFillLayerArray;
40
+ private interpolateFillLayer;
41
+ private interpolateColorStops;
42
+ }
43
+ export {};
@@ -0,0 +1,25 @@
1
+ import { EventEmitter } from '../EventEmitter';
2
+ interface EventMap {
3
+ 'scroll': undefined;
4
+ 'resize': DOMRect;
5
+ }
6
+ export declare class ArticleRectObserver extends EventEmitter<EventMap> {
7
+ private resizeObserver;
8
+ private articleWidth;
9
+ private registry;
10
+ private scrollPos;
11
+ private animationFrame;
12
+ private parent;
13
+ private sectionsScrollMap;
14
+ constructor();
15
+ get scroll(): number;
16
+ getSectionScroll(sectionId: string): number;
17
+ getSectionTop(sectionId: string): number;
18
+ get width(): number;
19
+ private setScroll;
20
+ init(parent: HTMLElement): () => void;
21
+ register(el: HTMLElement, sectionId: string): () => void;
22
+ private handleScroll;
23
+ private handleResize;
24
+ }
25
+ export {};
@@ -0,0 +1,2 @@
1
+ import { ArticleRectObserver } from './ArticleRectObserver';
2
+ export declare const useArticleRectObserver: (el?: HTMLElement | null) => ArticleRectObserver | null;
@@ -0,0 +1 @@
1
+ export declare const useSectionRegistry: (sectionId: string, el?: HTMLElement | null) => void;
@@ -0,0 +1,11 @@
1
+ export type Listener<P> = (payload: P) => void;
2
+ type Listeners<EventMap> = {
3
+ [E in keyof (EventMap)]?: Listener<EventMap[E]>[];
4
+ };
5
+ export declare abstract class EventEmitter<EventMap> {
6
+ protected listeners: Listeners<EventMap>;
7
+ on<E extends (keyof EventMap)>(event: E, listener: Listener<EventMap[E]>): () => void;
8
+ off<E extends (keyof EventMap)>(event: E, listener: Listener<EventMap[E]>): void;
9
+ protected emit<E extends (keyof EventMap)>(event: E, payload: EventMap[E]): void;
10
+ }
11
+ export {};
@@ -0,0 +1,11 @@
1
+ import { ReactNode } from 'react';
2
+ import { Layout } from '../../../sdk/types/project/Layout';
3
+ import { RichTextItem } from '../../../sdk/types/article/Item';
4
+ export declare const FontStyles: Record<string, Record<string, string>>;
5
+ export declare class RichTextConverter {
6
+ toHtml(richText: RichTextItem, layouts: Layout[]): [ReactNode[], string];
7
+ private serializeRanges;
8
+ private normalizeStyles;
9
+ private groupEntities;
10
+ private static fromRangeStylesToInline;
11
+ }
@@ -0,0 +1,11 @@
1
+ export declare const ScaleAnchorMap: {
2
+ "top-left": string;
3
+ "top-center": string;
4
+ "top-right": string;
5
+ "middle-left": string;
6
+ "middle-center": string;
7
+ "middle-right": string;
8
+ "bottom-left": string;
9
+ "bottom-center": string;
10
+ "bottom-right": string;
11
+ };
@@ -0,0 +1,10 @@
1
+ export type TSticky = {
2
+ from: number;
3
+ to?: number;
4
+ } | null;
5
+ export declare class StickyManager {
6
+ private sticky;
7
+ constructor(sticky: TSticky);
8
+ getIsSticky(scroll: number): boolean;
9
+ getPosition(scroll: number, top: number): number;
10
+ }
@@ -0,0 +1,10 @@
1
+ import { YT } from './YoutubeIframeApi';
2
+ export declare class YouTubeIframeApiLoader {
3
+ private static instance;
4
+ static create(): YouTubeIframeApiLoader;
5
+ private loadingPromise;
6
+ private constructor();
7
+ getApi(): Promise<YT>;
8
+ private loadApi;
9
+ }
10
+ export declare function captureStackTrace(error: Error): void;
@@ -0,0 +1,89 @@
1
+ export interface YT {
2
+ Player: YTPlayerConstructor;
3
+ }
4
+ export interface YTPlayerConstructor {
5
+ new (container: string | Element, params: YTPlayerParams): YTPlayer;
6
+ }
7
+ export interface YTEvent<Data> {
8
+ target: YTPlayer;
9
+ data: Data;
10
+ }
11
+ type YTBool = 0 | 1 | '0' | '1';
12
+ export interface YTPlayerParams {
13
+ width?: string | number;
14
+ height?: string | number;
15
+ videoId?: string;
16
+ playerVars?: Partial<{
17
+ autoplay: YTBool;
18
+ cc_lang_pref: string;
19
+ cc_load_policy: YTBool;
20
+ color: string;
21
+ controls: YTBool;
22
+ disablekb: YTBool;
23
+ enablejsapi: YTBool;
24
+ end: number | string;
25
+ fs: YTBool;
26
+ hl: string;
27
+ iv_load_policy: 1 | 3 | '1' | '3';
28
+ list: string;
29
+ listType: 'playlist' | 'user_uploads';
30
+ loop: YTBool;
31
+ origin: string;
32
+ playlist: string;
33
+ playsinline: YTBool;
34
+ rel: YTBool;
35
+ start: number | string;
36
+ widget_referrer: string;
37
+ }>;
38
+ events?: Partial<{
39
+ onReady: (event: YTEvent<void>) => void;
40
+ onStateChange: (event: YTEvent<YTPlayerState>) => void;
41
+ }>;
42
+ }
43
+ export declare enum YTPlayerState {
44
+ Unstarted = -1,
45
+ Ended = 0,
46
+ Playing = 1,
47
+ Paused = 2,
48
+ Buffering = 3,
49
+ VideoCued = 5
50
+ }
51
+ export interface YTPlayer {
52
+ loadVideoById(videoId: string, startSeconds?: number): void;
53
+ loadVideoById(params: {
54
+ videoId: string;
55
+ startSeconds?: number;
56
+ endSeconds?: number;
57
+ }): void;
58
+ loadVideoByUrl(mediaContentUrl: string, startSeconds?: number): void;
59
+ loadVideoByUrl(params: {
60
+ mediaContentUrl: string;
61
+ startSeconds?: number;
62
+ endSeconds?: number;
63
+ }): void;
64
+ playVideo(): void;
65
+ pauseVideo(): void;
66
+ stopVideo(): void;
67
+ seekTo(seconds: number, allowSeekAhead: boolean): void;
68
+ mute(): void;
69
+ unMute(): void;
70
+ isMuted(): void;
71
+ setVolume(volume: number): void;
72
+ getVolume(): void;
73
+ setSize(width: number, height: number): void;
74
+ setLoop(loopPlaylists: boolean): void;
75
+ getVideoLoadedFraction(): number;
76
+ getPlayerState(): YTPlayerState;
77
+ getDuration(): number;
78
+ getVideoUrl(): string;
79
+ getVideoEmbedCode(): string;
80
+ getIframe(): HTMLIFrameElement | undefined;
81
+ destroy(): void;
82
+ }
83
+ declare global {
84
+ interface Window {
85
+ YT?: YT;
86
+ onYouTubeIframeAPIReady?: () => void;
87
+ }
88
+ }
89
+ export {};
@@ -0,0 +1,2 @@
1
+ import { YT } from './YoutubeIframeApi';
2
+ export declare function useYouTubeIframeApi(): YT | undefined;
@@ -0,0 +1,23 @@
1
+ export declare function areFillsVisible(fills: FillLayer[]): boolean;
2
+ export type FillLayer = {
3
+ type: 'solid';
4
+ value: string;
5
+ } | {
6
+ type: 'linear-gradient';
7
+ colors: {
8
+ value: string;
9
+ }[];
10
+ } | {
11
+ type: 'radial-gradient';
12
+ colors: {
13
+ value: string;
14
+ }[];
15
+ } | {
16
+ type: 'conic-gradient';
17
+ colors: {
18
+ value: string;
19
+ }[];
20
+ } | {
21
+ type: 'image';
22
+ opacity: number;
23
+ };
@@ -0,0 +1,5 @@
1
+ type CompareFn<L, R> = (lhs: L, rhs: R) => number;
2
+ type InsertStrategy<T> = (list: T[], item: T, compare: CompareFn<T, T>) => number;
3
+ export declare function binSearchInsertAt<T, K>(list: T[], item: K, compare: CompareFn<K, T>): number;
4
+ export declare function createInsert<T>(start: InsertStrategy<T>, compare: CompareFn<T, T>): (list: T[], item: T) => void;
5
+ export {};
@@ -0,0 +1,5 @@
1
+ type Ctor = {
2
+ new (...args: any): any;
3
+ };
4
+ export declare function castObject<O extends Ctor>(value: unknown, ctor: O): InstanceType<O>;
5
+ export {};
@@ -0,0 +1 @@
1
+ export declare function isOverflowClipSupported(): boolean;
@@ -0,0 +1,7 @@
1
+ interface FxParams {
2
+ imageUrl?: string;
3
+ fragmentShader: string | null;
4
+ controlsValues?: Record<string, number | [number, number]>;
5
+ }
6
+ export declare function useImageFx(canvas: HTMLCanvasElement | null | undefined, enabled: boolean, { imageUrl, fragmentShader, controlsValues }: FxParams, width: number, height: number): boolean;
7
+ export {};
@@ -0,0 +1,7 @@
1
+ interface FxParams {
2
+ videoUrl?: string;
3
+ fragmentShader: string | null;
4
+ controls?: Record<string, number | [number, number]>;
5
+ }
6
+ export declare function useVideoFx(canvas: HTMLCanvasElement | null | undefined, enabled: boolean, { videoUrl, fragmentShader, controls }: FxParams, width: number, height: number): boolean;
7
+ export {};
@@ -0,0 +1,2 @@
1
+ import { AnchorSide } from '../../sdk/types/article/ItemArea';
2
+ export declare function getAnchoredItemTop(top: number, sectionHeight: string, anchorSide?: AnchorSide): string;
@@ -0,0 +1,12 @@
1
+ import { AreaAnchor, DimensionMode } from '../../sdk/types/article/ItemArea';
2
+ export declare function getCompoundHeight(compoundSettings: CompoundSettings | undefined, height: number | undefined): string | undefined;
3
+ export declare function getCompoundWidth(compoundSettings: CompoundSettings | undefined, width: number | undefined, isRichText: boolean, exemplary?: number): string | undefined;
4
+ export declare function getCompoundTop(compoundSettings: CompoundSettings | undefined, top: number | undefined): string | undefined;
5
+ export declare function getCompoundLeft(compoundSettings: CompoundSettings | undefined, left: number | undefined): string | undefined;
6
+ export declare function getCompoundTransform(compoundSettings: CompoundSettings | undefined): string;
7
+ type CompoundSettings = {
8
+ positionAnchor: AreaAnchor;
9
+ widthMode: DimensionMode;
10
+ heightMode: DimensionMode;
11
+ };
12
+ export {};
@@ -0,0 +1,2 @@
1
+ import { FillLayer } from '../../sdk/types/article/Item';
2
+ export declare function getFill(fill: FillLayer): string;
@@ -0,0 +1 @@
1
+ export declare function getFontFamilyValue(value: string | undefined): string;
@@ -0,0 +1,10 @@
1
+ interface Range {
2
+ start: number;
3
+ end: number;
4
+ }
5
+ /**
6
+ * @param length
7
+ * @param ranges - SORTED array of ranges [start, end)
8
+ */
9
+ export declare function getInvertedRanges(length: number, ranges: Range[]): Range[];
10
+ export {};
@@ -0,0 +1,2 @@
1
+ import { AnchorSide } from '../../sdk/types/article/ItemArea';
2
+ export declare function getItemTopStyle(top: number, anchorSide?: AnchorSide): string;
@@ -0,0 +1 @@
1
+ export declare function getStyleFromItemStateAndParams<T>(stateValue: T | undefined, paramsValue: T | undefined): T | undefined;
@@ -0,0 +1 @@
1
+ export declare function getYoutubeId({ hostname, pathname, search }: URL): string;