{ "version": 3, "sources": ["../../../javascript/embed/embed_ready_state.js"], "sourcesContent": ["const getDimensions = () => ({\n width: document.documentElement.scrollWidth,\n height: document.documentElement.scrollHeight\n})\n\nclass EmbedReadyState {\n constructor(element, identifierAttribute1) {\n this.updateDimensions = this.updateDimensions.bind(this)\n this.element = element\n this.identifierAttribute = identifierAttribute1\n this.startDimensionObserver()\n }\n\n ready() {\n clearTimeout(this.readyTimeout)\n cancelAnimationFrame(this.readyFrame)\n\n this.readyTimeout = setTimeout(() => {\n this.readyFrame = requestAnimationFrame(() => {\n this.postMessageToParentWindow()\n this.element.classList.add(\"embed_content--ready\")\n })\n }, 300)\n }\n\n failed() {\n this.stopDimensionObserver()\n this.updateDimensions()\n return this.ready()\n }\n\n // Private\n\n startDimensionObserver() {\n if (!this.observer) {\n this.observer = createDimensionObserver(this.updateDimensions)\n }\n return this.observer\n }\n\n stopDimensionObserver() {\n this.observer?.disconnect()\n this.observer = null\n }\n\n getDimensions() {\n return this.dimensions != null ? this.dimensions : getDimensions()\n }\n\n updateDimensions(dimensions) {\n if (dimensions == null) { dimensions = getDimensions() }\n if (dimensions.height > 0) {\n if (!dimensionsAreEqual(this.dimensions, dimensions)) {\n this.dimensions = dimensions\n if (document.readyState === \"complete\") { return this.ready() }\n }\n }\n }\n\n postMessageToParentWindow() {\n const message = this.getMessage()\n return parent.postMessage(message, \"*\")\n }\n\n getMessage() {\n return {\n identifier: this.getIdentifier(),\n dimensions: this.getDimensions()\n }\n }\n\n getIdentifier() {\n return this.element.getAttribute(this.identifierAttribute)\n }\n}\n\nconst dimensionsAreEqual = (a, b) => (a != null) && (b != null) && (a.width === b.width) && (a.height === b.height)\n\nconst createDimensionObserver = (function() {\n if (typeof ResizeObserver !== \"undefined\" && ResizeObserver !== null) {\n return function(callback) {\n const processEntries = function(entries) {\n const lastEntry = entries[entries.length - 1]\n let {width, height} = lastEntry.contentRect\n width = Math.round(width)\n height = Math.round(height)\n return callback({width, height})\n }\n\n const observer = new ResizeObserver(processEntries)\n observer.observe(document.documentElement)\n return observer\n }\n } else {\n let dimensions = null\n return function(callback) {\n const update = function() {\n const newDimensions = getDimensions()\n if (!dimensionsAreEqual(dimensions, newDimensions)) {\n dimensions = newDimensions\n return callback(dimensions)\n }\n }\n\n requestAnimationFrame(update)\n const observer = new MutationObserver(update)\n observer.observe(document.documentElement, {attributes: true, childList: true, characterData: true, subtree: true})\n return observer\n }\n }\n})()\n\n\nconst identifierAttribute = \"data-window-identifier\"\nlet embedReadyState = null\nlet failed = false\n\nconst start = function() {\n const element = document.querySelector(`[${identifierAttribute}]`)\n embedReadyState = new EmbedReadyState(element, identifierAttribute)\n if (failed) { return embedReadyState.failed() }\n}\n\naddEventListener(\"error\", function(event) {\n embedReadyState?.failed()\n failed = true\n}, true)\n\naddEventListener(\"load\", event => requestAnimationFrame(() => embedReadyState?.ready()), true)\n\nif (document.readyState === \"loading\") {\n addEventListener(\"DOMContentLoaded\", start)\n} else {\n start()\n}\n"], "mappings": "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", "names": ["getDimensions", "EmbedReadyState", "element", "identifierAttribute1", "createDimensionObserver", "_a", "dimensions", "dimensionsAreEqual", "message", "a", "b", "callback", "processEntries", "entries", "lastEntry", "width", "height", "observer", "update", "newDimensions", "identifierAttribute", "embedReadyState", "failed", "start", "event"] }