# elementor/4.3.2/assets/js/packages/editor-embedded-documents-manager/editor-embedded-documents-manager.js

Elementor Website Builder – more than just a page builder, version 4.3.2. 173 lines.

- Page: https://pluginprobe.com/plugins/elementor/4.3.2/code/assets/js/packages/editor-embedded-documents-manager/editor-embedded-documents-manager.js
- Raw: https://pluginprobe.com/plugins/elementor/4.3.2/raw/assets/js/packages/editor-embedded-documents-manager/editor-embedded-documents-manager.js
- Modified: 2026-09-01T11:47:36+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/elementor/4.3.2/code/assets/js/packages/editor-embedded-documents-manager/editor-embedded-documents-manager.js#L10-L20`.

```javascript
(function(_elementor_editor_documents, _elementor_editor_styles_repository, _elementor_editor_v1_adapters) {

//#region \0rolldown/runtime.js
	var __defProp = Object.defineProperty;
	var __name = (target, value) => __defProp(target, "name", {
		value,
		configurable: true
	});
	var __exportAll = (all, no_symbols) => {
		let target = {};
		for (var name in all) {
			__defProp(target, name, {
				get: all[name],
				enumerable: true
			});
		}
		if (!no_symbols) {
			__defProp(target, Symbol.toStringTag, { value: "Module" });
		}
		return target;
	};

//#endregion

//#region packages/packages/core/editor-embedded-documents-manager/src/styles-provider.ts
	var styles = [];
	var documentStyles = /* @__PURE__ */ new Map();
	var styleListeners = /* @__PURE__ */ new Set();
	var embeddedDocumentsStylesProvider = (0, _elementor_editor_styles_repository.createStylesProvider)({
		key: "embedded-documents-styles",
		priority: 75,
		subscribe: (cb) => {
			styleListeners.add(cb);
			return () => {
				styleListeners.delete(cb);
			};
		},
		actions: {
			all: () => styles,
			get: (id) => styles.find((style) => style.id === id) ?? null
		}
	});
	function notifyStyleListeners() {
		styleListeners.forEach((cb) => cb());
	}
	function addEmbeddedDocumentStyles(documentId, document) {
		const extracted = extractStylesFromDocument(document);
		if (!extracted.length) {
			if (!documentStyles.has(documentId)) return;
			documentStyles.delete(documentId);
		} else documentStyles.set(documentId, extracted);
		styles = [...documentStyles.values()].flat();
		notifyStyleListeners();
	}
	function clearEmbeddedDocumentsStyles() {
		documentStyles = /* @__PURE__ */ new Map();
		styles = [];
		notifyStyleListeners();
	}
	function extractStylesFromDocument(document) {
		if (!document.elements?.length) return [];
		return document.elements.flatMap(extractStylesFromElement);
	}
	function extractStylesFromElement(element) {
		return [...Object.values(element.styles ?? {}), ...(element.elements ?? []).flatMap(extractStylesFromElement)];
	}

//#endregion
//#region packages/packages/core/editor-embedded-documents-manager/src/manager.ts
	var pendingIds = /* @__PURE__ */ new Set();
	var loadedDocuments = /* @__PURE__ */ new Map();
	var listeners = /* @__PURE__ */ new Set();
	var currentDocumentId = null;
	function setCurrentDocumentId(id) {
		currentDocumentId = id;
	}
	function addDocuments(ids) {
		const newIds = ids.filter((id) => !isCurrentDocument(id) && !pendingIds.has(id) && !loadedDocuments.has(id));
		newIds.forEach((id) => pendingIds.add(id));
		if (!newIds.length) return;
		fetchAndNotify(newIds);
	}
	function setDocument(documentId, data) {
		if (isCurrentDocument(documentId)) return;
		const isNew = !loadedDocuments.has(documentId);
		loadedDocuments.set(documentId, data);
		if (isNew) notifyListeners(documentId, data);
		else addEmbeddedDocumentStyles(documentId, data);
	}
	function onDocumentLoad(callback) {
		listeners.add(callback);
		Promise.resolve().then(() => {
			if (!listeners.has(callback)) return;
			loadedDocuments.forEach((data, documentId) => {
				if (!isCurrentDocument(documentId)) callback(documentId, data);
			});
		});
		return () => {
			listeners.delete(callback);
		};
	}
	function reset() {
		pendingIds.clear();
		loadedDocuments.clear();
		clearEmbeddedDocumentsStyles();
	}
	var embeddedDocumentsManager = {
		addDocuments,
		setDocument,
		onDocumentLoad,
		reset
	};
	function isCurrentDocument(documentId) {
		return currentDocumentId !== null && documentId === currentDocumentId;
	}
	async function fetchAndNotify(ids) {
		(await Promise.all(ids.map(fetchDocument))).forEach((result, index) => {
			const id = ids[index];
			if (!pendingIds.has(id)) return;
			pendingIds.delete(id);
			if (!result || isCurrentDocument(id)) return;
			const { data } = result;
			loadedDocuments.set(id, data);
			notifyListeners(id, data);
		});
	}
	async function fetchDocument(id) {
		try {
			return {
				id,
				data: await _elementor_editor_v1_adapters.ajax.load({
					data: { id },
					action: "get_document_config",
					unique_id: `embedded-document-${id}`
				})
			};
		} catch {
			return null;
		}
	}
	function notifyListeners(documentId, data) {
		if (isCurrentDocument(documentId)) return;
		listeners.forEach((cb) => cb(documentId, data));
		addEmbeddedDocumentStyles(documentId, data);
	}

//#endregion
//#region packages/packages/core/editor-embedded-documents-manager/src/init.ts
	function init() {
		_elementor_editor_styles_repository.stylesRepository.register(embeddedDocumentsStylesProvider);
		(0, _elementor_editor_v1_adapters.registerDataHook)("after", "editor/documents/attach-preview", () => {
			const { id } = (0, _elementor_editor_documents.getV1CurrentDocument)() ?? {};
			setCurrentDocumentId(id ?? null);
			embeddedDocumentsManager.reset();
		});
	}

//#endregion
//#region packages/packages/core/editor-embedded-documents-manager/src/index.ts
	var src_exports = /* @__PURE__ */ __exportAll({
		embeddedDocumentsManager: () => embeddedDocumentsManager,
		init: () => init,
		setCurrentDocumentId: () => setCurrentDocumentId
	});

//#endregion
//#region \0elementor-package-library-entry
	(window.elementorV2 = window.elementorV2 || {}).editorEmbeddedDocumentsManager = src_exports;

//#endregion
})(elementorV2.editorDocuments, elementorV2.editorStylesRepository, elementorV2.editorV1Adapters);
window.elementorV2.editorEmbeddedDocumentsManager?.init?.();
//# sourceMappingURL=editor-embedded-documents-manager.js.map
```
