@gxpl/sdk 0.0.8 → 0.0.9

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 (96) hide show
  1. package/lib/index.d.ts +1 -4
  2. package/lib/index.js +1 -4
  3. package/lib/sdk/Client/Client.d.ts +0 -2
  4. package/lib/sdk/Client/Client.js +0 -11
  5. package/lib/sdk/schemas/article/Article.schema.d.ts +40 -45
  6. package/lib/sdk/schemas/article/Article.schema.js +1 -1
  7. package/lib/sdk/schemas/article/Item.schema.js +64 -84
  8. package/lib/sdk/schemas/article/ItemBase.schema.d.ts +15 -18
  9. package/lib/sdk/schemas/article/ItemBase.schema.js +3 -4
  10. package/lib/sdk/schemas/article/ItemState.schema.d.ts +76 -76
  11. package/lib/sdk/schemas/article/RichTextItem.schema.d.ts +78 -86
  12. package/lib/sdk/schemas/article/RichTextItem.schema.js +9 -11
  13. package/lib/sdk/schemas/article/Section.schema.d.ts +20 -23
  14. package/lib/sdk/schemas/article/Section.schema.js +4 -5
  15. package/lib/sdk/schemas/keyframe/Keyframes.schema.d.ts +0 -90
  16. package/lib/sdk/schemas/keyframe/Keyframes.schema.js +0 -1
  17. package/lib/sdk/schemas/project/Project.schema.d.ts +3 -28
  18. package/lib/sdk/schemas/project/Project.schema.js +1 -2
  19. package/lib/sdk/types/article/Article.d.ts +1 -1
  20. package/lib/sdk/types/article/Item.d.ts +75 -114
  21. package/lib/sdk/types/article/Section.d.ts +4 -5
  22. package/lib/sdk/types/keyframe/Keyframe.d.ts +0 -1
  23. package/lib/sdk/types/project/Project.d.ts +1 -2
  24. package/lib/sdk-nextjs/common/useExemplary.js +1 -5
  25. package/lib/sdk-nextjs/common/useItemFXData.js +1 -1
  26. package/lib/sdk-nextjs/common/useKeyframeValue.d.ts +1 -1
  27. package/lib/sdk-nextjs/common/useKeyframeValue.js +4 -7
  28. package/lib/sdk-nextjs/common/useLayoutDeviation.d.ts +5 -0
  29. package/lib/sdk-nextjs/common/useLayoutDeviation.js +20 -0
  30. package/lib/sdk-nextjs/components/ArticleWrapper.js +3 -4
  31. package/lib/sdk-nextjs/components/Section/Section.js +12 -31
  32. package/lib/sdk-nextjs/components/Section/useSectionHeightMap.d.ts +1 -3
  33. package/lib/sdk-nextjs/components/Section/useSectionHeightMap.js +1 -9
  34. package/lib/sdk-nextjs/components/items/CodeEmbedItem/CodeEmbedItem.js +16 -35
  35. package/lib/sdk-nextjs/components/items/CodeEmbedItem/useCodeEmbedItem.d.ts +2 -4
  36. package/lib/sdk-nextjs/components/items/CodeEmbedItem/useCodeEmbedItem.js +3 -17
  37. package/lib/sdk-nextjs/components/items/ComponentItem/ComponentItem.js +13 -23
  38. package/lib/sdk-nextjs/components/items/ComponentItem/useComponentItem.d.ts +2 -2
  39. package/lib/sdk-nextjs/components/items/ComponentItem/useComponentItem.js +2 -14
  40. package/lib/sdk-nextjs/components/items/CompoundItem/CompoundChild.js +40 -46
  41. package/lib/sdk-nextjs/components/items/CompoundItem/CompoundItem.js +8 -14
  42. package/lib/sdk-nextjs/components/items/CompoundItem/useCompoundItem.d.ts +1 -1
  43. package/lib/sdk-nextjs/components/items/CompoundItem/useCompoundItem.js +1 -8
  44. package/lib/sdk-nextjs/components/items/CustomItem/CustomItem.js +11 -16
  45. package/lib/sdk-nextjs/components/items/EmbedVideoItem/VimeoEmbed.js +28 -37
  46. package/lib/sdk-nextjs/components/items/EmbedVideoItem/YoutubeEmbed.js +17 -29
  47. package/lib/sdk-nextjs/components/items/EmbedVideoItem/useEmbedVideoItem.d.ts +3 -3
  48. package/lib/sdk-nextjs/components/items/EmbedVideoItem/useEmbedVideoItem.js +3 -20
  49. package/lib/sdk-nextjs/components/items/FileItem/ImageItem.js +48 -54
  50. package/lib/sdk-nextjs/components/items/FileItem/VideoItem.js +53 -64
  51. package/lib/sdk-nextjs/components/items/FileItem/useFileItem.d.ts +6 -6
  52. package/lib/sdk-nextjs/components/items/FileItem/useFileItem.js +5 -32
  53. package/lib/sdk-nextjs/components/items/GroupItem/GroupItem.js +3 -13
  54. package/lib/sdk-nextjs/components/items/GroupItem/useGroupItem.d.ts +2 -2
  55. package/lib/sdk-nextjs/components/items/GroupItem/useGroupItem.js +2 -14
  56. package/lib/sdk-nextjs/components/items/Item.js +23 -48
  57. package/lib/sdk-nextjs/components/items/RectangleItem/RectangleItem.js +19 -29
  58. package/lib/sdk-nextjs/components/items/RectangleItem/useRectangleItem.d.ts +6 -6
  59. package/lib/sdk-nextjs/components/items/RectangleItem/useRectangleItem.js +6 -38
  60. package/lib/sdk-nextjs/components/items/RichTextItem/RichTextItem.js +23 -31
  61. package/lib/sdk-nextjs/components/items/RichTextItem/useRichTextItem.js +2 -2
  62. package/lib/sdk-nextjs/components/items/useItemAngle.d.ts +1 -1
  63. package/lib/sdk-nextjs/components/items/useItemAngle.js +1 -1
  64. package/lib/sdk-nextjs/components/items/useItemArea.d.ts +4 -4
  65. package/lib/sdk-nextjs/components/items/useItemArea.js +2 -8
  66. package/lib/sdk-nextjs/components/items/useItemScale.d.ts +1 -1
  67. package/lib/sdk-nextjs/components/items/useItemScale.js +1 -3
  68. package/lib/sdk-nextjs/components/items/useRichTextItemValues.d.ts +6 -6
  69. package/lib/sdk-nextjs/components/items/useRichTextItemValues.js +6 -28
  70. package/lib/sdk-nextjs/components/items/useSizing.js +2 -4
  71. package/lib/sdk-nextjs/components/items/useStickyItemTop.js +3 -9
  72. package/lib/sdk-nextjs/interactions/InteractionsRegistry.d.ts +1 -1
  73. package/lib/sdk-nextjs/interactions/InteractionsRegistry.js +2 -2
  74. package/lib/sdk-nextjs/provider/CntrlSdkContext.d.ts +5 -6
  75. package/lib/sdk-nextjs/provider/CntrlSdkContext.js +6 -6
  76. package/lib/sdk-nextjs/provider/InteractionsContext.js +2 -6
  77. package/lib/sdk-nextjs/utils/RichTextConverter/RichTextConverter.d.ts +1 -2
  78. package/lib/sdk-nextjs/utils/RichTextConverter/RichTextConverter.js +37 -62
  79. package/lib/sdk-nextjs/utils/getStyleFromItemStateAndParams.d.ts +1 -1
  80. package/package.json +1 -1
  81. package/lib/cli.d.ts +0 -10
  82. package/lib/cli.js +0 -64
  83. package/lib/sdk/schemas/project/Layout.schema.d.ts +0 -17
  84. package/lib/sdk/schemas/project/Layout.schema.js +0 -10
  85. package/lib/sdk/types/component/Component.d.ts +0 -15
  86. package/lib/sdk/types/component/Component.js +0 -2
  87. package/lib/sdk/types/project/Layout.d.ts +0 -6
  88. package/lib/sdk/types/project/Layout.js +0 -2
  89. package/lib/sdk-nextjs/common/useCurrentLayout.d.ts +0 -6
  90. package/lib/sdk-nextjs/common/useCurrentLayout.js +0 -42
  91. package/lib/sdk-nextjs/components/useLayoutContext.d.ts +0 -1
  92. package/lib/sdk-nextjs/components/useLayoutContext.js +0 -9
  93. package/lib/sdk-nextjs/provider/LayoutContext.d.ts +0 -1
  94. package/lib/sdk-nextjs/provider/LayoutContext.js +0 -5
  95. package/lib/utils.d.ts +0 -3
  96. package/lib/utils.js +0 -30
@@ -8,115 +8,109 @@ export type ItemAny = Item<ArticleItemType>;
8
8
  export interface Item<T extends ArticleItemType> {
9
9
  id: string;
10
10
  type: T;
11
- area: Record<LayoutIdentifier, ItemArea>;
12
- hidden: Record<LayoutIdentifier, boolean>;
11
+ area: ItemArea;
12
+ hidden: boolean;
13
13
  link?: Link;
14
14
  items?: T extends (ArticleItemType.Group | ArticleItemType.Compound) ? ItemAny[] : never;
15
- sticky: Record<LayoutIdentifier, StickyParams | null>;
16
- compoundSettings?: Record<LayoutIdentifier, CompoundSettings>;
17
- commonParams: ItemCommonParamsMap[T];
15
+ sticky: StickyParams | null;
16
+ compoundSettings?: CompoundSettings;
18
17
  state: ItemState<T>;
19
- layoutParams: Record<LayoutIdentifier, ItemLayoutParamsMap[T]>;
20
- }
21
- export interface ItemCommonParamsMap {
22
- [ArticleItemType.Image]: ImageCommonParams;
23
- [ArticleItemType.Video]: VideoCommonParams;
24
- [ArticleItemType.RichText]: RichTextCommonParams;
25
- [ArticleItemType.Rectangle]: RectangleCommonParams;
26
- [ArticleItemType.VimeoEmbed]: VimeoEmbedCommonParams;
27
- [ArticleItemType.YoutubeEmbed]: YoutubeEmbedCommonParams;
28
- [ArticleItemType.Custom]: CustomCommonParams;
29
- [ArticleItemType.Group]: GroupCommonParams;
30
- [ArticleItemType.Compound]: CompoundCommonParams;
31
- [ArticleItemType.CodeEmbed]: CodeEmbedCommonParams;
32
- [ArticleItemType.Component]: ComponentCommonParams;
33
- }
34
- export interface ItemLayoutParamsMap {
35
- [ArticleItemType.Image]: ImageLayoutParams;
36
- [ArticleItemType.Video]: VideoLayoutParams;
37
- [ArticleItemType.RichText]: RichTextLayoutParams;
38
- [ArticleItemType.Rectangle]: RectangleLayoutParams;
39
- [ArticleItemType.VimeoEmbed]: VimeoEmbedLayoutParams;
40
- [ArticleItemType.YoutubeEmbed]: YoutubeEmbedLayoutParams;
41
- [ArticleItemType.Custom]: CustomLayoutParams;
42
- [ArticleItemType.Group]: GroupLayoutParams;
43
- [ArticleItemType.Compound]: CompoundLayoutParams;
44
- [ArticleItemType.CodeEmbed]: CodeEmbedLayoutParams;
45
- [ArticleItemType.Component]: ComponentLayoutParams;
46
- }
47
- interface CommonParamsBase {
18
+ params: ItemParamsMap[T];
19
+ }
20
+ export interface ItemParamsMap {
21
+ [ArticleItemType.Image]: ImageParams;
22
+ [ArticleItemType.Video]: VideoParams;
23
+ [ArticleItemType.RichText]: RichTextParams;
24
+ [ArticleItemType.Rectangle]: RectangleParams;
25
+ [ArticleItemType.VimeoEmbed]: VimeoEmbedParams;
26
+ [ArticleItemType.YoutubeEmbed]: YoutubeEmbedParams;
27
+ [ArticleItemType.Custom]: CustomParams;
28
+ [ArticleItemType.Group]: GroupParams;
29
+ [ArticleItemType.Compound]: CompoundParams;
30
+ [ArticleItemType.CodeEmbed]: CodeEmbedParams;
31
+ [ArticleItemType.Component]: ComponentParams;
32
+ }
33
+ interface ParamsBase {
48
34
  pointerEvents?: 'never' | 'when_visible' | 'always';
49
35
  }
50
- interface MediaCommonParams extends CommonParamsBase {
36
+ interface ImageParams extends MediaParams {
37
+ }
38
+ interface MediaParams extends ParamsBase {
51
39
  url: string;
52
40
  hasGLEffect?: boolean;
53
41
  fragmentShader: string | null;
54
42
  FXControls?: FXControlAny[];
43
+ opacity: number;
44
+ radius: number;
45
+ strokeWidth: number;
46
+ strokeFill: FillLayer[];
47
+ blur: number;
48
+ isDraggable?: boolean;
55
49
  }
56
- interface VideoCommonParams extends MediaCommonParams {
50
+ interface VideoParams extends MediaParams {
57
51
  coverUrl: string | null;
52
+ play: 'on-hover' | 'on-click' | 'auto';
53
+ muted: boolean;
54
+ controls: boolean;
55
+ scrollPlayback: ScrollPlaybackParams | null;
58
56
  }
59
- interface ImageCommonParams extends MediaCommonParams {
60
- }
61
- interface RichTextCommonParams extends CommonParamsBase {
57
+ interface RichTextParams extends ParamsBase {
62
58
  text: string;
63
59
  blocks?: RichTextBlock[];
60
+ rangeStyles?: RichTextStyle[];
61
+ textAlign: TextAlign;
62
+ sizing: string;
63
+ blur: number;
64
+ fontSize: number;
65
+ lineHeight: number;
66
+ letterSpacing: number;
67
+ wordSpacing: number;
68
+ textTransform: TextTransform;
69
+ verticalAlign: VerticalAlign;
70
+ color: string;
71
+ typeFace: string;
72
+ fontStyle: string;
73
+ fontWeight: number;
74
+ fontVariant: string;
75
+ isDraggable?: boolean;
64
76
  }
65
- interface RectangleCommonParams extends CommonParamsBase {
77
+ interface RectangleParams extends ParamsBase {
66
78
  ratioLock: boolean;
67
- }
68
- interface CustomCommonParams extends CommonParamsBase {
69
- name: string;
70
- }
71
- interface GroupCommonParams extends CommonParamsBase {
72
- }
73
- interface CompoundCommonParams extends CommonParamsBase {
74
- overflow: 'hidden' | 'visible';
75
- }
76
- interface CodeEmbedCommonParams extends CommonParamsBase {
77
- html: string;
78
- scale: boolean;
79
- iframe: boolean;
80
- }
81
- interface VimeoEmbedCommonParams extends CommonParamsBase {
82
- url: string;
83
- coverUrl: string | null;
84
- }
85
- interface YoutubeEmbedCommonParams extends CommonParamsBase {
86
- url: string;
87
- coverUrl: string | null;
88
- }
89
- interface ComponentCommonParams extends CommonParamsBase {
90
- componentId: string;
91
- content?: any;
92
- }
93
- interface MediaLayoutParams {
94
- opacity: number;
95
79
  radius: number;
96
80
  strokeWidth: number;
81
+ fill: FillLayer[];
97
82
  strokeFill: FillLayer[];
98
83
  blur: number;
84
+ backdropBlur: number;
85
+ blurMode: 'default' | 'backdrop';
99
86
  isDraggable?: boolean;
100
87
  }
101
- interface CustomLayoutParams {
88
+ interface CustomParams extends ParamsBase {
89
+ name: string;
102
90
  isDraggable?: boolean;
103
91
  }
104
- interface GroupLayoutParams {
92
+ interface GroupParams extends ParamsBase {
105
93
  opacity: number;
106
94
  blur: number;
107
95
  isDraggable?: boolean;
108
96
  }
109
- interface CompoundLayoutParams {
97
+ interface CompoundParams extends ParamsBase {
98
+ overflow: 'hidden' | 'visible';
110
99
  opacity: number;
111
100
  isDraggable?: boolean;
112
101
  }
113
- interface CodeEmbedLayoutParams {
102
+ interface CodeEmbedParams extends ParamsBase {
103
+ html: string;
104
+ scale: boolean;
105
+ iframe: boolean;
114
106
  areaAnchor: AreaAnchor;
115
107
  opacity: number;
116
108
  blur: number;
117
109
  isDraggable?: boolean;
118
110
  }
119
- interface VimeoEmbedLayoutParams {
111
+ interface VimeoEmbedParams extends ParamsBase {
112
+ url: string;
113
+ coverUrl: string | null;
120
114
  play: 'on-hover' | 'on-click' | 'auto';
121
115
  controls: boolean;
122
116
  loop: boolean;
@@ -126,7 +120,9 @@ interface VimeoEmbedLayoutParams {
126
120
  blur: number;
127
121
  opacity: number;
128
122
  }
129
- interface YoutubeEmbedLayoutParams {
123
+ interface YoutubeEmbedParams extends ParamsBase {
124
+ url: string;
125
+ coverUrl: string | null;
130
126
  play: 'on-hover' | 'on-click' | 'auto';
131
127
  controls: boolean;
132
128
  loop: boolean;
@@ -134,41 +130,12 @@ interface YoutubeEmbedLayoutParams {
134
130
  blur: number;
135
131
  opacity: number;
136
132
  }
137
- interface ImageLayoutParams extends MediaLayoutParams {
138
- }
139
- interface VideoLayoutParams extends MediaLayoutParams {
140
- play: 'on-hover' | 'on-click' | 'auto';
141
- muted: boolean;
142
- controls: boolean;
143
- scrollPlayback: ScrollPlaybackParams | null;
144
- }
145
- interface RichTextLayoutParams {
146
- rangeStyles?: RichTextStyle[];
147
- textAlign: TextAlign;
148
- sizing: string;
149
- blur: number;
150
- fontSize: number;
151
- lineHeight: number;
152
- letterSpacing: number;
153
- wordSpacing: number;
154
- textTransform: TextTransform;
155
- verticalAlign: VerticalAlign;
156
- color: string;
157
- typeFace: string;
158
- fontStyle: string;
159
- fontWeight: number;
160
- fontVariant: string;
161
- isDraggable?: boolean;
162
- }
163
- interface RectangleLayoutParams {
164
- radius: number;
165
- strokeWidth: number;
166
- fill: FillLayer[];
167
- strokeFill: FillLayer[];
133
+ interface ComponentParams extends ParamsBase {
134
+ componentId: string;
135
+ content?: any;
136
+ parameters?: any;
137
+ opacity: number;
168
138
  blur: number;
169
- backdropBlur: number;
170
- blurMode: 'default' | 'backdrop';
171
- isDraggable?: boolean;
172
139
  }
173
140
  export type FillLayer = SolidFillLayer | LinearGradientFillLayer | RadialGradientFillLayer | ConicGradientFillLayer | ImageLayer;
174
141
  type ColorPoint = {
@@ -230,12 +197,6 @@ export interface Link {
230
197
  url: string;
231
198
  target: string;
232
199
  }
233
- type LayoutIdentifier = string;
234
- interface ComponentLayoutParams {
235
- parameters?: any;
236
- opacity: number;
237
- blur: number;
238
- }
239
200
  export type VideoItem = Item<ArticleItemType.Video>;
240
201
  export type RectangleItem = Item<ArticleItemType.Rectangle>;
241
202
  export type ImageItem = Item<ArticleItemType.Image>;
@@ -28,10 +28,9 @@ export type SectionMedia = SectionVideo | SectionImage;
28
28
  export interface Section {
29
29
  id: string;
30
30
  name?: string;
31
- height: Record<string, SectionHeight>;
32
- hidden: Record<string, boolean>;
31
+ height: SectionHeight;
32
+ hidden: boolean;
33
33
  items: ItemAny[];
34
- position: Record<string, number>;
35
- color: Record<string, string | null>;
36
- media?: Record<string, SectionMedia>;
34
+ color: string | null;
35
+ media?: SectionMedia;
37
36
  }
@@ -3,7 +3,6 @@ export type KeyframeAny = Keyframe<KeyframeType>;
3
3
  export interface Keyframe<T extends KeyframeType> {
4
4
  id: string;
5
5
  type: T;
6
- layoutId: string;
7
6
  itemId: string;
8
7
  position: number;
9
8
  value: KeyframeValueMap[T];
@@ -1,4 +1,3 @@
1
- import { Layout } from './Layout';
2
1
  import { Fonts } from './Fonts';
3
2
  import { Meta } from './Meta';
4
3
  import { Page } from './Page';
@@ -11,7 +10,7 @@ export interface Project {
11
10
  id: string;
12
11
  html: AdditionalHTML;
13
12
  meta: Meta;
14
- layouts: Layout[];
13
+ exemplary: number;
15
14
  pages: Page[];
16
15
  fonts: Fonts;
17
16
  }
@@ -2,12 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useExemplary = void 0;
4
4
  const useCntrlContext_1 = require("../provider/useCntrlContext");
5
- const useLayoutContext_1 = require("../components/useLayoutContext");
6
5
  const useExemplary = () => {
7
- var _a, _b;
8
- const { layouts } = (0, useCntrlContext_1.useCntrlContext)();
9
- const layout = (0, useLayoutContext_1.useLayoutContext)();
10
- const exemplary = (_b = (_a = layouts.find(l => l.id === layout)) === null || _a === void 0 ? void 0 : _a.exemplary) !== null && _b !== void 0 ? _b : 1;
6
+ const { exemplary } = (0, useCntrlContext_1.useCntrlContext)();
11
7
  return exemplary;
12
8
  };
13
9
  exports.useExemplary = useExemplary;
@@ -12,7 +12,7 @@ uniform float u_time;
12
12
  uniform vec2 u_cursor;
13
13
  varying vec2 v_texCoord;`;
14
14
  function useItemFXData(item, sectionId) {
15
- const { fragmentShader: shaderBody, FXControls } = item.commonParams;
15
+ const { fragmentShader: shaderBody, FXControls } = item.params;
16
16
  const controls = FXControls !== null && FXControls !== void 0 ? FXControls : [];
17
17
  const controlsVariables = controls.map((c) => `uniform ${c.type} ${c.shaderParam};`)
18
18
  .join('\n');
@@ -3,6 +3,6 @@ import { Animator } from '../utils/Animator/Animator';
3
3
  import { ItemAny } from '../../sdk/types/article/Item';
4
4
  import { KeyframeType } from '../../sdk/types/keyframe/Keyframe';
5
5
  export type AnimatorGetter<T> = (animator: Animator, scroll: number, value: T) => T;
6
- type ItemParamGetter<T> = (item: ItemAny, layoutId: string | undefined) => T;
6
+ type ItemParamGetter<T> = (item: ItemAny) => T;
7
7
  export declare function useKeyframeValue<T>(item: ItemAny, type: KeyframeType, itemParamsGetter: ItemParamGetter<T>, animatorGetter: AnimatorGetter<T>, sectionId: string, deps?: DependencyList): T;
8
8
  export {};
@@ -9,7 +9,6 @@ const react_1 = require("react");
9
9
  const ArticleRectContext_1 = require("../provider/ArticleRectContext");
10
10
  const KeyframesContext_1 = require("../provider/KeyframesContext");
11
11
  const Animator_1 = require("../utils/Animator/Animator");
12
- const useLayoutContext_1 = require("../components/useLayoutContext");
13
12
  const emptyDeps = [];
14
13
  function useKeyframeValue(item, type, itemParamsGetter, animatorGetter, sectionId, deps = emptyDeps) {
15
14
  const animatorGetterRef = (0, react_1.useRef)(animatorGetter);
@@ -17,27 +16,25 @@ function useKeyframeValue(item, type, itemParamsGetter, animatorGetter, sectionI
17
16
  animatorGetterRef.current = animatorGetter;
18
17
  itemParamsGetterRef.current = itemParamsGetter;
19
18
  const articleRectObserver = (0, react_1.useContext)(ArticleRectContext_1.ArticleRectContext);
20
- const layoutId = (0, useLayoutContext_1.useLayoutContext)();
21
19
  const keyframesRepo = (0, react_1.useContext)(KeyframesContext_1.KeyframesContext);
22
20
  const keyframes = (0, react_1.useMemo)(() => keyframesRepo.getItemKeyframes(item.id).filter(kf => kf.type === type), [item.id, keyframesRepo, type]);
23
21
  const paramValue = (0, react_1.useMemo)(() => {
24
- return itemParamsGetterRef.current(item, layoutId);
25
- }, [item, layoutId, ...deps]);
22
+ return itemParamsGetterRef.current(item);
23
+ }, [item, ...deps]);
26
24
  const [adjustedValue, setAdjustedValue] = (0, react_1.useState)(paramValue);
27
25
  const adjustedValueRef = (0, react_1.useRef)(adjustedValue);
28
26
  adjustedValueRef.current = adjustedValue;
29
27
  const animator = (0, react_1.useMemo)(() => {
30
- if (!layoutId || !keyframes.length)
28
+ if (!keyframes.length)
31
29
  return;
32
30
  const animationData = keyframes
33
- .filter(k => k.layoutId === layoutId)
34
31
  .map(({ position, type, value }) => ({
35
32
  position,
36
33
  type,
37
34
  value
38
35
  }));
39
36
  return new Animator_1.Animator(animationData);
40
- }, [keyframes, layoutId]);
37
+ }, [keyframes]);
41
38
  const handleKeyframeValue = (0, react_1.useCallback)((scroll) => {
42
39
  if (!animator)
43
40
  return;
@@ -0,0 +1,5 @@
1
+ type UseCurrentLayoutReturn = {
2
+ layoutDeviation: number;
3
+ };
4
+ export declare function useLayoutDeviation(): UseCurrentLayoutReturn;
5
+ export {};
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useLayoutDeviation = useLayoutDeviation;
4
+ const useCntrlContext_1 = require("../provider/useCntrlContext");
5
+ const react_1 = require("react");
6
+ const ArticleRectContext_1 = require("../provider/ArticleRectContext");
7
+ function useLayoutDeviation() {
8
+ const { exemplary } = (0, useCntrlContext_1.useCntrlContext)();
9
+ const articleRectObserver = (0, react_1.useContext)(ArticleRectContext_1.ArticleRectContext);
10
+ const [deviation, setDeviation] = (0, react_1.useState)(1);
11
+ (0, react_1.useEffect)(() => {
12
+ if (!articleRectObserver)
13
+ return;
14
+ return articleRectObserver.on('resize', () => {
15
+ const articleWidth = articleRectObserver.width;
16
+ setDeviation(articleWidth / exemplary);
17
+ });
18
+ }, [articleRectObserver, exemplary]);
19
+ return { layoutDeviation: deviation };
20
+ }
@@ -2,11 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ArticleWrapper = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
- const useCurrentLayout_1 = require("../common/useCurrentLayout");
6
- const LayoutContext_1 = require("../provider/LayoutContext");
5
+ const useLayoutDeviation_1 = require("../common/useLayoutDeviation");
7
6
  const ArticleWrapper = ({ children }) => {
8
- const { layoutId, layoutDeviation } = (0, useCurrentLayout_1.useCurrentLayout)();
7
+ const { layoutDeviation } = (0, useLayoutDeviation_1.useLayoutDeviation)();
9
8
  const layoutDeviationStyle = { '--layout-deviation': layoutDeviation };
10
- return ((0, jsx_runtime_1.jsx)(LayoutContext_1.LayoutContext.Provider, { value: layoutId, children: (0, jsx_runtime_1.jsx)("div", { className: "article-wrapper", style: Object.assign({}, layoutDeviationStyle), children: children }) }));
9
+ return ((0, jsx_runtime_1.jsx)("div", { className: "article-wrapper", style: Object.assign({}, layoutDeviationStyle), children: children }));
11
10
  };
12
11
  exports.ArticleWrapper = ArticleWrapper;
@@ -11,51 +11,34 @@ const style_1 = __importDefault(require("styled-jsx/style"));
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");
15
14
  const SectionVideo_1 = require("./SectionVideo");
16
15
  const SectionImage_1 = require("./SectionImage");
17
16
  const checkOverflowClipSupport_1 = require("../../utils/checkOverflowClipSupport");
18
17
  const Section_1 = require("../../../sdk/types/article/Section");
19
- const utils_1 = require("../../../utils");
20
18
  const DEFAULT_COLOR = 'rgba(0, 0, 0, 0)';
21
19
  const Section = ({ section, data, children }) => {
22
- var _a;
23
20
  const id = (0, react_1.useId)();
24
21
  const sectionRef = (0, react_1.useRef)(null);
25
- const { layouts, customSections } = (0, useCntrlContext_1.useCntrlContext)();
26
- const layout = (0, useLayoutContext_1.useLayoutContext)();
27
- const layoutValues = [section.height, section.color, (_a = section.media) !== null && _a !== void 0 ? _a : {}];
22
+ const { customSections } = (0, useCntrlContext_1.useCntrlContext)();
23
+ const { height, color, hidden } = section;
28
24
  const SectionComponent = section.name ? customSections.getComponent(section.name) : undefined;
29
25
  (0, useSectionRegistry_1.useSectionRegistry)(section.id, sectionRef.current);
30
- const sectionHeight = layout && section.height[layout] ? section.height[layout] : undefined;
31
- const layoutMedia = layout && section.media && section.media[layout] ? section.media[layout] : undefined;
32
26
  const media = (0, react_1.useMemo)(() => {
33
- if (layoutMedia && !(0, checkOverflowClipSupport_1.isOverflowClipSupported)()) {
34
- return Object.assign(Object.assign({}, layoutMedia), { position: 'local' });
27
+ if (section.media && !(0, checkOverflowClipSupport_1.isOverflowClipSupported)()) {
28
+ return Object.assign(Object.assign({}, section.media), { position: 'local' });
35
29
  }
36
- return layoutMedia;
37
- }, [layoutMedia]);
38
- const getSectionVisibilityStyles = () => {
39
- return layouts
40
- .sort((a, b) => a.startsWith - b.startsWith)
41
- .reduce((acc, layout) => {
42
- const isHidden = section.hidden[layout.id];
43
- return `
44
- ${acc}
45
- ${(0, utils_1.getLayoutMediaQuery)(layout.id, layouts)} {
46
- .section-${section.id} {
47
- display: ${isHidden ? 'none' : 'block'};
48
- }
49
- }`;
50
- }, '');
51
- };
30
+ return section.media;
31
+ }, [section.media]);
52
32
  if (SectionComponent)
53
33
  return (0, jsx_runtime_1.jsx)("div", { ref: sectionRef, children: (0, jsx_runtime_1.jsx)(SectionComponent, { data: data, children: children }) });
54
- 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: [media && media.size !== 'none' && sectionRef.current && ((0, jsx_runtime_1.jsx)("div", { className: `section-background-overlay-${section.id}`, children: (0, jsx_runtime_1.jsxs)("div", { className: `section-background-wrapper-${section.id}`, style: Object.assign({ transform: media.position === 'fixed' ? 'translateY(-100vh)' : 'unset' }, (sectionHeight && { height: media.position === 'fixed' ? `calc(${getSectionHeight(sectionHeight)} + 200vh)` : getSectionHeight(sectionHeight) })), children: [media.type === 'video' && ((0, jsx_runtime_1.jsx)(SectionVideo_1.SectionVideo, { container: sectionRef.current, sectionId: section.id, media: media })), media.type === 'image' && ((0, jsx_runtime_1.jsx)(SectionImage_1.SectionImage, { media: media, sectionId: section.id }))] }, `section-background-wrapper-${section.id}`) })), children] }), (0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
55
- ${(0, utils_1.getLayoutStyles)(layouts, layoutValues, ([height, color, media]) => (`
34
+ 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: [media && media.size !== 'none' && sectionRef.current && ((0, jsx_runtime_1.jsx)("div", { className: `section-background-overlay-${section.id}`, children: (0, jsx_runtime_1.jsxs)("div", { className: `section-background-wrapper-${section.id}`, style: {
35
+ transform: media.position === 'fixed' ? 'translateY(-100vh)' : 'unset',
36
+ height: media.position === 'fixed' ? `calc(${getSectionHeight(height)} + 200vh)` : getSectionHeight(height)
37
+ }, children: [media.type === 'video' && ((0, jsx_runtime_1.jsx)(SectionVideo_1.SectionVideo, { container: sectionRef.current, sectionId: section.id, media: media })), media.type === 'image' && ((0, jsx_runtime_1.jsx)(SectionImage_1.SectionImage, { media: media, sectionId: section.id }))] }, `section-background-wrapper-${section.id}`) })), children] }), (0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
56
38
  .section-${section.id} {
57
39
  height: ${getSectionHeight(height)};
58
40
  position: relative;
41
+ display: ${hidden ? 'none' : 'block'};
59
42
  background-color: ${color_1.CntrlColor.parse(color !== null && color !== void 0 ? color : DEFAULT_COLOR).fmt('rgba')};
60
43
  }
61
44
  .section-background-overlay-${section.id} {
@@ -70,9 +53,7 @@ const Section = ({ section, data, children }) => {
70
53
  height: ${(media === null || media === void 0 ? void 0 : media.position) === 'fixed' ? `calc(${getSectionHeight(height)} + 200vh)` : getSectionHeight(height)};
71
54
  width: 100%;
72
55
  }
73
- `))}
74
- ${getSectionVisibilityStyles()}
75
- ` })] }));
56
+ ` })] }));
76
57
  };
77
58
  exports.Section = Section;
78
59
  function getSectionHeight(heightData) {
@@ -1,3 +1 @@
1
- import { SectionHeight } from '../../../sdk/types/article/Section';
2
- export declare const useSectionHeightData: (sectionId: string) => Record<string, string>;
3
- export declare function getSectionHeightMap(sectionHeight: Record<string, SectionHeight>): Record<string, string>;
1
+ export declare const useSectionHeightData: (sectionId: string) => string;
@@ -1,20 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useSectionHeightData = void 0;
4
- exports.getSectionHeightMap = getSectionHeightMap;
5
4
  const react_1 = require("react");
6
5
  const CntrlContext_1 = require("../../provider/CntrlContext");
7
6
  const Section_1 = require("./Section");
8
7
  const useSectionHeightData = (sectionId) => {
9
8
  const sectionHeightContext = (0, react_1.useContext)(CntrlContext_1.CntrlContext);
10
- const layouts = sectionHeightContext.layouts;
11
9
  const sectionHeightData = sectionHeightContext.getSectionHeightData(sectionId);
12
- return sectionHeightData ? getSectionHeightMap(sectionHeightData) : getDefaultHeightData(layouts);
10
+ return sectionHeightData ? (0, Section_1.getSectionHeight)(sectionHeightData) : '0';
13
11
  };
14
12
  exports.useSectionHeightData = useSectionHeightData;
15
- function getSectionHeightMap(sectionHeight) {
16
- return Object.fromEntries(Object.entries(sectionHeight).map(([sectionId, heightData]) => [sectionId, (0, Section_1.getSectionHeight)(heightData)]));
17
- }
18
- function getDefaultHeightData(layouts) {
19
- return layouts.reduce((acc, layout) => (Object.assign(Object.assign({}, acc), { [layout.id]: '0' })), {});
20
- }
@@ -13,34 +13,21 @@ const useRegisterResize_1 = require("../../../common/useRegisterResize");
13
13
  const useItemAngle_1 = require("../useItemAngle");
14
14
  const LinkWrapper_1 = require("../LinkWrapper");
15
15
  const useCodeEmbedItem_1 = require("./useCodeEmbedItem");
16
- const ItemArea_1 = require("../../../../sdk/types/article/ItemArea");
17
- const utils_1 = require("../../../../utils");
18
16
  const FontFaceGenerator_1 = require("../../../../sdk/FontFaceGenerator/FontFaceGenerator");
19
- const stylesMap = {
20
- [ItemArea_1.AreaAnchor.TopLeft]: {},
21
- [ItemArea_1.AreaAnchor.TopCenter]: { justifyContent: 'center' },
22
- [ItemArea_1.AreaAnchor.TopRight]: { justifyContent: 'flex-end' },
23
- [ItemArea_1.AreaAnchor.MiddleLeft]: { alignItems: 'center' },
24
- [ItemArea_1.AreaAnchor.MiddleCenter]: { justifyContent: 'center', alignItems: 'center' },
25
- [ItemArea_1.AreaAnchor.MiddleRight]: { justifyContent: 'flex-end', alignItems: 'center' },
26
- [ItemArea_1.AreaAnchor.BottomLeft]: { alignItems: 'flex-end' },
27
- [ItemArea_1.AreaAnchor.BottomCenter]: { justifyContent: 'center', alignItems: 'flex-end' },
28
- [ItemArea_1.AreaAnchor.BottomRight]: { justifyContent: 'flex-end', alignItems: 'flex-end' }
29
- };
17
+ const useExemplary_1 = require("../../../common/useExemplary");
30
18
  const CodeEmbedItem = ({ item, sectionId, onResize, interactionCtrl, onVisibilityChange }) => {
31
19
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
32
20
  const id = (0, react_1.useId)();
33
- const { layouts, fonts } = (0, useCntrlContext_1.useCntrlContext)();
21
+ const { fonts } = (0, useCntrlContext_1.useCntrlContext)();
34
22
  const fontGoogleTags = fonts === null || fonts === void 0 ? void 0 : fonts.google;
35
23
  const fontAdobeTags = fonts === null || fonts === void 0 ? void 0 : fonts.adobe;
36
24
  const fontCustomTags = new FontFaceGenerator_1.FontFaceGenerator((_a = fonts === null || fonts === void 0 ? void 0 : fonts.custom) !== null && _a !== void 0 ? _a : []).generate();
37
- const { anchor, blur: itemBlur, opacity: itemOpacity } = (0, useCodeEmbedItem_1.useCodeEmbedItem)(item, sectionId);
25
+ const { blur: itemBlur, opacity: itemOpacity } = (0, useCodeEmbedItem_1.useCodeEmbedItem)(item, sectionId);
38
26
  const itemAngle = (0, useItemAngle_1.useItemAngle)(item, sectionId);
39
- const html = decodeBase64(item.commonParams.html);
27
+ const html = decodeBase64(item.params.html);
28
+ const exemplary = (0, useExemplary_1.useExemplary)();
40
29
  const [ref, setRef] = (0, react_1.useState)(null);
41
30
  (0, useRegisterResize_1.useRegisterResize)(ref, onResize);
42
- const pos = stylesMap[anchor];
43
- const layoutValues = [item.area, item.layoutParams];
44
31
  const stateParams = interactionCtrl === null || interactionCtrl === void 0 ? void 0 : interactionCtrl.getState(['angle', 'blur', 'opacity']);
45
32
  const blur = ((_c = (_b = stateParams === null || stateParams === void 0 ? void 0 : stateParams.styles) === null || _b === void 0 ? void 0 : _b.blur) !== null && _c !== void 0 ? _c : itemBlur);
46
33
  const opacity = (_e = (_d = stateParams === null || stateParams === void 0 ? void 0 : stateParams.styles) === null || _d === void 0 ? void 0 : _d.opacity) !== null && _e !== void 0 ? _e : itemOpacity;
@@ -79,37 +66,31 @@ const CodeEmbedItem = ({ item, sectionId, onResize, interactionCtrl, onVisibilit
79
66
  ${html}
80
67
  `;
81
68
  iframe.srcdoc = htmlWithStyles;
82
- }, [html, item.commonParams.iframe, ref]);
69
+ }, [html, item.params.iframe, ref]);
83
70
  const isInteractive = opacity !== 0;
84
71
  (0, react_1.useEffect)(() => {
85
72
  onVisibilityChange === null || onVisibilityChange === void 0 ? void 0 : onVisibilityChange(isInteractive);
86
73
  }, [isInteractive, onVisibilityChange]);
87
- 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 } : {})), { willChange: blur !== 0 && blur !== undefined ? 'transform' : 'unset', 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: `
74
+ 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({ transform: `rotate(${angle}deg)` }, (blur !== undefined ? { filter: `blur(${blur * 100}vw)` } : {})), { willChange: blur !== 0 && blur !== undefined ? 'transform' : 'unset', transition: (_k = stateParams === null || stateParams === void 0 ? void 0 : stateParams.transition) !== null && _k !== void 0 ? _k : 'none' }), ref: setRef, children: item.params.iframe ? ((0, jsx_runtime_1.jsx)("iframe", { "data-embed": item.id, className: `embed-${item.id}`, style: {
75
+ border: 'unset'
76
+ } })) : ((0, jsx_runtime_1.jsx)("div", { className: `embed-${item.id}`, dangerouslySetInnerHTML: { __html: html } })) }), (0, jsx_runtime_1.jsx)(style_1.default, { id: id, children: `
88
77
  .embed-wrapper-${item.id} {
89
78
  position: absolute;
90
79
  width: 100%;
91
80
  height: 100%;
81
+ opacity: ${item.params.opacity};
82
+ transform: rotate(${item.area.angle}deg);
83
+ filter: ${item.params.blur !== 0 ? `blur(${item.params.blur * 100}vw)` : 'unset'};
84
+ ${item.params.blur !== 0 ? 'will-change: transform;' : ''}
92
85
  }
93
86
  .embed-${item.id} {
94
- transform: ${item.commonParams.scale ? 'scale(var(--layout-deviation))' : 'none'};
87
+ transform: ${item.params.scale ? 'scale(var(--layout-deviation))' : 'none'};
95
88
  transform-origin: top left;
96
89
  z-index: 1;
97
90
  border: none;
91
+ width: ${item.params.scale ? `${item.area.width * exemplary}px` : '100%'};
92
+ height: ${item.params.scale ? `${item.area.height * exemplary}px` : '100%'};
98
93
  }
99
- ${(0, utils_1.getLayoutStyles)(layouts, layoutValues, ([area, layoutParams], exemplary) => {
100
- return (`
101
- .embed-wrapper-${item.id} {
102
- opacity: ${layoutParams.opacity};
103
- transform: rotate(${area.angle}deg);
104
- filter: ${layoutParams.blur !== 0 ? `blur(${layoutParams.blur * 100}vw)` : 'unset'};
105
- ${layoutParams.blur !== 0 ? 'will-change: transform;' : ''}
106
- }
107
- .embed-${item.id} {
108
- width: ${item.commonParams.scale ? `${area.width * exemplary}px` : '100%'};
109
- height: ${item.commonParams.scale ? `${area.height * exemplary}px` : '100%'};
110
- }
111
- `);
112
- })}
113
94
  ` })] }));
114
95
  };
115
96
  exports.CodeEmbedItem = CodeEmbedItem;
@@ -1,7 +1,5 @@
1
1
  import { CodeEmbedItem } from '../../../../sdk/types/article/Item';
2
- import { AreaAnchor } from '../../../../sdk/types/article/ItemArea';
3
2
  export declare function useCodeEmbedItem(item: CodeEmbedItem, sectionId: string): {
4
- anchor: AreaAnchor;
5
- blur: number | undefined;
6
- opacity: number | undefined;
3
+ blur: number;
4
+ opacity: number;
7
5
  };
@@ -1,24 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useCodeEmbedItem = useCodeEmbedItem;
4
- const useLayoutContext_1 = require("../../useLayoutContext");
5
4
  const useKeyframeValue_1 = require("../../../common/useKeyframeValue");
6
5
  const Keyframe_1 = require("../../../../sdk/types/keyframe/Keyframe");
7
- const ItemArea_1 = require("../../../../sdk/types/article/ItemArea");
8
6
  function useCodeEmbedItem(item, sectionId) {
9
- const layoutId = (0, useLayoutContext_1.useLayoutContext)();
10
- const blur = (0, useKeyframeValue_1.useKeyframeValue)(item, Keyframe_1.KeyframeType.Blur, (item, layoutId) => {
11
- if (!layoutId)
12
- return;
13
- const layoutParams = item.layoutParams[layoutId];
14
- return 'blur' in layoutParams ? layoutParams.blur : 0;
15
- }, (animator, scroll, value) => value !== undefined ? animator.getBlur({ blur: value }, scroll).blur : undefined, sectionId, [layoutId]);
16
- const opacity = (0, useKeyframeValue_1.useKeyframeValue)(item, Keyframe_1.KeyframeType.Opacity, (item, layoutId) => {
17
- if (!layoutId)
18
- return;
19
- const layoutParams = item.layoutParams[layoutId];
20
- return 'opacity' in layoutParams ? layoutParams.opacity : 1;
21
- }, (animator, scroll, value) => value !== undefined ? animator.getOpacity({ opacity: value }, scroll).opacity : undefined, sectionId, [layoutId]);
22
- const anchor = layoutId && 'areaAnchor' in item.layoutParams[layoutId] ? item.layoutParams[layoutId].areaAnchor : ItemArea_1.AreaAnchor.TopLeft;
23
- return { anchor, blur, opacity };
7
+ const blur = (0, useKeyframeValue_1.useKeyframeValue)(item, Keyframe_1.KeyframeType.Blur, (item) => 'blur' in item.params ? item.params.blur : 0, (animator, scroll, value) => animator.getBlur({ blur: value }, scroll).blur, sectionId);
8
+ const opacity = (0, useKeyframeValue_1.useKeyframeValue)(item, Keyframe_1.KeyframeType.Opacity, (item) => 'opacity' in item.params ? item.params.opacity : 1, (animator, scroll, value) => animator.getOpacity({ opacity: value }, scroll).opacity, sectionId);
9
+ return { blur, opacity };
24
10
  }