@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
@@ -0,0 +1,5 @@
1
+ <component name="ProjectCodeStyleConfiguration">
2
+ <state>
3
+ <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
4
+ </state>
5
+ </component>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/sdk-nextjs.iml" filepath="$PROJECT_DIR$/.idea/sdk-nextjs.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="WEB_MODULE" version="4">
3
+ <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$">
5
+ <excludeFolder url="file://$MODULE_DIR$/temp" />
6
+ <excludeFolder url="file://$MODULE_DIR$/.tmp" />
7
+ <excludeFolder url="file://$MODULE_DIR$/tmp" />
8
+ </content>
9
+ <orderEntry type="inheritedJdk" />
10
+ <orderEntry type="sourceFolder" forTests="false" />
11
+ </component>
12
+ </module>
package/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
+ </component>
6
+ </project>
package/Icon/r ADDED
File without changes
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2022 CNTRL
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2022 CNTRL
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # sdk-nextjs
2
- SDK is the code that transforms the raw data from the API
3
- into React components. In Control this happens at build time,
4
- when users hit the "Publish" button from the Project Dashboard.
1
+ # sdk-nextjs
2
+ SDK is the code that transforms the raw data from the API
3
+ into React components. In Control this happens at build time,
4
+ when users hit the "Publish" button from the Project Dashboard.
package/TODO.md CHANGED
@@ -1 +1 @@
1
- 1. Uninstall `@types/isomorphic-fetch` package and run `npm run build` - results in a TS compile error
1
+ 1. Uninstall `@types/isomorphic-fetch` package and run `npm run build` - results in a TS compile error
package/eslint.config.mjs CHANGED
@@ -1,35 +1,35 @@
1
- import antfu from '@antfu/eslint-config';
2
-
3
- export default antfu(
4
- {
5
- ignores: [],
6
- },
7
- {
8
- rules: {
9
- 'import/order': 'off',
10
- 'style/semi': 'off',
11
- 'antfu/if-newline': 'off',
12
- 'style/comma-dangle': 'off',
13
- 'style/member-delimiter-style': 'off',
14
- 'semi': ['error', 'always'],
15
- 'no-alert': 'off',
16
- 'ts/consistent-type-definitions': 'off',
17
- 'perfectionist/sort-imports': 'off',
18
- 'perfectionist/sort-named-imports': 'off',
19
- 'ts/consistent-type-imports': 'off',
20
- 'jsonc/sort-keys': 'off',
21
- 'node/prefer-global/process': 'off',
22
- 'style/arrow-parens': 'off',
23
- 'ts/method-signature-style': 'off',
24
- 'style/brace-style': 'off',
25
- 'style/jsx-one-expression-per-line': 'off',
26
- 'test/prefer-lowercase-title': 'off',
27
- 'perfectionist/sort-exports': 'off',
28
- 'no-extra-boolean-cast': 'off',
29
- 'prefer-promise-reject-errors': 'off',
30
- 'new-cap': 'off',
31
- 'perfectionist/sort-named-exports': 'off',
32
- 'style/multiline-ternary': 'off'
33
- },
34
- },
35
- );
1
+ import antfu from '@antfu/eslint-config';
2
+
3
+ export default antfu(
4
+ {
5
+ ignores: [],
6
+ },
7
+ {
8
+ rules: {
9
+ 'import/order': 'off',
10
+ 'style/semi': 'off',
11
+ 'antfu/if-newline': 'off',
12
+ 'style/comma-dangle': 'off',
13
+ 'style/member-delimiter-style': 'off',
14
+ 'semi': ['error', 'always'],
15
+ 'no-alert': 'off',
16
+ 'ts/consistent-type-definitions': 'off',
17
+ 'perfectionist/sort-imports': 'off',
18
+ 'perfectionist/sort-named-imports': 'off',
19
+ 'ts/consistent-type-imports': 'off',
20
+ 'jsonc/sort-keys': 'off',
21
+ 'node/prefer-global/process': 'off',
22
+ 'style/arrow-parens': 'off',
23
+ 'ts/method-signature-style': 'off',
24
+ 'style/brace-style': 'off',
25
+ 'style/jsx-one-expression-per-line': 'off',
26
+ 'test/prefer-lowercase-title': 'off',
27
+ 'perfectionist/sort-exports': 'off',
28
+ 'no-extra-boolean-cast': 'off',
29
+ 'prefer-promise-reject-errors': 'off',
30
+ 'new-cap': 'off',
31
+ 'perfectionist/sort-named-exports': 'off',
32
+ 'style/multiline-ternary': 'off'
33
+ },
34
+ },
35
+ );
package/jest.config.js CHANGED
@@ -1,6 +1,6 @@
1
- /** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
2
- module.exports = {
3
- preset: 'ts-jest',
4
- testEnvironment: 'jsdom',
5
- rootDir: './src'
6
- };
1
+ /** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
2
+ module.exports = {
3
+ preset: 'ts-jest',
4
+ testEnvironment: 'jsdom',
5
+ rootDir: './src'
6
+ };
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useItemFXData = void 0;
4
4
  const sdk_1 = require("@cntrl-site/sdk");
5
5
  const useKeyframeValue_1 = require("./useKeyframeValue");
6
- const baseVariables = `precision mediump float;
7
- uniform sampler2D u_image;
8
- uniform sampler2D u_pattern;
9
- uniform vec2 u_imgDimensions;
10
- uniform vec2 u_patternDimensions;
11
- uniform float u_time;
12
- uniform vec2 u_cursor;
6
+ const baseVariables = `precision mediump float;
7
+ uniform sampler2D u_image;
8
+ uniform sampler2D u_pattern;
9
+ uniform vec2 u_imgDimensions;
10
+ uniform vec2 u_patternDimensions;
11
+ uniform float u_time;
12
+ uniform vec2 u_cursor;
13
13
  varying vec2 v_texCoord;`;
14
14
  function useItemFXData(item, sectionId) {
15
15
  const { fragmentShader: shaderBody, FXControls } = item.commonParams;
@@ -28,11 +28,11 @@ const Article = ({ article, sectionData }) => {
28
28
  return ((0, jsx_runtime_1.jsx)(ArticleRectContext_1.ArticleRectContext.Provider, { value: articleRectObserver, children: (0, jsx_runtime_1.jsxs)(InteractionsContext_1.InteractionsProvider, { article: article, children: [(0, jsx_runtime_1.jsx)(ArticleWrapper_1.ArticleWrapper, { children: (0, jsx_runtime_1.jsx)("div", { className: "article", ref: articleRef, children: article.sections.map((section, i) => {
29
29
  const data = section.name ? sectionData[section.name] : {};
30
30
  return ((0, jsx_runtime_1.jsx)(Section_1.Section, { section: section, data: data, children: article.sections[i].items.map(item => ((0, jsx_runtime_1.jsx)(Item_1.Item, { item: item, sectionId: section.id, articleHeight: articleHeight }, item.id))) }, section.id));
31
- }) }) }), (0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
32
- .article {
33
- position: relative;
34
- overflow: clip;
35
- }
31
+ }) }) }), (0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
32
+ .article {
33
+ position: relative;
34
+ overflow: clip;
35
+ }
36
36
  ` })] }) }));
37
37
  };
38
38
  exports.Article = Article;
@@ -9,10 +9,10 @@ const sdk_1 = require("@cntrl-site/sdk");
9
9
  const style_1 = __importDefault(require("styled-jsx/style"));
10
10
  const LayoutStyle = ({ id, layouts, layoutId, children }) => {
11
11
  const layout = layouts.find(l => l.id === layoutId);
12
- return ((0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
13
- ${(0, sdk_1.getLayoutMediaQuery)(layoutId, layouts)} {
14
- ${children === null || children === void 0 ? void 0 : children(layout)}
15
- }
12
+ return ((0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
13
+ ${(0, sdk_1.getLayoutMediaQuery)(layoutId, layouts)} {
14
+ ${children === null || children === void 0 ? void 0 : children(layout)}
15
+ }
16
16
  ` }));
17
17
  };
18
18
  exports.LayoutStyle = LayoutStyle;
@@ -11,38 +11,101 @@ const sdk_1 = require("@cntrl-site/sdk");
11
11
  const useCntrlContext_1 = require("../../provider/useCntrlContext");
12
12
  const useSectionRegistry_1 = require("../../utils/ArticleRectManager/useSectionRegistry");
13
13
  const color_1 = require("@cntrl-site/color");
14
+ const useLayoutContext_1 = require("../useLayoutContext");
14
15
  const DEFAULT_COLOR = 'rgba(0, 0, 0, 0)';
16
+ function isVideoUrl(url) {
17
+ const videoExtensions = ['.mp4', '.webm', '.ogg'];
18
+ return videoExtensions.some(ext => url.toLowerCase().endsWith(ext));
19
+ }
15
20
  const Section = ({ section, data, children }) => {
21
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
16
22
  const id = (0, react_1.useId)();
17
23
  const sectionRef = (0, react_1.useRef)(null);
18
24
  const { layouts, customSections } = (0, useCntrlContext_1.useCntrlContext)();
19
- const layoutValues = [section.height, section.color];
25
+ const layout = (0, useLayoutContext_1.useLayoutContext)();
26
+ const layoutValues = [section.height, section.color, (_a = section.media) !== null && _a !== void 0 ? _a : {}];
20
27
  const SectionComponent = section.name ? customSections.getComponent(section.name) : undefined;
28
+ const isVideo = layout && ((_c = (_b = section.media) === null || _b === void 0 ? void 0 : _b[layout]) === null || _c === void 0 ? void 0 : _c.url) ? isVideoUrl(String((_e = (_d = section.media) === null || _d === void 0 ? void 0 : _d[layout]) === null || _e === void 0 ? void 0 : _e.url)) : false;
29
+ const videoRef = (0, react_1.useRef)(null);
21
30
  (0, useSectionRegistry_1.useSectionRegistry)(section.id, sectionRef.current);
22
31
  const getSectionVisibilityStyles = () => {
23
32
  return layouts
24
33
  .sort((a, b) => a.startsWith - b.startsWith)
25
34
  .reduce((acc, layout) => {
26
35
  const isHidden = section.hidden[layout.id];
27
- return `
28
- ${acc}
29
- ${(0, sdk_1.getLayoutMediaQuery)(layout.id, layouts)} {
30
- .section-${section.id} {
31
- display: ${isHidden ? 'none' : 'block'};
32
- }
36
+ return `
37
+ ${acc}
38
+ ${(0, sdk_1.getLayoutMediaQuery)(layout.id, layouts)} {
39
+ .section-${section.id} {
40
+ display: ${isHidden ? 'none' : 'block'};
41
+ }
33
42
  }`;
34
43
  }, '');
35
44
  };
45
+ (0, react_1.useEffect)(() => {
46
+ if (!isVideo || !sectionRef.current || !videoRef.current)
47
+ return;
48
+ const video = videoRef.current;
49
+ const section = sectionRef.current;
50
+ const observer = new IntersectionObserver(([entry]) => {
51
+ if (entry.isIntersecting) {
52
+ video.style.display = 'block';
53
+ video.play().catch(() => { });
54
+ }
55
+ else {
56
+ video.style.display = 'none';
57
+ video.pause();
58
+ }
59
+ }, {
60
+ root: null,
61
+ rootMargin: '50px',
62
+ threshold: 0
63
+ });
64
+ observer.observe(section);
65
+ return () => observer.disconnect();
66
+ }, [isVideo]);
36
67
  if (SectionComponent)
37
68
  return (0, jsx_runtime_1.jsx)("div", { ref: sectionRef, children: (0, jsx_runtime_1.jsx)(SectionComponent, { data: data, children: children }) });
38
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: `section-${section.id}`, id: section.name, ref: sectionRef, children: children }), (0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
39
- ${(0, sdk_1.getLayoutStyles)(layouts, layoutValues, ([height, color]) => (`
40
- .section-${section.id} {
41
- height: ${getSectionHeight(height)};
42
- position: relative;
43
- background-color: ${color_1.CntrlColor.parse(color !== null && color !== void 0 ? color : DEFAULT_COLOR).fmt('rgba')};
44
- }`))}
45
- ${getSectionVisibilityStyles()}
69
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: `section-${section.id}`, id: section.name, ref: sectionRef, children: [layout && ((_g = (_f = section.media) === null || _f === void 0 ? void 0 : _f[layout]) === null || _g === void 0 ? void 0 : _g.url) && ((_j = (_h = section.media) === null || _h === void 0 ? void 0 : _h[layout]) === null || _j === void 0 ? void 0 : _j.size) !== 'none' && sectionRef.current && ((0, jsx_runtime_1.jsx)("div", { className: `section-background-overlay-${section.id}`, children: (0, jsx_runtime_1.jsx)("div", { className: `section-background-wrapper-${section.id}`, children: isVideo ? ((0, jsx_runtime_1.jsx)("video", { ref: videoRef, autoPlay: true, loop: true, muted: true, playsInline: true, preload: "auto", className: `video-background-${section.id}`, children: (0, jsx_runtime_1.jsx)("source", { src: (_m = (_l = (_k = section.media) === null || _k === void 0 ? void 0 : _k[layout]) === null || _l === void 0 ? void 0 : _l.url) !== null && _m !== void 0 ? _m : '' }) })) : ((0, jsx_runtime_1.jsx)("img", { src: (_q = (_p = (_o = section.media) === null || _o === void 0 ? void 0 : _o[layout]) === null || _p === void 0 ? void 0 : _p.url) !== null && _q !== void 0 ? _q : '', className: `image-background-${section.id}` })) }, `section-background-wrapper-${section.id}`) })), children] }), (0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
70
+ ${(0, sdk_1.getLayoutStyles)(layouts, layoutValues, ([height, color, media]) => {
71
+ var _a;
72
+ return (`
73
+ .section-${section.id} {
74
+ height: ${getSectionHeight(height)};
75
+ position: relative;
76
+ background-color: ${color_1.CntrlColor.parse(color !== null && color !== void 0 ? color : DEFAULT_COLOR).fmt('rgba')};
77
+ }
78
+ .section-background-overlay-${section.id} {
79
+ height: ${getSectionHeight(height)};
80
+ width: 100%;
81
+ position: relative;
82
+ overflow: clip;
83
+ }
84
+ .section-background-wrapper-${section.id} {
85
+ transform: ${(media === null || media === void 0 ? void 0 : media.position) === 'fixed' ? 'translateY(-100vh)' : 'unset'};
86
+ left: 0;
87
+ position: relative;
88
+ height: ${(media === null || media === void 0 ? void 0 : media.position) === 'fixed' ? `calc(${getSectionHeight(height)} + 200vh)` : getSectionHeight(height)}};
89
+ width: 100%;
90
+ }
91
+ .video-background-${section.id} {
92
+ object-fit: ${(_a = media === null || media === void 0 ? void 0 : media.size) !== null && _a !== void 0 ? _a : 'cover'};
93
+ width: 100%;
94
+ height: ${(media === null || media === void 0 ? void 0 : media.position) === 'fixed' ? '100vh' : '100%'};
95
+ position: ${(media === null || media === void 0 ? void 0 : media.position) === 'fixed' ? 'sticky' : 'relative'};
96
+ top: ${(media === null || media === void 0 ? void 0 : media.position) === 'fixed' ? '100vh' : 'unset'};
97
+ left: 0;
98
+ }
99
+ .image-background-${section.id} {
100
+ object-fit: ${media === null || media === void 0 ? void 0 : media.size};
101
+ width: 100%;
102
+ height: ${(media === null || media === void 0 ? void 0 : media.position) === 'fixed' ? '100vh' : '100%'};
103
+ position: ${(media === null || media === void 0 ? void 0 : media.position) === 'fixed' ? 'sticky' : 'relative'};
104
+ top: ${(media === null || media === void 0 ? void 0 : media.position) === 'fixed' ? '100vh' : 'unset'};
105
+ }
106
+ `);
107
+ })}
108
+ ${getSectionVisibilityStyles()}
46
109
  ` })] }));
47
110
  };
48
111
  exports.Section = Section;
@@ -62,13 +62,13 @@ const CodeEmbedItem = ({ item, sectionId, onResize, interactionCtrl, onVisibilit
62
62
  const iframe = ref.querySelector(`[data-embed="${item.id}"]`);
63
63
  if (!iframe)
64
64
  return;
65
- const htmlWithStyles = `
66
- ${fontGoogleTags}
67
- ${fontAdobeTags}
68
- <style>
69
- ${fontCustomTags}
70
- </style>
71
- ${item.commonParams.html}
65
+ const htmlWithStyles = `
66
+ ${fontGoogleTags}
67
+ ${fontAdobeTags}
68
+ <style>
69
+ ${fontCustomTags}
70
+ </style>
71
+ ${item.commonParams.html}
72
72
  `;
73
73
  iframe.srcdoc = htmlWithStyles;
74
74
  }, [item.commonParams.html, item.commonParams.iframe, ref]);
@@ -76,31 +76,31 @@ const CodeEmbedItem = ({ item, sectionId, onResize, interactionCtrl, onVisibilit
76
76
  (0, react_1.useEffect)(() => {
77
77
  onVisibilityChange === null || onVisibilityChange === void 0 ? void 0 : onVisibilityChange(isInteractive);
78
78
  }, [isInteractive, onVisibilityChange]);
79
- return ((0, jsx_runtime_1.jsxs)(LinkWrapper_1.LinkWrapper, { url: (_h = item.link) === null || _h === void 0 ? void 0 : _h.url, target: (_j = item.link) === null || _j === void 0 ? void 0 : _j.target, children: [(0, jsx_runtime_1.jsx)("div", { className: `embed-wrapper-${item.id}`, style: Object.assign(Object.assign(Object.assign(Object.assign({}, (angle !== undefined ? { transform: `rotate(${angle}deg)` } : {})), (blur !== undefined ? { filter: `blur(${blur * 100}vw)` } : {})), (opacity !== undefined ? { opacity } : {})), { transition: (_k = stateParams === null || stateParams === void 0 ? void 0 : stateParams.transition) !== null && _k !== void 0 ? _k : 'none' }), ref: setRef, children: item.commonParams.iframe ? ((0, jsx_runtime_1.jsx)("iframe", { "data-embed": item.id, className: `embed-${item.id}`, style: Object.assign(Object.assign({}, pos), { border: 'unset' }) })) : ((0, jsx_runtime_1.jsx)("div", { className: `embed-${item.id}`, style: Object.assign({}, pos), dangerouslySetInnerHTML: { __html: html } })) }), (0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
80
- .embed-wrapper-${item.id} {
81
- position: absolute;
82
- width: 100%;
83
- height: 100%;
84
- }
85
- .embed-${item.id} {
86
- transform: ${item.commonParams.scale ? 'scale(var(--layout-deviation))' : 'none'};
87
- transform-origin: top left;
88
- z-index: 1;
89
- border: none;
90
- }
79
+ return ((0, jsx_runtime_1.jsxs)(LinkWrapper_1.LinkWrapper, { url: (_h = item.link) === null || _h === void 0 ? void 0 : _h.url, target: (_j = item.link) === null || _j === void 0 ? void 0 : _j.target, children: [(0, jsx_runtime_1.jsx)("div", { className: `embed-wrapper-${item.id}`, style: Object.assign(Object.assign(Object.assign(Object.assign({}, (angle !== undefined ? { transform: `rotate(${angle}deg)` } : {})), (blur !== undefined ? { filter: `blur(${blur * 100}vw)` } : {})), (opacity !== undefined ? { opacity } : {})), { transition: (_k = stateParams === null || stateParams === void 0 ? void 0 : stateParams.transition) !== null && _k !== void 0 ? _k : 'none' }), ref: setRef, children: item.commonParams.iframe ? ((0, jsx_runtime_1.jsx)("iframe", { "data-embed": item.id, className: `embed-${item.id}`, style: Object.assign(Object.assign({}, pos), { border: 'unset' }) })) : ((0, jsx_runtime_1.jsx)("div", { className: `embed-${item.id}`, style: Object.assign({}, pos), dangerouslySetInnerHTML: { __html: html } })) }), (0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
80
+ .embed-wrapper-${item.id} {
81
+ position: absolute;
82
+ width: 100%;
83
+ height: 100%;
84
+ }
85
+ .embed-${item.id} {
86
+ transform: ${item.commonParams.scale ? 'scale(var(--layout-deviation))' : 'none'};
87
+ transform-origin: top left;
88
+ z-index: 1;
89
+ border: none;
90
+ }
91
91
  ${(0, sdk_1.getLayoutStyles)(layouts, layoutValues, ([area, layoutParams], exemplary) => {
92
- return (`
93
- .embed-wrapper-${item.id} {
94
- opacity: ${layoutParams.opacity};
95
- transform: rotate(${area.angle}deg);
96
- filter: ${layoutParams.blur !== 0 ? `blur(${layoutParams.blur * 100}vw)` : 'unset'};
97
- }
98
- .embed-${item.id} {
99
- width: ${item.commonParams.scale ? `${area.width * exemplary}px` : '100%'};
100
- height: ${item.commonParams.scale ? `${area.height * exemplary}px` : '100%'};
101
- }
92
+ return (`
93
+ .embed-wrapper-${item.id} {
94
+ opacity: ${layoutParams.opacity};
95
+ transform: rotate(${area.angle}deg);
96
+ filter: ${layoutParams.blur !== 0 ? `blur(${layoutParams.blur * 100}vw)` : 'unset'};
97
+ }
98
+ .embed-${item.id} {
99
+ width: ${item.commonParams.scale ? `${area.width * exemplary}px` : '100%'};
100
+ height: ${item.commonParams.scale ? `${area.height * exemplary}px` : '100%'};
101
+ }
102
102
  `);
103
- })}
103
+ })}
104
104
  ` })] }));
105
105
  };
106
106
  exports.CodeEmbedItem = CodeEmbedItem;
@@ -70,32 +70,32 @@ const CompoundChild = ({ item, sectionId, isParentVisible = true }) => {
70
70
  ? { height: `${sizingAxis.y === 'manual'
71
71
  ? (0, getCompoundBondaryStyles_1.getCompoundHeight)(compoundSettings, height)
72
72
  : 'unset'}` }
73
- : {})), (compoundSettings ? { transform: `${(0, getCompoundBondaryStyles_1.getCompoundTransform)(compoundSettings)}` } : {})), { transition: (_k = wrapperStateProps === null || wrapperStateProps === void 0 ? void 0 : wrapperStateProps.transition) !== null && _k !== void 0 ? _k : 'none', cursor: hasClickTriggers ? 'pointer' : 'unset', pointerEvents: allowPointerEvents ? 'auto' : 'none' }) }, triggers, { children: [(0, jsx_runtime_1.jsx)("div", { className: `item-${item.id}-inner`, style: Object.assign({ transition: (_l = innerStateProps === null || innerStateProps === void 0 ? void 0 : innerStateProps.transition) !== null && _l !== void 0 ? _l : 'none' }, (scale !== undefined ? { transform: `scale(${scale})` } : {})), children: (0, jsx_runtime_1.jsx)(RichTextWrapper_1.RichTextWrapper, { isRichText: isRichText, transformOrigin: transformOrigin, children: (0, jsx_runtime_1.jsx)(ItemComponent, { item: item, sectionId: sectionId, interactionCtrl: interactionCtrl, onVisibilityChange: handleVisibilityChange, isInCompound: true }) }) }), (0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
73
+ : {})), (compoundSettings ? { transform: `${(0, getCompoundBondaryStyles_1.getCompoundTransform)(compoundSettings)}` } : {})), { transition: (_k = wrapperStateProps === null || wrapperStateProps === void 0 ? void 0 : wrapperStateProps.transition) !== null && _k !== void 0 ? _k : 'none', cursor: hasClickTriggers ? 'pointer' : 'unset', pointerEvents: allowPointerEvents ? 'auto' : 'none' }) }, triggers, { children: [(0, jsx_runtime_1.jsx)("div", { className: `item-${item.id}-inner`, style: Object.assign({ transition: (_l = innerStateProps === null || innerStateProps === void 0 ? void 0 : innerStateProps.transition) !== null && _l !== void 0 ? _l : 'none' }, (scale !== undefined ? { transform: `scale(${scale})` } : {})), children: (0, jsx_runtime_1.jsx)(RichTextWrapper_1.RichTextWrapper, { isRichText: isRichText, transformOrigin: transformOrigin, children: (0, jsx_runtime_1.jsx)(ItemComponent, { item: item, sectionId: sectionId, interactionCtrl: interactionCtrl, onVisibilityChange: handleVisibilityChange, isInCompound: true }) }) }), (0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
74
74
  ${(0, sdk_1.getLayoutStyles)(layouts, layoutValues, ([area, hidden, compoundSettings, layoutParams]) => {
75
75
  const sizingAxis = (0, useSizing_1.parseSizing)(layoutParams.sizing);
76
76
  const scaleAnchor = area.scaleAnchor;
77
- return (`
78
- .item-${item.id}-inner {
79
- width: 100%;
80
- height: 100%;
81
- transform-origin: ${ScaleAnchorMap_1.ScaleAnchorMap[scaleAnchor]};
82
- transform: scale(${area.scale});
83
- }
84
- .item-${item.id} {
85
- position: absolute;
86
- top: ${(0, getCompoundBondaryStyles_1.getCompoundTop)(compoundSettings, area.top)};
87
- left: ${(0, getCompoundBondaryStyles_1.getCompoundLeft)(compoundSettings, area.left)};
88
- transition: opacity 0.2s linear 0.1s;
89
- display: ${hidden ? 'none' : 'block'};
77
+ return (`
78
+ .item-${item.id}-inner {
79
+ width: 100%;
80
+ height: 100%;
81
+ transform-origin: ${ScaleAnchorMap_1.ScaleAnchorMap[scaleAnchor]};
82
+ transform: scale(${area.scale});
83
+ }
84
+ .item-${item.id} {
85
+ position: absolute;
86
+ top: ${(0, getCompoundBondaryStyles_1.getCompoundTop)(compoundSettings, area.top)};
87
+ left: ${(0, getCompoundBondaryStyles_1.getCompoundLeft)(compoundSettings, area.left)};
88
+ transition: opacity 0.2s linear 0.1s;
89
+ display: ${hidden ? 'none' : 'block'};
90
90
  width: ${sizingAxis.x === 'manual'
91
91
  ? `${(0, getCompoundBondaryStyles_1.getCompoundWidth)(compoundSettings, area.width, isRichText)}`
92
- : 'max-content'};
93
- height: ${sizingAxis.y === 'manual' ? `${(0, getCompoundBondaryStyles_1.getCompoundHeight)(compoundSettings, area.height)}` : 'unset'};
94
- transform: ${(0, getCompoundBondaryStyles_1.getCompoundTransform)(compoundSettings)};
95
- z-index: ${area.zIndex};
96
- }
92
+ : 'max-content'};
93
+ height: ${sizingAxis.y === 'manual' ? `${(0, getCompoundBondaryStyles_1.getCompoundHeight)(compoundSettings, area.height)}` : 'unset'};
94
+ transform: ${(0, getCompoundBondaryStyles_1.getCompoundTransform)(compoundSettings)};
95
+ z-index: ${area.zIndex};
96
+ }
97
97
  `);
98
- })}
98
+ })}
99
99
  ` })] })));
100
100
  };
101
101
  exports.CompoundChild = CompoundChild;
@@ -32,22 +32,22 @@ const CompoundItem = ({ item, sectionId, onResize, interactionCtrl, onVisibility
32
32
  (0, react_1.useEffect)(() => {
33
33
  onVisibilityChange === null || onVisibilityChange === void 0 ? void 0 : onVisibilityChange(isInteractive);
34
34
  }, [isInteractive, onVisibilityChange]);
35
- return ((0, jsx_runtime_1.jsx)(LinkWrapper_1.LinkWrapper, { url: (_c = item.link) === null || _c === void 0 ? void 0 : _c.url, target: (_d = item.link) === null || _d === void 0 ? void 0 : _d.target, children: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: `compound-${item.id}`, ref: setRef, style: Object.assign(Object.assign(Object.assign({}, (opacity !== undefined ? { opacity } : {})), (angle !== undefined ? { transform: `rotate(${angle}deg)` } : {})), { transition: (_e = stateParams === null || stateParams === void 0 ? void 0 : stateParams.transition) !== null && _e !== void 0 ? _e : 'none' }), children: items && items.map(item => ((0, jsx_runtime_1.jsx)(CompoundChild_1.CompoundChild, { item: item, sectionId: sectionId, isParentVisible: isInteractive }, item.id))) }), (0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
36
- .compound-${item.id} {
37
- overflow: ${item.commonParams.overflow};
38
- position: absolute;
39
- width: 100%;
40
- height: 100%;
41
- box-sizing: border-box;
42
- }
35
+ return ((0, jsx_runtime_1.jsx)(LinkWrapper_1.LinkWrapper, { url: (_c = item.link) === null || _c === void 0 ? void 0 : _c.url, target: (_d = item.link) === null || _d === void 0 ? void 0 : _d.target, children: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: `compound-${item.id}`, ref: setRef, style: Object.assign(Object.assign(Object.assign({}, (opacity !== undefined ? { opacity } : {})), (angle !== undefined ? { transform: `rotate(${angle}deg)` } : {})), { transition: (_e = stateParams === null || stateParams === void 0 ? void 0 : stateParams.transition) !== null && _e !== void 0 ? _e : 'none' }), children: items && items.map(item => ((0, jsx_runtime_1.jsx)(CompoundChild_1.CompoundChild, { item: item, sectionId: sectionId, isParentVisible: isInteractive }, item.id))) }), (0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
36
+ .compound-${item.id} {
37
+ overflow: ${item.commonParams.overflow};
38
+ position: absolute;
39
+ width: 100%;
40
+ height: 100%;
41
+ box-sizing: border-box;
42
+ }
43
43
  ${(0, sdk_1.getLayoutStyles)(layouts, layoutValues, ([area, layoutParams]) => {
44
- return (`
45
- .compound-${item.id} {
46
- opacity: ${layoutParams.opacity};
47
- transform: rotate(${area.angle}deg);
48
- }
44
+ return (`
45
+ .compound-${item.id} {
46
+ opacity: ${layoutParams.opacity};
47
+ transform: rotate(${area.angle}deg);
48
+ }
49
49
  `);
50
- })}
50
+ })}
51
51
  ` })] }) }));
52
52
  };
53
53
  exports.CompoundItem = CompoundItem;
@@ -25,15 +25,15 @@ const CustomItem = ({ item, onResize, sectionId, interactionCtrl }) => {
25
25
  if (!component)
26
26
  return null;
27
27
  return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: `custom-component-${item.id}`, ref: setRef, style: Object.assign(Object.assign({}, (angle !== undefined ? { transform: `rotate(${angle}deg)` } : {})), { transition: (_c = stateParams === null || stateParams === void 0 ? void 0 : stateParams.transition) !== null && _c !== void 0 ? _c : 'none' }), children: component({}) }), (0, jsx_runtime_1.jsx)(style_1.default, { id: item.id, children: `${(0, sdk_1.getLayoutStyles)(layouts, layoutValues, ([area]) => {
28
- return (`
29
- .custom-component-${item.id} {
30
- transform: rotate(${area.angle}deg);
31
- height: 100%;
32
- width: 100%;
33
- position: absolute;
34
- left: 0;
35
- top: 0;
36
- }
28
+ return (`
29
+ .custom-component-${item.id} {
30
+ transform: rotate(${area.angle}deg);
31
+ height: 100%;
32
+ width: 100%;
33
+ position: absolute;
34
+ left: 0;
35
+ top: 0;
36
+ }
37
37
  `);
38
38
  })}` })] }));
39
39
  };
@@ -135,31 +135,31 @@ const VimeoEmbedItem = ({ item, sectionId, onResize, interactionCtrl, onVisibili
135
135
  width: '100%',
136
136
  top: '0',
137
137
  left: '0'
138
- } })), (0, jsx_runtime_1.jsx)("iframe", { ref: setIframeRef, className: "embed-video", src: validUrl || '', allow: "autoplay; fullscreen; picture-in-picture;", allowFullScreen: true, style: Object.assign(Object.assign({}, (radius !== undefined ? { borderRadius: `${radius * 100}vw` } : {})), { transition: (_j = frameStateParams === null || frameStateParams === void 0 ? void 0 : frameStateParams.transition) !== null && _j !== void 0 ? _j : 'none' }) })] }), (0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
139
- .embed-video-wrapper-${item.id} {
140
- position: absolute;
141
- width: 100%;
142
- height: 100%;
143
- }
144
- .embed-video {
145
- width: 100%;
146
- height: 100%;
147
- z-index: 1;
148
- border: none;
149
- overflow: hidden;
150
- }
138
+ } })), (0, jsx_runtime_1.jsx)("iframe", { ref: setIframeRef, className: "embed-video", src: validUrl || '', allow: "autoplay; fullscreen; picture-in-picture;", allowFullScreen: true, style: Object.assign(Object.assign({}, (radius !== undefined ? { borderRadius: `${radius * 100}vw` } : {})), { transition: (_j = frameStateParams === null || frameStateParams === void 0 ? void 0 : frameStateParams.transition) !== null && _j !== void 0 ? _j : 'none' }) })] }), (0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
139
+ .embed-video-wrapper-${item.id} {
140
+ position: absolute;
141
+ width: 100%;
142
+ height: 100%;
143
+ }
144
+ .embed-video {
145
+ width: 100%;
146
+ height: 100%;
147
+ z-index: 1;
148
+ border: none;
149
+ overflow: hidden;
150
+ }
151
151
  ${(0, sdk_1.getLayoutStyles)(layouts, layoutValues, ([area, layoutParams]) => {
152
- return (`
153
- .embed-video-wrapper-${item.id} {
154
- opacity: ${layoutParams.opacity};
155
- transform: rotate(${area.angle}deg);
156
- filter: ${layoutParams.blur !== 0 ? `blur(${layoutParams.blur * 100}vw)` : 'unset'};
157
- }
158
- .embed-video-wrapper-${item.id} .embed-video {
159
- border-radius: ${layoutParams.radius * 100}vw;
160
- }
152
+ return (`
153
+ .embed-video-wrapper-${item.id} {
154
+ opacity: ${layoutParams.opacity};
155
+ transform: rotate(${area.angle}deg);
156
+ filter: ${layoutParams.blur !== 0 ? `blur(${layoutParams.blur * 100}vw)` : 'unset'};
157
+ }
158
+ .embed-video-wrapper-${item.id} .embed-video {
159
+ border-radius: ${layoutParams.radius * 100}vw;
160
+ }
161
161
  `);
162
- })}
162
+ })}
163
163
  ` })] }));
164
164
  };
165
165
  exports.VimeoEmbedItem = VimeoEmbedItem;