UNPKG

@contentstack/live-preview-utils

Version:

Contentstack provides the Live Preview SDK to establish a communication channel between the various Contentstack SDKs and your website, transmitting live changes to the preview pane.

122 lines (121 loc) 4.86 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/visualBuilder/eventManager/useRevalidateFieldDataPostMessageEvent.ts var useRevalidateFieldDataPostMessageEvent_exports = {}; __export(useRevalidateFieldDataPostMessageEvent_exports, { handleRevalidateFieldData: () => handleRevalidateFieldData }); module.exports = __toCommonJS(useRevalidateFieldDataPostMessageEvent_exports); var import__ = require("../index.cjs"); var import_cslp = require("../../cslp/index.cjs"); var import_fieldSchemaMap = require("../utils/fieldSchemaMap.cjs"); var import_generateOverlay = require("../generators/generateOverlay.cjs"); var import_mouseClick = require("../listeners/mouseClick.cjs"); async function handleRevalidateFieldData() { const focusedElement = import__.VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM; const hoveredElement = import__.VisualBuilder.VisualBuilderGlobalState.value.previousHoveredTargetDOM; const elementCslp = focusedElement == null ? void 0 : focusedElement.getAttribute("data-cslp"); const elementCslpUniqueId = (focusedElement == null ? void 0 : focusedElement.getAttribute("data-cslp-unique-id")) || null; const shouldRefocus = !!focusedElement; try { if (shouldRefocus) { await unfocusElement(); } const targetElement = hoveredElement || focusedElement; if (targetElement) { const cslp = targetElement.getAttribute("data-cslp"); if (cslp) { const fieldMetadata = (0, import_cslp.extractDetailsFromCslp)(cslp); import_fieldSchemaMap.FieldSchemaMap.clearContentTypeSchema( fieldMetadata.content_type_uid ); } } import_fieldSchemaMap.FieldSchemaMap.clear(); } catch (error) { console.error("Error handling revalidate field data:", error); window.location.reload(); } finally { if (shouldRefocus && elementCslp) { await refocusElement(elementCslp, elementCslpUniqueId); } } } async function unfocusElement() { const { visualBuilderContainer, overlayWrapper, focusedToolbar } = getVisualBuilderElements(); if (!visualBuilderContainer || !overlayWrapper) return; const dummyResizeObserver = new ResizeObserver(() => { }); (0, import_generateOverlay.hideFocusOverlay)({ visualBuilderContainer, visualBuilderOverlayWrapper: overlayWrapper, focusedToolbar, resizeObserver: dummyResizeObserver, noTrigger: true }); import__.VisualBuilder.VisualBuilderGlobalState.value.previousSelectedEditableDOM = null; import__.VisualBuilder.VisualBuilderGlobalState.value.isFocussed = false; } async function refocusElement(cslp, uniqueId) { try { const elementToRefocus = uniqueId && document.querySelector( `[data-cslp-unique-id="${uniqueId}"]` ) || document.querySelector(`[data-cslp="${cslp}"]`); if (!elementToRefocus) return; const { visualBuilderContainer, overlayWrapper, focusedToolbar } = getVisualBuilderElements(); if (!visualBuilderContainer || !overlayWrapper) return; const syntheticEvent = new MouseEvent("click", { bubbles: true, cancelable: true }); Object.defineProperty(syntheticEvent, "target", { value: elementToRefocus, enumerable: true }); await (0, import_mouseClick.handleBuilderInteraction)({ event: syntheticEvent, previousSelectedEditableDOM: null, visualBuilderContainer, overlayWrapper, focusedToolbar, resizeObserver: new ResizeObserver(() => { }) }); } catch (error) { console.warn("Could not refocus element after revalidation:", error); } } function getVisualBuilderElements() { return { visualBuilderContainer: document.querySelector( ".visual-builder__container" ), overlayWrapper: document.querySelector( ".visual-builder__overlay__wrapper" ), focusedToolbar: document.querySelector( ".visual-builder__focused-toolbar" ) }; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { handleRevalidateFieldData }); //# sourceMappingURL=useRevalidateFieldDataPostMessageEvent.cjs.map