@cntrl-site/sdk-nextjs 1.6.12 → 1.6.13

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 (122) hide show
  1. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  2. package/.idea/modules.xml +8 -0
  3. package/.idea/sdk-nextjs.iml +12 -0
  4. package/.idea/vcs.xml +6 -0
  5. package/Icon/r +0 -0
  6. package/LICENSE +21 -21
  7. package/README.md +4 -4
  8. package/TODO.md +1 -1
  9. package/eslint.config.mjs +35 -35
  10. package/jest.config.js +6 -6
  11. package/lib/common/useItemFXData.js +7 -7
  12. package/lib/components/Article.js +5 -5
  13. package/lib/components/LayoutStyle.js +4 -4
  14. package/lib/components/Section/Section.js +78 -15
  15. package/lib/components/items/CodeEmbedItem/CodeEmbedItem.js +30 -30
  16. package/lib/components/items/CompoundItem/CompoundChild.js +20 -20
  17. package/lib/components/items/CompoundItem/CompoundItem.js +14 -14
  18. package/lib/components/items/CustomItem/CustomItem.js +9 -9
  19. package/lib/components/items/EmbedVideoItem/VimeoEmbed.js +23 -23
  20. package/lib/components/items/EmbedVideoItem/YoutubeEmbed.js +26 -26
  21. package/lib/components/items/FileItem/ImageItem.js +38 -38
  22. package/lib/components/items/FileItem/VideoItem.js +45 -45
  23. package/lib/components/items/GroupItem/GroupItem.js +13 -13
  24. package/lib/components/items/Item.js +30 -30
  25. package/lib/components/items/RectangleItem/RectangleItem.js +20 -20
  26. package/lib/components/items/RichTextItem/RichTextItem.js +21 -21
  27. package/lib/utils/RichTextConverter/RichTextConverter.js +21 -21
  28. package/package.json +57 -57
  29. package/src/common/useCurrentLayout.ts +52 -52
  30. package/src/common/useExemplary.ts +9 -9
  31. package/src/common/useItemFXData.ts +47 -47
  32. package/src/common/useKeyframeValue.ts +85 -85
  33. package/src/common/useRegisterResize.ts +17 -17
  34. package/src/components/Article.tsx +66 -66
  35. package/src/components/ArticleWrapper.tsx +21 -21
  36. package/src/components/Head.tsx +56 -56
  37. package/src/components/LayoutStyle.tsx +21 -21
  38. package/src/components/Page.tsx +33 -33
  39. package/src/components/ScrollPlaybackVideo.tsx +56 -56
  40. package/src/components/Section/Section.tsx +164 -77
  41. package/src/components/Section/useSectionColor.ts +19 -19
  42. package/src/components/Section/useSectionHeightMap.ts +19 -19
  43. package/src/components/items/CodeEmbedItem/CodeEmbedItem.tsx +132 -132
  44. package/src/components/items/CodeEmbedItem/useCodeEmbedItem.ts +36 -36
  45. package/src/components/items/CompoundItem/CompoundChild.tsx +150 -150
  46. package/src/components/items/CompoundItem/CompoundItem.tsx +71 -71
  47. package/src/components/items/CompoundItem/useCompoundItem.ts +21 -21
  48. package/src/components/items/CustomItem/CustomItem.tsx +47 -47
  49. package/src/components/items/EmbedVideoItem/VimeoEmbed.tsx +202 -202
  50. package/src/components/items/EmbedVideoItem/YoutubeEmbed.tsx +187 -187
  51. package/src/components/items/EmbedVideoItem/useEmbedVideoItem.ts +46 -46
  52. package/src/components/items/FileItem/ImageItem.tsx +156 -156
  53. package/src/components/items/FileItem/VideoItem.tsx +185 -185
  54. package/src/components/items/FileItem/useFileItem.ts +73 -73
  55. package/src/components/items/GroupItem/GroupItem.tsx +79 -79
  56. package/src/components/items/GroupItem/useGroupItem.ts +34 -34
  57. package/src/components/items/Item.tsx +251 -251
  58. package/src/components/items/LinkWrapper.tsx +39 -39
  59. package/src/components/items/RectangleItem/RectangleItem.tsx +95 -95
  60. package/src/components/items/RectangleItem/useRectangleItem.ts +82 -82
  61. package/src/components/items/RichTextItem/RichTextItem.tsx +105 -105
  62. package/src/components/items/RichTextItem/useRichTextItem.ts +12 -12
  63. package/src/components/items/RichTextWrapper.tsx +15 -15
  64. package/src/components/items/itemsMap.ts +26 -26
  65. package/src/components/items/useDraggable.ts +252 -252
  66. package/src/components/items/useItemAngle.ts +13 -13
  67. package/src/components/items/useItemArea.ts +35 -35
  68. package/src/components/items/useItemPointerEvents.ts +23 -23
  69. package/src/components/items/useItemScale.ts +17 -17
  70. package/src/components/items/useItemTriggers.ts +15 -15
  71. package/src/components/items/useRichTextItemValues.ts +65 -65
  72. package/src/components/items/useSizing.ts +25 -25
  73. package/src/components/items/useStickyItemTop.ts +21 -21
  74. package/src/components/useLayoutContext.ts +7 -7
  75. package/src/index.ts +24 -24
  76. package/src/interactions/CSSPropertyNameMap.ts +38 -38
  77. package/src/interactions/InteractionsRegistry.ts +275 -275
  78. package/src/interactions/ItemInteractionCtrl.ts +77 -77
  79. package/src/interactions/getTransition.ts +27 -27
  80. package/src/interactions/types.ts +36 -36
  81. package/src/interactions/useItemInteractionCtrl.ts +18 -18
  82. package/src/provider/ArticleRectContext.ts +4 -4
  83. package/src/provider/CntrlContext.ts +5 -5
  84. package/src/provider/CntrlProvider.tsx +11 -11
  85. package/src/provider/CntrlSdkContext.ts +69 -69
  86. package/src/provider/CustomItemRegistry.ts +14 -14
  87. package/src/provider/CustomItemTypes.ts +3 -3
  88. package/src/provider/CustomSectionRegistry.ts +25 -25
  89. package/src/provider/InteractionsContext.old.tsx +65 -65
  90. package/src/provider/InteractionsContext.test.tsx +97 -97
  91. package/src/provider/InteractionsContext.tsx +28 -28
  92. package/src/provider/Keyframes.ts +11 -11
  93. package/src/provider/KeyframesContext.ts +5 -5
  94. package/src/provider/LayoutContext.ts +3 -3
  95. package/src/provider/defaultContext.ts +8 -8
  96. package/src/provider/useCntrlContext.ts +8 -8
  97. package/src/styled-jsx.d.ts +1 -1
  98. package/src/utils/Animator/Animator.ts +371 -371
  99. package/src/utils/ArticleRectManager/ArticleRectObserver.ts +93 -93
  100. package/src/utils/ArticleRectManager/useArticleRectObserver.ts +17 -17
  101. package/src/utils/ArticleRectManager/useSectionRegistry.ts +11 -11
  102. package/src/utils/EventEmitter.ts +41 -41
  103. package/src/utils/RichTextConverter/RichTextConverter.tsx +326 -326
  104. package/src/utils/ScaleAnchorMap.ts +13 -13
  105. package/src/utils/StickyManager/StickyManager.ts +23 -23
  106. package/src/utils/Youtube/YouTubeIframeApiLoader.ts +58 -58
  107. package/src/utils/Youtube/YoutubeIframeApi.ts +101 -101
  108. package/src/utils/Youtube/useYouTubeIframeApi.ts +12 -12
  109. package/src/utils/binSearchInsertAt.ts +33 -33
  110. package/src/utils/castObject.ts +10 -10
  111. package/src/utils/effects/useImageFx.ts +113 -113
  112. package/src/utils/effects/useVideoFx.ts +116 -116
  113. package/src/utils/getAnchoredItemTop.ts +12 -12
  114. package/src/utils/getCompoundBondaryStyles.ts +61 -62
  115. package/src/utils/getFontFamilyValue.ts +3 -3
  116. package/src/utils/getInvertedRanges.ts +43 -43
  117. package/src/utils/getItemTopStyle.ts +14 -14
  118. package/src/utils/getStyleFromItemStateAndParams.ts +8 -8
  119. package/src/utils/getValidYoutubeUrl.ts +29 -29
  120. package/src/utils/isItemType.ts +6 -6
  121. package/src/utils/rangeMap.ts +13 -13
  122. package/src/utils/useElementRect.ts +23 -23
@@ -1,23 +1,23 @@
1
- import { useCallback, useState } from 'react';
2
-
3
- export function useItemPointerEvents(
4
- pointerEvents: 'never' | 'when_visible' | 'always',
5
- isParentVisible: boolean
6
- ) {
7
- const getAllowPointerEvents = () => {
8
- switch (pointerEvents) {
9
- case 'never':
10
- return false;
11
- case 'when_visible':
12
- return isParentVisible;
13
- case 'always':
14
- return true;
15
- }
16
- };
17
- const [allowPointerEvents, setAllowPointerEvents] = useState<boolean>(getAllowPointerEvents());
18
- const handleVisibilityChange = useCallback((isVisible: boolean) => {
19
- if (!isParentVisible || pointerEvents !== 'when_visible') return;
20
- setAllowPointerEvents(isVisible);
21
- }, [isParentVisible, pointerEvents]);
22
- return { allowPointerEvents, handleVisibilityChange };
23
- }
1
+ import { useCallback, useState } from 'react';
2
+
3
+ export function useItemPointerEvents(
4
+ pointerEvents: 'never' | 'when_visible' | 'always',
5
+ isParentVisible: boolean
6
+ ) {
7
+ const getAllowPointerEvents = () => {
8
+ switch (pointerEvents) {
9
+ case 'never':
10
+ return false;
11
+ case 'when_visible':
12
+ return isParentVisible;
13
+ case 'always':
14
+ return true;
15
+ }
16
+ };
17
+ const [allowPointerEvents, setAllowPointerEvents] = useState<boolean>(getAllowPointerEvents());
18
+ const handleVisibilityChange = useCallback((isVisible: boolean) => {
19
+ if (!isParentVisible || pointerEvents !== 'when_visible') return;
20
+ setAllowPointerEvents(isVisible);
21
+ }, [isParentVisible, pointerEvents]);
22
+ return { allowPointerEvents, handleVisibilityChange };
23
+ }
@@ -1,17 +1,17 @@
1
- import { ItemAny, KeyframeType } from '@cntrl-site/sdk';
2
- import { useKeyframeValue } from '../../common/useKeyframeValue';
3
- import { useLayoutContext } from '../useLayoutContext';
4
-
5
- export const useItemScale = (item: ItemAny, sectionId: string) => {
6
- const layoutId = useLayoutContext();
7
- const scale = useKeyframeValue(
8
- item,
9
- KeyframeType.Scale,
10
- (item, layoutId) => (layoutId ? item.area[layoutId].scale : undefined),
11
- (animator, scroll, value) => value !== undefined ? animator.getScale({ scale: value }, scroll).scale : undefined,
12
- sectionId,
13
- [layoutId]
14
- );
15
-
16
- return scale;
17
- };
1
+ import { ItemAny, KeyframeType } from '@cntrl-site/sdk';
2
+ import { useKeyframeValue } from '../../common/useKeyframeValue';
3
+ import { useLayoutContext } from '../useLayoutContext';
4
+
5
+ export const useItemScale = (item: ItemAny, sectionId: string) => {
6
+ const layoutId = useLayoutContext();
7
+ const scale = useKeyframeValue(
8
+ item,
9
+ KeyframeType.Scale,
10
+ (item, layoutId) => (layoutId ? item.area[layoutId].scale : undefined),
11
+ (animator, scroll, value) => value !== undefined ? animator.getScale({ scale: value }, scroll).scale : undefined,
12
+ sectionId,
13
+ [layoutId]
14
+ );
15
+
16
+ return scale;
17
+ };
@@ -1,15 +1,15 @@
1
- import { ItemInteractionCtrl } from '../../interactions/types';
2
-
3
- export function useItemTriggers(interactionCtrl: ItemInteractionCtrl | undefined) {
4
- return {
5
- onClick: () => {
6
- interactionCtrl?.sendTrigger('click');
7
- },
8
- onMouseEnter: () => {
9
- interactionCtrl?.sendTrigger('hover-in');
10
- },
11
- onMouseLeave: () => {
12
- interactionCtrl?.sendTrigger('hover-out');
13
- }
14
- };
15
- }
1
+ import { ItemInteractionCtrl } from '../../interactions/types';
2
+
3
+ export function useItemTriggers(interactionCtrl: ItemInteractionCtrl | undefined) {
4
+ return {
5
+ onClick: () => {
6
+ interactionCtrl?.sendTrigger('click');
7
+ },
8
+ onMouseEnter: () => {
9
+ interactionCtrl?.sendTrigger('hover-in');
10
+ },
11
+ onMouseLeave: () => {
12
+ interactionCtrl?.sendTrigger('hover-out');
13
+ }
14
+ };
15
+ }
@@ -1,65 +1,65 @@
1
- import { useKeyframeValue } from '../../common/useKeyframeValue';
2
- import { KeyframeType, RichTextItem } from '@cntrl-site/sdk';
3
- import { useLayoutContext } from '../useLayoutContext';
4
-
5
- const DEFAULT_COLOR = 'rgba(0, 0, 0, 1)';
6
-
7
- export const useRichTextItemValues = (item: RichTextItem, sectionId: string) => {
8
- const layoutId = useLayoutContext();
9
- const blur = useKeyframeValue(
10
- item,
11
- KeyframeType.Blur,
12
- (item, layoutId) => {
13
- if (!layoutId) return;
14
- const layoutParams = item.layoutParams[layoutId];
15
- return 'blur' in layoutParams ? layoutParams.blur : 0;
16
- },
17
- (animator, scroll, value) => value !== undefined ? animator.getBlur({ blur: value }, scroll).blur : undefined,
18
- sectionId,
19
- [layoutId]
20
- );
21
-
22
- const letterSpacing = useKeyframeValue(
23
- item,
24
- KeyframeType.LetterSpacing,
25
- (item, layoutId) => {
26
- if (!layoutId) return;
27
- const layoutParams = item.layoutParams[layoutId];
28
- return 'letterSpacing' in layoutParams ? layoutParams.letterSpacing : 0;
29
- },
30
- (animator, scroll, value) => value !== undefined ? animator.getLetterSpacing({ letterSpacing: value }, scroll).letterSpacing : undefined,
31
- sectionId,
32
- [layoutId]
33
- );
34
-
35
- const wordSpacing = useKeyframeValue(
36
- item,
37
- KeyframeType.WordSpacing,
38
- (item, layoutId) => {
39
- if (!layoutId) return;
40
- const layoutParams = item.layoutParams[layoutId];
41
- return 'wordSpacing' in layoutParams ? layoutParams.wordSpacing : 0;
42
- },
43
- (animator, scroll, value) => value !== undefined ? animator.getWordSpacing({ wordSpacing: value }, scroll).wordSpacing : undefined,
44
- sectionId,
45
- [layoutId]
46
- );
47
-
48
- const color = useKeyframeValue(
49
- item,
50
- KeyframeType.TextColor,
51
- (item, layoutId) => {
52
- if (!layoutId) return;
53
- const layoutParams = item.layoutParams[layoutId];
54
- return 'color' in layoutParams ? layoutParams.color : DEFAULT_COLOR;
55
- },
56
- (animator, scroll, value) => value ? animator.getTextColor({ color: value }, scroll).color : undefined,
57
- sectionId,
58
- [layoutId]
59
- );
60
-
61
- const fontSize = layoutId ? item.layoutParams[layoutId].fontSize : undefined;
62
- const lineHeight = layoutId ? item.layoutParams[layoutId].lineHeight : undefined;
63
-
64
- return { blur, letterSpacing, wordSpacing, color, fontSize, lineHeight };
65
- };
1
+ import { useKeyframeValue } from '../../common/useKeyframeValue';
2
+ import { KeyframeType, RichTextItem } from '@cntrl-site/sdk';
3
+ import { useLayoutContext } from '../useLayoutContext';
4
+
5
+ const DEFAULT_COLOR = 'rgba(0, 0, 0, 1)';
6
+
7
+ export const useRichTextItemValues = (item: RichTextItem, sectionId: string) => {
8
+ const layoutId = useLayoutContext();
9
+ const blur = useKeyframeValue(
10
+ item,
11
+ KeyframeType.Blur,
12
+ (item, layoutId) => {
13
+ if (!layoutId) return;
14
+ const layoutParams = item.layoutParams[layoutId];
15
+ return 'blur' in layoutParams ? layoutParams.blur : 0;
16
+ },
17
+ (animator, scroll, value) => value !== undefined ? animator.getBlur({ blur: value }, scroll).blur : undefined,
18
+ sectionId,
19
+ [layoutId]
20
+ );
21
+
22
+ const letterSpacing = useKeyframeValue(
23
+ item,
24
+ KeyframeType.LetterSpacing,
25
+ (item, layoutId) => {
26
+ if (!layoutId) return;
27
+ const layoutParams = item.layoutParams[layoutId];
28
+ return 'letterSpacing' in layoutParams ? layoutParams.letterSpacing : 0;
29
+ },
30
+ (animator, scroll, value) => value !== undefined ? animator.getLetterSpacing({ letterSpacing: value }, scroll).letterSpacing : undefined,
31
+ sectionId,
32
+ [layoutId]
33
+ );
34
+
35
+ const wordSpacing = useKeyframeValue(
36
+ item,
37
+ KeyframeType.WordSpacing,
38
+ (item, layoutId) => {
39
+ if (!layoutId) return;
40
+ const layoutParams = item.layoutParams[layoutId];
41
+ return 'wordSpacing' in layoutParams ? layoutParams.wordSpacing : 0;
42
+ },
43
+ (animator, scroll, value) => value !== undefined ? animator.getWordSpacing({ wordSpacing: value }, scroll).wordSpacing : undefined,
44
+ sectionId,
45
+ [layoutId]
46
+ );
47
+
48
+ const color = useKeyframeValue(
49
+ item,
50
+ KeyframeType.TextColor,
51
+ (item, layoutId) => {
52
+ if (!layoutId) return;
53
+ const layoutParams = item.layoutParams[layoutId];
54
+ return 'color' in layoutParams ? layoutParams.color : DEFAULT_COLOR;
55
+ },
56
+ (animator, scroll, value) => value ? animator.getTextColor({ color: value }, scroll).color : undefined,
57
+ sectionId,
58
+ [layoutId]
59
+ );
60
+
61
+ const fontSize = layoutId ? item.layoutParams[layoutId].fontSize : undefined;
62
+ const lineHeight = layoutId ? item.layoutParams[layoutId].lineHeight : undefined;
63
+
64
+ return { blur, letterSpacing, wordSpacing, color, fontSize, lineHeight };
65
+ };
@@ -1,25 +1,25 @@
1
- import { isItemType } from '../../utils/isItemType';
2
- import { ArticleItemType, ItemAny } from '@cntrl-site/sdk';
3
- import { useLayoutContext } from '../useLayoutContext';
4
-
5
- export function useSizing(item: ItemAny) {
6
- const layout = useLayoutContext();
7
- const sizing = layout && isItemType(item, ArticleItemType.RichText)
8
- ? item.layoutParams[layout].sizing
9
- : undefined;
10
- const sizingAxis = parseSizing(sizing);
11
- return sizingAxis;
12
- }
13
-
14
- export function parseSizing(sizing: string = 'manual'): Axis {
15
- const axisSizing = sizing.split(' ');
16
- return {
17
- y: axisSizing[0],
18
- x: axisSizing[1] ? axisSizing[1] : axisSizing[0]
19
- } as Axis;
20
- }
21
-
22
- interface Axis {
23
- x: 'manual' | 'auto';
24
- y: 'manual' | 'auto';
25
- }
1
+ import { isItemType } from '../../utils/isItemType';
2
+ import { ArticleItemType, ItemAny } from '@cntrl-site/sdk';
3
+ import { useLayoutContext } from '../useLayoutContext';
4
+
5
+ export function useSizing(item: ItemAny) {
6
+ const layout = useLayoutContext();
7
+ const sizing = layout && isItemType(item, ArticleItemType.RichText)
8
+ ? item.layoutParams[layout].sizing
9
+ : undefined;
10
+ const sizingAxis = parseSizing(sizing);
11
+ return sizingAxis;
12
+ }
13
+
14
+ export function parseSizing(sizing: string = 'manual'): Axis {
15
+ const axisSizing = sizing.split(' ');
16
+ return {
17
+ y: axisSizing[0],
18
+ x: axisSizing[1] ? axisSizing[1] : axisSizing[0]
19
+ } as Axis;
20
+ }
21
+
22
+ interface Axis {
23
+ x: 'manual' | 'auto';
24
+ y: 'manual' | 'auto';
25
+ }
@@ -1,21 +1,21 @@
1
- import { ItemAny, KeyframeType } from '@cntrl-site/sdk';
2
- import { useKeyframeValue } from '../../common/useKeyframeValue';
3
- import { useLayoutContext } from '../useLayoutContext';
4
-
5
- export function useStickyItemTop(item: ItemAny, sectionId: string, stateTop?: number) {
6
- const layoutId = useLayoutContext();
7
- const data = useKeyframeValue<{ top: number; left: number } | undefined>(
8
- item,
9
- KeyframeType.Position,
10
- (item, layoutId) => {
11
- if (!layoutId) return;
12
- return item.area[layoutId];
13
- },
14
- (animator, scroll, value) => value ? animator.getPositions(value, scroll) : undefined,
15
- sectionId,
16
- [layoutId]
17
- );
18
- const top = data ? data.top : layoutId ? item.area[layoutId].top : 0;
19
- const sticky = layoutId ? item.sticky[layoutId] : undefined;
20
- return sticky ? (stateTop ?? top) - sticky.from : 0;
21
- }
1
+ import { ItemAny, KeyframeType } from '@cntrl-site/sdk';
2
+ import { useKeyframeValue } from '../../common/useKeyframeValue';
3
+ import { useLayoutContext } from '../useLayoutContext';
4
+
5
+ export function useStickyItemTop(item: ItemAny, sectionId: string, stateTop?: number) {
6
+ const layoutId = useLayoutContext();
7
+ const data = useKeyframeValue<{ top: number; left: number } | undefined>(
8
+ item,
9
+ KeyframeType.Position,
10
+ (item, layoutId) => {
11
+ if (!layoutId) return;
12
+ return item.area[layoutId];
13
+ },
14
+ (animator, scroll, value) => value ? animator.getPositions(value, scroll) : undefined,
15
+ sectionId,
16
+ [layoutId]
17
+ );
18
+ const top = data ? data.top : layoutId ? item.area[layoutId].top : 0;
19
+ const sticky = layoutId ? item.sticky[layoutId] : undefined;
20
+ return sticky ? (stateTop ?? top) - sticky.from : 0;
21
+ }
@@ -1,7 +1,7 @@
1
- import { useContext } from 'react';
2
- import { LayoutContext } from '../provider/LayoutContext';
3
-
4
- export function useLayoutContext() {
5
- const layoutId = useContext(LayoutContext);
6
- return layoutId;
7
- }
1
+ import { useContext } from 'react';
2
+ import { LayoutContext } from '../provider/LayoutContext';
3
+
4
+ export function useLayoutContext() {
5
+ const layoutId = useContext(LayoutContext);
6
+ return layoutId;
7
+ }
package/src/index.ts CHANGED
@@ -1,24 +1,24 @@
1
- export * from '@cntrl-site/sdk';
2
-
3
- export { RichTextConverter } from './utils/RichTextConverter/RichTextConverter';
4
- export { Page } from './components/Page';
5
- export type { PageProps } from './components/Page';
6
- export { CNTRLHead as Head } from './components/Head';
7
- export { Article } from './components/Article';
8
- export { Section } from './components/Section/Section';
9
- export { Item } from './components/items/Item';
10
- export { ImageItem } from './components/items/FileItem/ImageItem';
11
- export { RectangleItem } from './components/items/RectangleItem/RectangleItem';
12
- export { RichTextItem } from './components/items/RichTextItem/RichTextItem';
13
- export { VideoItem } from './components/items/FileItem/VideoItem';
14
- export { LayoutStyle } from './components/LayoutStyle';
15
- export { VimeoEmbedItem } from './components/items/EmbedVideoItem/VimeoEmbed';
16
- export { YoutubeEmbedItem } from './components/items/EmbedVideoItem/YoutubeEmbed';
17
-
18
- import { cntrlSdkContext as sdk } from './provider/defaultContext';
19
- export { CntrlProvider } from './provider/CntrlProvider';
20
- export type { CustomItemComponent } from './provider/CustomItemTypes';
21
- export { useCntrlContext } from './provider/useCntrlContext';
22
- export const customItems = sdk.customItems;
23
- export const customSections = sdk.customSections;
24
- export const cntrlSdkContext = sdk;
1
+ export * from '@cntrl-site/sdk';
2
+
3
+ export { RichTextConverter } from './utils/RichTextConverter/RichTextConverter';
4
+ export { Page } from './components/Page';
5
+ export type { PageProps } from './components/Page';
6
+ export { CNTRLHead as Head } from './components/Head';
7
+ export { Article } from './components/Article';
8
+ export { Section } from './components/Section/Section';
9
+ export { Item } from './components/items/Item';
10
+ export { ImageItem } from './components/items/FileItem/ImageItem';
11
+ export { RectangleItem } from './components/items/RectangleItem/RectangleItem';
12
+ export { RichTextItem } from './components/items/RichTextItem/RichTextItem';
13
+ export { VideoItem } from './components/items/FileItem/VideoItem';
14
+ export { LayoutStyle } from './components/LayoutStyle';
15
+ export { VimeoEmbedItem } from './components/items/EmbedVideoItem/VimeoEmbed';
16
+ export { YoutubeEmbedItem } from './components/items/EmbedVideoItem/YoutubeEmbed';
17
+
18
+ import { cntrlSdkContext as sdk } from './provider/defaultContext';
19
+ export { CntrlProvider } from './provider/CntrlProvider';
20
+ export type { CustomItemComponent } from './provider/CustomItemTypes';
21
+ export { useCntrlContext } from './provider/useCntrlContext';
22
+ export const customItems = sdk.customItems;
23
+ export const customSections = sdk.customSections;
24
+ export const cntrlSdkContext = sdk;
@@ -1,38 +1,38 @@
1
- import { ArticleItemType, ItemState } from '@cntrl-site/sdk';
2
-
3
- export const CSSPropertyNameMap: Record<keyof ItemState<ArticleItemType>, string> = {
4
- 'width': 'width',
5
- 'height': 'height',
6
- 'top': 'top',
7
- 'left': 'left',
8
- 'scale': 'transform',
9
- 'angle': 'transform',
10
- 'opacity': 'opacity',
11
- 'radius': 'border-radius',
12
- 'strokeWidth': 'border-width',
13
- 'strokeColor': 'border-color',
14
- 'fillColor': 'background-color',
15
- 'blur': 'filter',
16
- 'backdropBlur': 'backdrop-filter',
17
- 'letterSpacing': 'letter-spacing',
18
- 'wordSpacing': 'word-spacing',
19
- 'color': 'color'
20
- };
21
-
22
- const PropertyNameCSSMap: Record<string, string[]> = {
23
- 'transform': ['angle', 'scale'],
24
- 'border-radius': ['radius'],
25
- 'border-width': ['strokeWidth'],
26
- 'border-color': ['strokeColor'],
27
- 'background-color': ['fillColor'],
28
- 'filter': ['blur'],
29
- 'backdrop-filter': ['backdrop-blur'],
30
- 'letter-spacing': ['letterSpacing'],
31
- 'word-spacing': ['wordSpacing'],
32
- };
33
-
34
-
35
- export function getStyleKeysFromCSSProperty(cssProp: string): string[] {
36
- const key = PropertyNameCSSMap[cssProp] ?? [cssProp];
37
- return key;
38
- }
1
+ import { ArticleItemType, ItemState } from '@cntrl-site/sdk';
2
+
3
+ export const CSSPropertyNameMap: Record<keyof ItemState<ArticleItemType>, string> = {
4
+ 'width': 'width',
5
+ 'height': 'height',
6
+ 'top': 'top',
7
+ 'left': 'left',
8
+ 'scale': 'transform',
9
+ 'angle': 'transform',
10
+ 'opacity': 'opacity',
11
+ 'radius': 'border-radius',
12
+ 'strokeWidth': 'border-width',
13
+ 'strokeColor': 'border-color',
14
+ 'fillColor': 'background-color',
15
+ 'blur': 'filter',
16
+ 'backdropBlur': 'backdrop-filter',
17
+ 'letterSpacing': 'letter-spacing',
18
+ 'wordSpacing': 'word-spacing',
19
+ 'color': 'color'
20
+ };
21
+
22
+ const PropertyNameCSSMap: Record<string, string[]> = {
23
+ 'transform': ['angle', 'scale'],
24
+ 'border-radius': ['radius'],
25
+ 'border-width': ['strokeWidth'],
26
+ 'border-color': ['strokeColor'],
27
+ 'background-color': ['fillColor'],
28
+ 'filter': ['blur'],
29
+ 'backdrop-filter': ['backdrop-blur'],
30
+ 'letter-spacing': ['letterSpacing'],
31
+ 'word-spacing': ['wordSpacing'],
32
+ };
33
+
34
+
35
+ export function getStyleKeysFromCSSProperty(cssProp: string): string[] {
36
+ const key = PropertyNameCSSMap[cssProp] ?? [cssProp];
37
+ return key;
38
+ }