@contentstack/live-preview-utils 2.0.0 → 2.0.2

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 (36) hide show
  1. package/README.md +1 -10
  2. package/dist/legacy/contentstack-live-preview-HOC.cjs +1 -1
  3. package/dist/legacy/contentstack-live-preview-HOC.js +1 -1
  4. package/dist/legacy/live-preview.cjs +4 -4
  5. package/dist/legacy/live-preview.cjs.map +1 -1
  6. package/dist/legacy/live-preview.js +4 -4
  7. package/dist/legacy/live-preview.js.map +1 -1
  8. package/dist/legacy/utils/defaults.cjs +0 -3
  9. package/dist/legacy/utils/defaults.cjs.map +1 -1
  10. package/dist/legacy/utils/defaults.js +0 -3
  11. package/dist/legacy/utils/defaults.js.map +1 -1
  12. package/dist/legacy/utils/handleUserConfig.cjs +5 -7
  13. package/dist/legacy/utils/handleUserConfig.cjs.map +1 -1
  14. package/dist/legacy/utils/handleUserConfig.js +5 -7
  15. package/dist/legacy/utils/handleUserConfig.js.map +1 -1
  16. package/dist/legacy/utils/types.cjs.map +1 -1
  17. package/dist/legacy/utils/types.d.cts +0 -3
  18. package/dist/legacy/utils/types.d.ts +0 -3
  19. package/dist/modern/contentstack-live-preview-HOC.cjs +1 -1
  20. package/dist/modern/contentstack-live-preview-HOC.js +1 -1
  21. package/dist/modern/live-preview.cjs +4 -4
  22. package/dist/modern/live-preview.cjs.map +1 -1
  23. package/dist/modern/live-preview.js +4 -4
  24. package/dist/modern/live-preview.js.map +1 -1
  25. package/dist/modern/utils/defaults.cjs +0 -3
  26. package/dist/modern/utils/defaults.cjs.map +1 -1
  27. package/dist/modern/utils/defaults.js +0 -3
  28. package/dist/modern/utils/defaults.js.map +1 -1
  29. package/dist/modern/utils/handleUserConfig.cjs +1 -3
  30. package/dist/modern/utils/handleUserConfig.cjs.map +1 -1
  31. package/dist/modern/utils/handleUserConfig.js +1 -3
  32. package/dist/modern/utils/handleUserConfig.js.map +1 -1
  33. package/dist/modern/utils/types.cjs.map +1 -1
  34. package/dist/modern/utils/types.d.cts +0 -3
  35. package/dist/modern/utils/types.d.ts +0 -3
  36. package/package.json +1 -1
package/README.md CHANGED
@@ -15,7 +15,7 @@ npm install @contentstack/live-preview-utils
15
15
  Alternatively, if you want to include the package directly in your website HTML code, use the following command:
16
16
 
17
17
  ```html
18
- <script src="https://unpkg.com/@contentstack/live-preview-utils@2.0.0/dist/index.js"></script>
18
+ <script src="https://unpkg.com/@contentstack/live-preview-utils@2.0.2/dist/legacy/index.js"></script>
19
19
  ```
20
20
 
21
21
  # Initializing the SDK
@@ -47,15 +47,6 @@ Alternatively, if you want to initialize the SDK directly inside the HTML tag, u
47
47
  </script>
48
48
  ```
49
49
 
50
- # [Live Editing](https://www.contentstack.com/docs/developers/set-up-live-preview/set-up-live-preview-for-your-website/#live-editing-for-entries-optional-)
51
-
52
- Live Preview provides edit tags that allow you to edit your content in real-time. Live edit tags are identified as the data-cslp attribute within the HTML tags. The styles for the live edit tags are available in the @contentstack/live-preview-utils/dist/main.css file.
53
-
54
- To use live edit tags within your stack, you need to include them in your main index.js file as follows:
55
-
56
- ```javascript
57
- import "@contentstack/live-preview-utils/dist/main.css";
58
- ```
59
50
 
60
51
  # License
61
52
 
@@ -193,7 +193,7 @@ var ContentstackLivePreview = {
193
193
  }
194
194
  },
195
195
  getSdkVersion() {
196
- return "2.0.0";
196
+ return "2.0.2";
197
197
  }
198
198
  };
199
199
  var contentstack_live_preview_HOC_default = ContentstackLivePreview;
@@ -159,7 +159,7 @@ var ContentstackLivePreview = {
159
159
  }
160
160
  },
161
161
  getSdkVersion() {
162
- return "2.0.0";
162
+ return "2.0.2";
163
163
  }
164
164
  };
165
165
  var contentstack_live_preview_HOC_default = ContentstackLivePreview;
@@ -60,9 +60,6 @@ var LivePreview = class {
60
60
  },
61
61
  stackSdk: {
62
62
  live_preview: {},
63
- headers: {
64
- api_key: ""
65
- },
66
63
  environment: ""
67
64
  },
68
65
  onChange: () => {
@@ -185,6 +182,9 @@ var LivePreview = class {
185
182
  continue;
186
183
  const cslpTag = element.getAttribute("data-cslp");
187
184
  if (trigger && cslpTag) {
185
+ if (!document.getElementById("cslp-tooltip")) {
186
+ this.createCslpTooltip();
187
+ }
188
188
  if (this.hideInterval) {
189
189
  clearInterval(this.hideInterval);
190
190
  this.hideInterval = null;
@@ -423,7 +423,7 @@ var LivePreview = class {
423
423
  config: {
424
424
  shouldReload: this.config.ssr,
425
425
  href: window.location.href,
426
- sdkVersion: "2.0.0"
426
+ sdkVersion: "2.0.2"
427
427
  }
428
428
  }
429
429
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/live-preview.ts"],"sourcesContent":["import {\n createSingularEditButton,\n createMultipleEditButton,\n addLivePreviewQueryTags,\n shouldRenderEditButton,\n getEditButtonPosition,\n} from \"./utils\";\nimport { PublicLogger } from \"./utils/public-logger\";\nimport {\n IConfig,\n IEditButtonPosition,\n IEditEntrySearchParams,\n IInitData,\n ILivePreviewReceivePostMessages,\n} from \"./utils/types\";\nimport { handleInitData } from \"./utils/handleUserConfig\";\nimport { userInitData } from \"./utils/defaults\";\nimport { livePreviewStyles } from \"./styles/live_preview\";\n\nexport default class LivePreview {\n /**\n * @hideconstructor\n */\n\n private config: IConfig = {\n ssr: true,\n enable: true,\n runScriptsOnUpdate: false,\n cleanCslpOnProduction: true,\n hash: \"\",\n\n editButton: {\n enable: true,\n exclude: [],\n position: \"top\",\n includeByQueryParameter: true,\n },\n stackDetails: {\n apiKey: \"\",\n environment: \"\",\n branch: \"main\",\n contentTypeUid: \"\",\n entryUid: \"\",\n },\n\n clientUrlParams: {\n protocol: \"https\",\n host: \"app.contentstack.com\",\n port: 443,\n url: \"https://app.contentstack.com:443\",\n },\n stackSdk: {\n live_preview: {},\n headers: {\n api_key: \"\",\n },\n environment: \"\",\n },\n\n onChange: () => {\n // this is intentional\n },\n };\n\n private tooltip: HTMLButtonElement | null = null; // this tooltip is responsible to redirect user to Contentstack edit page\n private currentElementBesideTooltip: HTMLElement | null = null; // this element helps to move tooltip with the scroll\n private isHoveringOnTooltip = false;\n private hideInterval: ReturnType<typeof setInterval> | null = null;\n\n private tooltipChild: {\n singular: HTMLDivElement | null;\n multiple: HTMLDivElement | null;\n } = {\n singular: null,\n multiple: null,\n };\n private tooltipCurrentChild: \"multiple\" | \"singular\" = \"singular\";\n\n constructor(initData: Partial<IInitData> = userInitData) {\n handleInitData(initData, this.config);\n\n this.addEditStyleOnHover = this.addEditStyleOnHover.bind(this);\n this.removeEditButtonStyle = this.removeEditButtonStyle.bind(this);\n this.generateRedirectUrl = this.generateRedirectUrl.bind(this);\n this.scrollHandler = this.scrollHandler.bind(this);\n this.linkClickHandler = this.linkClickHandler.bind(this);\n this.handleUserChange = this.handleUserChange.bind(this);\n this.setOnChangeCallback = this.setOnChangeCallback.bind(this);\n this.resolveIncomingMessage = this.resolveIncomingMessage.bind(this);\n this.createCslpTooltip = this.createCslpTooltip.bind(this);\n this.requestDataSync = this.requestDataSync.bind(this);\n this.updateTooltipPosition = this.updateTooltipPosition.bind(this);\n this.removeDataCslp = this.removeDataCslp.bind(this);\n this.toggleHoveringOnEditButton =\n this.toggleHoveringOnEditButton.bind(this);\n this.hideTooltip = this.hideTooltip.bind(this);\n\n // @ts-ignore\n if (initData.debug) {\n PublicLogger.debug(\n \"Contentstack Live Preview Debugging mode: config --\",\n this.config\n );\n }\n\n if (this.config.enable) {\n if (\n typeof document !== undefined &&\n document.readyState === \"complete\"\n ) {\n this.requestDataSync();\n } else {\n window.addEventListener(\"load\", this.requestDataSync);\n }\n window.addEventListener(\"message\", this.resolveIncomingMessage);\n window.addEventListener(\"scroll\", this.updateTooltipPosition);\n // render the hover outline only when edit button enable\n if (this.config.editButton.enable) {\n window.addEventListener(\"mouseover\", this.addEditStyleOnHover);\n }\n\n if (this.config.ssr) {\n window.addEventListener(\"load\", (e) => {\n const allATags = document.querySelectorAll(\"a\");\n allATags.forEach((tag) => {\n const docOrigin: string = document.location.origin;\n if (tag.href && tag.href.includes(docOrigin)) {\n const newUrl = addLivePreviewQueryTags(tag.href);\n tag.href = newUrl;\n }\n });\n });\n\n // Setting the query params to all the click events related to current domain\n window.addEventListener(\"click\", (event: any) => {\n const target: any = event.target;\n const targetHref: string | any = target.href;\n const docOrigin: string = document.location.origin;\n if (\n targetHref &&\n targetHref.includes(docOrigin) &&\n !targetHref.includes(\"live_preview\")\n ) {\n const newUrl = addLivePreviewQueryTags(target.href);\n event.target.href = newUrl || target.href;\n }\n });\n }\n } else if (this.config.cleanCslpOnProduction) {\n this.removeDataCslp();\n }\n }\n\n private addEditStyleOnHover(e: MouseEvent) {\n let trigger = true;\n const eventTargets = e.composedPath();\n\n for (const eventTarget of eventTargets) {\n const element = eventTarget as HTMLElement;\n if (element.nodeName === \"BODY\") break;\n if (typeof element?.getAttribute !== \"function\") continue;\n\n const cslpTag = element.getAttribute(\"data-cslp\");\n\n if (trigger && cslpTag) {\n if (this.hideInterval) {\n clearInterval(this.hideInterval);\n this.hideInterval = null;\n }\n if (this.currentElementBesideTooltip) {\n this.currentElementBesideTooltip.classList.remove(\n livePreviewStyles()[\"cslp-edit-mode\"]\n );\n this.currentElementBesideTooltip.removeEventListener(\n \"mouseleave\",\n this.removeEditButtonStyle\n );\n }\n element.classList.add(livePreviewStyles()[\"cslp-edit-mode\"]);\n this.currentElementBesideTooltip = element;\n this.currentElementBesideTooltip.addEventListener(\n \"mouseleave\",\n this.removeEditButtonStyle\n );\n\n if (this.updateTooltipPosition()) {\n this.tooltip?.setAttribute(\"current-data-cslp\", cslpTag);\n this.tooltip?.setAttribute(\n \"current-href\",\n element.getAttribute(\"href\") ?? \"\"\n );\n }\n\n trigger = false;\n } else if (!trigger) {\n element.classList.remove(livePreviewStyles()[\"cslp-edit-mode\"]);\n }\n }\n }\n\n private removeEditButtonStyle(e: MouseEvent) {\n if (!this.currentElementBesideTooltip || !this.tooltip) return false;\n let trigger = true;\n const eventTargets = e.composedPath();\n\n for (const eventTarget of eventTargets) {\n const element = eventTarget as HTMLElement;\n if (element.nodeName === \"BODY\") break;\n if (typeof element?.getAttribute !== \"function\") continue;\n\n const cslpTag = element.getAttribute(\"data-cslp\");\n\n if (trigger && cslpTag) {\n this.hideInterval = setInterval(this.hideTooltip, 500);\n trigger = false;\n } else if (!trigger) {\n element.classList.remove(livePreviewStyles()[\"cslp-edit-mode\"]);\n }\n }\n }\n\n private hideTooltip() {\n if (\n !this.currentElementBesideTooltip ||\n !this.tooltip ||\n this.isHoveringOnTooltip\n )\n return false;\n this.currentElementBesideTooltip.classList.remove(\n livePreviewStyles()[\"cslp-edit-mode\"]\n );\n this.currentElementBesideTooltip.removeEventListener(\n \"mouseleave\",\n this.removeEditButtonStyle\n );\n this.currentElementBesideTooltip = null;\n this.tooltip.style.top = \"-100%\";\n }\n\n private generateRedirectUrl(\n content_type_uid: string,\n locale = \"en-us\",\n entry_uid: string,\n preview_field: string\n ): string {\n if (!this.config.stackDetails.apiKey) {\n throw `To use edit tags, you must provide the stack API key. Specify the API key while initializing the Live Preview SDK.\n\n ContentstackLivePreview.init({\n ...,\n stackDetails: {\n apiKey: 'your-api-key'\n },\n ...\n })`;\n }\n\n if (!this.config.stackDetails.environment) {\n throw `To use edit tags, you must provide the preview environment. Specify the preview environment while initializing the Live Preview SDK.\n\n ContentstackLivePreview.init({\n ...,\n stackDetails: {\n environment: 'Your-environment'\n },\n ...\n })`;\n }\n\n const protocol = String(this.config.clientUrlParams.protocol);\n const host = String(this.config.clientUrlParams.host);\n const port = String(this.config.clientUrlParams.port);\n const environment = String(this.config.stackDetails.environment);\n const branch = String(this.config.stackDetails.branch || \"main\");\n\n const urlHash = `!/stack/${\n this.config.stackDetails.apiKey\n }/content-type/${content_type_uid}/${\n locale ?? \"en-us\"\n }/entry/${entry_uid}/edit`;\n\n const url = new URL(`${protocol}://${host}`);\n url.port = port;\n url.hash = urlHash;\n url.searchParams.append(\"branch\", branch);\n url.searchParams.append(\"preview-field\", preview_field);\n url.searchParams.append(\"preview-locale\", locale ?? \"en-us\");\n url.searchParams.append(\"preview-environment\", environment);\n\n return `${url.origin}/${url.hash}${url.search}`;\n }\n\n private scrollHandler() {\n if (!this.tooltip) return;\n\n const cslpTag = this.tooltip.getAttribute(\"current-data-cslp\");\n\n if (cslpTag) {\n const [content_type_uid, entry_uid, locale, ...field] =\n cslpTag.split(\".\");\n\n // check if opened inside an iframe\n if (window.location !== window.parent.location) {\n window.parent.postMessage(\n {\n from: \"live-preview\",\n type: \"scroll\",\n data: {\n field: field.join(\".\"),\n content_type_uid,\n entry_uid,\n locale,\n },\n },\n \"*\"\n );\n } else {\n try {\n const redirectUrl = this.generateRedirectUrl(\n content_type_uid,\n locale,\n entry_uid,\n field.join(\".\")\n );\n\n window.open(redirectUrl, \"_blank\");\n } catch (error) {\n PublicLogger.error(error);\n }\n }\n }\n }\n\n private linkClickHandler() {\n if (!this.tooltip) return;\n const hrefAttribute = this.tooltip.getAttribute(\"current-href\");\n\n if (hrefAttribute) {\n window.location.assign(hrefAttribute);\n }\n }\n\n private handleUserChange(editEntrySearchParams: IEditEntrySearchParams) {\n // here we provide contentTypeUid and EntryUid to the StackDelivery SDK.\n this.config.stackSdk.live_preview = {\n ...this.config.stackSdk.live_preview,\n ...editEntrySearchParams,\n live_preview: editEntrySearchParams.hash,\n };\n this.config.onChange();\n }\n\n setOnChangeCallback(onChangeCallback: () => void): void {\n this.config.onChange = onChangeCallback;\n }\n\n /**\n * It is the live preview hash.\n * This hash could be used when data is fetched manually.\n */\n get hash(): string {\n return this.config.hash;\n }\n\n /**\n * Sets the live preview hash from the query param which is\n * accessible via `hash` property.\n * @param params query param in an object form\n */\n setConfigFromParams(\n params: ConstructorParameters<typeof URLSearchParams>[0] = {}\n ): void {\n if (typeof params !== \"object\")\n throw new TypeError(\n \"Live preview SDK: query param must be an object\"\n );\n\n const urlParams = new URLSearchParams(params);\n const live_preview = urlParams.get(\"live_preview\");\n\n if (live_preview) {\n this.config.hash = live_preview;\n }\n }\n\n private resolveIncomingMessage(\n e: MessageEvent<ILivePreviewReceivePostMessages>\n ) {\n if (typeof e.data !== \"object\") return;\n\n if (e.data.from !== \"live-preview\") return;\n\n switch (e.data.type) {\n case \"client-data-send\": {\n const { contentTypeUid, entryUid } = this.config.stackDetails;\n const { hash } = e.data.data;\n\n this.setConfigFromParams({ live_preview: hash });\n\n if (!this.config.ssr) {\n this.handleUserChange({\n content_type_uid: contentTypeUid,\n entry_uid: entryUid,\n hash: hash,\n });\n }\n break;\n }\n case \"init-ack\": {\n const { contentTypeUid, entryUid } = e.data.data;\n\n this.config.stackDetails.contentTypeUid = contentTypeUid;\n this.config.stackDetails.entryUid = entryUid;\n break;\n }\n case \"history\": {\n switch (e.data.data.type) {\n case \"forward\": {\n window.history.forward();\n break;\n }\n case \"backward\": {\n window.history.back();\n break;\n }\n case \"reload\": {\n window.history.go();\n }\n }\n break;\n }\n default: {\n // ensure that the switch statement is exhaustive\n const exhaustiveCheck: never = e.data;\n return exhaustiveCheck; // TODO: add debug message while we are in development mode.\n }\n }\n }\n\n private createCslpTooltip = () => {\n if (\n !document.getElementById(\"cslp-tooltip\") &&\n this.config.editButton.enable\n ) {\n const tooltip = document.createElement(\"button\");\n const tooltipInnerContainer = document.createElement(\"div\");\n tooltipInnerContainer.classList.add(\n livePreviewStyles()[\"cslp-tooltip-inner-container\"]\n );\n tooltip.classList.add(livePreviewStyles()[\"cslp-tooltip\"]);\n tooltip.classList.add(livePreviewStyles()[\"cslp-tooltip\"]);\n tooltip.setAttribute(\"data-test-id\", \"cs-cslp-tooltip\");\n tooltip.id = \"cslp-tooltip\";\n tooltipInnerContainer.id = \"cslp-tooltip-inner-container\";\n tooltip.addEventListener(\"mouseover\", () => {\n this.toggleHoveringOnEditButton(true);\n });\n tooltip.addEventListener(\"mouseleave\", (e: MouseEvent) => {\n this.toggleHoveringOnEditButton(false);\n this.removeEditButtonStyle(e);\n });\n window.document.body.insertAdjacentElement(\"beforeend\", tooltip);\n this.tooltipChild.singular = createSingularEditButton(\n this.scrollHandler\n );\n this.tooltipChild.multiple = createMultipleEditButton(\n this.scrollHandler,\n this.linkClickHandler\n );\n\n tooltipInnerContainer.innerHTML = \"\";\n tooltipInnerContainer.appendChild(this.tooltipChild.singular);\n tooltip.appendChild(tooltipInnerContainer);\n this.tooltip = tooltip;\n }\n this.updateTooltipPosition();\n };\n\n private toggleHoveringOnEditButton = (isHoveringOnTooltip: boolean) => {\n this.isHoveringOnTooltip = isHoveringOnTooltip;\n };\n\n // Request parent for data sync when document loads\n private requestDataSync() {\n // add edit tooltip\n this.createCslpTooltip();\n\n window.parent.postMessage(\n {\n from: \"live-preview\",\n type: \"init\",\n data: {\n config: {\n shouldReload: this.config.ssr,\n href: window.location.href,\n sdkVersion: process.env.PACKAGE_VERSION,\n },\n },\n },\n \"*\"\n );\n\n // set timeout for client side (use to show warning: You are not editing this page)\n if (!this.config.ssr) {\n setInterval(() => {\n window.parent.postMessage(\n {\n from: \"live-preview\",\n type: \"check-entry-page\",\n data: {\n href: window.location.href,\n },\n },\n \"*\"\n );\n }, 1500);\n }\n }\n\n private updateTooltipPosition() {\n if (!this.currentElementBesideTooltip || !this.tooltip) return false;\n\n const currentRectOfElement =\n this.currentElementBesideTooltip.getBoundingClientRect();\n const currentRectOfParentOfElement =\n this.tooltip.parentElement?.getBoundingClientRect();\n\n if (currentRectOfElement && currentRectOfParentOfElement) {\n let {\n upperBoundOfTooltip,\n // eslint-disable-next-line prefer-const\n leftBoundOfTooltip,\n }: IEditButtonPosition = getEditButtonPosition(\n this.currentElementBesideTooltip,\n this.config.editButton.position\n );\n\n // if scrolled and element is still visible, make sure tooltip is also visible\n if (upperBoundOfTooltip < 0) {\n if (currentRectOfElement.top < 0)\n upperBoundOfTooltip = currentRectOfElement.top;\n else upperBoundOfTooltip = 0;\n }\n\n this.tooltip.style.top = upperBoundOfTooltip + \"px\";\n this.tooltip.style.zIndex =\n this.currentElementBesideTooltip.style.zIndex || \"200\";\n this.tooltip.style.left = leftBoundOfTooltip + \"px\";\n\n if (this.tooltipChild.singular && this.tooltipChild.multiple) {\n if (this.currentElementBesideTooltip.hasAttribute(\"href\")) {\n if (this.tooltipCurrentChild !== \"multiple\") {\n const tooltipInnerContainer =\n this.tooltip.querySelector(\n `div.${\n livePreviewStyles()[\n \"cslp-tooltip-inner-container\"\n ]\n }`\n );\n if (tooltipInnerContainer) {\n tooltipInnerContainer.innerHTML = \"\";\n tooltipInnerContainer.appendChild(\n this.tooltipChild.multiple\n );\n this.tooltipCurrentChild = \"multiple\";\n }\n }\n } else if (this.tooltipCurrentChild !== \"singular\") {\n const tooltipInnerContainer = this.tooltip.querySelector(\n `div.${\n livePreviewStyles()[\"cslp-tooltip-inner-container\"]\n }`\n );\n if (tooltipInnerContainer) {\n tooltipInnerContainer.innerHTML = \"\";\n tooltipInnerContainer.appendChild(\n this.tooltipChild.singular\n );\n this.tooltipCurrentChild = \"singular\";\n }\n }\n }\n return true;\n }\n\n return false;\n }\n\n // remove attributes when livePreview is false\n private removeDataCslp() {\n const nodes = document.querySelectorAll(\"[data-cslp]\");\n\n nodes.forEach((node) => {\n node.removeAttribute(\"data-cslp\");\n node.removeAttribute(\"data-cslp-button-position\");\n });\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/live-preview.ts"],"sourcesContent":["import {\n createSingularEditButton,\n createMultipleEditButton,\n addLivePreviewQueryTags,\n shouldRenderEditButton,\n getEditButtonPosition,\n} from \"./utils\";\nimport { PublicLogger } from \"./utils/public-logger\";\nimport {\n IConfig,\n IEditButtonPosition,\n IEditEntrySearchParams,\n IInitData,\n ILivePreviewReceivePostMessages,\n} from \"./utils/types\";\nimport { handleInitData } from \"./utils/handleUserConfig\";\nimport { userInitData } from \"./utils/defaults\";\nimport { livePreviewStyles } from \"./styles/live_preview\";\n\nexport default class LivePreview {\n /**\n * @hideconstructor\n */\n\n private config: IConfig = {\n ssr: true,\n enable: true,\n runScriptsOnUpdate: false,\n cleanCslpOnProduction: true,\n hash: \"\",\n\n editButton: {\n enable: true,\n exclude: [],\n position: \"top\",\n includeByQueryParameter: true,\n },\n stackDetails: {\n apiKey: \"\",\n environment: \"\",\n branch: \"main\",\n contentTypeUid: \"\",\n entryUid: \"\",\n },\n\n clientUrlParams: {\n protocol: \"https\",\n host: \"app.contentstack.com\",\n port: 443,\n url: \"https://app.contentstack.com:443\",\n },\n stackSdk: {\n live_preview: {},\n environment: \"\",\n },\n\n onChange: () => {\n // this is intentional\n },\n };\n\n private tooltip: HTMLButtonElement | null = null; // this tooltip is responsible to redirect user to Contentstack edit page\n private currentElementBesideTooltip: HTMLElement | null = null; // this element helps to move tooltip with the scroll\n private isHoveringOnTooltip = false;\n private hideInterval: ReturnType<typeof setInterval> | null = null;\n\n private tooltipChild: {\n singular: HTMLDivElement | null;\n multiple: HTMLDivElement | null;\n } = {\n singular: null,\n multiple: null,\n };\n private tooltipCurrentChild: \"multiple\" | \"singular\" = \"singular\";\n\n constructor(initData: Partial<IInitData> = userInitData) {\n handleInitData(initData, this.config);\n\n this.addEditStyleOnHover = this.addEditStyleOnHover.bind(this);\n this.removeEditButtonStyle = this.removeEditButtonStyle.bind(this);\n this.generateRedirectUrl = this.generateRedirectUrl.bind(this);\n this.scrollHandler = this.scrollHandler.bind(this);\n this.linkClickHandler = this.linkClickHandler.bind(this);\n this.handleUserChange = this.handleUserChange.bind(this);\n this.setOnChangeCallback = this.setOnChangeCallback.bind(this);\n this.resolveIncomingMessage = this.resolveIncomingMessage.bind(this);\n this.createCslpTooltip = this.createCslpTooltip.bind(this);\n this.requestDataSync = this.requestDataSync.bind(this);\n this.updateTooltipPosition = this.updateTooltipPosition.bind(this);\n this.removeDataCslp = this.removeDataCslp.bind(this);\n this.toggleHoveringOnEditButton =\n this.toggleHoveringOnEditButton.bind(this);\n this.hideTooltip = this.hideTooltip.bind(this);\n\n // @ts-ignore\n if (initData.debug) {\n PublicLogger.debug(\n \"Contentstack Live Preview Debugging mode: config --\",\n this.config\n );\n }\n\n if (this.config.enable) {\n if (\n typeof document !== undefined &&\n document.readyState === \"complete\"\n ) {\n this.requestDataSync();\n } else {\n window.addEventListener(\"load\", this.requestDataSync);\n }\n window.addEventListener(\"message\", this.resolveIncomingMessage);\n window.addEventListener(\"scroll\", this.updateTooltipPosition);\n // render the hover outline only when edit button enable\n if (this.config.editButton.enable) {\n window.addEventListener(\"mouseover\", this.addEditStyleOnHover);\n }\n\n if (this.config.ssr) {\n window.addEventListener(\"load\", (e) => {\n const allATags = document.querySelectorAll(\"a\");\n allATags.forEach((tag) => {\n const docOrigin: string = document.location.origin;\n if (tag.href && tag.href.includes(docOrigin)) {\n const newUrl = addLivePreviewQueryTags(tag.href);\n tag.href = newUrl;\n }\n });\n });\n\n // Setting the query params to all the click events related to current domain\n window.addEventListener(\"click\", (event: any) => {\n const target: any = event.target;\n const targetHref: string | any = target.href;\n const docOrigin: string = document.location.origin;\n if (\n targetHref &&\n targetHref.includes(docOrigin) &&\n !targetHref.includes(\"live_preview\")\n ) {\n const newUrl = addLivePreviewQueryTags(target.href);\n event.target.href = newUrl || target.href;\n }\n });\n }\n } else if (this.config.cleanCslpOnProduction) {\n this.removeDataCslp();\n }\n }\n\n private addEditStyleOnHover(e: MouseEvent) {\n let trigger = true;\n const eventTargets = e.composedPath();\n\n for (const eventTarget of eventTargets) {\n const element = eventTarget as HTMLElement;\n if (element.nodeName === \"BODY\") break;\n if (typeof element?.getAttribute !== \"function\") continue;\n\n const cslpTag = element.getAttribute(\"data-cslp\");\n\n if (trigger && cslpTag) {\n // in case where the Edit button is not available in the body element\n if (!document.getElementById(\"cslp-tooltip\")) {\n this.createCslpTooltip();\n }\n if (this.hideInterval) {\n clearInterval(this.hideInterval);\n this.hideInterval = null;\n }\n if (this.currentElementBesideTooltip) {\n this.currentElementBesideTooltip.classList.remove(\n livePreviewStyles()[\"cslp-edit-mode\"]\n );\n this.currentElementBesideTooltip.removeEventListener(\n \"mouseleave\",\n this.removeEditButtonStyle\n );\n }\n element.classList.add(livePreviewStyles()[\"cslp-edit-mode\"]);\n this.currentElementBesideTooltip = element;\n this.currentElementBesideTooltip.addEventListener(\n \"mouseleave\",\n this.removeEditButtonStyle\n );\n\n if (this.updateTooltipPosition()) {\n this.tooltip?.setAttribute(\"current-data-cslp\", cslpTag);\n this.tooltip?.setAttribute(\n \"current-href\",\n element.getAttribute(\"href\") ?? \"\"\n );\n }\n\n trigger = false;\n } else if (!trigger) {\n element.classList.remove(livePreviewStyles()[\"cslp-edit-mode\"]);\n }\n }\n }\n\n private removeEditButtonStyle(e: MouseEvent) {\n if (!this.currentElementBesideTooltip || !this.tooltip) return false;\n let trigger = true;\n const eventTargets = e.composedPath();\n\n for (const eventTarget of eventTargets) {\n const element = eventTarget as HTMLElement;\n if (element.nodeName === \"BODY\") break;\n if (typeof element?.getAttribute !== \"function\") continue;\n\n const cslpTag = element.getAttribute(\"data-cslp\");\n\n if (trigger && cslpTag) {\n this.hideInterval = setInterval(this.hideTooltip, 500);\n trigger = false;\n } else if (!trigger) {\n element.classList.remove(livePreviewStyles()[\"cslp-edit-mode\"]);\n }\n }\n }\n\n private hideTooltip() {\n if (\n !this.currentElementBesideTooltip ||\n !this.tooltip ||\n this.isHoveringOnTooltip\n )\n return false;\n this.currentElementBesideTooltip.classList.remove(\n livePreviewStyles()[\"cslp-edit-mode\"]\n );\n this.currentElementBesideTooltip.removeEventListener(\n \"mouseleave\",\n this.removeEditButtonStyle\n );\n this.currentElementBesideTooltip = null;\n this.tooltip.style.top = \"-100%\";\n }\n\n private generateRedirectUrl(\n content_type_uid: string,\n locale = \"en-us\",\n entry_uid: string,\n preview_field: string\n ): string {\n if (!this.config.stackDetails.apiKey) {\n throw `To use edit tags, you must provide the stack API key. Specify the API key while initializing the Live Preview SDK.\n\n ContentstackLivePreview.init({\n ...,\n stackDetails: {\n apiKey: 'your-api-key'\n },\n ...\n })`;\n }\n\n if (!this.config.stackDetails.environment) {\n throw `To use edit tags, you must provide the preview environment. Specify the preview environment while initializing the Live Preview SDK.\n\n ContentstackLivePreview.init({\n ...,\n stackDetails: {\n environment: 'Your-environment'\n },\n ...\n })`;\n }\n\n const protocol = String(this.config.clientUrlParams.protocol);\n const host = String(this.config.clientUrlParams.host);\n const port = String(this.config.clientUrlParams.port);\n const environment = String(this.config.stackDetails.environment);\n const branch = String(this.config.stackDetails.branch || \"main\");\n\n const urlHash = `!/stack/${\n this.config.stackDetails.apiKey\n }/content-type/${content_type_uid}/${\n locale ?? \"en-us\"\n }/entry/${entry_uid}/edit`;\n\n const url = new URL(`${protocol}://${host}`);\n url.port = port;\n url.hash = urlHash;\n url.searchParams.append(\"branch\", branch);\n url.searchParams.append(\"preview-field\", preview_field);\n url.searchParams.append(\"preview-locale\", locale ?? \"en-us\");\n url.searchParams.append(\"preview-environment\", environment);\n\n return `${url.origin}/${url.hash}${url.search}`;\n }\n\n private scrollHandler() {\n if (!this.tooltip) return;\n\n const cslpTag = this.tooltip.getAttribute(\"current-data-cslp\");\n\n if (cslpTag) {\n const [content_type_uid, entry_uid, locale, ...field] =\n cslpTag.split(\".\");\n\n // check if opened inside an iframe\n if (window.location !== window.parent.location) {\n window.parent.postMessage(\n {\n from: \"live-preview\",\n type: \"scroll\",\n data: {\n field: field.join(\".\"),\n content_type_uid,\n entry_uid,\n locale,\n },\n },\n \"*\"\n );\n } else {\n try {\n const redirectUrl = this.generateRedirectUrl(\n content_type_uid,\n locale,\n entry_uid,\n field.join(\".\")\n );\n\n window.open(redirectUrl, \"_blank\");\n } catch (error) {\n PublicLogger.error(error);\n }\n }\n }\n }\n\n private linkClickHandler() {\n if (!this.tooltip) return;\n const hrefAttribute = this.tooltip.getAttribute(\"current-href\");\n\n if (hrefAttribute) {\n window.location.assign(hrefAttribute);\n }\n }\n\n private handleUserChange(editEntrySearchParams: IEditEntrySearchParams) {\n // here we provide contentTypeUid and EntryUid to the StackDelivery SDK.\n this.config.stackSdk.live_preview = {\n ...this.config.stackSdk.live_preview,\n ...editEntrySearchParams,\n live_preview: editEntrySearchParams.hash,\n };\n this.config.onChange();\n }\n\n setOnChangeCallback(onChangeCallback: () => void): void {\n this.config.onChange = onChangeCallback;\n }\n\n /**\n * It is the live preview hash.\n * This hash could be used when data is fetched manually.\n */\n get hash(): string {\n return this.config.hash;\n }\n\n /**\n * Sets the live preview hash from the query param which is\n * accessible via `hash` property.\n * @param params query param in an object form\n */\n setConfigFromParams(\n params: ConstructorParameters<typeof URLSearchParams>[0] = {}\n ): void {\n if (typeof params !== \"object\")\n throw new TypeError(\n \"Live preview SDK: query param must be an object\"\n );\n\n const urlParams = new URLSearchParams(params);\n const live_preview = urlParams.get(\"live_preview\");\n\n if (live_preview) {\n this.config.hash = live_preview;\n }\n }\n\n private resolveIncomingMessage(\n e: MessageEvent<ILivePreviewReceivePostMessages>\n ) {\n if (typeof e.data !== \"object\") return;\n\n if (e.data.from !== \"live-preview\") return;\n\n switch (e.data.type) {\n case \"client-data-send\": {\n const { contentTypeUid, entryUid } = this.config.stackDetails;\n const { hash } = e.data.data;\n\n this.setConfigFromParams({ live_preview: hash });\n\n if (!this.config.ssr) {\n this.handleUserChange({\n content_type_uid: contentTypeUid,\n entry_uid: entryUid,\n hash: hash,\n });\n }\n break;\n }\n case \"init-ack\": {\n const { contentTypeUid, entryUid } = e.data.data;\n\n this.config.stackDetails.contentTypeUid = contentTypeUid;\n this.config.stackDetails.entryUid = entryUid;\n break;\n }\n case \"history\": {\n switch (e.data.data.type) {\n case \"forward\": {\n window.history.forward();\n break;\n }\n case \"backward\": {\n window.history.back();\n break;\n }\n case \"reload\": {\n window.history.go();\n }\n }\n break;\n }\n default: {\n // ensure that the switch statement is exhaustive\n const exhaustiveCheck: never = e.data;\n return exhaustiveCheck; // TODO: add debug message while we are in development mode.\n }\n }\n }\n\n private createCslpTooltip = () => {\n if (\n !document.getElementById(\"cslp-tooltip\") &&\n this.config.editButton.enable\n ) {\n const tooltip = document.createElement(\"button\");\n const tooltipInnerContainer = document.createElement(\"div\");\n tooltipInnerContainer.classList.add(\n livePreviewStyles()[\"cslp-tooltip-inner-container\"]\n );\n tooltip.classList.add(livePreviewStyles()[\"cslp-tooltip\"]);\n tooltip.classList.add(livePreviewStyles()[\"cslp-tooltip\"]);\n tooltip.setAttribute(\"data-test-id\", \"cs-cslp-tooltip\");\n tooltip.id = \"cslp-tooltip\";\n tooltipInnerContainer.id = \"cslp-tooltip-inner-container\";\n tooltip.addEventListener(\"mouseover\", () => {\n this.toggleHoveringOnEditButton(true);\n });\n tooltip.addEventListener(\"mouseleave\", (e: MouseEvent) => {\n this.toggleHoveringOnEditButton(false);\n this.removeEditButtonStyle(e);\n });\n window.document.body.insertAdjacentElement(\"beforeend\", tooltip);\n this.tooltipChild.singular = createSingularEditButton(\n this.scrollHandler\n );\n this.tooltipChild.multiple = createMultipleEditButton(\n this.scrollHandler,\n this.linkClickHandler\n );\n\n tooltipInnerContainer.innerHTML = \"\";\n tooltipInnerContainer.appendChild(this.tooltipChild.singular);\n tooltip.appendChild(tooltipInnerContainer);\n this.tooltip = tooltip;\n }\n this.updateTooltipPosition();\n };\n\n private toggleHoveringOnEditButton = (isHoveringOnTooltip: boolean) => {\n this.isHoveringOnTooltip = isHoveringOnTooltip;\n };\n\n // Request parent for data sync when document loads\n private requestDataSync() {\n // add edit tooltip\n this.createCslpTooltip();\n\n window.parent.postMessage(\n {\n from: \"live-preview\",\n type: \"init\",\n data: {\n config: {\n shouldReload: this.config.ssr,\n href: window.location.href,\n sdkVersion: process.env.PACKAGE_VERSION,\n },\n },\n },\n \"*\"\n );\n\n // set timeout for client side (use to show warning: You are not editing this page)\n if (!this.config.ssr) {\n setInterval(() => {\n window.parent.postMessage(\n {\n from: \"live-preview\",\n type: \"check-entry-page\",\n data: {\n href: window.location.href,\n },\n },\n \"*\"\n );\n }, 1500);\n }\n }\n\n private updateTooltipPosition() {\n if (!this.currentElementBesideTooltip || !this.tooltip) return false;\n\n const currentRectOfElement =\n this.currentElementBesideTooltip.getBoundingClientRect();\n const currentRectOfParentOfElement =\n this.tooltip.parentElement?.getBoundingClientRect();\n\n if (currentRectOfElement && currentRectOfParentOfElement) {\n let {\n upperBoundOfTooltip,\n // eslint-disable-next-line prefer-const\n leftBoundOfTooltip,\n }: IEditButtonPosition = getEditButtonPosition(\n this.currentElementBesideTooltip,\n this.config.editButton.position\n );\n\n // if scrolled and element is still visible, make sure tooltip is also visible\n if (upperBoundOfTooltip < 0) {\n if (currentRectOfElement.top < 0)\n upperBoundOfTooltip = currentRectOfElement.top;\n else upperBoundOfTooltip = 0;\n }\n\n this.tooltip.style.top = upperBoundOfTooltip + \"px\";\n this.tooltip.style.zIndex =\n this.currentElementBesideTooltip.style.zIndex || \"200\";\n this.tooltip.style.left = leftBoundOfTooltip + \"px\";\n\n if (this.tooltipChild.singular && this.tooltipChild.multiple) {\n if (this.currentElementBesideTooltip.hasAttribute(\"href\")) {\n if (this.tooltipCurrentChild !== \"multiple\") {\n const tooltipInnerContainer =\n this.tooltip.querySelector(\n `div.${\n livePreviewStyles()[\n \"cslp-tooltip-inner-container\"\n ]\n }`\n );\n if (tooltipInnerContainer) {\n tooltipInnerContainer.innerHTML = \"\";\n tooltipInnerContainer.appendChild(\n this.tooltipChild.multiple\n );\n this.tooltipCurrentChild = \"multiple\";\n }\n }\n } else if (this.tooltipCurrentChild !== \"singular\") {\n const tooltipInnerContainer = this.tooltip.querySelector(\n `div.${\n livePreviewStyles()[\"cslp-tooltip-inner-container\"]\n }`\n );\n if (tooltipInnerContainer) {\n tooltipInnerContainer.innerHTML = \"\";\n tooltipInnerContainer.appendChild(\n this.tooltipChild.singular\n );\n this.tooltipCurrentChild = \"singular\";\n }\n }\n }\n return true;\n }\n\n return false;\n }\n\n // remove attributes when livePreview is false\n private removeDataCslp() {\n const nodes = document.querySelectorAll(\"[data-cslp]\");\n\n nodes.forEach((node) => {\n node.removeAttribute(\"data-cslp\");\n node.removeAttribute(\"data-cslp-button-position\");\n });\n }\n}\n"],"mappings":"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","names":[]}
@@ -41,9 +41,6 @@ var LivePreview = class {
41
41
  },
42
42
  stackSdk: {
43
43
  live_preview: {},
44
- headers: {
45
- api_key: ""
46
- },
47
44
  environment: ""
48
45
  },
49
46
  onChange: () => {
@@ -166,6 +163,9 @@ var LivePreview = class {
166
163
  continue;
167
164
  const cslpTag = element.getAttribute("data-cslp");
168
165
  if (trigger && cslpTag) {
166
+ if (!document.getElementById("cslp-tooltip")) {
167
+ this.createCslpTooltip();
168
+ }
169
169
  if (this.hideInterval) {
170
170
  clearInterval(this.hideInterval);
171
171
  this.hideInterval = null;
@@ -404,7 +404,7 @@ var LivePreview = class {
404
404
  config: {
405
405
  shouldReload: this.config.ssr,
406
406
  href: window.location.href,
407
- sdkVersion: "2.0.0"
407
+ sdkVersion: "2.0.2"
408
408
  }
409
409
  }
410
410
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/live-preview.ts"],"sourcesContent":["import {\n createSingularEditButton,\n createMultipleEditButton,\n addLivePreviewQueryTags,\n shouldRenderEditButton,\n getEditButtonPosition,\n} from \"./utils\";\nimport { PublicLogger } from \"./utils/public-logger\";\nimport {\n IConfig,\n IEditButtonPosition,\n IEditEntrySearchParams,\n IInitData,\n ILivePreviewReceivePostMessages,\n} from \"./utils/types\";\nimport { handleInitData } from \"./utils/handleUserConfig\";\nimport { userInitData } from \"./utils/defaults\";\nimport { livePreviewStyles } from \"./styles/live_preview\";\n\nexport default class LivePreview {\n /**\n * @hideconstructor\n */\n\n private config: IConfig = {\n ssr: true,\n enable: true,\n runScriptsOnUpdate: false,\n cleanCslpOnProduction: true,\n hash: \"\",\n\n editButton: {\n enable: true,\n exclude: [],\n position: \"top\",\n includeByQueryParameter: true,\n },\n stackDetails: {\n apiKey: \"\",\n environment: \"\",\n branch: \"main\",\n contentTypeUid: \"\",\n entryUid: \"\",\n },\n\n clientUrlParams: {\n protocol: \"https\",\n host: \"app.contentstack.com\",\n port: 443,\n url: \"https://app.contentstack.com:443\",\n },\n stackSdk: {\n live_preview: {},\n headers: {\n api_key: \"\",\n },\n environment: \"\",\n },\n\n onChange: () => {\n // this is intentional\n },\n };\n\n private tooltip: HTMLButtonElement | null = null; // this tooltip is responsible to redirect user to Contentstack edit page\n private currentElementBesideTooltip: HTMLElement | null = null; // this element helps to move tooltip with the scroll\n private isHoveringOnTooltip = false;\n private hideInterval: ReturnType<typeof setInterval> | null = null;\n\n private tooltipChild: {\n singular: HTMLDivElement | null;\n multiple: HTMLDivElement | null;\n } = {\n singular: null,\n multiple: null,\n };\n private tooltipCurrentChild: \"multiple\" | \"singular\" = \"singular\";\n\n constructor(initData: Partial<IInitData> = userInitData) {\n handleInitData(initData, this.config);\n\n this.addEditStyleOnHover = this.addEditStyleOnHover.bind(this);\n this.removeEditButtonStyle = this.removeEditButtonStyle.bind(this);\n this.generateRedirectUrl = this.generateRedirectUrl.bind(this);\n this.scrollHandler = this.scrollHandler.bind(this);\n this.linkClickHandler = this.linkClickHandler.bind(this);\n this.handleUserChange = this.handleUserChange.bind(this);\n this.setOnChangeCallback = this.setOnChangeCallback.bind(this);\n this.resolveIncomingMessage = this.resolveIncomingMessage.bind(this);\n this.createCslpTooltip = this.createCslpTooltip.bind(this);\n this.requestDataSync = this.requestDataSync.bind(this);\n this.updateTooltipPosition = this.updateTooltipPosition.bind(this);\n this.removeDataCslp = this.removeDataCslp.bind(this);\n this.toggleHoveringOnEditButton =\n this.toggleHoveringOnEditButton.bind(this);\n this.hideTooltip = this.hideTooltip.bind(this);\n\n // @ts-ignore\n if (initData.debug) {\n PublicLogger.debug(\n \"Contentstack Live Preview Debugging mode: config --\",\n this.config\n );\n }\n\n if (this.config.enable) {\n if (\n typeof document !== undefined &&\n document.readyState === \"complete\"\n ) {\n this.requestDataSync();\n } else {\n window.addEventListener(\"load\", this.requestDataSync);\n }\n window.addEventListener(\"message\", this.resolveIncomingMessage);\n window.addEventListener(\"scroll\", this.updateTooltipPosition);\n // render the hover outline only when edit button enable\n if (this.config.editButton.enable) {\n window.addEventListener(\"mouseover\", this.addEditStyleOnHover);\n }\n\n if (this.config.ssr) {\n window.addEventListener(\"load\", (e) => {\n const allATags = document.querySelectorAll(\"a\");\n allATags.forEach((tag) => {\n const docOrigin: string = document.location.origin;\n if (tag.href && tag.href.includes(docOrigin)) {\n const newUrl = addLivePreviewQueryTags(tag.href);\n tag.href = newUrl;\n }\n });\n });\n\n // Setting the query params to all the click events related to current domain\n window.addEventListener(\"click\", (event: any) => {\n const target: any = event.target;\n const targetHref: string | any = target.href;\n const docOrigin: string = document.location.origin;\n if (\n targetHref &&\n targetHref.includes(docOrigin) &&\n !targetHref.includes(\"live_preview\")\n ) {\n const newUrl = addLivePreviewQueryTags(target.href);\n event.target.href = newUrl || target.href;\n }\n });\n }\n } else if (this.config.cleanCslpOnProduction) {\n this.removeDataCslp();\n }\n }\n\n private addEditStyleOnHover(e: MouseEvent) {\n let trigger = true;\n const eventTargets = e.composedPath();\n\n for (const eventTarget of eventTargets) {\n const element = eventTarget as HTMLElement;\n if (element.nodeName === \"BODY\") break;\n if (typeof element?.getAttribute !== \"function\") continue;\n\n const cslpTag = element.getAttribute(\"data-cslp\");\n\n if (trigger && cslpTag) {\n if (this.hideInterval) {\n clearInterval(this.hideInterval);\n this.hideInterval = null;\n }\n if (this.currentElementBesideTooltip) {\n this.currentElementBesideTooltip.classList.remove(\n livePreviewStyles()[\"cslp-edit-mode\"]\n );\n this.currentElementBesideTooltip.removeEventListener(\n \"mouseleave\",\n this.removeEditButtonStyle\n );\n }\n element.classList.add(livePreviewStyles()[\"cslp-edit-mode\"]);\n this.currentElementBesideTooltip = element;\n this.currentElementBesideTooltip.addEventListener(\n \"mouseleave\",\n this.removeEditButtonStyle\n );\n\n if (this.updateTooltipPosition()) {\n this.tooltip?.setAttribute(\"current-data-cslp\", cslpTag);\n this.tooltip?.setAttribute(\n \"current-href\",\n element.getAttribute(\"href\") ?? \"\"\n );\n }\n\n trigger = false;\n } else if (!trigger) {\n element.classList.remove(livePreviewStyles()[\"cslp-edit-mode\"]);\n }\n }\n }\n\n private removeEditButtonStyle(e: MouseEvent) {\n if (!this.currentElementBesideTooltip || !this.tooltip) return false;\n let trigger = true;\n const eventTargets = e.composedPath();\n\n for (const eventTarget of eventTargets) {\n const element = eventTarget as HTMLElement;\n if (element.nodeName === \"BODY\") break;\n if (typeof element?.getAttribute !== \"function\") continue;\n\n const cslpTag = element.getAttribute(\"data-cslp\");\n\n if (trigger && cslpTag) {\n this.hideInterval = setInterval(this.hideTooltip, 500);\n trigger = false;\n } else if (!trigger) {\n element.classList.remove(livePreviewStyles()[\"cslp-edit-mode\"]);\n }\n }\n }\n\n private hideTooltip() {\n if (\n !this.currentElementBesideTooltip ||\n !this.tooltip ||\n this.isHoveringOnTooltip\n )\n return false;\n this.currentElementBesideTooltip.classList.remove(\n livePreviewStyles()[\"cslp-edit-mode\"]\n );\n this.currentElementBesideTooltip.removeEventListener(\n \"mouseleave\",\n this.removeEditButtonStyle\n );\n this.currentElementBesideTooltip = null;\n this.tooltip.style.top = \"-100%\";\n }\n\n private generateRedirectUrl(\n content_type_uid: string,\n locale = \"en-us\",\n entry_uid: string,\n preview_field: string\n ): string {\n if (!this.config.stackDetails.apiKey) {\n throw `To use edit tags, you must provide the stack API key. Specify the API key while initializing the Live Preview SDK.\n\n ContentstackLivePreview.init({\n ...,\n stackDetails: {\n apiKey: 'your-api-key'\n },\n ...\n })`;\n }\n\n if (!this.config.stackDetails.environment) {\n throw `To use edit tags, you must provide the preview environment. Specify the preview environment while initializing the Live Preview SDK.\n\n ContentstackLivePreview.init({\n ...,\n stackDetails: {\n environment: 'Your-environment'\n },\n ...\n })`;\n }\n\n const protocol = String(this.config.clientUrlParams.protocol);\n const host = String(this.config.clientUrlParams.host);\n const port = String(this.config.clientUrlParams.port);\n const environment = String(this.config.stackDetails.environment);\n const branch = String(this.config.stackDetails.branch || \"main\");\n\n const urlHash = `!/stack/${\n this.config.stackDetails.apiKey\n }/content-type/${content_type_uid}/${\n locale ?? \"en-us\"\n }/entry/${entry_uid}/edit`;\n\n const url = new URL(`${protocol}://${host}`);\n url.port = port;\n url.hash = urlHash;\n url.searchParams.append(\"branch\", branch);\n url.searchParams.append(\"preview-field\", preview_field);\n url.searchParams.append(\"preview-locale\", locale ?? \"en-us\");\n url.searchParams.append(\"preview-environment\", environment);\n\n return `${url.origin}/${url.hash}${url.search}`;\n }\n\n private scrollHandler() {\n if (!this.tooltip) return;\n\n const cslpTag = this.tooltip.getAttribute(\"current-data-cslp\");\n\n if (cslpTag) {\n const [content_type_uid, entry_uid, locale, ...field] =\n cslpTag.split(\".\");\n\n // check if opened inside an iframe\n if (window.location !== window.parent.location) {\n window.parent.postMessage(\n {\n from: \"live-preview\",\n type: \"scroll\",\n data: {\n field: field.join(\".\"),\n content_type_uid,\n entry_uid,\n locale,\n },\n },\n \"*\"\n );\n } else {\n try {\n const redirectUrl = this.generateRedirectUrl(\n content_type_uid,\n locale,\n entry_uid,\n field.join(\".\")\n );\n\n window.open(redirectUrl, \"_blank\");\n } catch (error) {\n PublicLogger.error(error);\n }\n }\n }\n }\n\n private linkClickHandler() {\n if (!this.tooltip) return;\n const hrefAttribute = this.tooltip.getAttribute(\"current-href\");\n\n if (hrefAttribute) {\n window.location.assign(hrefAttribute);\n }\n }\n\n private handleUserChange(editEntrySearchParams: IEditEntrySearchParams) {\n // here we provide contentTypeUid and EntryUid to the StackDelivery SDK.\n this.config.stackSdk.live_preview = {\n ...this.config.stackSdk.live_preview,\n ...editEntrySearchParams,\n live_preview: editEntrySearchParams.hash,\n };\n this.config.onChange();\n }\n\n setOnChangeCallback(onChangeCallback: () => void): void {\n this.config.onChange = onChangeCallback;\n }\n\n /**\n * It is the live preview hash.\n * This hash could be used when data is fetched manually.\n */\n get hash(): string {\n return this.config.hash;\n }\n\n /**\n * Sets the live preview hash from the query param which is\n * accessible via `hash` property.\n * @param params query param in an object form\n */\n setConfigFromParams(\n params: ConstructorParameters<typeof URLSearchParams>[0] = {}\n ): void {\n if (typeof params !== \"object\")\n throw new TypeError(\n \"Live preview SDK: query param must be an object\"\n );\n\n const urlParams = new URLSearchParams(params);\n const live_preview = urlParams.get(\"live_preview\");\n\n if (live_preview) {\n this.config.hash = live_preview;\n }\n }\n\n private resolveIncomingMessage(\n e: MessageEvent<ILivePreviewReceivePostMessages>\n ) {\n if (typeof e.data !== \"object\") return;\n\n if (e.data.from !== \"live-preview\") return;\n\n switch (e.data.type) {\n case \"client-data-send\": {\n const { contentTypeUid, entryUid } = this.config.stackDetails;\n const { hash } = e.data.data;\n\n this.setConfigFromParams({ live_preview: hash });\n\n if (!this.config.ssr) {\n this.handleUserChange({\n content_type_uid: contentTypeUid,\n entry_uid: entryUid,\n hash: hash,\n });\n }\n break;\n }\n case \"init-ack\": {\n const { contentTypeUid, entryUid } = e.data.data;\n\n this.config.stackDetails.contentTypeUid = contentTypeUid;\n this.config.stackDetails.entryUid = entryUid;\n break;\n }\n case \"history\": {\n switch (e.data.data.type) {\n case \"forward\": {\n window.history.forward();\n break;\n }\n case \"backward\": {\n window.history.back();\n break;\n }\n case \"reload\": {\n window.history.go();\n }\n }\n break;\n }\n default: {\n // ensure that the switch statement is exhaustive\n const exhaustiveCheck: never = e.data;\n return exhaustiveCheck; // TODO: add debug message while we are in development mode.\n }\n }\n }\n\n private createCslpTooltip = () => {\n if (\n !document.getElementById(\"cslp-tooltip\") &&\n this.config.editButton.enable\n ) {\n const tooltip = document.createElement(\"button\");\n const tooltipInnerContainer = document.createElement(\"div\");\n tooltipInnerContainer.classList.add(\n livePreviewStyles()[\"cslp-tooltip-inner-container\"]\n );\n tooltip.classList.add(livePreviewStyles()[\"cslp-tooltip\"]);\n tooltip.classList.add(livePreviewStyles()[\"cslp-tooltip\"]);\n tooltip.setAttribute(\"data-test-id\", \"cs-cslp-tooltip\");\n tooltip.id = \"cslp-tooltip\";\n tooltipInnerContainer.id = \"cslp-tooltip-inner-container\";\n tooltip.addEventListener(\"mouseover\", () => {\n this.toggleHoveringOnEditButton(true);\n });\n tooltip.addEventListener(\"mouseleave\", (e: MouseEvent) => {\n this.toggleHoveringOnEditButton(false);\n this.removeEditButtonStyle(e);\n });\n window.document.body.insertAdjacentElement(\"beforeend\", tooltip);\n this.tooltipChild.singular = createSingularEditButton(\n this.scrollHandler\n );\n this.tooltipChild.multiple = createMultipleEditButton(\n this.scrollHandler,\n this.linkClickHandler\n );\n\n tooltipInnerContainer.innerHTML = \"\";\n tooltipInnerContainer.appendChild(this.tooltipChild.singular);\n tooltip.appendChild(tooltipInnerContainer);\n this.tooltip = tooltip;\n }\n this.updateTooltipPosition();\n };\n\n private toggleHoveringOnEditButton = (isHoveringOnTooltip: boolean) => {\n this.isHoveringOnTooltip = isHoveringOnTooltip;\n };\n\n // Request parent for data sync when document loads\n private requestDataSync() {\n // add edit tooltip\n this.createCslpTooltip();\n\n window.parent.postMessage(\n {\n from: \"live-preview\",\n type: \"init\",\n data: {\n config: {\n shouldReload: this.config.ssr,\n href: window.location.href,\n sdkVersion: process.env.PACKAGE_VERSION,\n },\n },\n },\n \"*\"\n );\n\n // set timeout for client side (use to show warning: You are not editing this page)\n if (!this.config.ssr) {\n setInterval(() => {\n window.parent.postMessage(\n {\n from: \"live-preview\",\n type: \"check-entry-page\",\n data: {\n href: window.location.href,\n },\n },\n \"*\"\n );\n }, 1500);\n }\n }\n\n private updateTooltipPosition() {\n if (!this.currentElementBesideTooltip || !this.tooltip) return false;\n\n const currentRectOfElement =\n this.currentElementBesideTooltip.getBoundingClientRect();\n const currentRectOfParentOfElement =\n this.tooltip.parentElement?.getBoundingClientRect();\n\n if (currentRectOfElement && currentRectOfParentOfElement) {\n let {\n upperBoundOfTooltip,\n // eslint-disable-next-line prefer-const\n leftBoundOfTooltip,\n }: IEditButtonPosition = getEditButtonPosition(\n this.currentElementBesideTooltip,\n this.config.editButton.position\n );\n\n // if scrolled and element is still visible, make sure tooltip is also visible\n if (upperBoundOfTooltip < 0) {\n if (currentRectOfElement.top < 0)\n upperBoundOfTooltip = currentRectOfElement.top;\n else upperBoundOfTooltip = 0;\n }\n\n this.tooltip.style.top = upperBoundOfTooltip + \"px\";\n this.tooltip.style.zIndex =\n this.currentElementBesideTooltip.style.zIndex || \"200\";\n this.tooltip.style.left = leftBoundOfTooltip + \"px\";\n\n if (this.tooltipChild.singular && this.tooltipChild.multiple) {\n if (this.currentElementBesideTooltip.hasAttribute(\"href\")) {\n if (this.tooltipCurrentChild !== \"multiple\") {\n const tooltipInnerContainer =\n this.tooltip.querySelector(\n `div.${\n livePreviewStyles()[\n \"cslp-tooltip-inner-container\"\n ]\n }`\n );\n if (tooltipInnerContainer) {\n tooltipInnerContainer.innerHTML = \"\";\n tooltipInnerContainer.appendChild(\n this.tooltipChild.multiple\n );\n this.tooltipCurrentChild = \"multiple\";\n }\n }\n } else if (this.tooltipCurrentChild !== \"singular\") {\n const tooltipInnerContainer = this.tooltip.querySelector(\n `div.${\n livePreviewStyles()[\"cslp-tooltip-inner-container\"]\n }`\n );\n if (tooltipInnerContainer) {\n tooltipInnerContainer.innerHTML = \"\";\n tooltipInnerContainer.appendChild(\n this.tooltipChild.singular\n );\n this.tooltipCurrentChild = \"singular\";\n }\n }\n }\n return true;\n }\n\n return false;\n }\n\n // remove attributes when livePreview is false\n private removeDataCslp() {\n const nodes = document.querySelectorAll(\"[data-cslp]\");\n\n nodes.forEach((node) => {\n node.removeAttribute(\"data-cslp\");\n node.removeAttribute(\"data-cslp-button-position\");\n });\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/live-preview.ts"],"sourcesContent":["import {\n createSingularEditButton,\n createMultipleEditButton,\n addLivePreviewQueryTags,\n shouldRenderEditButton,\n getEditButtonPosition,\n} from \"./utils\";\nimport { PublicLogger } from \"./utils/public-logger\";\nimport {\n IConfig,\n IEditButtonPosition,\n IEditEntrySearchParams,\n IInitData,\n ILivePreviewReceivePostMessages,\n} from \"./utils/types\";\nimport { handleInitData } from \"./utils/handleUserConfig\";\nimport { userInitData } from \"./utils/defaults\";\nimport { livePreviewStyles } from \"./styles/live_preview\";\n\nexport default class LivePreview {\n /**\n * @hideconstructor\n */\n\n private config: IConfig = {\n ssr: true,\n enable: true,\n runScriptsOnUpdate: false,\n cleanCslpOnProduction: true,\n hash: \"\",\n\n editButton: {\n enable: true,\n exclude: [],\n position: \"top\",\n includeByQueryParameter: true,\n },\n stackDetails: {\n apiKey: \"\",\n environment: \"\",\n branch: \"main\",\n contentTypeUid: \"\",\n entryUid: \"\",\n },\n\n clientUrlParams: {\n protocol: \"https\",\n host: \"app.contentstack.com\",\n port: 443,\n url: \"https://app.contentstack.com:443\",\n },\n stackSdk: {\n live_preview: {},\n environment: \"\",\n },\n\n onChange: () => {\n // this is intentional\n },\n };\n\n private tooltip: HTMLButtonElement | null = null; // this tooltip is responsible to redirect user to Contentstack edit page\n private currentElementBesideTooltip: HTMLElement | null = null; // this element helps to move tooltip with the scroll\n private isHoveringOnTooltip = false;\n private hideInterval: ReturnType<typeof setInterval> | null = null;\n\n private tooltipChild: {\n singular: HTMLDivElement | null;\n multiple: HTMLDivElement | null;\n } = {\n singular: null,\n multiple: null,\n };\n private tooltipCurrentChild: \"multiple\" | \"singular\" = \"singular\";\n\n constructor(initData: Partial<IInitData> = userInitData) {\n handleInitData(initData, this.config);\n\n this.addEditStyleOnHover = this.addEditStyleOnHover.bind(this);\n this.removeEditButtonStyle = this.removeEditButtonStyle.bind(this);\n this.generateRedirectUrl = this.generateRedirectUrl.bind(this);\n this.scrollHandler = this.scrollHandler.bind(this);\n this.linkClickHandler = this.linkClickHandler.bind(this);\n this.handleUserChange = this.handleUserChange.bind(this);\n this.setOnChangeCallback = this.setOnChangeCallback.bind(this);\n this.resolveIncomingMessage = this.resolveIncomingMessage.bind(this);\n this.createCslpTooltip = this.createCslpTooltip.bind(this);\n this.requestDataSync = this.requestDataSync.bind(this);\n this.updateTooltipPosition = this.updateTooltipPosition.bind(this);\n this.removeDataCslp = this.removeDataCslp.bind(this);\n this.toggleHoveringOnEditButton =\n this.toggleHoveringOnEditButton.bind(this);\n this.hideTooltip = this.hideTooltip.bind(this);\n\n // @ts-ignore\n if (initData.debug) {\n PublicLogger.debug(\n \"Contentstack Live Preview Debugging mode: config --\",\n this.config\n );\n }\n\n if (this.config.enable) {\n if (\n typeof document !== undefined &&\n document.readyState === \"complete\"\n ) {\n this.requestDataSync();\n } else {\n window.addEventListener(\"load\", this.requestDataSync);\n }\n window.addEventListener(\"message\", this.resolveIncomingMessage);\n window.addEventListener(\"scroll\", this.updateTooltipPosition);\n // render the hover outline only when edit button enable\n if (this.config.editButton.enable) {\n window.addEventListener(\"mouseover\", this.addEditStyleOnHover);\n }\n\n if (this.config.ssr) {\n window.addEventListener(\"load\", (e) => {\n const allATags = document.querySelectorAll(\"a\");\n allATags.forEach((tag) => {\n const docOrigin: string = document.location.origin;\n if (tag.href && tag.href.includes(docOrigin)) {\n const newUrl = addLivePreviewQueryTags(tag.href);\n tag.href = newUrl;\n }\n });\n });\n\n // Setting the query params to all the click events related to current domain\n window.addEventListener(\"click\", (event: any) => {\n const target: any = event.target;\n const targetHref: string | any = target.href;\n const docOrigin: string = document.location.origin;\n if (\n targetHref &&\n targetHref.includes(docOrigin) &&\n !targetHref.includes(\"live_preview\")\n ) {\n const newUrl = addLivePreviewQueryTags(target.href);\n event.target.href = newUrl || target.href;\n }\n });\n }\n } else if (this.config.cleanCslpOnProduction) {\n this.removeDataCslp();\n }\n }\n\n private addEditStyleOnHover(e: MouseEvent) {\n let trigger = true;\n const eventTargets = e.composedPath();\n\n for (const eventTarget of eventTargets) {\n const element = eventTarget as HTMLElement;\n if (element.nodeName === \"BODY\") break;\n if (typeof element?.getAttribute !== \"function\") continue;\n\n const cslpTag = element.getAttribute(\"data-cslp\");\n\n if (trigger && cslpTag) {\n // in case where the Edit button is not available in the body element\n if (!document.getElementById(\"cslp-tooltip\")) {\n this.createCslpTooltip();\n }\n if (this.hideInterval) {\n clearInterval(this.hideInterval);\n this.hideInterval = null;\n }\n if (this.currentElementBesideTooltip) {\n this.currentElementBesideTooltip.classList.remove(\n livePreviewStyles()[\"cslp-edit-mode\"]\n );\n this.currentElementBesideTooltip.removeEventListener(\n \"mouseleave\",\n this.removeEditButtonStyle\n );\n }\n element.classList.add(livePreviewStyles()[\"cslp-edit-mode\"]);\n this.currentElementBesideTooltip = element;\n this.currentElementBesideTooltip.addEventListener(\n \"mouseleave\",\n this.removeEditButtonStyle\n );\n\n if (this.updateTooltipPosition()) {\n this.tooltip?.setAttribute(\"current-data-cslp\", cslpTag);\n this.tooltip?.setAttribute(\n \"current-href\",\n element.getAttribute(\"href\") ?? \"\"\n );\n }\n\n trigger = false;\n } else if (!trigger) {\n element.classList.remove(livePreviewStyles()[\"cslp-edit-mode\"]);\n }\n }\n }\n\n private removeEditButtonStyle(e: MouseEvent) {\n if (!this.currentElementBesideTooltip || !this.tooltip) return false;\n let trigger = true;\n const eventTargets = e.composedPath();\n\n for (const eventTarget of eventTargets) {\n const element = eventTarget as HTMLElement;\n if (element.nodeName === \"BODY\") break;\n if (typeof element?.getAttribute !== \"function\") continue;\n\n const cslpTag = element.getAttribute(\"data-cslp\");\n\n if (trigger && cslpTag) {\n this.hideInterval = setInterval(this.hideTooltip, 500);\n trigger = false;\n } else if (!trigger) {\n element.classList.remove(livePreviewStyles()[\"cslp-edit-mode\"]);\n }\n }\n }\n\n private hideTooltip() {\n if (\n !this.currentElementBesideTooltip ||\n !this.tooltip ||\n this.isHoveringOnTooltip\n )\n return false;\n this.currentElementBesideTooltip.classList.remove(\n livePreviewStyles()[\"cslp-edit-mode\"]\n );\n this.currentElementBesideTooltip.removeEventListener(\n \"mouseleave\",\n this.removeEditButtonStyle\n );\n this.currentElementBesideTooltip = null;\n this.tooltip.style.top = \"-100%\";\n }\n\n private generateRedirectUrl(\n content_type_uid: string,\n locale = \"en-us\",\n entry_uid: string,\n preview_field: string\n ): string {\n if (!this.config.stackDetails.apiKey) {\n throw `To use edit tags, you must provide the stack API key. Specify the API key while initializing the Live Preview SDK.\n\n ContentstackLivePreview.init({\n ...,\n stackDetails: {\n apiKey: 'your-api-key'\n },\n ...\n })`;\n }\n\n if (!this.config.stackDetails.environment) {\n throw `To use edit tags, you must provide the preview environment. Specify the preview environment while initializing the Live Preview SDK.\n\n ContentstackLivePreview.init({\n ...,\n stackDetails: {\n environment: 'Your-environment'\n },\n ...\n })`;\n }\n\n const protocol = String(this.config.clientUrlParams.protocol);\n const host = String(this.config.clientUrlParams.host);\n const port = String(this.config.clientUrlParams.port);\n const environment = String(this.config.stackDetails.environment);\n const branch = String(this.config.stackDetails.branch || \"main\");\n\n const urlHash = `!/stack/${\n this.config.stackDetails.apiKey\n }/content-type/${content_type_uid}/${\n locale ?? \"en-us\"\n }/entry/${entry_uid}/edit`;\n\n const url = new URL(`${protocol}://${host}`);\n url.port = port;\n url.hash = urlHash;\n url.searchParams.append(\"branch\", branch);\n url.searchParams.append(\"preview-field\", preview_field);\n url.searchParams.append(\"preview-locale\", locale ?? \"en-us\");\n url.searchParams.append(\"preview-environment\", environment);\n\n return `${url.origin}/${url.hash}${url.search}`;\n }\n\n private scrollHandler() {\n if (!this.tooltip) return;\n\n const cslpTag = this.tooltip.getAttribute(\"current-data-cslp\");\n\n if (cslpTag) {\n const [content_type_uid, entry_uid, locale, ...field] =\n cslpTag.split(\".\");\n\n // check if opened inside an iframe\n if (window.location !== window.parent.location) {\n window.parent.postMessage(\n {\n from: \"live-preview\",\n type: \"scroll\",\n data: {\n field: field.join(\".\"),\n content_type_uid,\n entry_uid,\n locale,\n },\n },\n \"*\"\n );\n } else {\n try {\n const redirectUrl = this.generateRedirectUrl(\n content_type_uid,\n locale,\n entry_uid,\n field.join(\".\")\n );\n\n window.open(redirectUrl, \"_blank\");\n } catch (error) {\n PublicLogger.error(error);\n }\n }\n }\n }\n\n private linkClickHandler() {\n if (!this.tooltip) return;\n const hrefAttribute = this.tooltip.getAttribute(\"current-href\");\n\n if (hrefAttribute) {\n window.location.assign(hrefAttribute);\n }\n }\n\n private handleUserChange(editEntrySearchParams: IEditEntrySearchParams) {\n // here we provide contentTypeUid and EntryUid to the StackDelivery SDK.\n this.config.stackSdk.live_preview = {\n ...this.config.stackSdk.live_preview,\n ...editEntrySearchParams,\n live_preview: editEntrySearchParams.hash,\n };\n this.config.onChange();\n }\n\n setOnChangeCallback(onChangeCallback: () => void): void {\n this.config.onChange = onChangeCallback;\n }\n\n /**\n * It is the live preview hash.\n * This hash could be used when data is fetched manually.\n */\n get hash(): string {\n return this.config.hash;\n }\n\n /**\n * Sets the live preview hash from the query param which is\n * accessible via `hash` property.\n * @param params query param in an object form\n */\n setConfigFromParams(\n params: ConstructorParameters<typeof URLSearchParams>[0] = {}\n ): void {\n if (typeof params !== \"object\")\n throw new TypeError(\n \"Live preview SDK: query param must be an object\"\n );\n\n const urlParams = new URLSearchParams(params);\n const live_preview = urlParams.get(\"live_preview\");\n\n if (live_preview) {\n this.config.hash = live_preview;\n }\n }\n\n private resolveIncomingMessage(\n e: MessageEvent<ILivePreviewReceivePostMessages>\n ) {\n if (typeof e.data !== \"object\") return;\n\n if (e.data.from !== \"live-preview\") return;\n\n switch (e.data.type) {\n case \"client-data-send\": {\n const { contentTypeUid, entryUid } = this.config.stackDetails;\n const { hash } = e.data.data;\n\n this.setConfigFromParams({ live_preview: hash });\n\n if (!this.config.ssr) {\n this.handleUserChange({\n content_type_uid: contentTypeUid,\n entry_uid: entryUid,\n hash: hash,\n });\n }\n break;\n }\n case \"init-ack\": {\n const { contentTypeUid, entryUid } = e.data.data;\n\n this.config.stackDetails.contentTypeUid = contentTypeUid;\n this.config.stackDetails.entryUid = entryUid;\n break;\n }\n case \"history\": {\n switch (e.data.data.type) {\n case \"forward\": {\n window.history.forward();\n break;\n }\n case \"backward\": {\n window.history.back();\n break;\n }\n case \"reload\": {\n window.history.go();\n }\n }\n break;\n }\n default: {\n // ensure that the switch statement is exhaustive\n const exhaustiveCheck: never = e.data;\n return exhaustiveCheck; // TODO: add debug message while we are in development mode.\n }\n }\n }\n\n private createCslpTooltip = () => {\n if (\n !document.getElementById(\"cslp-tooltip\") &&\n this.config.editButton.enable\n ) {\n const tooltip = document.createElement(\"button\");\n const tooltipInnerContainer = document.createElement(\"div\");\n tooltipInnerContainer.classList.add(\n livePreviewStyles()[\"cslp-tooltip-inner-container\"]\n );\n tooltip.classList.add(livePreviewStyles()[\"cslp-tooltip\"]);\n tooltip.classList.add(livePreviewStyles()[\"cslp-tooltip\"]);\n tooltip.setAttribute(\"data-test-id\", \"cs-cslp-tooltip\");\n tooltip.id = \"cslp-tooltip\";\n tooltipInnerContainer.id = \"cslp-tooltip-inner-container\";\n tooltip.addEventListener(\"mouseover\", () => {\n this.toggleHoveringOnEditButton(true);\n });\n tooltip.addEventListener(\"mouseleave\", (e: MouseEvent) => {\n this.toggleHoveringOnEditButton(false);\n this.removeEditButtonStyle(e);\n });\n window.document.body.insertAdjacentElement(\"beforeend\", tooltip);\n this.tooltipChild.singular = createSingularEditButton(\n this.scrollHandler\n );\n this.tooltipChild.multiple = createMultipleEditButton(\n this.scrollHandler,\n this.linkClickHandler\n );\n\n tooltipInnerContainer.innerHTML = \"\";\n tooltipInnerContainer.appendChild(this.tooltipChild.singular);\n tooltip.appendChild(tooltipInnerContainer);\n this.tooltip = tooltip;\n }\n this.updateTooltipPosition();\n };\n\n private toggleHoveringOnEditButton = (isHoveringOnTooltip: boolean) => {\n this.isHoveringOnTooltip = isHoveringOnTooltip;\n };\n\n // Request parent for data sync when document loads\n private requestDataSync() {\n // add edit tooltip\n this.createCslpTooltip();\n\n window.parent.postMessage(\n {\n from: \"live-preview\",\n type: \"init\",\n data: {\n config: {\n shouldReload: this.config.ssr,\n href: window.location.href,\n sdkVersion: process.env.PACKAGE_VERSION,\n },\n },\n },\n \"*\"\n );\n\n // set timeout for client side (use to show warning: You are not editing this page)\n if (!this.config.ssr) {\n setInterval(() => {\n window.parent.postMessage(\n {\n from: \"live-preview\",\n type: \"check-entry-page\",\n data: {\n href: window.location.href,\n },\n },\n \"*\"\n );\n }, 1500);\n }\n }\n\n private updateTooltipPosition() {\n if (!this.currentElementBesideTooltip || !this.tooltip) return false;\n\n const currentRectOfElement =\n this.currentElementBesideTooltip.getBoundingClientRect();\n const currentRectOfParentOfElement =\n this.tooltip.parentElement?.getBoundingClientRect();\n\n if (currentRectOfElement && currentRectOfParentOfElement) {\n let {\n upperBoundOfTooltip,\n // eslint-disable-next-line prefer-const\n leftBoundOfTooltip,\n }: IEditButtonPosition = getEditButtonPosition(\n this.currentElementBesideTooltip,\n this.config.editButton.position\n );\n\n // if scrolled and element is still visible, make sure tooltip is also visible\n if (upperBoundOfTooltip < 0) {\n if (currentRectOfElement.top < 0)\n upperBoundOfTooltip = currentRectOfElement.top;\n else upperBoundOfTooltip = 0;\n }\n\n this.tooltip.style.top = upperBoundOfTooltip + \"px\";\n this.tooltip.style.zIndex =\n this.currentElementBesideTooltip.style.zIndex || \"200\";\n this.tooltip.style.left = leftBoundOfTooltip + \"px\";\n\n if (this.tooltipChild.singular && this.tooltipChild.multiple) {\n if (this.currentElementBesideTooltip.hasAttribute(\"href\")) {\n if (this.tooltipCurrentChild !== \"multiple\") {\n const tooltipInnerContainer =\n this.tooltip.querySelector(\n `div.${\n livePreviewStyles()[\n \"cslp-tooltip-inner-container\"\n ]\n }`\n );\n if (tooltipInnerContainer) {\n tooltipInnerContainer.innerHTML = \"\";\n tooltipInnerContainer.appendChild(\n this.tooltipChild.multiple\n );\n this.tooltipCurrentChild = \"multiple\";\n }\n }\n } else if (this.tooltipCurrentChild !== \"singular\") {\n const tooltipInnerContainer = this.tooltip.querySelector(\n `div.${\n livePreviewStyles()[\"cslp-tooltip-inner-container\"]\n }`\n );\n if (tooltipInnerContainer) {\n tooltipInnerContainer.innerHTML = \"\";\n tooltipInnerContainer.appendChild(\n this.tooltipChild.singular\n );\n this.tooltipCurrentChild = \"singular\";\n }\n }\n }\n return true;\n }\n\n return false;\n }\n\n // remove attributes when livePreview is false\n private removeDataCslp() {\n const nodes = document.querySelectorAll(\"[data-cslp]\");\n\n nodes.forEach((node) => {\n node.removeAttribute(\"data-cslp\");\n node.removeAttribute(\"data-cslp-button-position\");\n });\n }\n}\n"],"mappings":"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","names":[]}
@@ -45,9 +45,6 @@ var userInitData = {
45
45
  },
46
46
  stackSdk: {
47
47
  live_preview: {},
48
- headers: {
49
- api_key: ""
50
- },
51
48
  environment: ""
52
49
  },
53
50
  runScriptsOnUpdate: false
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/defaults.ts"],"sourcesContent":["import { IInitData } from \"./types\";\n\nexport const userInitData: IInitData = {\n ssr: true,\n enable: true,\n cleanCslpOnProduction: true,\n editButton: {\n enable: true,\n exclude: [],\n position: \"top\",\n includeByQueryParameter: true,\n },\n\n stackDetails: {\n apiKey: \"\",\n environment: \"\",\n branch: \"main\",\n },\n\n clientUrlParams: {\n protocol: \"https\",\n host: \"app.contentstack.com\",\n port: 443,\n },\n stackSdk: {\n live_preview: {},\n headers: {\n api_key: \"\",\n },\n environment: \"\",\n },\n runScriptsOnUpdate: false,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,eAA0B;AAAA,EACnC,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,uBAAuB;AAAA,EACvB,YAAY;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,CAAC;AAAA,IACV,UAAU;AAAA,IACV,yBAAyB;AAAA,EAC7B;AAAA,EAEA,cAAc;AAAA,IACV,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,QAAQ;AAAA,EACZ;AAAA,EAEA,iBAAiB;AAAA,IACb,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,EACV;AAAA,EACA,UAAU;AAAA,IACN,cAAc,CAAC;AAAA,IACf,SAAS;AAAA,MACL,SAAS;AAAA,IACb;AAAA,IACA,aAAa;AAAA,EACjB;AAAA,EACA,oBAAoB;AACxB;","names":[]}
1
+ {"version":3,"sources":["../../../src/utils/defaults.ts"],"sourcesContent":["import { IInitData } from \"./types\";\n\nexport const userInitData: IInitData = {\n ssr: true,\n enable: true,\n cleanCslpOnProduction: true,\n editButton: {\n enable: true,\n exclude: [],\n position: \"top\",\n includeByQueryParameter: true,\n },\n\n stackDetails: {\n apiKey: \"\",\n environment: \"\",\n branch: \"main\",\n },\n\n clientUrlParams: {\n protocol: \"https\",\n host: \"app.contentstack.com\",\n port: 443,\n },\n stackSdk: {\n live_preview: {},\n environment: \"\",\n },\n runScriptsOnUpdate: false,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,eAA0B;AAAA,EACnC,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,uBAAuB;AAAA,EACvB,YAAY;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,CAAC;AAAA,IACV,UAAU;AAAA,IACV,yBAAyB;AAAA,EAC7B;AAAA,EAEA,cAAc;AAAA,IACV,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,QAAQ;AAAA,EACZ;AAAA,EAEA,iBAAiB;AAAA,IACb,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,EACV;AAAA,EACA,UAAU;AAAA,IACN,cAAc,CAAC;AAAA,IACf,aAAa;AAAA,EACjB;AAAA,EACA,oBAAoB;AACxB;","names":[]}
@@ -21,9 +21,6 @@ var userInitData = {
21
21
  },
22
22
  stackSdk: {
23
23
  live_preview: {},
24
- headers: {
25
- api_key: ""
26
- },
27
24
  environment: ""
28
25
  },
29
26
  runScriptsOnUpdate: false
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/defaults.ts"],"sourcesContent":["import { IInitData } from \"./types\";\n\nexport const userInitData: IInitData = {\n ssr: true,\n enable: true,\n cleanCslpOnProduction: true,\n editButton: {\n enable: true,\n exclude: [],\n position: \"top\",\n includeByQueryParameter: true,\n },\n\n stackDetails: {\n apiKey: \"\",\n environment: \"\",\n branch: \"main\",\n },\n\n clientUrlParams: {\n protocol: \"https\",\n host: \"app.contentstack.com\",\n port: 443,\n },\n stackSdk: {\n live_preview: {},\n headers: {\n api_key: \"\",\n },\n environment: \"\",\n },\n runScriptsOnUpdate: false,\n};\n"],"mappings":";AAEO,IAAM,eAA0B;AAAA,EACnC,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,uBAAuB;AAAA,EACvB,YAAY;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,CAAC;AAAA,IACV,UAAU;AAAA,IACV,yBAAyB;AAAA,EAC7B;AAAA,EAEA,cAAc;AAAA,IACV,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,QAAQ;AAAA,EACZ;AAAA,EAEA,iBAAiB;AAAA,IACb,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,EACV;AAAA,EACA,UAAU;AAAA,IACN,cAAc,CAAC;AAAA,IACf,SAAS;AAAA,MACL,SAAS;AAAA,IACb;AAAA,IACA,aAAa;AAAA,EACjB;AAAA,EACA,oBAAoB;AACxB;","names":[]}
1
+ {"version":3,"sources":["../../../src/utils/defaults.ts"],"sourcesContent":["import { IInitData } from \"./types\";\n\nexport const userInitData: IInitData = {\n ssr: true,\n enable: true,\n cleanCslpOnProduction: true,\n editButton: {\n enable: true,\n exclude: [],\n position: \"top\",\n includeByQueryParameter: true,\n },\n\n stackDetails: {\n apiKey: \"\",\n environment: \"\",\n branch: \"main\",\n },\n\n clientUrlParams: {\n protocol: \"https\",\n host: \"app.contentstack.com\",\n port: 443,\n },\n stackSdk: {\n live_preview: {},\n environment: \"\",\n },\n runScriptsOnUpdate: false,\n};\n"],"mappings":";AAEO,IAAM,eAA0B;AAAA,EACnC,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,uBAAuB;AAAA,EACvB,YAAY;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,CAAC;AAAA,IACV,UAAU;AAAA,IACV,yBAAyB;AAAA,EAC7B;AAAA,EAEA,cAAc;AAAA,IACV,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,QAAQ;AAAA,EACZ;AAAA,EAEA,iBAAiB;AAAA,IACb,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,EACV;AAAA,EACA,UAAU;AAAA,IACN,cAAc,CAAC;AAAA,IACf,aAAa;AAAA,EACjB;AAAA,EACA,oBAAoB;AACxB;","names":[]}
@@ -56,7 +56,7 @@ function isInitDataCommon(initObj) {
56
56
  return !isInitDataStackSdk(initObj);
57
57
  }
58
58
  var handleInitData = (initData, config) => {
59
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
59
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
60
60
  if (isInitDataStackSdk(initData)) {
61
61
  import_public_logger.PublicLogger.warn(
62
62
  "Deprecated: Do not pass the Stack object directly to the Live Preview SDK. Pass it using the config.stackSDK config object."
@@ -76,8 +76,6 @@ var handleInitData = (initData, config) => {
76
76
  includeByQueryParameter: ((_e = livePreviewObject.editButton) == null ? void 0 : _e.includeByQueryParameter) ?? config.editButton.includeByQueryParameter ?? true
77
77
  };
78
78
  config.stackSdk = initData;
79
- if (Object.prototype.hasOwnProperty.call(initData.headers, "api_key") && initData.headers.api_key)
80
- config.stackDetails.apiKey = initData.headers.api_key;
81
79
  if (Object.prototype.hasOwnProperty.call(initData, "environment")) {
82
80
  config.stackDetails.environment = initData.environment;
83
81
  }
@@ -104,12 +102,12 @@ var handleInitData = (initData, config) => {
104
102
  position: ((_q = initData.editButton) == null ? void 0 : _q.position) ?? ((_r = stackSdk.live_preview) == null ? void 0 : _r.position) ?? config.editButton.position ?? "top",
105
103
  includeByQueryParameter: ((_s = initData.editButton) == null ? void 0 : _s.includeByQueryParameter) ?? ((_t = stackSdk.live_preview) == null ? void 0 : _t.includeByQueryParameter) ?? config.editButton.includeByQueryParameter ?? true
106
104
  };
107
- config.stackDetails.apiKey = ((_u = initData.stackDetails) == null ? void 0 : _u.apiKey) ?? ((_v = stackSdk.headers) == null ? void 0 : _v.api_key) ?? config.stackDetails.apiKey;
108
- config.stackDetails.environment = ((_w = initData.stackDetails) == null ? void 0 : _w.environment) ?? stackSdk.environment ?? config.stackDetails.environment;
109
- config.stackDetails.branch = ((_x = initData.stackDetails) == null ? void 0 : _x.branch) ?? config.stackDetails.branch ?? "main";
105
+ config.stackDetails.apiKey = ((_u = initData.stackDetails) == null ? void 0 : _u.apiKey) ?? config.stackDetails.apiKey;
106
+ config.stackDetails.environment = ((_v = initData.stackDetails) == null ? void 0 : _v.environment) ?? stackSdk.environment ?? config.stackDetails.environment;
107
+ config.stackDetails.branch = ((_w = initData.stackDetails) == null ? void 0 : _w.branch) ?? config.stackDetails.branch ?? "main";
110
108
  handleClientUrlParams(
111
109
  config,
112
- initData.clientUrlParams ?? ((_y = stackSdk.live_preview) == null ? void 0 : _y.clientUrlParams) ?? config.clientUrlParams
110
+ initData.clientUrlParams ?? ((_x = stackSdk.live_preview) == null ? void 0 : _x.clientUrlParams) ?? config.clientUrlParams
113
111
  );
114
112
  }
115
113
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/handleUserConfig.ts"],"sourcesContent":["import { shouldRenderEditButton } from \".\";\nimport { PublicLogger } from \"./public-logger\";\nimport { IClientUrlParams, IConfig, IInitData, IStackSdk } from \"./types\";\n\nconst handleClientUrlParams = (\n existingConfig: IConfig,\n userConfig: Partial<IClientUrlParams>\n): void => {\n existingConfig.clientUrlParams.host =\n userConfig.host ?? existingConfig.clientUrlParams.host;\n existingConfig.clientUrlParams.protocol =\n userConfig.protocol ?? existingConfig.clientUrlParams.protocol;\n existingConfig.clientUrlParams.port =\n userConfig.port ?? existingConfig.clientUrlParams.port;\n\n if (userConfig.protocol !== undefined && userConfig.port === undefined) {\n switch (userConfig.protocol) {\n case \"http\": {\n existingConfig.clientUrlParams.port = 80;\n break;\n }\n case \"https\": {\n existingConfig.clientUrlParams.port = 443;\n break;\n }\n }\n }\n\n // build url\n let host = existingConfig.clientUrlParams.host;\n\n if (host.endsWith(\"/\")) {\n host = host.slice(0, -1);\n existingConfig.clientUrlParams.host = host;\n }\n\n existingConfig.clientUrlParams.url = `${existingConfig.clientUrlParams.protocol}://${existingConfig.clientUrlParams.host}:${existingConfig.clientUrlParams.port}`;\n};\n\nfunction isInitDataStackSdk(\n initObj: Partial<IConfig> | Partial<IStackSdk>\n): initObj is IStackSdk {\n return Object.prototype.hasOwnProperty.call(initObj, \"cachePolicy\");\n}\n\nfunction isInitDataCommon(\n initObj: Partial<IConfig> | Partial<IStackSdk>\n): initObj is IInitData {\n return !isInitDataStackSdk(initObj);\n}\n\nexport const handleInitData = (\n initData: Partial<IInitData> | Partial<IStackSdk>,\n config: IConfig\n): void => {\n // only have stack sdk\n if (isInitDataStackSdk(initData)) {\n PublicLogger.warn(\n \"Deprecated: Do not pass the Stack object directly to the Live Preview SDK. Pass it using the config.stackSDK config object.\"\n );\n\n const livePreviewObject = initData?.live_preview || {};\n\n // only stack indicates that user is running it on client side application\n config.ssr = false;\n\n config.runScriptsOnUpdate =\n livePreviewObject.runScriptsOnUpdate ?? config.runScriptsOnUpdate;\n\n config.enable = livePreviewObject.enable ?? config.enable;\n\n config.cleanCslpOnProduction =\n livePreviewObject.cleanCslpOnProduction ??\n config.cleanCslpOnProduction;\n\n config.editButton = {\n enable: shouldRenderEditButton(\n livePreviewObject.editButton ?? config.editButton\n ),\n // added extra check if exclude data passed by user is array or not\n exclude:\n Array.isArray(livePreviewObject.editButton?.exclude) &&\n livePreviewObject.editButton?.exclude\n ? livePreviewObject.editButton?.exclude\n : config.editButton.exclude ?? [],\n position:\n livePreviewObject.editButton?.position ??\n config.editButton.position ??\n \"top\",\n\n includeByQueryParameter:\n livePreviewObject.editButton?.includeByQueryParameter ??\n config.editButton.includeByQueryParameter ??\n true,\n };\n\n config.stackSdk = initData;\n\n // stack details\n if (\n Object.prototype.hasOwnProperty.call(initData.headers, \"api_key\") &&\n initData.headers.api_key\n )\n config.stackDetails.apiKey = initData.headers.api_key;\n\n if (Object.prototype.hasOwnProperty.call(initData, \"environment\")) {\n config.stackDetails.environment = initData.environment;\n }\n\n if (Object.prototype.hasOwnProperty.call(initData, \"branch\")) {\n config.stackDetails.branch = initData.branch;\n }\n\n // client URL params\n handleClientUrlParams(\n config,\n livePreviewObject.clientUrlParams ?? config.clientUrlParams\n );\n } else if (isInitDataCommon(initData)) {\n const stackSdk: Partial<IStackSdk> =\n initData.stackSdk || config.stackSdk;\n\n config.enable =\n initData.enable ?? stackSdk.live_preview?.enable ?? config.enable;\n\n config.ssr =\n initData.ssr ??\n stackSdk.live_preview?.ssr ??\n (typeof initData.stackSdk === \"object\" ? false : true) ??\n true;\n\n config.runScriptsOnUpdate =\n initData.runScriptsOnUpdate ??\n stackSdk.live_preview?.runScriptsOnUpdate ??\n config.runScriptsOnUpdate;\n\n config.stackSdk = stackSdk as IStackSdk;\n\n config.cleanCslpOnProduction =\n initData.cleanCslpOnProduction ??\n stackSdk.live_preview?.cleanCslpOnProduction ??\n config.cleanCslpOnProduction;\n\n config.editButton = {\n enable: shouldRenderEditButton(\n initData.editButton ??\n stackSdk.live_preview?.editButton ??\n config.editButton\n ),\n // added extra check if exclude data passed by user is array or not\n exclude:\n Array.isArray(initData.editButton?.exclude) &&\n initData.editButton?.exclude\n ? initData.editButton?.exclude\n : Array.isArray(stackSdk.live_preview?.exclude) &&\n stackSdk.live_preview?.exclude\n ? stackSdk.live_preview?.exclude\n : config.editButton.exclude ?? [],\n position:\n initData.editButton?.position ??\n stackSdk.live_preview?.position ??\n config.editButton.position ??\n \"top\",\n\n includeByQueryParameter:\n initData.editButton?.includeByQueryParameter ??\n stackSdk.live_preview?.includeByQueryParameter ??\n config.editButton.includeByQueryParameter ??\n true,\n };\n\n config.stackDetails.apiKey =\n initData.stackDetails?.apiKey ??\n stackSdk.headers?.api_key ??\n config.stackDetails.apiKey;\n\n config.stackDetails.environment =\n initData.stackDetails?.environment ??\n stackSdk.environment ??\n config.stackDetails.environment;\n\n config.stackDetails.branch =\n initData.stackDetails?.branch ??\n config.stackDetails.branch ??\n \"main\";\n\n // client URL params\n handleClientUrlParams(\n config,\n initData.clientUrlParams ??\n stackSdk.live_preview?.clientUrlParams ??\n config.clientUrlParams\n );\n }\n};\n\nexport const handleUserConfig = {\n clientUrlParams: handleClientUrlParams,\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/utils/handleUserConfig.ts"],"sourcesContent":["import { shouldRenderEditButton } from \".\";\nimport { PublicLogger } from \"./public-logger\";\nimport { IClientUrlParams, IConfig, IInitData, IStackSdk } from \"./types\";\n\nconst handleClientUrlParams = (\n existingConfig: IConfig,\n userConfig: Partial<IClientUrlParams>\n): void => {\n existingConfig.clientUrlParams.host =\n userConfig.host ?? existingConfig.clientUrlParams.host;\n existingConfig.clientUrlParams.protocol =\n userConfig.protocol ?? existingConfig.clientUrlParams.protocol;\n existingConfig.clientUrlParams.port =\n userConfig.port ?? existingConfig.clientUrlParams.port;\n\n if (userConfig.protocol !== undefined && userConfig.port === undefined) {\n switch (userConfig.protocol) {\n case \"http\": {\n existingConfig.clientUrlParams.port = 80;\n break;\n }\n case \"https\": {\n existingConfig.clientUrlParams.port = 443;\n break;\n }\n }\n }\n\n // build url\n let host = existingConfig.clientUrlParams.host;\n\n if (host.endsWith(\"/\")) {\n host = host.slice(0, -1);\n existingConfig.clientUrlParams.host = host;\n }\n\n existingConfig.clientUrlParams.url = `${existingConfig.clientUrlParams.protocol}://${existingConfig.clientUrlParams.host}:${existingConfig.clientUrlParams.port}`;\n};\n\nfunction isInitDataStackSdk(\n initObj: Partial<IConfig> | Partial<IStackSdk>\n): initObj is IStackSdk {\n return Object.prototype.hasOwnProperty.call(initObj, \"cachePolicy\");\n}\n\nfunction isInitDataCommon(\n initObj: Partial<IConfig> | Partial<IStackSdk>\n): initObj is IInitData {\n return !isInitDataStackSdk(initObj);\n}\n\nexport const handleInitData = (\n initData: Partial<IInitData> | Partial<IStackSdk>,\n config: IConfig\n): void => {\n // only have stack sdk\n if (isInitDataStackSdk(initData)) {\n PublicLogger.warn(\n \"Deprecated: Do not pass the Stack object directly to the Live Preview SDK. Pass it using the config.stackSDK config object.\"\n );\n\n const livePreviewObject = initData?.live_preview || {};\n\n // only stack indicates that user is running it on client side application\n config.ssr = false;\n\n config.runScriptsOnUpdate =\n livePreviewObject.runScriptsOnUpdate ?? config.runScriptsOnUpdate;\n\n config.enable = livePreviewObject.enable ?? config.enable;\n\n config.cleanCslpOnProduction =\n livePreviewObject.cleanCslpOnProduction ??\n config.cleanCslpOnProduction;\n\n config.editButton = {\n enable: shouldRenderEditButton(\n livePreviewObject.editButton ?? config.editButton\n ),\n // added extra check if exclude data passed by user is array or not\n exclude:\n Array.isArray(livePreviewObject.editButton?.exclude) &&\n livePreviewObject.editButton?.exclude\n ? livePreviewObject.editButton?.exclude\n : config.editButton.exclude ?? [],\n position:\n livePreviewObject.editButton?.position ??\n config.editButton.position ??\n \"top\",\n\n includeByQueryParameter:\n livePreviewObject.editButton?.includeByQueryParameter ??\n config.editButton.includeByQueryParameter ??\n true,\n };\n\n config.stackSdk = initData;\n\n // stack details\n\n if (Object.prototype.hasOwnProperty.call(initData, \"environment\")) {\n config.stackDetails.environment = initData.environment;\n }\n\n if (Object.prototype.hasOwnProperty.call(initData, \"branch\")) {\n config.stackDetails.branch = initData.branch;\n }\n\n // client URL params\n handleClientUrlParams(\n config,\n livePreviewObject.clientUrlParams ?? config.clientUrlParams\n );\n } else if (isInitDataCommon(initData)) {\n const stackSdk: Partial<IStackSdk> =\n initData.stackSdk || config.stackSdk;\n\n config.enable =\n initData.enable ?? stackSdk.live_preview?.enable ?? config.enable;\n\n config.ssr =\n initData.ssr ??\n stackSdk.live_preview?.ssr ??\n (typeof initData.stackSdk === \"object\" ? false : true) ??\n true;\n\n config.runScriptsOnUpdate =\n initData.runScriptsOnUpdate ??\n stackSdk.live_preview?.runScriptsOnUpdate ??\n config.runScriptsOnUpdate;\n\n config.stackSdk = stackSdk as IStackSdk;\n\n config.cleanCslpOnProduction =\n initData.cleanCslpOnProduction ??\n stackSdk.live_preview?.cleanCslpOnProduction ??\n config.cleanCslpOnProduction;\n\n config.editButton = {\n enable: shouldRenderEditButton(\n initData.editButton ??\n stackSdk.live_preview?.editButton ??\n config.editButton\n ),\n // added extra check if exclude data passed by user is array or not\n exclude:\n Array.isArray(initData.editButton?.exclude) &&\n initData.editButton?.exclude\n ? initData.editButton?.exclude\n : Array.isArray(stackSdk.live_preview?.exclude) &&\n stackSdk.live_preview?.exclude\n ? stackSdk.live_preview?.exclude\n : config.editButton.exclude ?? [],\n position:\n initData.editButton?.position ??\n stackSdk.live_preview?.position ??\n config.editButton.position ??\n \"top\",\n\n includeByQueryParameter:\n initData.editButton?.includeByQueryParameter ??\n stackSdk.live_preview?.includeByQueryParameter ??\n config.editButton.includeByQueryParameter ??\n true,\n };\n\n config.stackDetails.apiKey =\n initData.stackDetails?.apiKey ?? config.stackDetails.apiKey;\n\n config.stackDetails.environment =\n initData.stackDetails?.environment ??\n stackSdk.environment ??\n config.stackDetails.environment;\n\n config.stackDetails.branch =\n initData.stackDetails?.branch ??\n config.stackDetails.branch ??\n \"main\";\n\n // client URL params\n handleClientUrlParams(\n config,\n initData.clientUrlParams ??\n stackSdk.live_preview?.clientUrlParams ??\n config.clientUrlParams\n );\n }\n};\n\nexport const handleUserConfig = {\n clientUrlParams: handleClientUrlParams,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAuC;AACvC,2BAA6B;AAG7B,IAAM,wBAAwB,CAC1B,gBACA,eACO;AACP,iBAAe,gBAAgB,OAC3B,WAAW,QAAQ,eAAe,gBAAgB;AACtD,iBAAe,gBAAgB,WAC3B,WAAW,YAAY,eAAe,gBAAgB;AAC1D,iBAAe,gBAAgB,OAC3B,WAAW,QAAQ,eAAe,gBAAgB;AAEtD,MAAI,WAAW,aAAa,UAAa,WAAW,SAAS,QAAW;AACpE,YAAQ,WAAW,UAAU;AAAA,MACzB,KAAK,QAAQ;AACT,uBAAe,gBAAgB,OAAO;AACtC;AAAA,MACJ;AAAA,MACA,KAAK,SAAS;AACV,uBAAe,gBAAgB,OAAO;AACtC;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAGA,MAAI,OAAO,eAAe,gBAAgB;AAE1C,MAAI,KAAK,SAAS,GAAG,GAAG;AACpB,WAAO,KAAK,MAAM,GAAG,EAAE;AACvB,mBAAe,gBAAgB,OAAO;AAAA,EAC1C;AAEA,iBAAe,gBAAgB,MAAM,GAAG,eAAe,gBAAgB,QAAQ,MAAM,eAAe,gBAAgB,IAAI,IAAI,eAAe,gBAAgB,IAAI;AACnK;AAEA,SAAS,mBACL,SACoB;AACpB,SAAO,OAAO,UAAU,eAAe,KAAK,SAAS,aAAa;AACtE;AAEA,SAAS,iBACL,SACoB;AACpB,SAAO,CAAC,mBAAmB,OAAO;AACtC;AAEO,IAAM,iBAAiB,CAC1B,UACA,WACO;AAtDX;AAwDI,MAAI,mBAAmB,QAAQ,GAAG;AAC9B,sCAAa;AAAA,MACT;AAAA,IACJ;AAEA,UAAM,qBAAoB,qCAAU,iBAAgB,CAAC;AAGrD,WAAO,MAAM;AAEb,WAAO,qBACH,kBAAkB,sBAAsB,OAAO;AAEnD,WAAO,SAAS,kBAAkB,UAAU,OAAO;AAEnD,WAAO,wBACH,kBAAkB,yBAClB,OAAO;AAEX,WAAO,aAAa;AAAA,MAChB,YAAQ;AAAA,QACJ,kBAAkB,cAAc,OAAO;AAAA,MAC3C;AAAA;AAAA,MAEA,SACI,MAAM,SAAQ,uBAAkB,eAAlB,mBAA8B,OAAO,OACnD,uBAAkB,eAAlB,mBAA8B,YACxB,uBAAkB,eAAlB,mBAA8B,UAC9B,OAAO,WAAW,WAAW,CAAC;AAAA,MACxC,YACI,uBAAkB,eAAlB,mBAA8B,aAC9B,OAAO,WAAW,YAClB;AAAA,MAEJ,2BACI,uBAAkB,eAAlB,mBAA8B,4BAC9B,OAAO,WAAW,2BAClB;AAAA,IACR;AAEA,WAAO,WAAW;AAIlB,QAAI,OAAO,UAAU,eAAe,KAAK,UAAU,aAAa,GAAG;AAC/D,aAAO,aAAa,cAAc,SAAS;AAAA,IAC/C;AAEA,QAAI,OAAO,UAAU,eAAe,KAAK,UAAU,QAAQ,GAAG;AAC1D,aAAO,aAAa,SAAS,SAAS;AAAA,IAC1C;AAGA;AAAA,MACI;AAAA,MACA,kBAAkB,mBAAmB,OAAO;AAAA,IAChD;AAAA,EACJ,WAAW,iBAAiB,QAAQ,GAAG;AACnC,UAAM,WACF,SAAS,YAAY,OAAO;AAEhC,WAAO,SACH,SAAS,YAAU,cAAS,iBAAT,mBAAuB,WAAU,OAAO;AAE/D,WAAO,MACH,SAAS,SACT,cAAS,iBAAT,mBAAuB,SACtB,OAAO,SAAS,aAAa,WAAW,QAAQ,SACjD;AAEJ,WAAO,qBACH,SAAS,wBACT,cAAS,iBAAT,mBAAuB,uBACvB,OAAO;AAEX,WAAO,WAAW;AAElB,WAAO,wBACH,SAAS,2BACT,cAAS,iBAAT,mBAAuB,0BACvB,OAAO;AAEX,WAAO,aAAa;AAAA,MAChB,YAAQ;AAAA,QACJ,SAAS,gBACL,cAAS,iBAAT,mBAAuB,eACvB,OAAO;AAAA,MACf;AAAA;AAAA,MAEA,SACI,MAAM,SAAQ,cAAS,eAAT,mBAAqB,OAAO,OAC1C,cAAS,eAAT,mBAAqB,YACf,cAAS,eAAT,mBAAqB,UACrB,MAAM,SAAQ,cAAS,iBAAT,mBAAuB,OAAO,OAC5C,cAAS,iBAAT,mBAAuB,YACvB,cAAS,iBAAT,mBAAuB,UACvB,OAAO,WAAW,WAAW,CAAC;AAAA,MACxC,YACI,cAAS,eAAT,mBAAqB,eACrB,cAAS,iBAAT,mBAAuB,aACvB,OAAO,WAAW,YAClB;AAAA,MAEJ,2BACI,cAAS,eAAT,mBAAqB,8BACrB,cAAS,iBAAT,mBAAuB,4BACvB,OAAO,WAAW,2BAClB;AAAA,IACR;AAEA,WAAO,aAAa,WAChB,cAAS,iBAAT,mBAAuB,WAAU,OAAO,aAAa;AAEzD,WAAO,aAAa,gBAChB,cAAS,iBAAT,mBAAuB,gBACvB,SAAS,eACT,OAAO,aAAa;AAExB,WAAO,aAAa,WAChB,cAAS,iBAAT,mBAAuB,WACvB,OAAO,aAAa,UACpB;AAGJ;AAAA,MACI;AAAA,MACA,SAAS,qBACL,cAAS,iBAAT,mBAAuB,oBACvB,OAAO;AAAA,IACf;AAAA,EACJ;AACJ;AAEO,IAAM,mBAAmB;AAAA,EAC5B,iBAAiB;AACrB;","names":[]}
@@ -31,7 +31,7 @@ function isInitDataCommon(initObj) {
31
31
  return !isInitDataStackSdk(initObj);
32
32
  }
33
33
  var handleInitData = (initData, config) => {
34
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
34
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
35
35
  if (isInitDataStackSdk(initData)) {
36
36
  PublicLogger.warn(
37
37
  "Deprecated: Do not pass the Stack object directly to the Live Preview SDK. Pass it using the config.stackSDK config object."
@@ -51,8 +51,6 @@ var handleInitData = (initData, config) => {
51
51
  includeByQueryParameter: ((_e = livePreviewObject.editButton) == null ? void 0 : _e.includeByQueryParameter) ?? config.editButton.includeByQueryParameter ?? true
52
52
  };
53
53
  config.stackSdk = initData;
54
- if (Object.prototype.hasOwnProperty.call(initData.headers, "api_key") && initData.headers.api_key)
55
- config.stackDetails.apiKey = initData.headers.api_key;
56
54
  if (Object.prototype.hasOwnProperty.call(initData, "environment")) {
57
55
  config.stackDetails.environment = initData.environment;
58
56
  }
@@ -79,12 +77,12 @@ var handleInitData = (initData, config) => {
79
77
  position: ((_q = initData.editButton) == null ? void 0 : _q.position) ?? ((_r = stackSdk.live_preview) == null ? void 0 : _r.position) ?? config.editButton.position ?? "top",
80
78
  includeByQueryParameter: ((_s = initData.editButton) == null ? void 0 : _s.includeByQueryParameter) ?? ((_t = stackSdk.live_preview) == null ? void 0 : _t.includeByQueryParameter) ?? config.editButton.includeByQueryParameter ?? true
81
79
  };
82
- config.stackDetails.apiKey = ((_u = initData.stackDetails) == null ? void 0 : _u.apiKey) ?? ((_v = stackSdk.headers) == null ? void 0 : _v.api_key) ?? config.stackDetails.apiKey;
83
- config.stackDetails.environment = ((_w = initData.stackDetails) == null ? void 0 : _w.environment) ?? stackSdk.environment ?? config.stackDetails.environment;
84
- config.stackDetails.branch = ((_x = initData.stackDetails) == null ? void 0 : _x.branch) ?? config.stackDetails.branch ?? "main";
80
+ config.stackDetails.apiKey = ((_u = initData.stackDetails) == null ? void 0 : _u.apiKey) ?? config.stackDetails.apiKey;
81
+ config.stackDetails.environment = ((_v = initData.stackDetails) == null ? void 0 : _v.environment) ?? stackSdk.environment ?? config.stackDetails.environment;
82
+ config.stackDetails.branch = ((_w = initData.stackDetails) == null ? void 0 : _w.branch) ?? config.stackDetails.branch ?? "main";
85
83
  handleClientUrlParams(
86
84
  config,
87
- initData.clientUrlParams ?? ((_y = stackSdk.live_preview) == null ? void 0 : _y.clientUrlParams) ?? config.clientUrlParams
85
+ initData.clientUrlParams ?? ((_x = stackSdk.live_preview) == null ? void 0 : _x.clientUrlParams) ?? config.clientUrlParams
88
86
  );
89
87
  }
90
88
  };