@builder.io/sdk-svelte 4.2.1 → 4.2.4
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.
- package/lib/browser/blocks/form/form/form.svelte +4 -5
- package/lib/browser/blocks/img/component-info.js +33 -3
- package/lib/browser/blocks/img/img.svelte +18 -6
- package/lib/browser/blocks/symbol/symbol.svelte +5 -2
- package/lib/browser/blocks/symbol/symbol.svelte.d.ts +1 -1
- package/lib/browser/blocks/symbol/symbol.types.d.ts +1 -2
- package/lib/browser/blocks/tabs/tabs.svelte +5 -4
- package/lib/browser/blocks/tabs/tabs.svelte.d.ts +1 -1
- package/lib/browser/blocks/text/component-info.js +0 -1
- package/lib/browser/components/awaiter.types.d.ts +7 -0
- package/lib/browser/components/awaiter.types.js +1 -0
- package/lib/browser/components/block/block.svelte +2 -2
- package/lib/browser/components/block/components/component-ref/component-ref.svelte +8 -8
- package/lib/browser/components/block/components/component-ref/component-ref.svelte.d.ts +2 -2
- package/lib/browser/components/block/components/interactive-element.svelte +8 -1
- package/lib/browser/components/block/components/live-edit-block-styles.svelte +114 -0
- package/lib/browser/components/block/components/live-edit-block-styles.svelte.d.ts +22 -0
- package/lib/browser/components/block/components/style-wrapper.svelte +25 -0
- package/lib/browser/components/block/components/style-wrapper.svelte.d.ts +23 -0
- package/lib/browser/components/content/components/enable-editor.svelte +30 -9
- package/lib/browser/components/live-edit.svelte +20 -0
- package/lib/browser/components/live-edit.svelte.d.ts +26 -0
- package/lib/browser/constants/sdk-version.d.ts +1 -1
- package/lib/browser/constants/sdk-version.js +1 -1
- package/lib/browser/functions/get-builder-search-params/index.d.ts +8 -2
- package/lib/browser/functions/get-builder-search-params/index.js +8 -2
- package/lib/browser/functions/get-content/generate-content-url.js +3 -8
- package/lib/browser/functions/get-content/index.js +8 -0
- package/lib/browser/functions/is-previewing.d.ts +11 -1
- package/lib/browser/functions/is-previewing.js +14 -4
- package/lib/browser/helpers/find-block.d.ts +18 -0
- package/lib/browser/helpers/find-block.js +41 -0
- package/lib/browser/helpers/subscribe-to-editor.d.ts +3 -2
- package/lib/browser/helpers/subscribe-to-editor.js +4 -2
- package/lib/edge/blocks/form/form/form.svelte +4 -5
- package/lib/edge/blocks/img/component-info.js +33 -3
- package/lib/edge/blocks/img/img.svelte +18 -6
- package/lib/edge/blocks/symbol/symbol.svelte +5 -2
- package/lib/edge/blocks/symbol/symbol.svelte.d.ts +1 -1
- package/lib/edge/blocks/symbol/symbol.types.d.ts +1 -2
- package/lib/edge/blocks/tabs/tabs.svelte +5 -4
- package/lib/edge/blocks/tabs/tabs.svelte.d.ts +1 -1
- package/lib/edge/blocks/text/component-info.js +0 -1
- package/lib/edge/components/awaiter.types.d.ts +7 -0
- package/lib/edge/components/awaiter.types.js +1 -0
- package/lib/edge/components/block/block.svelte +2 -2
- package/lib/edge/components/block/components/component-ref/component-ref.svelte +8 -8
- package/lib/edge/components/block/components/component-ref/component-ref.svelte.d.ts +2 -2
- package/lib/edge/components/block/components/interactive-element.svelte +8 -1
- package/lib/edge/components/block/components/live-edit-block-styles.svelte +114 -0
- package/lib/edge/components/block/components/live-edit-block-styles.svelte.d.ts +22 -0
- package/lib/edge/components/block/components/style-wrapper.svelte +25 -0
- package/lib/edge/components/block/components/style-wrapper.svelte.d.ts +23 -0
- package/lib/edge/components/content/components/enable-editor.svelte +30 -9
- package/lib/edge/components/live-edit.svelte +20 -0
- package/lib/edge/components/live-edit.svelte.d.ts +26 -0
- package/lib/edge/constants/sdk-version.d.ts +1 -1
- package/lib/edge/constants/sdk-version.js +1 -1
- package/lib/edge/functions/get-builder-search-params/index.d.ts +8 -2
- package/lib/edge/functions/get-builder-search-params/index.js +8 -2
- package/lib/edge/functions/get-content/generate-content-url.js +3 -8
- package/lib/edge/functions/get-content/index.js +8 -0
- package/lib/edge/functions/is-previewing.d.ts +11 -1
- package/lib/edge/functions/is-previewing.js +14 -4
- package/lib/edge/helpers/find-block.d.ts +18 -0
- package/lib/edge/helpers/find-block.js +41 -0
- package/lib/edge/helpers/subscribe-to-editor.d.ts +3 -2
- package/lib/edge/helpers/subscribe-to-editor.js +4 -2
- package/lib/node/blocks/form/form/form.svelte +4 -5
- package/lib/node/blocks/img/component-info.js +33 -3
- package/lib/node/blocks/img/img.svelte +18 -6
- package/lib/node/blocks/symbol/symbol.svelte +5 -2
- package/lib/node/blocks/symbol/symbol.svelte.d.ts +1 -1
- package/lib/node/blocks/symbol/symbol.types.d.ts +1 -2
- package/lib/node/blocks/tabs/tabs.svelte +5 -4
- package/lib/node/blocks/tabs/tabs.svelte.d.ts +1 -1
- package/lib/node/blocks/text/component-info.js +0 -1
- package/lib/node/components/awaiter.types.d.ts +7 -0
- package/lib/node/components/awaiter.types.js +1 -0
- package/lib/node/components/block/block.svelte +2 -2
- package/lib/node/components/block/components/component-ref/component-ref.svelte +8 -8
- package/lib/node/components/block/components/component-ref/component-ref.svelte.d.ts +2 -2
- package/lib/node/components/block/components/interactive-element.svelte +8 -1
- package/lib/node/components/block/components/live-edit-block-styles.svelte +114 -0
- package/lib/node/components/block/components/live-edit-block-styles.svelte.d.ts +22 -0
- package/lib/node/components/block/components/style-wrapper.svelte +25 -0
- package/lib/node/components/block/components/style-wrapper.svelte.d.ts +23 -0
- package/lib/node/components/content/components/enable-editor.svelte +30 -9
- package/lib/node/components/live-edit.svelte +20 -0
- package/lib/node/components/live-edit.svelte.d.ts +26 -0
- package/lib/node/constants/sdk-version.d.ts +1 -1
- package/lib/node/constants/sdk-version.js +1 -1
- package/lib/node/functions/get-builder-search-params/index.d.ts +8 -2
- package/lib/node/functions/get-builder-search-params/index.js +8 -2
- package/lib/node/functions/get-content/generate-content-url.js +3 -8
- package/lib/node/functions/get-content/index.js +8 -0
- package/lib/node/functions/is-previewing.d.ts +11 -1
- package/lib/node/functions/is-previewing.js +14 -4
- package/lib/node/helpers/find-block.d.ts +18 -0
- package/lib/node/helpers/find-block.js +41 -0
- package/lib/node/helpers/subscribe-to-editor.d.ts +3 -2
- package/lib/node/helpers/subscribe-to-editor.js +4 -2
- package/package.json +1 -1
- package/src/blocks/form/form/form.svelte +4 -5
- package/src/blocks/img/component-info.ts +33 -3
- package/src/blocks/img/img.svelte +22 -6
- package/src/blocks/symbol/symbol.svelte +5 -2
- package/src/blocks/symbol/symbol.types.ts +1 -1
- package/src/blocks/tabs/tabs.svelte +5 -4
- package/src/blocks/text/component-info.ts +0 -1
- package/src/components/awaiter.types.ts +7 -0
- package/src/components/block/block.svelte +2 -2
- package/src/components/block/components/component-ref/component-ref.svelte +8 -10
- package/src/components/block/components/interactive-element.svelte +7 -0
- package/src/components/block/components/live-edit-block-styles.svelte +146 -0
- package/src/components/block/components/style-wrapper.svelte +41 -0
- package/src/components/content/components/enable-editor.svelte +32 -9
- package/src/components/live-edit.svelte +32 -0
- package/src/constants/sdk-version.ts +1 -1
- package/src/functions/get-builder-search-params/index.ts +8 -2
- package/src/functions/get-content/generate-content-url.ts +3 -8
- package/src/functions/get-content/index.ts +8 -0
- package/src/functions/is-previewing.ts +15 -4
- package/src/helpers/find-block.ts +40 -0
- package/src/helpers/subscribe-to-editor.ts +7 -4
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<script context="module" lang="ts">
|
|
2
|
+
type StyleWrapperProps = {
|
|
3
|
+
block: BuilderBlock;
|
|
4
|
+
context: BuilderContextInterface;
|
|
5
|
+
id?: string;
|
|
6
|
+
};
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<script lang="ts">
|
|
10
|
+
import { getContext, onMount } from "svelte";
|
|
11
|
+
|
|
12
|
+
import { TARGET } from "../../../constants/target";
|
|
13
|
+
import { BuilderContext } from "../../../context/index";
|
|
14
|
+
import {
|
|
15
|
+
isEditing,
|
|
16
|
+
BuilderBlock,
|
|
17
|
+
BuilderContextInterface,
|
|
18
|
+
} from "../../../server-index";
|
|
19
|
+
import BlockStyles from "./block-styles.svelte";
|
|
20
|
+
import LiveEditBlockStyles from "./live-edit-block-styles.svelte";
|
|
21
|
+
|
|
22
|
+
export let block: StyleWrapperProps["block"];
|
|
23
|
+
export let context: StyleWrapperProps["context"];
|
|
24
|
+
|
|
25
|
+
let contextProvider = getContext(BuilderContext.key);
|
|
26
|
+
|
|
27
|
+
let isClientEditing = false;
|
|
28
|
+
let isHydrated = false;
|
|
29
|
+
|
|
30
|
+
onMount(() => {});
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
{#if isHydrated}
|
|
34
|
+
{#if TARGET === "rsc" && isClientEditing}
|
|
35
|
+
<LiveEditBlockStyles id={block.id} contextProvider={$contextProvider} />
|
|
36
|
+
{:else}
|
|
37
|
+
<BlockStyles {block} {context} />
|
|
38
|
+
{/if}
|
|
39
|
+
{:else}
|
|
40
|
+
<BlockStyles {block} {context} />
|
|
41
|
+
{/if}
|
|
@@ -53,7 +53,10 @@
|
|
|
53
53
|
import { getDefaultCanTrack } from "../../../helpers/canTrack";
|
|
54
54
|
import { getCookieSync } from "../../../helpers/cookie";
|
|
55
55
|
import { postPreviewContent } from "../../../helpers/preview-lru-cache/set";
|
|
56
|
-
import {
|
|
56
|
+
import {
|
|
57
|
+
createEditorListener,
|
|
58
|
+
EditType,
|
|
59
|
+
} from "../../../helpers/subscribe-to-editor";
|
|
57
60
|
import { setupBrowserForEditing } from "../../../scripts/init-editing";
|
|
58
61
|
import type { BuilderContent } from "../../../types/builder-content";
|
|
59
62
|
import type { ComponentInfo } from "../../../types/components";
|
|
@@ -96,7 +99,7 @@
|
|
|
96
99
|
return styles;
|
|
97
100
|
}
|
|
98
101
|
|
|
99
|
-
function mergeNewRootState(newData: Dictionary<any
|
|
102
|
+
function mergeNewRootState(newData: Dictionary<any>, editType?: EditType) {
|
|
100
103
|
const combinedState = {
|
|
101
104
|
...$builderContextSignal.rootState,
|
|
102
105
|
...newData,
|
|
@@ -106,8 +109,13 @@
|
|
|
106
109
|
} else {
|
|
107
110
|
$builderContextSignal.rootState = combinedState;
|
|
108
111
|
}
|
|
112
|
+
if ($builderContextSignal.rootSetState) {
|
|
113
|
+
$builderContextSignal.rootSetState(combinedState);
|
|
114
|
+
} else {
|
|
115
|
+
$builderContextSignal.rootState = combinedState;
|
|
116
|
+
}
|
|
109
117
|
}
|
|
110
|
-
function mergeNewContent(newContent: BuilderContent) {
|
|
118
|
+
function mergeNewContent(newContent: BuilderContent, editType?: EditType) {
|
|
111
119
|
const newContentValue = {
|
|
112
120
|
...$builderContextSignal.content,
|
|
113
121
|
...newContent,
|
|
@@ -146,11 +154,11 @@
|
|
|
146
154
|
animation: (animation) => {
|
|
147
155
|
triggerAnimation(animation);
|
|
148
156
|
},
|
|
149
|
-
contentUpdate: (newContent) => {
|
|
150
|
-
mergeNewContent(newContent);
|
|
157
|
+
contentUpdate: (newContent, editType) => {
|
|
158
|
+
mergeNewContent(newContent, editType);
|
|
151
159
|
},
|
|
152
|
-
stateUpdate: (newState) => {
|
|
153
|
-
mergeNewRootState(newState);
|
|
160
|
+
stateUpdate: (newState, editType) => {
|
|
161
|
+
mergeNewRootState(newState, editType);
|
|
154
162
|
},
|
|
155
163
|
},
|
|
156
164
|
})(event);
|
|
@@ -219,11 +227,15 @@
|
|
|
219
227
|
method: "GET",
|
|
220
228
|
};
|
|
221
229
|
logFetch(JSON.stringify(fetchRequestObj));
|
|
222
|
-
|
|
230
|
+
const fetchOptions = {
|
|
223
231
|
method: fetchRequestObj.method,
|
|
224
232
|
headers: fetchRequestObj.headers,
|
|
225
233
|
body: fetchRequestObj.body,
|
|
226
|
-
}
|
|
234
|
+
};
|
|
235
|
+
if (fetchRequestObj.method === "GET") {
|
|
236
|
+
delete fetchOptions.body;
|
|
237
|
+
}
|
|
238
|
+
fetch(fetchRequestObj.url, fetchOptions)
|
|
227
239
|
.then((response) => response.json())
|
|
228
240
|
.then((json) => {
|
|
229
241
|
mergeNewRootState({
|
|
@@ -352,6 +364,9 @@
|
|
|
352
364
|
let elementRef;
|
|
353
365
|
|
|
354
366
|
let hasExecuted = false;
|
|
367
|
+
let contextValue = $builderContextSignal;
|
|
368
|
+
let prevData = null;
|
|
369
|
+
let prevLocale = "";
|
|
355
370
|
let ContentWrapper = contentWrapper || "div";
|
|
356
371
|
let httpReqsData = {};
|
|
357
372
|
let httpReqsPending = {};
|
|
@@ -416,7 +431,11 @@
|
|
|
416
431
|
|
|
417
432
|
function onUpdateFn_2(..._args: any[]) {
|
|
418
433
|
if (data) {
|
|
434
|
+
if (prevData === data) {
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
419
437
|
mergeNewRootState(data);
|
|
438
|
+
prevData = data;
|
|
420
439
|
}
|
|
421
440
|
}
|
|
422
441
|
|
|
@@ -424,9 +443,13 @@
|
|
|
424
443
|
|
|
425
444
|
function onUpdateFn_3(..._args: any[]) {
|
|
426
445
|
if (locale) {
|
|
446
|
+
if (prevLocale === locale) {
|
|
447
|
+
return;
|
|
448
|
+
}
|
|
427
449
|
mergeNewRootState({
|
|
428
450
|
locale: locale,
|
|
429
451
|
});
|
|
452
|
+
prevLocale = locale;
|
|
430
453
|
}
|
|
431
454
|
}
|
|
432
455
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<script context="module" lang="ts">
|
|
2
|
+
type LiveEditProps = {
|
|
3
|
+
children?: any;
|
|
4
|
+
id?: any;
|
|
5
|
+
Wrapper?: any;
|
|
6
|
+
attributes?: any;
|
|
7
|
+
};
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<script lang="ts">
|
|
11
|
+
import { getContext } from "svelte";
|
|
12
|
+
|
|
13
|
+
import { BuilderContext } from "../context/index";
|
|
14
|
+
import { findBlockById } from "../helpers/find-block";
|
|
15
|
+
|
|
16
|
+
export let id: LiveEditProps["id"] = undefined;
|
|
17
|
+
export let attributes: LiveEditProps["attributes"] = undefined;
|
|
18
|
+
export let Wrapper: LiveEditProps["Wrapper"] = undefined;
|
|
19
|
+
|
|
20
|
+
let context = getContext(BuilderContext.key);
|
|
21
|
+
|
|
22
|
+
$: block = () => {
|
|
23
|
+
return findBlockById($context.content!, id);
|
|
24
|
+
};
|
|
25
|
+
$: options = () => {
|
|
26
|
+
return block?.()?.component?.options || {};
|
|
27
|
+
};
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<svelte:component this={Wrapper} {...options()} {attributes}
|
|
31
|
+
><slot /></svelte:component
|
|
32
|
+
>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const SDK_VERSION = "4.2.
|
|
1
|
+
export const SDK_VERSION = "4.2.4"
|
|
@@ -5,8 +5,14 @@ const BUILDER_SEARCHPARAMS_PREFIX = 'builder.';
|
|
|
5
5
|
const BUILDER_OPTIONS_PREFIX = 'options.';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* Receives a `URLSearchParams` object or a regular query object, and returns
|
|
9
|
-
* relevant to the Builder SDK.
|
|
8
|
+
* Receives a `URLSearchParams` object or a regular query object, and returns
|
|
9
|
+
* the subset of query params that are relevant to the Builder SDK.
|
|
10
|
+
*
|
|
11
|
+
* Outputs a key-value object to be passed to `fetchOneEntry` or `fetchEntries`
|
|
12
|
+
* functions as the `options` argument.
|
|
13
|
+
*
|
|
14
|
+
* NOTE: This function is generally not needed. Instead, it is recommended to use `isPreviewing()`
|
|
15
|
+
* to check if the current page requires previewed content.
|
|
10
16
|
*
|
|
11
17
|
* @returns
|
|
12
18
|
*/
|
|
@@ -39,15 +39,10 @@ export const generateContentUrl = (options: GetContentOptions): URL => {
|
|
|
39
39
|
url.searchParams.set('limit', String(limit));
|
|
40
40
|
url.searchParams.set('noTraverse', String(noTraverse));
|
|
41
41
|
url.searchParams.set('includeRefs', String(true));
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
if (finalLocale) {
|
|
45
|
-
url.searchParams.set('locale', finalLocale);
|
|
46
|
-
finalUserAttributes = {
|
|
47
|
-
locale: finalLocale,
|
|
48
|
-
...finalUserAttributes
|
|
49
|
-
};
|
|
42
|
+
if (locale) {
|
|
43
|
+
url.searchParams.set('locale', locale);
|
|
50
44
|
}
|
|
45
|
+
let finalUserAttributes: Record<string, any> = userAttributes || {};
|
|
51
46
|
if (enrich) url.searchParams.set('enrich', String(enrich));
|
|
52
47
|
url.searchParams.set('omit', omit ?? 'meta.componentsUsed');
|
|
53
48
|
if (fields) {
|
|
@@ -15,6 +15,14 @@ const checkContentHasResults = (content: ContentResponse): content is ContentRes
|
|
|
15
15
|
* Returns the first content entry that matches the given options.
|
|
16
16
|
*/
|
|
17
17
|
export async function fetchOneEntry(options: GetContentOptions): Promise<BuilderContent | null> {
|
|
18
|
+
const finalLocale = options.locale || options.userAttributes?.locale;
|
|
19
|
+
if (finalLocale) {
|
|
20
|
+
options.locale = finalLocale;
|
|
21
|
+
options.userAttributes = {
|
|
22
|
+
locale: finalLocale,
|
|
23
|
+
...options.userAttributes
|
|
24
|
+
};
|
|
25
|
+
}
|
|
18
26
|
const allContent = await fetchEntries({
|
|
19
27
|
...options,
|
|
20
28
|
limit: 1
|
|
@@ -1,16 +1,27 @@
|
|
|
1
1
|
import type { Search } from '../helpers/search/search';
|
|
2
2
|
import { getSearchString } from '../helpers/search/search';
|
|
3
3
|
import { isBrowser } from './is-browser';
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Checks the current URL's search parameters to see if it is attempting to
|
|
7
|
+
* preview Builder Content.
|
|
8
|
+
*
|
|
9
|
+
* When called on the client, it uses `window.location.search`.
|
|
10
|
+
* When called on the server (SSR), it requires a `search` argument.
|
|
11
|
+
*
|
|
12
|
+
* @param search - The search parameters to check. Can be a URL string (containing the search parameters), `URLSearchParams`, or a key-value object containing the search parameters.
|
|
13
|
+
* @returns `true` if the current page is being previewed, `false` otherwise.
|
|
14
|
+
*/
|
|
15
|
+
export function isPreviewing(search?: Search) {
|
|
16
|
+
const searchToUse = search || (isBrowser() ? window.location.search : undefined);
|
|
6
17
|
|
|
7
18
|
/**
|
|
8
19
|
* If this function is called on the server without an explicit `search` argument,
|
|
9
20
|
* then it can't check if the user is previewing, and will return `false`.
|
|
10
21
|
*/
|
|
11
|
-
if (!
|
|
22
|
+
if (!searchToUse) {
|
|
12
23
|
return false;
|
|
13
24
|
}
|
|
14
|
-
const normalizedSearch = getSearchString(
|
|
25
|
+
const normalizedSearch = getSearchString(searchToUse);
|
|
15
26
|
return Boolean(normalizedSearch.indexOf('builder.preview=') !== -1);
|
|
16
27
|
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { BuilderBlock, BuilderContent } from '../server-index';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Recursively searches for a block by ID.
|
|
5
|
+
*
|
|
6
|
+
* @param content The Builder content to search through.
|
|
7
|
+
* @param id The ID of the block to search for.
|
|
8
|
+
* @returns The block if found, otherwise null.
|
|
9
|
+
*/
|
|
10
|
+
export const findBlockById = (content: BuilderContent, id: string): BuilderBlock | null => {
|
|
11
|
+
return findBlockInTree(content.data?.blocks, id);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Helper function to recursively search through block tree.
|
|
16
|
+
*
|
|
17
|
+
* @param blocks The blocks to search through.
|
|
18
|
+
* @param id The ID of the block to search for.
|
|
19
|
+
* @returns The block if found, otherwise null.
|
|
20
|
+
* @private This is an internal implementation detail.
|
|
21
|
+
*/
|
|
22
|
+
export const findBlockInTree = (blocks: BuilderBlock[] | undefined, id: string): BuilderBlock | null => {
|
|
23
|
+
if (!blocks) return null;
|
|
24
|
+
for (const block of blocks) {
|
|
25
|
+
if (block.id === id) return block;
|
|
26
|
+
if (block.children) {
|
|
27
|
+
const child = findBlockInTree(block.children, id);
|
|
28
|
+
if (child) return child;
|
|
29
|
+
}
|
|
30
|
+
if (block.component?.name === 'Columns' && block.component?.options?.columns) {
|
|
31
|
+
for (const column of block.component.options.columns) {
|
|
32
|
+
if (column.blocks) {
|
|
33
|
+
const child = findBlockInTree(column.blocks, id);
|
|
34
|
+
if (child) return child;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
@@ -6,10 +6,11 @@ import type { BuilderAnimation } from '../types/builder-block';
|
|
|
6
6
|
import type { BuilderContent } from '../types/builder-content';
|
|
7
7
|
import type { Dictionary } from '../types/typescript';
|
|
8
8
|
import { logger } from './logger';
|
|
9
|
+
export type EditType = 'client' | 'server' | undefined;
|
|
9
10
|
type ContentListener = Required<Pick<ContentProps, 'model' | 'trustedHosts'>> & {
|
|
10
11
|
callbacks: {
|
|
11
|
-
contentUpdate: (updatedContent: BuilderContent) => void;
|
|
12
|
-
stateUpdate: (newState: Dictionary<string
|
|
12
|
+
contentUpdate: (updatedContent: BuilderContent, editType?: EditType) => void;
|
|
13
|
+
stateUpdate: (newState: Dictionary<string>, editType?: EditType) => void;
|
|
13
14
|
animation: (updatedContent: BuilderAnimation) => void;
|
|
14
15
|
configureSdk: (updatedContent: any) => void;
|
|
15
16
|
};
|
|
@@ -43,8 +44,9 @@ export const createEditorListener = ({
|
|
|
43
44
|
const messageContent = data.data;
|
|
44
45
|
const modelName = messageContent.model;
|
|
45
46
|
const newState = messageContent?.state;
|
|
47
|
+
const editType = messageContent.editType;
|
|
46
48
|
if (modelName === model && newState) {
|
|
47
|
-
callbacks.stateUpdate(newState);
|
|
49
|
+
callbacks.stateUpdate(newState, editType);
|
|
48
50
|
}
|
|
49
51
|
break;
|
|
50
52
|
}
|
|
@@ -53,8 +55,9 @@ export const createEditorListener = ({
|
|
|
53
55
|
const messageContent = data.data;
|
|
54
56
|
const key = messageContent.key || messageContent.alias || messageContent.entry || messageContent.modelName;
|
|
55
57
|
const contentData = messageContent.data;
|
|
58
|
+
const editType = messageContent.editType;
|
|
56
59
|
if (key === model) {
|
|
57
|
-
callbacks.contentUpdate(contentData);
|
|
60
|
+
callbacks.contentUpdate(contentData, editType);
|
|
58
61
|
}
|
|
59
62
|
break;
|
|
60
63
|
}
|