Skip to content

Commit 97de1fe

Browse files
Vp 444 by default bug fix (#558)
* fix: live preview fixed new tab default setup * chore: updated readme file * fix: updated stackSDK usage in init new data flag
1 parent 6d58cf4 commit 97de1fe

9 files changed

Lines changed: 54 additions & 21 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Alternatively, if you want to include the package directly in your website HTML
1616

1717
```html
1818
<script type='module' crossorigin="anonymous">
19-
import ContentstackLivePreview from 'https://esm.sh/@contentstack/live-preview-utils@4.1.2';
19+
import ContentstackLivePreview from 'https://esm.sh/@contentstack/live-preview-utils@4.3.0';
2020
2121
ContentstackLivePreview.init({
2222
stackDetails: {
@@ -51,7 +51,7 @@ ContentstackLivePreview.init({
5151

5252
MIT License
5353

54-
Copyright © 2021-2025 [Contentstack](https://www.contentstack.com/). All Rights Reserved
54+
Copyright © 2021-2026 [Contentstack](https://www.contentstack.com/). All Rights Reserved
5555

5656
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
5757

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@contentstack/live-preview-utils",
3-
"version": "4.1.2",
3+
"version": "4.3.0",
44
"description": "Contentstack provides the Live Preview SDK to establish a communication channel between the various Contentstack SDKs and your website, transmitting live changes to the preview pane.",
55
"type": "module",
66
"types": "dist/legacy/index.d.ts",

src/configManager/__test__/configManager.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,14 +91,14 @@ describe("Config", () => {
9191
});
9292

9393
describe("config default flags", () => {
94-
test("enableLivePreviewOutsideIframe defaults to false in getDefaultConfig", () => {
94+
test("enableLivePreviewOutsideIframe defaults to undefined in getDefaultConfig", () => {
9595
const defaultConfig = getDefaultConfig();
96-
expect(defaultConfig.enableLivePreviewOutsideIframe).toBe(false);
96+
expect(defaultConfig.enableLivePreviewOutsideIframe).toBeUndefined();
9797
});
9898

99-
test("enableLivePreviewOutsideIframe defaults to false in getUserInitData", () => {
99+
test("enableLivePreviewOutsideIframe defaults to undefined in getUserInitData", () => {
100100
const initData = getUserInitData();
101-
expect(initData.enableLivePreviewOutsideIframe).toBe(false);
101+
expect(initData.enableLivePreviewOutsideIframe).toBeUndefined();
102102
});
103103
});
104104

src/configManager/__test__/handleUserConfig.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -423,10 +423,10 @@ describe("handleInitData() - enableLivePreviewOutsideIframe", () => {
423423
Config.reset();
424424
});
425425

426-
test("should default to false when not provided", () => {
426+
test("should default to undefined when not provided", () => {
427427
const initData: Partial<IInitData> = {};
428428
handleInitData(initData);
429-
expect(config.enableLivePreviewOutsideIframe).toBe(false);
429+
expect(config.enableLivePreviewOutsideIframe).toBeUndefined();
430430
});
431431

432432
test("should set to true when provided as true", () => {

src/configManager/config.default.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export function getUserInitData(): IInitData {
3939
environment: "",
4040
},
4141
runScriptsOnUpdate: false,
42-
enableLivePreviewOutsideIframe: false,
42+
enableLivePreviewOutsideIframe: undefined,
4343
};
4444
}
4545

@@ -111,6 +111,6 @@ export function getDefaultConfig(): IConfig {
111111
},
112112
payload: [],
113113
},
114-
enableLivePreviewOutsideIframe: false,
114+
enableLivePreviewOutsideIframe: undefined,
115115
};
116116
}

src/configManager/handleUserConfig.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,11 @@ export const handleInitData = (initData: Partial<IInitData>): void => {
121121
"bottom-right",
122122
})
123123

124-
Config.set("enableLivePreviewOutsideIframe", initData.enableLivePreviewOutsideIframe ?? config.enableLivePreviewOutsideIframe ?? false);
124+
Config.set(
125+
"enableLivePreviewOutsideIframe",
126+
initData.enableLivePreviewOutsideIframe ??
127+
config.enableLivePreviewOutsideIframe
128+
);
125129

126130
// client URL params
127131
handleClientUrlParams(

src/livePreview/eventManager/__test__/postMessageEvent.hooks.test.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,23 @@ describe("postMessageEvent.hooks", () => {
432432
});
433433
});
434434

435+
it("should omit enableLivePreviewOutsideIframe in INIT payload when config is unset", async () => {
436+
mockConfig = {
437+
ssr: true,
438+
mode: 1,
439+
enableLivePreviewOutsideIframe: undefined,
440+
};
441+
(Config.get as any).mockReturnValue(mockConfig);
442+
443+
await sendInitializeLivePreviewPostMessageEvent();
444+
await Promise.resolve();
445+
446+
const initPayload = (livePreviewPostMessage?.send as any).mock.calls.at(-1)?.[1];
447+
expect(initPayload.config).not.toHaveProperty(
448+
"enableLivePreviewOutsideIframe"
449+
);
450+
});
451+
435452
it("should include enableLivePreviewOutsideIframe=false in INIT payload", async () => {
436453
mockConfig = {
437454
ssr: true, // avoid timers

src/livePreview/eventManager/postMessageEvent.hooks.ts

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -119,17 +119,29 @@ export function useOnEntryUpdatePostMessageEvent(): void {
119119
}
120120

121121
export function sendInitializeLivePreviewPostMessageEvent(): void {
122+
const config = Config.get();
123+
const initConfig: {
124+
shouldReload: boolean;
125+
href: string;
126+
sdkVersion: string | undefined;
127+
mode: number;
128+
enableLivePreviewOutsideIframe?: boolean;
129+
} = {
130+
shouldReload: config.ssr,
131+
href: window.location.href,
132+
sdkVersion: process?.env?.PACKAGE_VERSION,
133+
mode: config.mode,
134+
};
135+
136+
if (config.enableLivePreviewOutsideIframe !== undefined) {
137+
initConfig.enableLivePreviewOutsideIframe = config.enableLivePreviewOutsideIframe;
138+
}
139+
122140
livePreviewPostMessage
123141
?.send<LivePreviewInitEventResponse>(
124142
LIVE_PREVIEW_POST_MESSAGE_EVENTS.INIT,
125143
{
126-
config: {
127-
shouldReload: Config.get().ssr,
128-
href: window.location.href,
129-
sdkVersion: process?.env?.PACKAGE_VERSION,
130-
mode: Config.get().mode,
131-
enableLivePreviewOutsideIframe: Config.get().enableLivePreviewOutsideIframe,
132-
},
144+
config: initConfig,
133145
}
134146
)
135147
.then((data) => {

src/types/types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ export declare interface IConfig {
8787
highlightedElement: HTMLElement | null;
8888
};
8989
collab: ICollabConfig["collab"];
90-
enableLivePreviewOutsideIframe: boolean;
90+
enableLivePreviewOutsideIframe: boolean | undefined;
9191
}
9292

9393

@@ -133,7 +133,7 @@ export declare interface IInitData {
133133
editButton: IConfigEditButton;
134134
editInVisualBuilderButton: IConfigEditInVisualBuilderButton;
135135
mode: ILivePreviewMode;
136-
enableLivePreviewOutsideIframe: boolean; // default: false
136+
enableLivePreviewOutsideIframe: boolean | undefined; // default: undefined
137137
}
138138

139139
// type PickPartial<T, K extends keyof T> = Partial<Pick<T, K>> & Omit<T, K>;

0 commit comments

Comments
 (0)