| 1 |
/** |
| 2 |
* Get the owner document (considering editor iframe). |
| 3 |
* |
| 4 |
* @param {Document} document |
| 5 |
* @returns {Document} |
| 6 |
*/ |
| 7 |
export const getDocument = (document) => { |
| 8 |
let previewDoc = document; |
| 9 |
|
| 10 |
const editorCanvas = document.querySelector('iframe[name="editor-canvas"]'); |
| 11 |
if (editorCanvas) { |
| 12 |
previewDoc = editorCanvas.contentWindow.document; |
| 13 |
} |
| 14 |
|
| 15 |
return previewDoc; |
| 16 |
}; |
| 17 |
|
| 18 |
/** |
| 19 |
* Update live-style |
| 20 |
* |
| 21 |
* @param {String} id |
| 22 |
* @param {String} content |
| 23 |
* @param {Boolean} remove |
| 24 |
*/ |
| 25 |
export const updateDynamicStyle = (id, content, remove = false) => { |
| 26 |
let previewDoc = getDocument(document); |
| 27 |
|
| 28 |
let styleElement = previewDoc.getElementById(id); |
| 29 |
|
| 30 |
if (remove) { |
| 31 |
if (styleElement) { |
| 32 |
styleElement.remove(); |
| 33 |
} |
| 34 |
} else { |
| 35 |
// Create a new one if don't have one |
| 36 |
if (!styleElement) { |
| 37 |
styleElement = previewDoc.createElement("style"); |
| 38 |
styleElement.id = id; |
| 39 |
|
| 40 |
previewDoc.head.appendChild(styleElement); |
| 41 |
} |
| 42 |
|
| 43 |
styleElement.textContent = content; |
| 44 |
} |
| 45 |
}; |
| 46 |
|