@cntrl-site/sdk-nextjs 1.8.9 → 1.8.11

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 (121) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +4 -4
  3. package/TODO.md +1 -1
  4. package/eslint.config.mjs +35 -35
  5. package/jest.config.js +6 -6
  6. package/lib/common/useItemFXData.js +7 -7
  7. package/lib/components/Article.js +5 -5
  8. package/lib/components/LayoutStyle.js +4 -4
  9. package/lib/components/Section/Section.js +43 -43
  10. package/lib/components/items/CodeEmbedItem/CodeEmbedItem.js +35 -30
  11. package/lib/components/items/ComponentItem/ComponentItem.js +11 -11
  12. package/lib/components/items/CompoundItem/CompoundChild.js +20 -20
  13. package/lib/components/items/CompoundItem/CompoundItem.js +14 -14
  14. package/lib/components/items/CustomItem/CustomItem.js +9 -9
  15. package/lib/components/items/EmbedVideoItem/VimeoEmbed.js +23 -23
  16. package/lib/components/items/EmbedVideoItem/YoutubeEmbed.js +26 -26
  17. package/lib/components/items/FileItem/ImageItem.js +38 -38
  18. package/lib/components/items/FileItem/VideoItem.js +45 -45
  19. package/lib/components/items/GroupItem/GroupItem.js +13 -13
  20. package/lib/components/items/Item.js +30 -30
  21. package/lib/components/items/RectangleItem/RectangleItem.js +20 -20
  22. package/lib/components/items/RichTextItem/RichTextItem.js +21 -21
  23. package/lib/utils/RichTextConverter/RichTextConverter.js +21 -21
  24. package/package.json +58 -57
  25. package/src/common/useCurrentLayout.ts +52 -52
  26. package/src/common/useExemplary.ts +9 -9
  27. package/src/common/useItemFXData.ts +47 -47
  28. package/src/common/useKeyframeValue.ts +85 -85
  29. package/src/common/useRegisterResize.ts +17 -17
  30. package/src/components/Article.tsx +66 -66
  31. package/src/components/ArticleWrapper.tsx +21 -21
  32. package/src/components/Head.tsx +56 -56
  33. package/src/components/LayoutStyle.tsx +21 -21
  34. package/src/components/Page.tsx +33 -33
  35. package/src/components/ScrollPlaybackVideo.tsx +56 -56
  36. package/src/components/Section/Section.tsx +164 -164
  37. package/src/components/Section/useSectionColor.ts +19 -19
  38. package/src/components/Section/useSectionHeightMap.ts +19 -19
  39. package/src/components/items/CodeEmbedItem/CodeEmbedItem.tsx +137 -132
  40. package/src/components/items/CodeEmbedItem/useCodeEmbedItem.ts +36 -36
  41. package/src/components/items/ComponentItem/ComponentItem.tsx +62 -62
  42. package/src/components/items/ComponentItem/useComponentItem.ts +23 -23
  43. package/src/components/items/CompoundItem/CompoundChild.tsx +150 -150
  44. package/src/components/items/CompoundItem/CompoundItem.tsx +70 -70
  45. package/src/components/items/CompoundItem/useCompoundItem.ts +21 -21
  46. package/src/components/items/CustomItem/CustomItem.tsx +48 -48
  47. package/src/components/items/EmbedVideoItem/VimeoEmbed.tsx +202 -202
  48. package/src/components/items/EmbedVideoItem/YoutubeEmbed.tsx +187 -187
  49. package/src/components/items/EmbedVideoItem/useEmbedVideoItem.ts +46 -46
  50. package/src/components/items/FileItem/ImageItem.tsx +156 -156
  51. package/src/components/items/FileItem/VideoItem.tsx +185 -185
  52. package/src/components/items/FileItem/useFileItem.ts +73 -73
  53. package/src/components/items/GroupItem/GroupItem.tsx +79 -79
  54. package/src/components/items/GroupItem/useGroupItem.ts +34 -34
  55. package/src/components/items/Item.tsx +251 -251
  56. package/src/components/items/LinkWrapper.tsx +39 -39
  57. package/src/components/items/RectangleItem/RectangleItem.tsx +95 -95
  58. package/src/components/items/RectangleItem/useRectangleItem.ts +82 -82
  59. package/src/components/items/RichTextItem/RichTextItem.tsx +105 -105
  60. package/src/components/items/RichTextItem/useRichTextItem.ts +12 -12
  61. package/src/components/items/RichTextWrapper.tsx +15 -15
  62. package/src/components/items/itemsMap.ts +28 -28
  63. package/src/components/items/useDraggable.ts +252 -252
  64. package/src/components/items/useItemAngle.ts +13 -13
  65. package/src/components/items/useItemArea.ts +35 -35
  66. package/src/components/items/useItemPointerEvents.ts +23 -23
  67. package/src/components/items/useItemScale.ts +17 -17
  68. package/src/components/items/useItemTriggers.ts +15 -15
  69. package/src/components/items/useRichTextItemValues.ts +65 -65
  70. package/src/components/items/useSizing.ts +25 -25
  71. package/src/components/items/useStickyItemTop.ts +21 -21
  72. package/src/components/useLayoutContext.ts +7 -7
  73. package/src/index.ts +24 -24
  74. package/src/interactions/CSSPropertyNameMap.ts +38 -38
  75. package/src/interactions/InteractionsRegistry.ts +283 -283
  76. package/src/interactions/ItemInteractionCtrl.ts +77 -77
  77. package/src/interactions/getTransition.ts +27 -27
  78. package/src/interactions/types.ts +36 -36
  79. package/src/interactions/useItemInteractionCtrl.ts +18 -18
  80. package/src/provider/ArticleRectContext.ts +4 -4
  81. package/src/provider/CntrlContext.ts +5 -5
  82. package/src/provider/CntrlProvider.tsx +11 -11
  83. package/src/provider/CntrlSdkContext.ts +83 -83
  84. package/src/provider/CustomItemRegistry.ts +14 -14
  85. package/src/provider/CustomItemTypes.ts +3 -3
  86. package/src/provider/CustomSectionRegistry.ts +25 -25
  87. package/src/provider/InteractionsContext.old.tsx +66 -66
  88. package/src/provider/InteractionsContext.test.tsx +97 -97
  89. package/src/provider/InteractionsContext.tsx +28 -28
  90. package/src/provider/Keyframes.ts +11 -11
  91. package/src/provider/KeyframesContext.ts +5 -5
  92. package/src/provider/LayoutContext.ts +3 -3
  93. package/src/provider/defaultContext.ts +8 -8
  94. package/src/provider/useCntrlContext.ts +8 -8
  95. package/src/styled-jsx.d.ts +1 -1
  96. package/src/utils/Animator/Animator.ts +371 -371
  97. package/src/utils/ArticleRectManager/ArticleRectObserver.ts +93 -93
  98. package/src/utils/ArticleRectManager/useArticleRectObserver.ts +17 -17
  99. package/src/utils/ArticleRectManager/useSectionRegistry.ts +11 -11
  100. package/src/utils/EventEmitter.ts +41 -41
  101. package/src/utils/RichTextConverter/RichTextConverter.tsx +326 -326
  102. package/src/utils/ScaleAnchorMap.ts +13 -13
  103. package/src/utils/StickyManager/StickyManager.ts +23 -23
  104. package/src/utils/Youtube/YouTubeIframeApiLoader.ts +58 -58
  105. package/src/utils/Youtube/YoutubeIframeApi.ts +101 -101
  106. package/src/utils/Youtube/useYouTubeIframeApi.ts +12 -12
  107. package/src/utils/binSearchInsertAt.ts +33 -33
  108. package/src/utils/castObject.ts +10 -10
  109. package/src/utils/effects/useImageFx.ts +113 -113
  110. package/src/utils/effects/useVideoFx.ts +116 -116
  111. package/src/utils/getAnchoredItemTop.ts +12 -12
  112. package/src/utils/getCompoundBoundaryStyles.ts +60 -60
  113. package/src/utils/getFontFamilyValue.ts +3 -3
  114. package/src/utils/getInvertedRanges.ts +43 -43
  115. package/src/utils/getItemTopStyle.ts +14 -14
  116. package/src/utils/getStyleFromItemStateAndParams.ts +8 -8
  117. package/src/utils/getValidYoutubeUrl.ts +29 -29
  118. package/src/utils/isItemType.ts +5 -5
  119. package/src/utils/rangeMap.ts +13 -13
  120. package/src/utils/useElementRect.ts +23 -23
  121. package/cntrl-site-sdk-nextjs-1.8.1.tgz +0 -0
@@ -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
- import { cntrlSdkContext as sdk } from './provider/defaultContext';
2
-
3
- export * from '@cntrl-site/sdk';
4
- export { RichTextConverter } from './utils/RichTextConverter/RichTextConverter';
5
- export { Page } from './components/Page';
6
- export type { PageProps } from './components/Page';
7
- export { CNTRLHead as Head } from './components/Head';
8
- export { Article } from './components/Article';
9
- export { Section } from './components/Section/Section';
10
- export { Item } from './components/items/Item';
11
- export { ImageItem } from './components/items/FileItem/ImageItem';
12
- export { RectangleItem } from './components/items/RectangleItem/RectangleItem';
13
- export { RichTextItem } from './components/items/RichTextItem/RichTextItem';
14
- export { VideoItem } from './components/items/FileItem/VideoItem';
15
- export { LayoutStyle } from './components/LayoutStyle';
16
- export { VimeoEmbedItem } from './components/items/EmbedVideoItem/VimeoEmbed';
17
- export { YoutubeEmbedItem } from './components/items/EmbedVideoItem/YoutubeEmbed';
18
-
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
+ import { cntrlSdkContext as sdk } from './provider/defaultContext';
2
+
3
+ export * from '@cntrl-site/sdk';
4
+ export { RichTextConverter } from './utils/RichTextConverter/RichTextConverter';
5
+ export { Page } from './components/Page';
6
+ export type { PageProps } from './components/Page';
7
+ export { CNTRLHead as Head } from './components/Head';
8
+ export { Article } from './components/Article';
9
+ export { Section } from './components/Section/Section';
10
+ export { Item } from './components/items/Item';
11
+ export { ImageItem } from './components/items/FileItem/ImageItem';
12
+ export { RectangleItem } from './components/items/RectangleItem/RectangleItem';
13
+ export { RichTextItem } from './components/items/RichTextItem/RichTextItem';
14
+ export { VideoItem } from './components/items/FileItem/VideoItem';
15
+ export { LayoutStyle } from './components/LayoutStyle';
16
+ export { VimeoEmbedItem } from './components/items/EmbedVideoItem/VimeoEmbed';
17
+ export { YoutubeEmbedItem } from './components/items/EmbedVideoItem/YoutubeEmbed';
18
+
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
+ }