/** * Get the owner document (considering editor iframe). * * @param {Document} document * @returns {Document} */ export const getDocument = (document) => { let previewDoc = document; const editorCanvas = document.querySelector('iframe[name="editor-canvas"]'); if (editorCanvas) { previewDoc = editorCanvas.contentWindow.document; } return previewDoc; }; /** * Update live-style * * @param {String} id * @param {String} content * @param {Boolean} remove */ export const updateDynamicStyle = (id, content, remove = false) => { let previewDoc = getDocument(document); let styleElement = previewDoc.getElementById(id); if (remove) { if (styleElement) { styleElement.remove(); } } else { // Create a new one if don't have one if (!styleElement) { styleElement = previewDoc.createElement("style"); styleElement.id = id; previewDoc.head.appendChild(styleElement); } styleElement.textContent = content; } };