@cntrl-site/components 0.0.1

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 (155) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/dist/cli.d.ts +10 -0
  4. package/dist/components.css +1 -0
  5. package/dist/index.d.ts +33 -0
  6. package/dist/index.js +7765 -0
  7. package/dist/index.mjs +7748 -0
  8. package/dist/sdk/Client/Client.d.ts +32 -0
  9. package/dist/sdk/Client/Client.test.d.ts +1 -0
  10. package/dist/sdk/Client/__mock__/articleMock.d.ts +2 -0
  11. package/dist/sdk/Client/__mock__/keyframesMock.d.ts +2 -0
  12. package/dist/sdk/Client/__mock__/projectMock.d.ts +2 -0
  13. package/dist/sdk/Components/ControlSlider/ControlSlider.d.ts +90 -0
  14. package/dist/sdk/Components/ControlSlider/ControlSliderComponent.d.ts +519 -0
  15. package/dist/sdk/Components/ImageRevealSlider/ControlImageRevealSliderComponent.d.ts +209 -0
  16. package/dist/sdk/Components/ImageRevealSlider/ImageRevealSlider.d.ts +38 -0
  17. package/dist/sdk/Components/components.d.ts +2 -0
  18. package/dist/sdk/Components/helpers/RichTextRenderer/RichTextRenderer.d.ts +6 -0
  19. package/dist/sdk/Components/helpers/SvgImage/SvgImage.d.ts +9 -0
  20. package/dist/sdk/Components/utils/scalingValue.d.ts +1 -0
  21. package/dist/sdk/FontFaceGenerator/FontFaceGenerator.d.ts +6 -0
  22. package/dist/sdk/FontFaceGenerator/FontFaceGenerator.test.d.ts +1 -0
  23. package/dist/sdk/ScrollPlaybackVideoManager/ScrollPlaybackVideoManager.d.ts +31 -0
  24. package/dist/sdk/VideoDecoder/VideoDecoder.d.ts +12 -0
  25. package/dist/sdk/schemas/article/Article.schema.d.ts +328 -0
  26. package/dist/sdk/schemas/article/FillLayer.schema.d.ts +186 -0
  27. package/dist/sdk/schemas/article/Interaction.schema.d.ts +103 -0
  28. package/dist/sdk/schemas/article/Item.schema.d.ts +40 -0
  29. package/dist/sdk/schemas/article/ItemArea.schema.d.ts +36 -0
  30. package/dist/sdk/schemas/article/ItemBase.schema.d.ts +137 -0
  31. package/dist/sdk/schemas/article/ItemState.schema.d.ts +15723 -0
  32. package/dist/sdk/schemas/article/RichTextItem.schema.d.ts +1372 -0
  33. package/dist/sdk/schemas/article/Section.schema.d.ts +176 -0
  34. package/dist/sdk/schemas/keyframe/Keyframes.schema.d.ts +2000 -0
  35. package/dist/sdk/schemas/project/Layout.schema.d.ts +17 -0
  36. package/dist/sdk/schemas/project/Project.schema.d.ts +253 -0
  37. package/dist/sdk/schemas/shared/FillLayer.schema.d.ts +186 -0
  38. package/dist/sdk/types/article/Article.d.ts +7 -0
  39. package/dist/sdk/types/article/ArticleItemType.d.ts +13 -0
  40. package/dist/sdk/types/article/CompoundSettings.d.ts +6 -0
  41. package/dist/sdk/types/article/FX.d.ts +23 -0
  42. package/dist/sdk/types/article/Interaction.d.ts +28 -0
  43. package/dist/sdk/types/article/Item.d.ts +250 -0
  44. package/dist/sdk/types/article/ItemArea.d.ts +36 -0
  45. package/dist/sdk/types/article/ItemState.d.ts +78 -0
  46. package/dist/sdk/types/article/RichText.d.ts +40 -0
  47. package/dist/sdk/types/article/Section.d.ts +37 -0
  48. package/dist/sdk/types/component/Component.d.ts +15 -0
  49. package/dist/sdk/types/keyframe/Keyframe.d.ts +86 -0
  50. package/dist/sdk/types/project/Fonts.d.ts +22 -0
  51. package/dist/sdk/types/project/Layout.d.ts +6 -0
  52. package/dist/sdk/types/project/Meta.d.ts +9 -0
  53. package/dist/sdk/types/project/Page.d.ts +11 -0
  54. package/dist/sdk/types/project/Project.d.ts +17 -0
  55. package/dist/sdk-nextjs/common/useCurrentLayout.d.ts +6 -0
  56. package/dist/sdk-nextjs/common/useExemplary.d.ts +1 -0
  57. package/dist/sdk-nextjs/common/useItemFXData.d.ts +8 -0
  58. package/dist/sdk-nextjs/common/useKeyframeValue.d.ts +8 -0
  59. package/dist/sdk-nextjs/common/useRegisterResize.d.ts +1 -0
  60. package/dist/sdk-nextjs/components/Article.d.ts +9 -0
  61. package/dist/sdk-nextjs/components/ArticleWrapper.d.ts +2 -0
  62. package/dist/sdk-nextjs/components/Head.d.ts +9 -0
  63. package/dist/sdk-nextjs/components/LayoutStyle.d.ts +9 -0
  64. package/dist/sdk-nextjs/components/Page.d.ts +15 -0
  65. package/dist/sdk-nextjs/components/ScrollPlaybackVideo.d.ts +14 -0
  66. package/dist/sdk-nextjs/components/Section/Section.d.ts +11 -0
  67. package/dist/sdk-nextjs/components/Section/SectionImage.d.ts +14 -0
  68. package/dist/sdk-nextjs/components/Section/SectionVideo.d.ts +17 -0
  69. package/dist/sdk-nextjs/components/Section/useSectionColor.d.ts +4 -0
  70. package/dist/sdk-nextjs/components/Section/useSectionHeightMap.d.ts +3 -0
  71. package/dist/sdk-nextjs/components/items/CodeEmbedItem/CodeEmbedItem.d.ts +5 -0
  72. package/dist/sdk-nextjs/components/items/CodeEmbedItem/useCodeEmbedItem.d.ts +7 -0
  73. package/dist/sdk-nextjs/components/items/ComponentItem/ComponentItem.d.ts +4 -0
  74. package/dist/sdk-nextjs/components/items/ComponentItem/useComponentItem.d.ts +5 -0
  75. package/dist/sdk-nextjs/components/items/CompoundItem/CompoundChild.d.ts +9 -0
  76. package/dist/sdk-nextjs/components/items/CompoundItem/CompoundItem.d.ts +4 -0
  77. package/dist/sdk-nextjs/components/items/CompoundItem/useCompoundItem.d.ts +4 -0
  78. package/dist/sdk-nextjs/components/items/CustomItem/CustomItem.d.ts +4 -0
  79. package/dist/sdk-nextjs/components/items/EmbedVideoItem/VimeoEmbed.d.ts +4 -0
  80. package/dist/sdk-nextjs/components/items/EmbedVideoItem/YoutubeEmbed.d.ts +4 -0
  81. package/dist/sdk-nextjs/components/items/EmbedVideoItem/useEmbedVideoItem.d.ts +6 -0
  82. package/dist/sdk-nextjs/components/items/FileItem/ImageItem.d.ts +4 -0
  83. package/dist/sdk-nextjs/components/items/FileItem/VideoItem.d.ts +4 -0
  84. package/dist/sdk-nextjs/components/items/FileItem/useFileItem.d.ts +8 -0
  85. package/dist/sdk-nextjs/components/items/GroupItem/GroupItem.d.ts +4 -0
  86. package/dist/sdk-nextjs/components/items/GroupItem/useGroupItem.d.ts +5 -0
  87. package/dist/sdk-nextjs/components/items/Item.d.ts +20 -0
  88. package/dist/sdk-nextjs/components/items/LinkWrapper.d.ts +8 -0
  89. package/dist/sdk-nextjs/components/items/RectangleItem/RectangleItem.d.ts +4 -0
  90. package/dist/sdk-nextjs/components/items/RectangleItem/useRectangleItem.d.ts +9 -0
  91. package/dist/sdk-nextjs/components/items/RichTextItem/RichTextItem.d.ts +4 -0
  92. package/dist/sdk-nextjs/components/items/RichTextItem/useRichTextItem.d.ts +3 -0
  93. package/dist/sdk-nextjs/components/items/RichTextWrapper.d.ts +7 -0
  94. package/dist/sdk-nextjs/components/items/itemsMap.d.ts +4 -0
  95. package/dist/sdk-nextjs/components/items/useDraggable.d.ts +17 -0
  96. package/dist/sdk-nextjs/components/items/useItemAngle.d.ts +2 -0
  97. package/dist/sdk-nextjs/components/items/useItemArea.d.ts +12 -0
  98. package/dist/sdk-nextjs/components/items/useItemPointerEvents.d.ts +4 -0
  99. package/dist/sdk-nextjs/components/items/useItemScale.d.ts +2 -0
  100. package/dist/sdk-nextjs/components/items/useItemTriggers.d.ts +6 -0
  101. package/dist/sdk-nextjs/components/items/useRichTextItemValues.d.ts +9 -0
  102. package/dist/sdk-nextjs/components/items/useSizing.d.ts +8 -0
  103. package/dist/sdk-nextjs/components/items/useStickyItemTop.d.ts +2 -0
  104. package/dist/sdk-nextjs/components/useLayoutContext.d.ts +1 -0
  105. package/dist/sdk-nextjs/interactions/CSSPropertyNameMap.d.ts +4 -0
  106. package/dist/sdk-nextjs/interactions/InteractionsRegistry.d.ts +39 -0
  107. package/dist/sdk-nextjs/interactions/ItemInteractionCtrl.d.ts +21 -0
  108. package/dist/sdk-nextjs/interactions/getTransition.d.ts +9 -0
  109. package/dist/sdk-nextjs/interactions/types.d.ts +34 -0
  110. package/dist/sdk-nextjs/interactions/useItemInteractionCtrl.d.ts +2 -0
  111. package/dist/sdk-nextjs/provider/ArticleRectContext.d.ts +2 -0
  112. package/dist/sdk-nextjs/provider/CntrlContext.d.ts +2 -0
  113. package/dist/sdk-nextjs/provider/CntrlProvider.d.ts +2 -0
  114. package/dist/sdk-nextjs/provider/CntrlSdkContext.d.ts +31 -0
  115. package/dist/sdk-nextjs/provider/CustomItemRegistry.d.ts +6 -0
  116. package/dist/sdk-nextjs/provider/CustomItemTypes.d.ts +2 -0
  117. package/dist/sdk-nextjs/provider/CustomSectionRegistry.d.ts +15 -0
  118. package/dist/sdk-nextjs/provider/InteractionsContext.d.ts +10 -0
  119. package/dist/sdk-nextjs/provider/Keyframes.d.ts +6 -0
  120. package/dist/sdk-nextjs/provider/KeyframesContext.d.ts +2 -0
  121. package/dist/sdk-nextjs/provider/LayoutContext.d.ts +1 -0
  122. package/dist/sdk-nextjs/provider/WebGLContextManagerContext.d.ts +2 -0
  123. package/dist/sdk-nextjs/provider/defaultContext.d.ts +2 -0
  124. package/dist/sdk-nextjs/provider/useCntrlContext.d.ts +2 -0
  125. package/dist/sdk-nextjs/utils/Animator/Animator.d.ts +43 -0
  126. package/dist/sdk-nextjs/utils/ArticleRectManager/ArticleRectObserver.d.ts +25 -0
  127. package/dist/sdk-nextjs/utils/ArticleRectManager/useArticleRectObserver.d.ts +2 -0
  128. package/dist/sdk-nextjs/utils/ArticleRectManager/useSectionRegistry.d.ts +1 -0
  129. package/dist/sdk-nextjs/utils/EventEmitter.d.ts +11 -0
  130. package/dist/sdk-nextjs/utils/RichTextConverter/RichTextConverter.d.ts +11 -0
  131. package/dist/sdk-nextjs/utils/ScaleAnchorMap.d.ts +11 -0
  132. package/dist/sdk-nextjs/utils/StickyManager/StickyManager.d.ts +10 -0
  133. package/dist/sdk-nextjs/utils/Youtube/YouTubeIframeApiLoader.d.ts +10 -0
  134. package/dist/sdk-nextjs/utils/Youtube/YoutubeIframeApi.d.ts +89 -0
  135. package/dist/sdk-nextjs/utils/Youtube/useYouTubeIframeApi.d.ts +2 -0
  136. package/dist/sdk-nextjs/utils/areFillsVisible/areFillsVisible.d.ts +23 -0
  137. package/dist/sdk-nextjs/utils/areFillsVisible/areFillsVisible.test.d.ts +1 -0
  138. package/dist/sdk-nextjs/utils/binSearchInsertAt.d.ts +5 -0
  139. package/dist/sdk-nextjs/utils/castObject.d.ts +5 -0
  140. package/dist/sdk-nextjs/utils/checkOverflowClipSupport.d.ts +1 -0
  141. package/dist/sdk-nextjs/utils/effects/useImageFx.d.ts +7 -0
  142. package/dist/sdk-nextjs/utils/effects/useVideoFx.d.ts +7 -0
  143. package/dist/sdk-nextjs/utils/getAnchoredItemTop.d.ts +2 -0
  144. package/dist/sdk-nextjs/utils/getCompoundBoundaryStyles.d.ts +12 -0
  145. package/dist/sdk-nextjs/utils/getFill.d.ts +2 -0
  146. package/dist/sdk-nextjs/utils/getFontFamilyValue.d.ts +1 -0
  147. package/dist/sdk-nextjs/utils/getInvertedRanges.d.ts +10 -0
  148. package/dist/sdk-nextjs/utils/getItemTopStyle.d.ts +2 -0
  149. package/dist/sdk-nextjs/utils/getStyleFromItemStateAndParams.d.ts +1 -0
  150. package/dist/sdk-nextjs/utils/getValidYoutubeUrl.d.ts +1 -0
  151. package/dist/sdk-nextjs/utils/isItemType.d.ts +3 -0
  152. package/dist/sdk-nextjs/utils/rangeMap.d.ts +1 -0
  153. package/dist/sdk-nextjs/utils/useElementRect.d.ts +1 -0
  154. package/dist/utils.d.ts +3 -0
  155. package/package.json +92 -0
@@ -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;
@@ -0,0 +1,3 @@
1
+ import { ItemAny, Item as TItem } from '../../sdk/types/article/Item';
2
+ import { ArticleItemType } from '../../sdk/types/article/ArticleItemType';
3
+ export declare function isItemType<T extends ArticleItemType>(item: ItemAny, itemType: T): item is TItem<T>;
@@ -0,0 +1 @@
1
+ export declare function rangeMap(n: number, start1: number, stop1: number, start2: number, stop2: number, withinBounds?: boolean): number;
@@ -0,0 +1 @@
1
+ export declare function useElementRect(element: HTMLElement | null): DOMRect | undefined;
@@ -0,0 +1,3 @@
1
+ import { Layout } from './sdk/types/project/Layout';
2
+ export declare function getLayoutStyles<V, M>(layouts: Layout[], layoutValues: Record<string, V>[], mapToStyles: (values: V[], exemplary: number) => M): string;
3
+ export declare function getLayoutMediaQuery(layoutId: string, layouts: Layout[]): string;
package/package.json ADDED
@@ -0,0 +1,92 @@
1
+ {
2
+ "name": "@cntrl-site/components",
3
+ "version": "0.0.1",
4
+ "description": "Custom components for control editor and public websites.",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.mjs",
7
+ "types": "dist/index.d.ts",
8
+ "style": "dist/sdk.css",
9
+ "sideEffects": [
10
+ "**/*.css"
11
+ ],
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "import": "./dist/index.mjs",
16
+ "require": "./dist/index.js"
17
+ },
18
+ "./style/sdk.css": {
19
+ "default": "./dist/sdk.css"
20
+ }
21
+ },
22
+ "scripts": {
23
+ "test": "jest",
24
+ "dev": "vite development",
25
+ "prebuild": "rimraf ./dist",
26
+ "build": "vite build",
27
+ "prepublishOnly": "cross-env NODE_ENV=production npm run build"
28
+ },
29
+ "files": [
30
+ "dist",
31
+ "resources"
32
+ ],
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "git+https://github.com/cntrl-site/components.git"
36
+ },
37
+ "author": "arsen@momdesign.nyc",
38
+ "license": "MIT",
39
+ "bugs": {
40
+ "url": "https://github.com/cntrl-site/components/issues"
41
+ },
42
+ "homepage": "https://github.com/cntrl-site/components#readme",
43
+ "directories": {
44
+ "lib": "dist"
45
+ },
46
+ "dependencies": {
47
+ "@antfu/eslint-config": "^3.16.0",
48
+ "@cntrl-site/color": "^1.0.0",
49
+ "@cntrl-site/effects": "^1.4.0",
50
+ "@splidejs/react-splide": "^0.7.12",
51
+ "@testing-library/jest-dom": "^6.4.8",
52
+ "@testing-library/react": "^16.0.0",
53
+ "@types/ejs": "^3.1.2",
54
+ "@types/isomorphic-fetch": "^0.0.36",
55
+ "@types/ua-parser-js": "^0.7.39",
56
+ "@types/vimeo__player": "^2.18.3",
57
+ "@vimeo/player": "^2.25.0",
58
+ "classnames": "^2.5.1",
59
+ "commander": "^10.0.1",
60
+ "dotenv": "^16.1.3",
61
+ "ejs": "^3.1.9",
62
+ "html-react-parser": "^3.0.1",
63
+ "isomorphic-fetch": "^3.0.0",
64
+ "mp4box": "^0.5.2",
65
+ "resize-observer-polyfill": "^1.5.1",
66
+ "styled-jsx": "^5.0.2",
67
+ "ts-node": "^10.9.1",
68
+ "ua-parser-js": "^1.0.37",
69
+ "url": "^0.11.0",
70
+ "zod": "^3.22.4"
71
+ },
72
+ "devDependencies": {
73
+ "@tsconfig/node16": "^1.0.3",
74
+ "@tsconfig/recommended": "^1.0.1",
75
+ "@types/jest": "^29.5.12",
76
+ "@types/node": "^18.11.7",
77
+ "@types/react": "^18.2.0",
78
+ "@types/react-dom": "^18.2.0",
79
+ "@vitejs/plugin-react": "^4.3.4",
80
+ "cross-env": "^10.1.0",
81
+ "jest": "^29.7.0",
82
+ "jest-environment-jsdom": "^29.7.0",
83
+ "react": "^18.2.0",
84
+ "react-dom": "^18.2.0",
85
+ "rimraf": "^6.0.1",
86
+ "sass": "^1.86.3",
87
+ "ts-jest": "^29.0.3",
88
+ "typescript": "^5.2.2",
89
+ "vite": "^6.2.5",
90
+ "vite-plugin-dts": "^4.5.3"
91
+ }
92
+ }