{"version":3,"file":"headless-5809d8e8.js","sources":["../../../clientside/build/utils/promise.js","../../../clientside/build/components/FEAASElement.js","../../../clientside/build/components/FEAASReactElement.js","../../../clientside/node_modules/jsonpath-plus/dist/index-browser-esm.js","../../../clientside/build/utils/data.js","../../../clientside/build/dom/html.js","../../../clientside/build/dom/scripts.js","../../../clientside/build/utils/datapath.js","../../../clientside/build/utils/date.js","../../../clientside/build/dom/rendering.js","../../../clientside/build/fetch.js","../../../clientside/build/cdn.js","../../../clientside/build/dom/stylesheet.js","../../../clientside/build/dom/component.js","../../../clientside/build/utils/settings.js","../../../clientside/build/components/FEAASComponent.js","../../../clientside/build/components/FEAASLoader.js","../../../clientside/build/components/FEAASStylesheet.js","../../../clientside/build/dom/thumbnail.js","../../../clientside/build/headless.js"],"sourcesContent":["/**\n * ControlledPromise is a function that returns a promise with additional methods for resolve, reject, restart, and\n * first. This allows more granular control over the promise resolution process. It also avoids unhandled rejections by\n * catching any errors and passing them to the onFailure callback.\n *\n * @example\n * const promise = ControlledPromise(\n * (result) => console.log(result),\n * (error) => console.error(error)\n * )\n * promise.resolve('Success') // logs: \"Success\"\n * promise.reject(new Error('Failure')) // logs: Error: Failure\n *\n * @template T The type of value that the promise will resolve with.\n * @param {(result: T) => void} [onSuccess] - A callback function that is called when the promise is successfully\n * resolved. The resolved value is passed to this function.\n * @param {(e: Error) => void} [onFailure=(e: Error) => {}] - A callback function that is called when the promise is\n * rejected. The Error object is passed to this function. Default is `(e: Error) => {}`\n * @returns {ControlledPromise} A ControlledPromise object with the following properties:\n *\n * - Resolve: A function that when called, will resolve the promise.\n * - Reject: A function that when called, will reject the promise with the provided error.\n * - Restart: A function that when called, will restart the promise. This creates a new promise and replaces the current\n * promise with the new one.\n * - First: The first promise that was created by the restart function. This property is initially undefined, and is set\n * when the restart function is called for the first time.\n */\nexport function ControlledPromise(onSuccess, onFailure = (e) => { }) {\n var first;\n const restart = () => {\n var resolve;\n var reject;\n const promise = new Promise((success, failure) => {\n resolve = (value) => {\n onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(value);\n success(value);\n };\n reject = failure;\n });\n var controlled = Object.assign(promise, {\n resolve,\n reject,\n restart,\n first\n });\n first = controlled;\n // Avoid unhandled rejection\n controlled.catch(onFailure);\n return controlled;\n };\n return restart();\n}\n//# sourceMappingURL=promise.js.map","import { ControlledPromise } from '../utils/promise.js';\n// Shim in case it's required in node.js environment\nvar WebComponent = typeof HTMLElement == 'undefined'\n ? // @ts-ignore\n typeof windowJSDOM != 'undefined'\n ? // @ts-ignore\n windowJSDOM.HTMLElement\n : class {\n }\n : HTMLElement;\n/**\n * FEAASElement is a superclass for FEAAS components with optional react support.\n *\n * Initialization lifecycle:\n *\n * - `set(props)`\n * - `scheduleRender()` - any attribute change causes render to schedule to next frame\n * - `whenRendered.restart()` - rendering promise is reset and will resolve after render\n * - `advance()` - called on next frame\n * - `if (isReadyToLoad()) => boolean` - check if component has all necessary properties to load\n * - `load() => payload` => component is loaded\n * - `onLoad?(payload)` => invoke loaded callback\n * - `advance()` => going further in state machine\n * - `flush()` => flushes all react changes if needed\n * - `update()` => component-specific method (or react) to render changes to dom\n * - `render(payload, props)` => render means react\n * - `whenRendered.resolve()` - rendering promise is resolved after rendering\n * - `whenLoaded.resolved()` - resolved after loading and rendering\n */\nexport class FEAASElement extends WebComponent {\n /** Return attributes as parsed values */\n getProps(context) {\n return {};\n }\n constructor() {\n super();\n this.defaultProps = {};\n /** Is/was component in the dom? */\n this.connected = false;\n this.refs = {};\n this.descendants = [];\n this.whenLoaded = ControlledPromise((payload) => {\n this.payload = payload;\n });\n this.whenRendered = ControlledPromise(() => (this.initialized = true), () => this.cancelRender());\n this.addEventListener('feaasMount', this);\n this.addEventListener('feaasUnmount', this);\n }\n /** Attaches shadow root if getShadowRootOptions any settings, or uses element itself */\n getRoot() {\n return this;\n }\n /** Attribute changes trigger props parsing and schedules re-rendering */\n attributeChangedCallback(name, oldValue, newValue) {\n this.set();\n }\n /** Components parses its attributes when connected, and schedules rendeirng */\n connectedCallback() {\n this.mount();\n }\n disconnectedCallback() {\n this.unmount();\n }\n /**\n * Web components are initialized depth-first, making child elements render before its parents. This could here\n * attempts to avoid this and inverts the initialization logic, so that children are initialized in the context of its\n * already-initialized parents.\n *\n * FEAAS components dispatch `feaasMount` event that allows components to store references to each other. In addition\n * it allows external scripts to listen for initialization of FEAAS components\n */\n mount() {\n try {\n const parent = this.getParent();\n // Allow parent component to initialize first\n if (parent && !parent.connected)\n return;\n if (this.connected)\n return;\n this.connected = true;\n this.log('FEAAS: Mount', this.tagName, this);\n this.dispatchEventIndirectly(new Event('feaasMount', { bubbles: true, composed: true }));\n this.getElements().map((element) => { var _a; return (_a = element.mount) === null || _a === void 0 ? void 0 : _a.call(element); });\n this.set();\n }\n catch (e) {\n this.onError(e);\n }\n }\n dispatchEventIndirectly(event) {\n this.dispatchEvent(event);\n const parent = this.getParent();\n if (parent && !parent.contains(this)) {\n Object.defineProperty(event, 'target', { value: this, writable: false });\n Object.defineProperty(event, 'composedPath', { value: () => [this], writable: false });\n parent.handleEvent(event);\n }\n }\n isJSONAttribute(attribute) {\n return false;\n }\n log(...args) {\n const format = args[0];\n if ((typeof location != 'undefined' && (location === null || location === void 0 ? void 0 : location.hostname.startsWith('components-'))) ||\n localStorage['Sitecore.Components.Debug'])\n console.log(format +\n ' ' +\n args\n .slice(1)\n .map((arg) => {\n return arg && typeof arg == 'object' ? '%O' : '%s';\n })\n .join(' '), ...args.slice(1));\n }\n /** Nothing special happens on unmount, except setting a flag */\n unmount() {\n if (!this.connected)\n return;\n this.log('FEAAS: Unmount', this);\n this.dispatchEventIndirectly(new Event('feaasUnmount', { bubbles: true, composed: true }));\n // If a component is react component, we need to re-render tree so that React can unmount it from VDOM\n // so observers can be removed\n if (this.connected && this.initialized && this.render) {\n this.update();\n }\n this.cancelRender();\n this.connected = false;\n // If a component is react component, we need to re-render tree so that React can unmount\n // it from VDOM, removing the observers\n if (this.initialized && this.render) {\n this.update();\n }\n }\n getParent(onlyFeaas = true) {\n for (var p = this; (p = p.parentElement || (p.parentNode instanceof ShadowRoot ? p.parentNode.host : null));) {\n if (!onlyFeaas || p.tagName.startsWith('FEAAS-'))\n return p;\n }\n // feaas context anywhere in the dom acts as a root element\n if (this.tagName != 'FEAAS-CONTEXT')\n return document.querySelector('feaas-context');\n }\n getElements(root = this.getRoot(), onlyFeaas = true) {\n return Array.from(root.querySelectorAll('*'))\n .map((el) => [\n !onlyFeaas || el.tagName.startsWith('FEAAS-') ? el : null,\n el.shadowRoot ? this.getElements(el.shadowRoot, onlyFeaas) : null\n ])\n .flat()\n .filter(Boolean);\n }\n /** Catch-all event handler that dispatches events to callback */\n handleEvent(event) {\n const target = event.composedPath()[0];\n switch (event.type) {\n case 'feaasMount':\n if (target != this)\n this.nestedCallback(target);\n break;\n case 'feaasUnmount':\n if (target != this)\n this.unnestedCallback(target);\n break;\n }\n }\n /** Act on children element being removed */\n unnestedCallback(target) {\n const index = this.descendants.indexOf(target);\n if (index == -1)\n return;\n this.log('FEAAS: Unnest', this, target);\n this.descendants.splice(index, 1);\n this.refs[target.getComponentName()] = null;\n if (target.refs.parent == this)\n target.refs.parent = null;\n if (target.refs.top == this) {\n target.refs.top = target.refs.parent;\n }\n }\n /** Act on children element being added */\n nestedCallback(target) {\n var _a, _b;\n const index = this.descendants.indexOf(target);\n if (index != -1)\n return;\n this.descendants.push(target);\n this.log('FEAAS: Nest', this, target);\n this.refs[target.getComponentName()] = target;\n target.refs.top = this;\n (_a = target.refs).parent || (_a.parent = this);\n if (target.render) {\n for (var p = target.refs.parent; p; p = p.refs.parent) {\n if (p.render) {\n (_b = target.refs).parentReact || (_b.parentReact = p);\n target.refs.topReact = p;\n }\n }\n }\n }\n getComponentName() {\n return this.tagName.replace('FEAAS-', '').toLowerCase();\n }\n /**\n * Check if lazy component is ready to be loaded. For example a component may stay unloaded unless certain attributes\n * are set\n */\n isReadyToLoad() {\n return this.payload === undefined && this.getAttribute('hidden') == null;\n }\n /** Generic error handler */\n onError(error, where = 'uncaught', handled = false) {\n const event = new CustomEvent('feaasError', { bubbles: true, composed: true, detail: error });\n this.dispatchEventIndirectly(event);\n this.whenLoaded.reject(error);\n if (!event.defaultPrevented && !handled) {\n this.whenRendered.reject(error);\n try {\n this.unmount();\n }\n catch (e) { }\n return true;\n }\n return false;\n }\n shouldUpdateOnLoad() {\n return true;\n }\n /** Load lazy component & render */\n async advance() {\n try {\n if (this.payload === undefined) {\n if (!this.isReadyToLoad())\n return;\n this.payload = null;\n this.dispatchEventIndirectly(new Event('feaasLoad', { bubbles: true, composed: true }));\n const loaded = await this.load().catch((e) => {\n this.payload = undefined;\n throw e;\n });\n this.whenLoaded.resolve(loaded);\n // Allow component to handle the post-loading\n if (this.onLoad) {\n return;\n }\n }\n else if (this.payload == null) {\n return;\n }\n this.flush();\n this.whenRendered.resolve(this);\n }\n catch (e) {\n this.onError(e);\n }\n }\n flush() {\n var _a, _b;\n if (!this.connected)\n return;\n const flushSync = (_b = (_a = this.payload) === null || _a === void 0 ? void 0 : _a.ReactDOM) === null || _b === void 0 ? void 0 : _b.flushSync;\n if (flushSync) {\n flushSync(() => this.update());\n }\n else {\n this.update();\n }\n }\n /** Invoke preloading logic that needs to finish before component can render */\n load() {\n return Promise.resolve(null);\n }\n /**\n * Component-specific logic that updates the DOM. Default render implementation assume react rendering, in that case\n * the component needs to provide React & ReactDOM references in its payload. Web component redefine its render to not\n * use react at all\n */\n update() {\n var _a, _b, _c;\n //this.log('FEAAS: React', this.tagName, this.payload)\n if (this.payload == null)\n return;\n if (!this.render)\n return;\n const { React, ReactDOM, ReactDOMClient } = this.payload || {};\n if (!React)\n throw new Error(`${this.tagName}: React is not present in payload`);\n if (!ReactDOM)\n throw new Error(`${this.tagName}: ReactDOM is not present in payload`);\n if (this.getAttribute('hydrate') == 'false' && this.firstElementChild)\n return;\n if (!this.refs.topReact && !this.forceUpdateReact) {\n if (ReactDOMClient) {\n this.reactRoot || (this.reactRoot = ReactDOMClient.createRoot(this.getReactRootElement()));\n this.reactRoot.render(this.getReactElement());\n }\n else {\n ReactDOM.render(this.getReactElement(), this.getReactRootElement());\n }\n }\n else if (this.forceUpdateReact && this.connected) {\n (_a = this.forceUpdateReact) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n else {\n (_c = (_b = this.refs.topReact) === null || _b === void 0 ? void 0 : _b.forceUpdateReact) === null || _c === void 0 ? void 0 : _c.call(_b);\n }\n }\n invokeReactRendering() {\n const { React, ReactDOM } = this.payload || {};\n if (!this.connected)\n return null;\n const children = this.descendants\n .filter((r) => {\n return r.refs.parentReact == this && r.payload && r.connected;\n })\n .map((child, index) => {\n return this.getReactElement(child);\n });\n return this.render({ ...this.props, children }, this.payload);\n }\n getReactErrorBoundary(target = this, displayName = target.tagName) {\n if (this.reactErrorBoundary)\n return this.reactErrorBoundary;\n const { React, ReactDOM } = target.payload || {};\n return (this.reactErrorBoundary || (this.reactErrorBoundary = class FEAASErrorBoundary extends React.Component {\n constructor() {\n super(...arguments);\n this.state = {\n error: null\n };\n }\n static getDerivedStateFromError(error) {\n return { error: error };\n }\n componentDidCatch(error, errorInfo) {\n console.error(`FEAAS: ${target.tagName} Error:`, error, errorInfo);\n target.onError(error, 'react');\n //this.setState({ error: error })\n }\n render() {\n if (this.state.error) {\n // target.classList.add('feaas-error')\n return;\n //return

There seems to be a problem.

\n }\n //if (target.classList.contains('feaas-error')) target.classList.remove('feaas-error')\n return this.props.children;\n }\n }));\n }\n getReactElement(target = this, props) {\n const { React, ReactDOM } = target.payload || {};\n const ErrorBoundary = this.getReactErrorBoundary();\n const Wrapper = this.getReactWrapper(target);\n return (\n // @ts-ignore TS5 react types throws here\n React.createElement(ErrorBoundary, { key: target.tagName + '-' + target.getUID(), slot: target.getAttribute('slot') },\n React.createElement(Wrapper, null)));\n }\n getReactWrapper(target = this, displayName = target.tagName) {\n if (target.reactWrapper)\n return target.reactWrapper;\n const { React, ReactDOM } = target.payload || {};\n target.reactWrapper = (props) => {\n if (target.render) {\n const [value, forceUpdateReact] = React.useReducer((r) => r + 1, 0);\n target.forceUpdateReact = forceUpdateReact;\n return ReactDOM.createPortal(React.createElement(React.Fragment, null, target.invokeReactRendering()), target.getReactRootElement());\n }\n else {\n return target.update();\n }\n };\n Object.assign(target.reactWrapper, {\n key: target.tagName + '-' + target.getUID(),\n displayName: displayName\n });\n return target.reactWrapper;\n }\n getUID() {\n return (this.uid || (this.uid = String(Math.random())));\n }\n getShadowRoot() {\n if (!this.shadowRoot) {\n this.attachShadow({ mode: 'open' });\n }\n return this.shadowRoot;\n }\n getReactRootElement() {\n return this.useShadowRoot ? this.getShadowRoot() : this.getRoot();\n }\n /** Set props and return values on new next tick */\n set(overrides) {\n try {\n this.scheduleRender();\n this.overrides = {\n ...this.overrides,\n ...overrides\n };\n this.props = {\n ...this.getProps(),\n ...this.overrides\n };\n for (var property in this.props) {\n const isJSON = this.isJSONAttribute(property);\n const value = this.props[property];\n const valueAsString = isJSON ? JSON.stringify(value) : String(value);\n const defaultValue = this.defaultProps[property];\n const defaultValueAsString = isJSON ? JSON.stringify(defaultValue) : String(defaultValue);\n const attribute = property.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n const oldValue = this.getAttribute(attribute);\n try {\n var odlValueAsString = isJSON ? JSON.stringify(JSON.parse(oldValue)) : oldValue;\n }\n catch (e) {\n var odlValueAsString = null;\n }\n if (value == null || valueAsString === defaultValueAsString) {\n this.removeAttribute(attribute);\n }\n else if (typeof value == 'string' || typeof value == 'number' || typeof value == 'boolean' || isJSON) {\n if (odlValueAsString != valueAsString)\n this.setAttribute(attribute, valueAsString);\n }\n }\n }\n catch (e) {\n this.whenRendered.reject(e);\n this.onError(e, 'set');\n }\n return this;\n }\n import(path) {\n return import(/* @vite-ignore */ /* webpackIgnore: true */ path);\n }\n scheduleRender() {\n if (this.nextRender == null) {\n this.whenRendered = this.whenRendered.restart();\n }\n this.cancelRender();\n this.nextRender = requestAnimationFrame(() => {\n this.nextRender = null;\n this.advance().catch((e) => { });\n });\n }\n cancelRender() {\n cancelAnimationFrame(this.nextRender);\n }\n formatURL(src, hostname) {\n if (typeof src == 'string' && src.match(/^\\/[^\\/]/)) {\n return hostname + src;\n }\n else {\n return src;\n }\n }\n getContextAttribute(name, element = this) {\n for (var p = this; (p = p.parentElement || (p.parentNode instanceof ShadowRoot ? p.parentNode.host : null));) {\n if (p.getAttribute(name) != null)\n return p.getAttribute(name);\n }\n return this.getAttribute(name);\n }\n static register(tagName, win) {\n if (win == null)\n win = typeof window != 'undefined' ? window : null;\n if (win && !win.customElements.get(tagName)) {\n win.customElements.define(tagName, this);\n }\n }\n}\nexport { FEAASElement as Element };\nexport { WebComponent };\n//# sourceMappingURL=FEAASElement.js.map","import { FEAASElement } from './FEAASElement.js';\nexport default class FEAASReactElement extends FEAASElement {\n load() {\n return Promise.all([\n // @ts-ignore @webpack-ignore\n import('https://cdn.skypack.dev/react'),\n // @ts-ignore\n import('https://cdn.skypack.dev/react-dom')\n ]).then(([React, ReactDOM]) => {\n return { React, ReactDOM };\n });\n }\n render({}, { React }) {\n return React.createElement(React.Fragment, null);\n }\n}\nclass MyComponent extends FEAASReactElement {\n constructor() {\n super(...arguments);\n this.useShadowRoot = true;\n }\n // parse attributes from web component to react-ready form\n getProps() {\n return {\n counter: parseFloat(this.getAttribute('counter'))\n };\n }\n // First argument is props, second arguments is React stuff\n // Destructuring React is important for JSX to work\n render({ counter }, { React }) {\n const [updates, setUpdates] = React.useState(0);\n React.useEffect(() => {\n setUpdates((u) => u + 1);\n }, [counter]);\n return (React.createElement(React.Fragment, null,\n React.createElement(\"p\", null,\n \"Rendering attribute: \",\n counter),\n React.createElement(\"p\", null,\n \"Triggered updates: \",\n updates)));\n }\n}\n// will re-render component if any of these attributes have changed\nMyComponent.observedAttributes = ['counter'];\nexport { MyComponent };\n//# sourceMappingURL=FEAASReactElement.js.map","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function () {};\n\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (e) {\n throw e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = it.call(o);\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (e) {\n didErr = true;\n err = e;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nvar hasOwnProp = Object.prototype.hasOwnProperty;\n/**\n * @typedef {null|boolean|number|string|PlainObject|GenericArray} JSONObject\n */\n\n/**\n * @typedef {any} AnyItem\n */\n\n/**\n * @typedef {any} AnyResult\n */\n\n/**\n * Copies array and then pushes item into it.\n * @param {GenericArray} arr Array to copy and into which to push\n * @param {AnyItem} item Array item to add (to end)\n * @returns {GenericArray} Copy of the original array\n */\n\nfunction push(arr, item) {\n arr = arr.slice();\n arr.push(item);\n return arr;\n}\n/**\n * Copies array and then unshifts item into it.\n * @param {AnyItem} item Array item to add (to beginning)\n * @param {GenericArray} arr Array to copy and into which to unshift\n * @returns {GenericArray} Copy of the original array\n */\n\n\nfunction unshift(item, arr) {\n arr = arr.slice();\n arr.unshift(item);\n return arr;\n}\n/**\n * Caught when JSONPath is used without `new` but rethrown if with `new`\n * @extends Error\n */\n\n\nvar NewError = /*#__PURE__*/function (_Error) {\n _inherits(NewError, _Error);\n\n var _super = _createSuper(NewError);\n\n /**\n * @param {AnyResult} value The evaluated scalar value\n */\n function NewError(value) {\n var _this;\n\n _classCallCheck(this, NewError);\n\n _this = _super.call(this, 'JSONPath should not be called with \"new\" (it prevents return ' + 'of (unwrapped) scalar values)');\n _this.avoidNew = true;\n _this.value = value;\n _this.name = 'NewError';\n return _this;\n }\n\n return _createClass(NewError);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n/**\n* @typedef {PlainObject} ReturnObject\n* @property {string} path\n* @property {JSONObject} value\n* @property {PlainObject|GenericArray} parent\n* @property {string} parentProperty\n*/\n\n/**\n* @callback JSONPathCallback\n* @param {string|PlainObject} preferredOutput\n* @param {\"value\"|\"property\"} type\n* @param {ReturnObject} fullRetObj\n* @returns {void}\n*/\n\n/**\n* @callback OtherTypeCallback\n* @param {JSONObject} val\n* @param {string} path\n* @param {PlainObject|GenericArray} parent\n* @param {string} parentPropName\n* @returns {boolean}\n*/\n\n/* eslint-disable max-len -- Can make multiline type after https://github.com/syavorsky/comment-parser/issues/109 */\n\n/**\n * @typedef {PlainObject} JSONPathOptions\n * @property {JSON} json\n * @property {string|string[]} path\n * @property {\"value\"|\"path\"|\"pointer\"|\"parent\"|\"parentProperty\"|\"all\"} [resultType=\"value\"]\n * @property {boolean} [flatten=false]\n * @property {boolean} [wrap=true]\n * @property {PlainObject} [sandbox={}]\n * @property {boolean} [preventEval=false]\n * @property {PlainObject|GenericArray|null} [parent=null]\n * @property {string|null} [parentProperty=null]\n * @property {JSONPathCallback} [callback]\n * @property {OtherTypeCallback} [otherTypeCallback] Defaults to\n * function which throws on encountering `@other`\n * @property {boolean} [autostart=true]\n */\n\n/* eslint-enable max-len -- Can make multiline type after https://github.com/syavorsky/comment-parser/issues/109 */\n\n/**\n * @param {string|JSONPathOptions} opts If a string, will be treated as `expr`\n * @param {string} [expr] JSON path to evaluate\n * @param {JSON} [obj] JSON object to evaluate against\n * @param {JSONPathCallback} [callback] Passed 3 arguments: 1) desired payload\n * per `resultType`, 2) `\"value\"|\"property\"`, 3) Full returned object with\n * all payloads\n * @param {OtherTypeCallback} [otherTypeCallback] If `@other()` is at the end\n * of one's query, this will be invoked with the value of the item, its\n * path, its parent, and its parent's property name, and it should return\n * a boolean indicating whether the supplied value belongs to the \"other\"\n * type or not (or it may handle transformations and return `false`).\n * @returns {JSONPath}\n * @class\n */\n\n\nfunction JSONPath(opts, expr, obj, callback, otherTypeCallback) {\n // eslint-disable-next-line no-restricted-syntax\n if (!(this instanceof JSONPath)) {\n try {\n return new JSONPath(opts, expr, obj, callback, otherTypeCallback);\n } catch (e) {\n if (!e.avoidNew) {\n throw e;\n }\n\n return e.value;\n }\n }\n\n if (typeof opts === 'string') {\n otherTypeCallback = callback;\n callback = obj;\n obj = expr;\n expr = opts;\n opts = null;\n }\n\n var optObj = opts && _typeof(opts) === 'object';\n opts = opts || {};\n this.json = opts.json || obj;\n this.path = opts.path || expr;\n this.resultType = opts.resultType || 'value';\n this.flatten = opts.flatten || false;\n this.wrap = hasOwnProp.call(opts, 'wrap') ? opts.wrap : true;\n this.sandbox = opts.sandbox || {};\n this.preventEval = opts.preventEval || false;\n this.parent = opts.parent || null;\n this.parentProperty = opts.parentProperty || null;\n this.callback = opts.callback || callback || null;\n\n this.otherTypeCallback = opts.otherTypeCallback || otherTypeCallback || function () {\n throw new TypeError('You must supply an otherTypeCallback callback option ' + 'with the @other() operator.');\n };\n\n if (opts.autostart !== false) {\n var args = {\n path: optObj ? opts.path : expr\n };\n\n if (!optObj) {\n args.json = obj;\n } else if ('json' in opts) {\n args.json = opts.json;\n }\n\n var ret = this.evaluate(args);\n\n if (!ret || _typeof(ret) !== 'object') {\n throw new NewError(ret);\n }\n\n return ret;\n }\n} // PUBLIC METHODS\n\n\nJSONPath.prototype.evaluate = function (expr, json, callback, otherTypeCallback) {\n var _this2 = this;\n\n var currParent = this.parent,\n currParentProperty = this.parentProperty;\n var flatten = this.flatten,\n wrap = this.wrap;\n this.currResultType = this.resultType;\n this.currPreventEval = this.preventEval;\n this.currSandbox = this.sandbox;\n callback = callback || this.callback;\n this.currOtherTypeCallback = otherTypeCallback || this.otherTypeCallback;\n json = json || this.json;\n expr = expr || this.path;\n\n if (expr && _typeof(expr) === 'object' && !Array.isArray(expr)) {\n if (!expr.path && expr.path !== '') {\n throw new TypeError('You must supply a \"path\" property when providing an object ' + 'argument to JSONPath.evaluate().');\n }\n\n if (!hasOwnProp.call(expr, 'json')) {\n throw new TypeError('You must supply a \"json\" property when providing an object ' + 'argument to JSONPath.evaluate().');\n }\n\n var _expr = expr;\n json = _expr.json;\n flatten = hasOwnProp.call(expr, 'flatten') ? expr.flatten : flatten;\n this.currResultType = hasOwnProp.call(expr, 'resultType') ? expr.resultType : this.currResultType;\n this.currSandbox = hasOwnProp.call(expr, 'sandbox') ? expr.sandbox : this.currSandbox;\n wrap = hasOwnProp.call(expr, 'wrap') ? expr.wrap : wrap;\n this.currPreventEval = hasOwnProp.call(expr, 'preventEval') ? expr.preventEval : this.currPreventEval;\n callback = hasOwnProp.call(expr, 'callback') ? expr.callback : callback;\n this.currOtherTypeCallback = hasOwnProp.call(expr, 'otherTypeCallback') ? expr.otherTypeCallback : this.currOtherTypeCallback;\n currParent = hasOwnProp.call(expr, 'parent') ? expr.parent : currParent;\n currParentProperty = hasOwnProp.call(expr, 'parentProperty') ? expr.parentProperty : currParentProperty;\n expr = expr.path;\n }\n\n currParent = currParent || null;\n currParentProperty = currParentProperty || null;\n\n if (Array.isArray(expr)) {\n expr = JSONPath.toPathString(expr);\n }\n\n if (!expr && expr !== '' || !json) {\n return undefined;\n }\n\n var exprList = JSONPath.toPathArray(expr);\n\n if (exprList[0] === '$' && exprList.length > 1) {\n exprList.shift();\n }\n\n this._hasParentSelector = null;\n\n var result = this._trace(exprList, json, ['$'], currParent, currParentProperty, callback).filter(function (ea) {\n return ea && !ea.isParentSelector;\n });\n\n if (!result.length) {\n return wrap ? [] : undefined;\n }\n\n if (!wrap && result.length === 1 && !result[0].hasArrExpr) {\n return this._getPreferredOutput(result[0]);\n }\n\n return result.reduce(function (rslt, ea) {\n var valOrPath = _this2._getPreferredOutput(ea);\n\n if (flatten && Array.isArray(valOrPath)) {\n rslt = rslt.concat(valOrPath);\n } else {\n rslt.push(valOrPath);\n }\n\n return rslt;\n }, []);\n}; // PRIVATE METHODS\n\n\nJSONPath.prototype._getPreferredOutput = function (ea) {\n var resultType = this.currResultType;\n\n switch (resultType) {\n case 'all':\n {\n var path = Array.isArray(ea.path) ? ea.path : JSONPath.toPathArray(ea.path);\n ea.pointer = JSONPath.toPointer(path);\n ea.path = typeof ea.path === 'string' ? ea.path : JSONPath.toPathString(ea.path);\n return ea;\n }\n\n case 'value':\n case 'parent':\n case 'parentProperty':\n return ea[resultType];\n\n case 'path':\n return JSONPath.toPathString(ea[resultType]);\n\n case 'pointer':\n return JSONPath.toPointer(ea.path);\n\n default:\n throw new TypeError('Unknown result type');\n }\n};\n\nJSONPath.prototype._handleCallback = function (fullRetObj, callback, type) {\n if (callback) {\n var preferredOutput = this._getPreferredOutput(fullRetObj);\n\n fullRetObj.path = typeof fullRetObj.path === 'string' ? fullRetObj.path : JSONPath.toPathString(fullRetObj.path); // eslint-disable-next-line n/callback-return\n\n callback(preferredOutput, type, fullRetObj);\n }\n};\n/**\n *\n * @param {string} expr\n * @param {JSONObject} val\n * @param {string} path\n * @param {PlainObject|GenericArray} parent\n * @param {string} parentPropName\n * @param {JSONPathCallback} callback\n * @param {boolean} hasArrExpr\n * @param {boolean} literalPriority\n * @returns {ReturnObject|ReturnObject[]}\n */\n\n\nJSONPath.prototype._trace = function (expr, val, path, parent, parentPropName, callback, hasArrExpr, literalPriority) {\n var _this3 = this;\n\n // No expr to follow? return path and value as the result of\n // this trace branch\n var retObj;\n\n if (!expr.length) {\n retObj = {\n path: path,\n value: val,\n parent: parent,\n parentProperty: parentPropName,\n hasArrExpr: hasArrExpr\n };\n\n this._handleCallback(retObj, callback, 'value');\n\n return retObj;\n }\n\n var loc = expr[0],\n x = expr.slice(1); // We need to gather the return value of recursive trace calls in order to\n // do the parent sel computation.\n\n var ret = [];\n /**\n *\n * @param {ReturnObject|ReturnObject[]} elems\n * @returns {void}\n */\n\n function addRet(elems) {\n if (Array.isArray(elems)) {\n // This was causing excessive stack size in Node (with or\n // without Babel) against our performance test:\n // `ret.push(...elems);`\n elems.forEach(function (t) {\n ret.push(t);\n });\n } else {\n ret.push(elems);\n }\n }\n\n if ((typeof loc !== 'string' || literalPriority) && val && hasOwnProp.call(val, loc)) {\n // simple case--directly follow property\n addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr)); // eslint-disable-next-line unicorn/prefer-switch -- Part of larger `if`\n } else if (loc === '*') {\n // all child properties\n this._walk(val, function (m) {\n addRet(_this3._trace(x, val[m], push(path, m), val, m, callback, true, true));\n });\n } else if (loc === '..') {\n // all descendent parent properties\n // Check remaining expression with val's immediate children\n addRet(this._trace(x, val, path, parent, parentPropName, callback, hasArrExpr));\n\n this._walk(val, function (m) {\n // We don't join m and x here because we only want parents,\n // not scalar values\n if (_typeof(val[m]) === 'object') {\n // Keep going with recursive descent on val's\n // object children\n addRet(_this3._trace(expr.slice(), val[m], push(path, m), val, m, callback, true));\n }\n }); // The parent sel computation is handled in the frame above using the\n // ancestor object of val\n\n } else if (loc === '^') {\n // This is not a final endpoint, so we do not invoke the callback here\n this._hasParentSelector = true;\n return {\n path: path.slice(0, -1),\n expr: x,\n isParentSelector: true\n };\n } else if (loc === '~') {\n // property name\n retObj = {\n path: push(path, loc),\n value: parentPropName,\n parent: parent,\n parentProperty: null\n };\n\n this._handleCallback(retObj, callback, 'property');\n\n return retObj;\n } else if (loc === '$') {\n // root only\n addRet(this._trace(x, val, path, null, null, callback, hasArrExpr));\n } else if (/^(\\x2D?[0-9]*):(\\x2D?[0-9]*):?([0-9]*)$/.test(loc)) {\n // [start:end:step] Python slice syntax\n addRet(this._slice(loc, x, val, path, parent, parentPropName, callback));\n } else if (loc.indexOf('?(') === 0) {\n // [?(expr)] (filtering)\n if (this.currPreventEval) {\n throw new Error('Eval [?(expr)] prevented in JSONPath expression.');\n }\n\n var safeLoc = loc.replace(/^\\?\\(((?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*?)\\)$/, '$1');\n\n this._walk(val, function (m) {\n if (_this3._eval(safeLoc, val[m], m, path, parent, parentPropName)) {\n addRet(_this3._trace(x, val[m], push(path, m), val, m, callback, true));\n }\n });\n } else if (loc[0] === '(') {\n // [(expr)] (dynamic property/index)\n if (this.currPreventEval) {\n throw new Error('Eval [(expr)] prevented in JSONPath expression.');\n } // As this will resolve to a property name (but we don't know it\n // yet), property and parent information is relative to the\n // parent of the property to which this expression will resolve\n\n\n addRet(this._trace(unshift(this._eval(loc, val, path[path.length - 1], path.slice(0, -1), parent, parentPropName), x), val, path, parent, parentPropName, callback, hasArrExpr));\n } else if (loc[0] === '@') {\n // value type: @boolean(), etc.\n var addType = false;\n var valueType = loc.slice(1, -2);\n\n switch (valueType) {\n case 'scalar':\n if (!val || !['object', 'function'].includes(_typeof(val))) {\n addType = true;\n }\n\n break;\n\n case 'boolean':\n case 'string':\n case 'undefined':\n case 'function':\n // eslint-disable-next-line valid-typeof\n if (_typeof(val) === valueType) {\n addType = true;\n }\n\n break;\n\n case 'integer':\n if (Number.isFinite(val) && !(val % 1)) {\n addType = true;\n }\n\n break;\n\n case 'number':\n if (Number.isFinite(val)) {\n addType = true;\n }\n\n break;\n\n case 'nonFinite':\n if (typeof val === 'number' && !Number.isFinite(val)) {\n addType = true;\n }\n\n break;\n\n case 'object':\n // eslint-disable-next-line valid-typeof\n if (val && _typeof(val) === valueType) {\n addType = true;\n }\n\n break;\n\n case 'array':\n if (Array.isArray(val)) {\n addType = true;\n }\n\n break;\n\n case 'other':\n addType = this.currOtherTypeCallback(val, path, parent, parentPropName);\n break;\n\n case 'null':\n if (val === null) {\n addType = true;\n }\n\n break;\n\n /* c8 ignore next 2 */\n\n default:\n throw new TypeError('Unknown value type ' + valueType);\n }\n\n if (addType) {\n retObj = {\n path: path,\n value: val,\n parent: parent,\n parentProperty: parentPropName\n };\n\n this._handleCallback(retObj, callback, 'value');\n\n return retObj;\n } // `-escaped property\n\n } else if (loc[0] === '`' && val && hasOwnProp.call(val, loc.slice(1))) {\n var locProp = loc.slice(1);\n addRet(this._trace(x, val[locProp], push(path, locProp), val, locProp, callback, hasArrExpr, true));\n } else if (loc.includes(',')) {\n // [name1,name2,...]\n var parts = loc.split(',');\n\n var _iterator = _createForOfIteratorHelper(parts),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var part = _step.value;\n addRet(this._trace(unshift(part, x), val, path, parent, parentPropName, callback, true));\n } // simple case--directly follow property\n\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else if (!literalPriority && val && hasOwnProp.call(val, loc)) {\n addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr, true));\n } // We check the resulting values for parent selections. For parent\n // selections we discard the value object and continue the trace with the\n // current val object\n\n\n if (this._hasParentSelector) {\n for (var t = 0; t < ret.length; t++) {\n var rett = ret[t];\n\n if (rett && rett.isParentSelector) {\n var tmp = this._trace(rett.expr, val, rett.path, parent, parentPropName, callback, hasArrExpr);\n\n if (Array.isArray(tmp)) {\n ret[t] = tmp[0];\n var tl = tmp.length;\n\n for (var tt = 1; tt < tl; tt++) {\n t++;\n ret.splice(t, 0, tmp[tt]);\n }\n } else {\n ret[t] = tmp;\n }\n }\n }\n }\n\n return ret;\n};\n\nJSONPath.prototype._walk = function (val, f) {\n if (Array.isArray(val)) {\n var n = val.length;\n\n for (var i = 0; i < n; i++) {\n f(i);\n }\n } else if (val && _typeof(val) === 'object') {\n Object.keys(val).forEach(function (m) {\n f(m);\n });\n }\n};\n\nJSONPath.prototype._slice = function (loc, expr, val, path, parent, parentPropName, callback) {\n if (!Array.isArray(val)) {\n return undefined;\n }\n\n var len = val.length,\n parts = loc.split(':'),\n step = parts[2] && Number.parseInt(parts[2]) || 1;\n var start = parts[0] && Number.parseInt(parts[0]) || 0,\n end = parts[1] && Number.parseInt(parts[1]) || len;\n start = start < 0 ? Math.max(0, start + len) : Math.min(len, start);\n end = end < 0 ? Math.max(0, end + len) : Math.min(len, end);\n var ret = [];\n\n for (var i = start; i < end; i += step) {\n var tmp = this._trace(unshift(i, expr), val, path, parent, parentPropName, callback, true); // Should only be possible to be an array here since first part of\n // ``unshift(i, expr)` passed in above would not be empty, nor `~`,\n // nor begin with `@` (as could return objects)\n // This was causing excessive stack size in Node (with or\n // without Babel) against our performance test: `ret.push(...tmp);`\n\n\n tmp.forEach(function (t) {\n ret.push(t);\n });\n }\n\n return ret;\n};\n\nJSONPath.prototype._eval = function (code, _v, _vname, path, parent, parentPropName) {\n this.currSandbox._$_parentProperty = parentPropName;\n this.currSandbox._$_parent = parent;\n this.currSandbox._$_property = _vname;\n this.currSandbox._$_root = this.json;\n this.currSandbox._$_v = _v;\n var containsPath = code.includes('@path');\n\n if (containsPath) {\n this.currSandbox._$_path = JSONPath.toPathString(path.concat([_vname]));\n }\n\n var scriptCacheKey = 'script:' + code;\n\n if (!JSONPath.cache[scriptCacheKey]) {\n var script = code.replace(/@parentProperty/g, '_$_parentProperty').replace(/@parent/g, '_$_parent').replace(/@property/g, '_$_property').replace(/@root/g, '_$_root').replace(/@([\\t-\\r \\)\\.\\[\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF])/g, '_$_v$1');\n\n if (containsPath) {\n script = script.replace(/@path/g, '_$_path');\n }\n\n JSONPath.cache[scriptCacheKey] = new this.vm.Script(script);\n }\n\n try {\n return JSONPath.cache[scriptCacheKey].runInNewContext(this.currSandbox);\n } catch (e) {\n throw new Error('jsonPath: ' + e.message + ': ' + code);\n }\n}; // PUBLIC CLASS PROPERTIES AND METHODS\n// Could store the cache object itself\n\n\nJSONPath.cache = {};\n/**\n * @param {string[]} pathArr Array to convert\n * @returns {string} The path string\n */\n\nJSONPath.toPathString = function (pathArr) {\n var x = pathArr,\n n = x.length;\n var p = '$';\n\n for (var i = 1; i < n; i++) {\n if (!/^(~|\\^|@(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*?\\(\\))$/.test(x[i])) {\n p += /^[\\*0-9]+$/.test(x[i]) ? '[' + x[i] + ']' : \"['\" + x[i] + \"']\";\n }\n }\n\n return p;\n};\n/**\n * @param {string} pointer JSON Path\n * @returns {string} JSON Pointer\n */\n\n\nJSONPath.toPointer = function (pointer) {\n var x = pointer,\n n = x.length;\n var p = '';\n\n for (var i = 1; i < n; i++) {\n if (!/^(~|\\^|@(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*?\\(\\))$/.test(x[i])) {\n p += '/' + x[i].toString().replace(/~/g, '~0').replace(/\\//g, '~1');\n }\n }\n\n return p;\n};\n/**\n * @param {string} expr Expression to convert\n * @returns {string[]}\n */\n\n\nJSONPath.toPathArray = function (expr) {\n var cache = JSONPath.cache;\n\n if (cache[expr]) {\n return cache[expr].concat();\n }\n\n var subx = [];\n var normalized = expr // Properties\n .replace(/@(?:null|boolean|number|string|integer|undefined|nonFinite|scalar|array|object|function|other)\\(\\)/g, ';$&;') // Parenthetical evaluations (filtering and otherwise), directly\n // within brackets or single quotes\n .replace(/['\\[](\\??\\((?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*?\\))['\\]]/g, function ($0, $1) {\n return '[#' + (subx.push($1) - 1) + ']';\n }) // Escape periods and tildes within properties\n .replace(/\\[[\"']((?:(?!['\\]])[\\s\\S])*)[\"']\\]/g, function ($0, prop) {\n return \"['\" + prop.replace(/\\./g, '%@%').replace(/~/g, '%%@@%%') + \"']\";\n }) // Properties operator\n .replace(/~/g, ';~;') // Split by property boundaries\n .replace(/[\"']?\\.[\"']?(?!(?:(?!\\[)[\\s\\S])*\\])|\\[[\"']?/g, ';') // Reinsert periods within properties\n .replace(/%@%/g, '.') // Reinsert tildes within properties\n .replace(/%%@@%%/g, '~') // Parent\n .replace(/(?:;)?(\\^+)(?:;)?/g, function ($0, ups) {\n return ';' + ups.split('').join(';') + ';';\n }) // Descendents\n .replace(/;;;|;;/g, ';..;') // Remove trailing\n .replace(/;$|'?\\]|'$/g, '');\n var exprList = normalized.split(';').map(function (exp) {\n var match = exp.match(/#([0-9]+)/);\n return !match || !match[1] ? exp : subx[match[1]];\n });\n cache[expr] = exprList;\n return cache[expr].concat();\n};\n\n/**\n * @typedef {any} ContextItem\n */\n\n/**\n * @typedef {any} EvaluatedResult\n */\n\n/**\n * @callback ConditionCallback\n * @param {ContextItem} item\n * @returns {boolean}\n */\n\n/**\n * Copy items out of one array into another.\n * @param {GenericArray} source Array with items to copy\n * @param {GenericArray} target Array to which to copy\n * @param {ConditionCallback} conditionCb Callback passed the current item;\n * will move item if evaluates to `true`\n * @returns {void}\n */\n\nvar moveToAnotherArray = function moveToAnotherArray(source, target, conditionCb) {\n var il = source.length;\n\n for (var i = 0; i < il; i++) {\n var item = source[i];\n\n if (conditionCb(item)) {\n target.push(source.splice(i--, 1)[0]);\n }\n }\n};\n/**\n * In-browser replacement for NodeJS' VM.Script.\n */\n\n\nvar Script = /*#__PURE__*/function () {\n /**\n * @param {string} expr Expression to evaluate\n */\n function Script(expr) {\n _classCallCheck(this, Script);\n\n this.code = expr;\n }\n /**\n * @param {PlainObject} context Object whose items will be added\n * to evaluation\n * @returns {EvaluatedResult} Result of evaluated code\n */\n\n\n _createClass(Script, [{\n key: \"runInNewContext\",\n value: function runInNewContext(context) {\n var expr = this.code;\n var keys = Object.keys(context);\n var funcs = [];\n moveToAnotherArray(keys, funcs, function (key) {\n return typeof context[key] === 'function';\n });\n var values = keys.map(function (vr, i) {\n return context[vr];\n });\n var funcString = funcs.reduce(function (s, func) {\n var fString = context[func].toString();\n\n if (!/function/.test(fString)) {\n fString = 'function ' + fString;\n }\n\n return 'var ' + func + '=' + fString + ';' + s;\n }, '');\n expr = funcString + expr; // Mitigate http://perfectionkills.com/global-eval-what-are-the-options/#new_function\n\n if (!/([\"'])use strict\\1/.test(expr) && !keys.includes('arguments')) {\n expr = 'var arguments = undefined;' + expr;\n } // Remove last semi so `return` will be inserted before\n // the previous one instead, allowing for the return\n // of a bare ending expression\n\n\n expr = expr.replace(/;[\\t-\\r \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF]*$/, ''); // Insert `return`\n\n var lastStatementEnd = expr.lastIndexOf(';');\n var code = lastStatementEnd > -1 ? expr.slice(0, lastStatementEnd + 1) + ' return ' + expr.slice(lastStatementEnd + 1) : ' return ' + expr; // eslint-disable-next-line no-new-func\n\n return _construct(Function, keys.concat([code])).apply(void 0, _toConsumableArray(values));\n }\n }]);\n\n return Script;\n}();\n\nJSONPath.prototype.vm = {\n Script: Script\n};\n\nexport { JSONPath };\n","import { JSONPath } from 'jsonpath-plus';\nexport function queryObjectRaw(json, path) {\n try {\n return JSONPath({ path, json });\n }\n catch (e) {\n return [];\n }\n}\nexport function queryObject(json, path, flatten = true) {\n const data = queryObjectRaw(json, path) || [];\n if (flatten) {\n return data.flat(Infinity);\n }\n return data;\n}\nexport function queryScopes(scopes, datapath, singleValue = false, json = scopes, flatten = true) {\n var path = datapath;\n /* find closest parent scope */\n const keys = Object.keys(scopes).sort((b, a) => a.length - b.length);\n for (const scope of keys) {\n if (datapath.startsWith(scope) && 'ends with it') {\n if (scope == datapath) {\n if (singleValue) {\n return scopes[scope];\n }\n else {\n continue;\n }\n }\n path = datapath.substring(scope.length + 1);\n json = scopes[scope];\n break;\n }\n }\n var collection = queryObject(json, path, flatten);\n // If regular path didn't match any data, try fallbacks\n // datasourceId.wrapper.$.path\n if (collection.length == 0) {\n collection = [\n // look up in `_` datasource id (catch-all id is used in JSS)\n // _.wrapper.$.path\n path.replace(/^.*?\\./, '_.'),\n // look up directly on data root\n // wrapper.$.path\n path.replace(/^.*?\\./, ''),\n // look up trimmed path in datasource\n // datasourceId.path\n path.replace(/^([^.]+).*?\\.\\$([\\.\\[])/, '$1$2'),\n // look up trimmed path in catch all datasource\n // _.path\n path.replace(/^.*?\\.\\$([\\.\\[])/, '_$1'),\n // look up trimmed path on root\n // path\n path.replace(/^.*?\\.\\$([\\.\\[])/, '$$$1'),\n // for case of top-level object data mapping full path can be replaced to _\n path.replace(/^[^.]+$/, '_')\n ]\n .filter((v, i, a) => a.indexOf(v) === i)\n .reduce((v, path) => {\n return v.length > 0 ? v : queryObject(json, path, flatten);\n }, []);\n }\n if (singleValue) {\n return collection[0];\n }\n else {\n return collection;\n }\n}\nfunction serializeCH1Tag(data, attrs = {}, tag) {\n if (!tag)\n return serializeCH1RichText(data);\n return `<${tag}${Object.entries(attrs)\n .map(([k, v]) => v != null && ` ${k}=\"${v}\"`)\n .filter(Boolean)\n .join('')}>${serializeCH1RichText(data)}`.replace(/^<([a-z0-9][^>]*)><\\/[^>]+>$/, '<$1 />');\n}\nexport function serializeCH1RichText(data) {\n var _a;\n if (Array.isArray(data))\n return data.map(serializeCH1RichText).join('\\n').trim();\n if (typeof data == 'string')\n return data;\n if (data == null)\n return '';\n switch (data.type) {\n case 'heading':\n const { level, ...attrs } = data.attrs;\n return serializeCH1Tag(data.content, attrs, 'h' + level);\n case 'text':\n return (data.marks || []).reduce((text, mark) => {\n return serializeCH1Tag(text, mark.attrs, {\n link: 'a',\n bold: 'strong',\n italic: 'em',\n strike: 's',\n underline: 'u'\n }[mark.type]);\n }, (_a = data.text) === null || _a === void 0 ? void 0 : _a.replace(/\\s+/, ' '));\n default:\n return serializeCH1Tag(data.content || data.text, data.attrs, {\n bulletList: 'ul',\n orderedList: 'ol',\n listItem: 'li',\n horizontalRule: 'hr',\n paragraph: 'p',\n codeBlock: 'code',\n blockquote: 'blockquote'\n }[data.type]);\n }\n}\nexport { JSONPath };\n//# sourceMappingURL=data.js.map","/** Lightweight DOM parser and serializer to use in server environments */\nimport { renderDOMElement } from './rendering.js';\nexport class HTMLNode {\n constructor(nodeName, nodeType = 1, textContent) {\n this.ownerDocument = {\n createElement(name) {\n return new HTMLNode(name);\n },\n createDocumentFragment() {\n return new HTMLNode(null, 11);\n }\n };\n this.nodeName = nodeName;\n this.nodeType = nodeType;\n this.textContent = textContent;\n this.attributes = [];\n this.childNodes = [];\n }\n setAttribute(name, value) {\n const attr = this.attributes.find((attr) => attr.name === name);\n if (attr) {\n attr.value = value;\n }\n else {\n this.attributes.push({ name, value });\n }\n }\n getAttribute(name) {\n const attr = this.attributes.find((attr) => attr.name === name);\n return attr ? attr.value : undefined;\n }\n insertBefore(newNode, referenceNode) {\n newNode.parentNode = this;\n if (referenceNode === null) {\n this.childNodes.push(newNode);\n }\n else {\n const index = this.childNodes.indexOf(referenceNode);\n if (index !== -1) {\n this.childNodes.splice(index, 0, newNode);\n }\n }\n }\n removeAttribute(attrName) {\n const index = this.attributes.findIndex((attr) => attr.name === attrName);\n if (index !== -1) {\n this.attributes.splice(index, 1);\n }\n }\n appendChild(newNode) {\n newNode.parentNode = this;\n this.childNodes.push(newNode);\n }\n get tagName() {\n var _a;\n return (_a = this.nodeName) === null || _a === void 0 ? void 0 : _a.toUpperCase();\n }\n get localName() {\n var _a;\n return (_a = this.nodeName) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n }\n get innerHTML() {\n return serializeHTML(this.childNodes);\n }\n set innerHTML(html) {\n this.childNodes = parseHTML(String(html !== null && html !== void 0 ? html : ''));\n }\n get outerHTML() {\n return serializeHTML([this]);\n }\n get children() {\n return this.childNodes.filter((c) => c.nodeType == 1);\n }\n closest(selector) {\n let currentNode = this;\n while (currentNode) {\n if (selectorMatchesNode(selector, currentNode)) {\n return currentNode;\n }\n currentNode = currentNode.parentNode;\n }\n return null;\n }\n querySelectorAll(selector) {\n const selectors = selector.split(/\\s*,\\s*/);\n const results = [];\n const checkNode = (node) => {\n for (const sel of selectors) {\n if (selectorMatchesNode(sel, node)) {\n results.push(node);\n break;\n }\n }\n for (const child of node.childNodes) {\n checkNode(child);\n }\n };\n for (const child of this.childNodes) {\n checkNode(child);\n }\n return results;\n }\n querySelector(selector) {\n return this.querySelectorAll(selector)[0];\n }\n findSibling(step, elementTypeOnly) {\n if (!this.parentNode)\n return null;\n const siblings = this.parentNode.childNodes;\n const index = siblings.indexOf(this);\n if (index === -1)\n return null;\n for (let i = index + step; i >= 0 && i < siblings.length; i += step) {\n const sibling = siblings[i];\n if (!elementTypeOnly || sibling.nodeType === 1) {\n return sibling;\n }\n }\n return null;\n }\n removeChild(child) {\n const index = this.childNodes.indexOf(child);\n if (index === -1)\n return;\n this.childNodes.splice(index, 1);\n child.parentNode = undefined;\n return child;\n }\n get previousSibling() {\n return this.findSibling(-1);\n }\n get nextSibling() {\n return this.findSibling(1);\n }\n get previousElementSibling() {\n return this.findSibling(-1, true);\n }\n get nextElementSibling() {\n return this.findSibling(1, true);\n }\n cloneNode(deep = false) {\n const clonedNode = new HTMLNode(this.nodeName, this.nodeType);\n clonedNode.attributes = JSON.parse(JSON.stringify(this.attributes));\n if (this.textContent) {\n clonedNode.textContent = this.textContent;\n }\n if (deep) {\n for (const childNode of this.childNodes) {\n const clonedChild = childNode.cloneNode(true);\n clonedNode.appendChild(clonedChild);\n }\n }\n return clonedNode;\n }\n get parentElement() {\n var _a;\n return ((_a = this.parentNode) === null || _a === void 0 ? void 0 : _a.nodeType) == 1 ? this.parentNode : null;\n }\n}\nfunction selectorMatchesNode(selector, node) {\n const simpleSelectors = selector.match(/([.#]?[\\w-]+|\\[([\\w-]+)(=\"([^\"]*)\")?\\])/g);\n if (!simpleSelectors) {\n return false;\n }\n for (const simpleSelector of simpleSelectors) {\n if (simpleSelector.startsWith('#')) {\n if (node.getAttribute('id') !== simpleSelector.slice(1)) {\n return false;\n }\n }\n else if (simpleSelector.startsWith('.')) {\n const classNames = (node.getAttribute('class') || '').split(' ');\n if (!classNames.includes(simpleSelector.slice(1))) {\n return false;\n }\n }\n else if (simpleSelector.startsWith('[')) {\n const attrSelectorMatch = simpleSelector.match(/^\\[([\\w-]+)(=\"([^\"]*)\")?\\]$/);\n if (attrSelectorMatch) {\n const attrName = attrSelectorMatch[1];\n const attrValue = attrSelectorMatch[3];\n const actualValue = node.getAttribute(attrName);\n if (typeof attrValue === 'undefined') {\n if (actualValue === undefined) {\n return false;\n }\n }\n else {\n if (actualValue !== attrValue) {\n return false;\n }\n }\n }\n else {\n return false;\n }\n }\n else {\n if (node.nodeName !== simpleSelector) {\n return false;\n }\n }\n }\n return true;\n}\nexport function parseHTML(html) {\n var _a;\n const nodes = [];\n const stack = [];\n while (html) {\n const openTagMatch = html.match(/^<([\\w-]+)(\\s[^>]*)?>/);\n const closingTagMatch = html.match(/^<\\/([\\w-]+)>/);\n if (openTagMatch) {\n const nodeName = openTagMatch[1].toLowerCase();\n const attrsStr = openTagMatch[2] || '';\n const attrs = ((_a = attrsStr.match(/([\\w-]+)(=\"([^\"]*)\")?/g)) === null || _a === void 0 ? void 0 : _a.map((attr) => {\n const [_, name, , value] = attr.match(/([\\w-]+)(=\"([^\"]*)\")?/);\n return { name, value: unescapeHTML(value || '') };\n })) || [];\n const node = new HTMLNode(nodeName, 1);\n node.attributes = attrs;\n if (stack.length > 0) {\n const parentNode = stack[stack.length - 1];\n parentNode.childNodes.push(node);\n node.parentNode = parentNode;\n }\n else {\n nodes.push(node);\n }\n if (!['img', 'input', 'br'].includes(nodeName))\n stack.push(node);\n html = html.slice(openTagMatch[0].length);\n }\n else if (closingTagMatch) {\n stack.pop();\n html = html.slice(closingTagMatch[0].length);\n }\n else {\n const textEnd = html.indexOf('<');\n const textContent = html.slice(0, textEnd !== -1 ? textEnd : undefined);\n const textNode = new HTMLNode('#text', 3);\n textNode.textContent = textContent;\n if (stack.length > 0) {\n const parentNode = stack[stack.length - 1];\n parentNode.childNodes.push(textNode);\n textNode.parentNode = parentNode;\n }\n else {\n nodes.push(textNode);\n }\n html = html.slice(textContent.length);\n }\n }\n return nodes;\n}\nexport function escapeHTML(input) {\n return input\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\nexport function unescapeHTML(input) {\n return input\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/"/g, '\"')\n .replace(/'/g, \"'\");\n}\nexport function serializeHTML(nodes) {\n return nodes\n .map((node) => {\n if (node.nodeType === 3) {\n return node.textContent || '';\n }\n const { nodeName, attributes } = node;\n const serializedAttributes = attributes\n .map(({ name, value }) => ` ${name}=\"${escapeHTML(String(value))}\"`)\n .join('');\n const serializedChildren = serializeHTML(node.childNodes);\n if (['img', 'input', 'br'].includes(nodeName)) {\n return `<${nodeName}${serializedAttributes} />`;\n }\n else {\n return `<${nodeName}${serializedAttributes}>${serializedChildren}`;\n }\n })\n .join('');\n}\nexport function renderHTMLContent(template, data, config) {\n return parseHTMLContent(template, data, config)[0].outerHTML;\n}\nexport function parseHTMLContent(template, data, config) {\n var _a;\n const newTemplate = ((_a = config === null || config === void 0 ? void 0 : config.processTemplate) === null || _a === void 0 ? void 0 : _a.call(config, null, template, data)) || template;\n const nodes = parseHTML(newTemplate);\n return nodes.map((node) => {\n return renderDOMElement(node, data, config);\n });\n}\n//# sourceMappingURL=html.js.map","export function observeDOMElement(element) {\n const observer = new element.ownerDocument.defaultView.MutationObserver((changes) => {\n changes.forEach((change) => {\n const target = change.target;\n const src = target.getAttribute('data-embed-src');\n if (src) {\n loadScript(target, src);\n }\n if (change.addedNodes) {\n change.addedNodes.forEach((node) => {\n if (node.nodeType == 1)\n autoloadScripts(node, false);\n });\n }\n });\n });\n observer.observe(element, { attributes: true, subtree: true, childList: true });\n return observer;\n}\nexport function autoloadScripts(element, observe = true) {\n const embeds = element.querySelectorAll('[data-embed-src]');\n for (var i = 0; i < embeds.length; i++) {\n const embed = embeds[i];\n loadScript(embed, embed.getAttribute('data-embed-src'));\n }\n if (observe)\n return observeDOMElement(element);\n}\nexport function loadScript(element, src) {\n for (var p = element; p; p = p.parentElement) {\n if (!p.parentElement) {\n const scripts = p.querySelectorAll('script');\n for (var i = 0; i < scripts.length; i++) {\n if (scripts[i].getAttribute('src') == src) {\n return true;\n }\n }\n if (p.tagName == 'HTML')\n p = p.querySelector('head') || p;\n const script = p.ownerDocument.createElement('script');\n script.setAttribute('type', 'module');\n script.setAttribute('src', src);\n p.appendChild(script);\n break;\n }\n }\n}\n//# sourceMappingURL=scripts.js.map","export const parseLimit = (qualifier) => {\n var _a;\n const limit = parseInt((_a = qualifier === null || qualifier === void 0 ? void 0 : qualifier.match(/\\[0:(\\d+)\\]/)) === null || _a === void 0 ? void 0 : _a[1], 10);\n if (!isNaN(limit) && limit > 0)\n return String(limit);\n return null;\n};\nexport const parseRange = (qualifier) => {\n var _a;\n const bits = (_a = qualifier === null || qualifier === void 0 ? void 0 : qualifier.match(/\\[([^\\]]+)\\]/)) === null || _a === void 0 ? void 0 : _a[1].split(/\\s*,\\s*/g).filter(Boolean).map((bit) => {\n // individual indexes\n if (bit.match(/^-?\\d+$/))\n return bit;\n // ranges\n const range = bit.match(/^(\\d+):(\\d+)$/);\n return range && parseInt(range[1], 10) < parseInt(range[2], 10) ? range[1] + '-' + range[2] : null;\n });\n if (!(bits === null || bits === void 0 ? void 0 : bits.every(Boolean)))\n return null;\n return bits.join(',');\n};\nexport const getQualifier = (jsonpath) => { var _a; return (_a = jsonpath === null || jsonpath === void 0 ? void 0 : jsonpath.match(/(\\.\\*|\\[[^\\]]*\\])$/)) === null || _a === void 0 ? void 0 : _a[0]; };\nexport function cleanCollectionBit(path) {\n return path.replace(/(\\.?\\[[^\\]\\[]*\\]|\\.\\*)$/g, '');\n}\nexport function normalizeCollectionScope(path) {\n return cleanCollectionBit(path) + '.*';\n}\n// increment numbers by given numbers, exclude second value of ranges to ensure inclusivity\nexport function adjustNumbers(string, diff) {\n return string === null || string === void 0 ? void 0 : string.replace(/(.|^)(\\d+)/g, (m, b, n) => b + (b == ':' ? n : String(parseInt(n) + diff)));\n}\nexport function getHumanizedLabel(path, maxBits = 2) {\n var bits = cleanCollectionBit(path)\n .split(/]\\.|\\.\\*\\./g)\n .pop()\n .split(/\\./g)\n .slice(-3);\n bits = bits.filter((b) => isNaN(parseInt(b)));\n return bits\n .map((bit) => bit.charAt(0).toUpperCase() + bit.slice(1))\n .slice(-maxBits)\n .join(' ');\n}\nexport function getLastPathBit(path) {\n return cleanCollectionBit(path).split('.').pop();\n}\n//# sourceMappingURL=datapath.js.map","const monthNames = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n];\nexport const formatDate = (date) => {\n if (!date || typeof date.getDay !== 'function')\n return;\n const year = date.getFullYear();\n const month = monthNames[date.getMonth()];\n const day = date.getDate();\n return `${month} ${day}, ${year}`;\n};\nexport const isDate = function (date) {\n return String(new Date(date)) !== 'Invalid Date' && !isNaN(Number(new Date(date)));\n};\n//# sourceMappingURL=date.js.map","import { queryScopes, serializeCH1RichText } from '../utils/data.js';\nimport { parseHTML } from './html.js';\nimport { loadScript } from './scripts.js';\nimport { normalizeCollectionScope } from '../utils/datapath.js';\nimport { isDate, formatDate } from '../utils/date.js';\nfunction getDOMCollectionIndex(element) {\n const datascope = element.getAttribute('data-path-scope');\n var index = 0;\n for (var p = element; (p = p.previousElementSibling);) {\n if (p.getAttribute('data-path-scope') == datascope) {\n index++;\n }\n }\n return index;\n}\nfunction updateDOMClones(element, targetCount, config) {\n const datascope = element.getAttribute('data-path-scope');\n if (datascope == null) {\n return;\n }\n var index = getDOMCollectionIndex(element);\n if (index != 0) {\n return;\n }\n const parentElement = element.parentNode;\n if (parentElement == null) {\n return;\n }\n /*dont remove first element, just hide it*/\n if (targetCount == 0) {\n element.setAttribute('hidden', 'hidden');\n }\n else if (element.getAttribute('hidden') != null) {\n element.removeAttribute('hidden');\n }\n var count = index + 1;\n var last = element;\n for (var n = element; (n = n.nextElementSibling);) {\n if (n.getAttribute('data-path-scope') == datascope) {\n count++;\n last = n;\n }\n }\n /* add missing clones */\n for (var i = count; i < targetCount; i++) {\n parentElement.insertBefore(last.cloneNode(true), last.nextElementSibling);\n }\n /* remove excessive clones fron previous renders */\n for (var i = Math.max(1, targetCount); i < count; i++) {\n last = last.previousElementSibling;\n parentElement.removeChild(last.nextElementSibling);\n }\n}\nexport function setDOMAttribute(element, attribute, value, config) {\n var _a, _b, _c;\n if (!element)\n return;\n var target = element;\n if ((value === null || value === void 0 ? void 0 : value.type) == 'doc' && Array.isArray(value.content))\n value = serializeCH1RichText(value);\n if (config === null || config === void 0 ? void 0 : config.processValue) {\n value = config === null || config === void 0 ? void 0 : config.processValue(element, attribute, value);\n }\n var prop = attribute.replace('data-path-', '');\n if (attribute == 'data-path-src' || attribute == 'data-path-alt') {\n const picture = Array.from(element.children).find((n) => n.localName == 'picture') || element;\n target = element.localName == 'img' ? element : picture.querySelector('img, video');\n }\n else if (attribute == 'data-path-href') {\n target = element.querySelector('a') || element.closest('a');\n }\n else if (attribute == 'data-path-hidden') {\n value = !value ? true : null;\n }\n else if (attribute == 'data-path' || attribute == 'data-embed-html' || attribute == 'html') {\n prop = 'innerHTML';\n }\n else if (attribute == 'data-embed-src') {\n loadScript(element, value);\n }\n else if (attribute == 'data-path-attributes') {\n if (!Array.isArray(value)) {\n const oldKeys = ((_a = element.getAttribute('data-attributes-keys')) === null || _a === void 0 ? void 0 : _a.split(',').filter(Boolean)) || [];\n if (!Array.isArray(value))\n for (var property in value) {\n var subvalue = value[property];\n setDOMAttribute(element, property, typeof subvalue == 'object' && subvalue ? JSON.stringify(subvalue) : subvalue, config);\n }\n for (var i = 0; i < oldKeys.length; i++) {\n if (value == null || !(oldKeys[i] in value)) {\n setDOMAttribute(element, oldKeys[i], null, config);\n }\n }\n setDOMAttribute(element, 'data-attributes-keys', Object.keys(value || {}).join(','));\n }\n // BYOC components also accept their data object in datasources attribute.\n if (element.tagName == 'FEAAS-EXTERNAL') {\n const datasourceId = String(element.getAttribute('data-path-attributes') || '')\n .slice(0, -1)\n .split('.')[0] || '_';\n setDOMAttribute(element, 'datasources', JSON.stringify({ [datasourceId]: value }));\n }\n return;\n }\n if (typeof value == 'boolean') {\n value = value ? '' : null;\n }\n if (!target)\n return;\n const usePlaceholder = prop == 'innerHTML' || prop == 'src';\n if (usePlaceholder && (value == null || value === '')) {\n var placeholder = String((_c = (_b = (element.getAttribute('data-path-placeholder') || target[prop])) !== null && _b !== void 0 ? _b : target.getAttribute(prop)) !== null && _c !== void 0 ? _c : '');\n if (prop == 'innerHTML') {\n target.innerHTML = placeholder;\n }\n else if (placeholder) {\n target.setAttribute(prop, placeholder);\n }\n else {\n target.removeAttribute(prop);\n }\n }\n else if (value != null) {\n if (prop == 'innerHTML') {\n var str = String(value);\n // sanitize html of structural text elements\n for (var parent = target; parent.parentElement && parent.localName.match(/^(a|var|strong|em|i|b)$/);)\n parent = parent.parentElement;\n if (parent.localName.match(/p|h\\d|button|time|li/)) {\n str = str\n .replace(/<(p|h\\d|li|ul)[^>]*?>|<\\/(p|h\\d|li|ul)[^>]*?>/g, ' ')\n .trim()\n .replace(/\\s+/g, ' ');\n }\n if (String(parent.getAttribute('class')).includes('-inline--time')) {\n if (isDate(str)) {\n str = formatDate(new Date(str));\n }\n }\n if (target.innerHTML != str) {\n target.innerHTML = str;\n }\n }\n else {\n if (target.getAttribute(prop) != value) {\n target.setAttribute(prop, value);\n }\n }\n }\n else {\n target.removeAttribute(prop);\n }\n}\n// order in which attributes are proccesed. Rightmost are more important\nvar sortOrder = ['data-attributes-keys', 'data-path-attributes', 'data-path-scope'];\nexport function renderDOMElement(input, datascopes, config, isNested) {\n var _a, _b, _c;\n const element = input;\n if (!isNested) {\n datascopes = ((_a = config === null || config === void 0 ? void 0 : config.processData) === null || _a === void 0 ? void 0 : _a.call(config, element, datascopes)) || datascopes;\n }\n if (element.nodeType == 1) {\n const datascope = element.getAttribute('data-path-scope');\n if (datascope) {\n const index = getDOMCollectionIndex(element);\n const collection = queryScopes(datascopes, datascope, false);\n if (index == 0) {\n updateDOMClones(element, ((_b = config === null || config === void 0 ? void 0 : config.shouldRepeat) === null || _b === void 0 ? void 0 : _b.call(config, element, collection)) === false ? 1 : collection.length, config);\n }\n datascopes = {\n ...datascopes,\n [normalizeCollectionScope(datascope)]: collection[index]\n };\n }\n const attrs = Array.prototype.slice.call(element.attributes).sort((a, b) => {\n return sortOrder.indexOf(a.name) - sortOrder.indexOf(b.name);\n });\n for (var i = 0; i < attrs.length; i++) {\n const { name, value: datapath } = attrs[i];\n if (name.startsWith('data-path') && name != 'data-path-scope') {\n setDOMAttribute(element, name, queryScopes(datascopes, datapath, true, undefined, element.tagName != 'FEAAS-EXTERNAL'), config);\n }\n if (name == 'data-embed-src') {\n setDOMAttribute(element, name, element.getAttribute(name), config);\n }\n }\n }\n for (var i = 0, child; (child = element.childNodes[i++]);) {\n if (isElement(child)) {\n renderDOMElement(child, datascopes, config, true);\n }\n }\n if (!isNested) {\n (_c = config === null || config === void 0 ? void 0 : config.onRender) === null || _c === void 0 ? void 0 : _c.call(config, element, datascopes);\n }\n return element;\n}\nfunction isElement(node) {\n return node.nodeType == 1;\n}\nexport function renderDOMContent(root, template, data, config) {\n var _a;\n const newTemplate = ((_a = config === null || config === void 0 ? void 0 : config.processTemplate) === null || _a === void 0 ? void 0 : _a.call(config, root, template, data)) || template;\n root.innerHTML = newTemplate;\n root.classList.add('-feaas');\n // fixme, jss needs to assign theme classes to component instead\n const anchor = root.closest('.component.feaas') || root;\n if (anchor.className.includes('-theme--')) {\n for (var i = 0, child; (child = root.childNodes[i++]);) {\n if (isElement(child)) {\n child.className = child.className.replace(/(\\s|^)-theme--[^\\s]+\\s*/g, '$1');\n }\n }\n }\n return renderDOMElement(root, data, config);\n}\nexport function renderHTMLContent(template, data, config, fakeDOM = false) {\n var _a;\n const newTemplate = ((_a = config === null || config === void 0 ? void 0 : config.processTemplate) === null || _a === void 0 ? void 0 : _a.call(config, null, template, data)) || template;\n if (typeof document === 'undefined' || fakeDOM) {\n const nodes = parseHTML(newTemplate);\n return renderDOMElement(nodes[0], data, config).outerHTML;\n }\n else {\n const root = document.createElement('div');\n root.innerHTML = newTemplate;\n renderDOMElement(root, data, config);\n return root.innerHTML;\n }\n}\n//# sourceMappingURL=rendering.js.map","import { ControlledPromise } from './utils/promise.js';\nconst phases = ['initial', 'check', 'updated'];\nexport var fetchCache = {};\nexport function clearFetchCache() {\n fetchCache = {};\n}\n/**\n * Utility to cache-bust static files. It relies on reading Date header to detect cached response, so it requires CORS\n * settings to be set.\n *\n * It accepts validator function that determines if response is usable. If response was pulled from cache and is valid,\n * the optional callback function is fired right away. Then HEAD request is made bypassing the cache, to see if the\n * response has an newer Last-Modified header. In case it does and it passes validation, third request is fired that\n * actually fetches the new content and callback is invoked the second time.\n *\n * It works as promise, but also accepts callback to use cached blobs mid-flight and have access to headers. Any network\n * errors will not be caught. Function throws when unable to fetch valid response.\n */\nexport async function fetchAndRevalidate(url, options, validator, callback, cache = fetchCache) {\n // make request as usual, see if there's cached version of an asset\n return fetchWithCacheAwareness({ url, options, validator, callback, cache })\n .then(fetchToValidateCache)\n .then((result) => result.response);\n}\n/**\n * Executes a fetch request optionally validating and handling the response. Using callback function it's possible to\n * observe successful response twice: Cached version first, and up-to-date later.\n *\n * @param {Object} request - An object containing request parameters.\n * @param {string} request.url - The URL to fetch.\n * @param {Object} request.options - Fetch request options.\n * @param {Function} [request.validator] - Function to validate the response. Should return `false` if\n * validation fails.\n * @param {Function} [request.callback] - Function to execute after fetching. Receives the response,\n * phase, and cache status.\n * @param {Object} [request.cache] - Cache object to store or retrieve cached data.\n * @param {ValidatableRequestPhase} [phase='initial'] - The phase of the request, defaults to 'initial'.\n * @returns {Promise} A promise that resolves to an object containing request details and the response.\n * @throws {Error} Throws an error if the fetch fails or if the response is not valid according to the validator.\n */\nexport async function fetchWithCacheAwareness({ url, options, validator, callback, cache }, phase = 'initial') {\n const date = new Date();\n if (cache != null) {\n var cachedRequest = getFetchCache(url);\n if (phases.indexOf(cachedRequest.phase) >= phases.indexOf(phase)) {\n var promise = cachedRequest[phase];\n }\n else {\n cachedRequest.phase = phase;\n }\n }\n const response = await (promise || fetch(url, options));\n if (!promise && cachedRequest) {\n if (!response.ok) {\n cachedRequest[phase].reject(new Error('Fetch failed'));\n }\n else {\n cachedRequest[phase].resolve(response);\n }\n }\n if (!response.ok)\n throw new Error('Fetch failed');\n // see if response was pulled from cache\n const isCached = new Date(response.headers.get('date')) < date ||\n (promise && phase == 'initial' && (cachedRequest.phase == 'updated' || cachedRequest.phase == 'check'));\n if ((validator === null || validator === void 0 ? void 0 : validator(response, isCached)) === false)\n throw new InvalidResponse('Response is not valid');\n await (callback === null || callback === void 0 ? void 0 : callback(response, phase, isCached));\n return {\n url,\n options,\n isCached,\n response,\n validator,\n callback,\n cache\n };\n}\nexport function getFetchCache(url, dontCreate = false) {\n const key = String(url).replace('?head', '');\n var cache = fetchCache[key];\n if (!cache && !dontCreate) {\n cache = fetchCache[key] = {\n phase: null,\n initial: ControlledPromise(),\n check: ControlledPromise(),\n updated: ControlledPromise(),\n final: ControlledPromise()\n };\n }\n return cache;\n}\nexport class InvalidResponse extends Error {\n}\n/**\n * Validates cache of previousl fetch If the resource is cached and there is a newer version available, it will be\n * re-fetched.\n *\n * @param request - The request object containing the URL, cache information, options, validator, and response of\n * initial request.\n * @returns A promise that resolves to the request object.\n */\nexport async function fetchToValidateCache(request) {\n const { url, isCached, options, validator, response, cache } = request;\n if (isCached) {\n // check if response was stale by sending quick HEAD request busting cache\n const { response: head } = await fetchWithCacheAwareness({\n url: url + (url.toString().includes('?') ? '&' : '?') + 'head',\n options: {\n ...options,\n method: 'HEAD',\n cache: 'no-cache'\n },\n validator,\n cache\n }, 'check');\n // there's a newer version of the file that we may fetch\n if (head.headers.get('last-modified') != response.headers.get('last-modified')) {\n // the new resource has to be re-fetched\n return fetchBypassingCache(request);\n }\n }\n return request;\n}\nexport async function fetchBypassingCache(request) {\n return fetchWithCacheAwareness({\n ...request,\n options: {\n ...request.options,\n cache: 'reload'\n }\n }, 'updated');\n}\n//# sourceMappingURL=fetch.js.map","import { fetchAndRevalidate, fetchWithCacheAwareness, fetchBypassingCache, fetchToValidateCache } from './fetch.js';\nexport const DEFAULT_CDN_URL = `https://feaas.blob.core.windows.net`;\nexport function parseComponentSource(source) {\n const match = source.match(/^(?:(.*?)\\/components)?\\/?([^\\/]+)\\/([^\\/]+)(?:\\/([^\\/]+)(?:\\/(published|staged|saved|\\d+)(?:\\.html?)?)?)?$/);\n if (match) {\n var [, cdn, library, component, version, revision] = match;\n return { cdn, library, component, version, revision: revision };\n }\n}\nexport function getComponentSource(props) {\n if (!props || !props.library || !props.component)\n throw new Error('Component requires `library` and `component` properties');\n return `${props.cdn && props.cdn != DEFAULT_CDN_URL ? `${props.cdn}/components` : ''}/${props.library}/${props.component}/${!props.version || (props.version == 'responsive' && (!props.revision || props.revision == 'published'))\n ? ''\n : props.version}/${!props.revision || props.revision == 'published' ? '' : props.revision}`.replace(/(^\\/|\\/$|\\/\\/)(?!.+\\/components\\/)/g, '');\n}\nexport function getStylesheetSource(props) {\n return `${props.cdn && props.cdn != DEFAULT_CDN_URL ? `${props.cdn}/styles/` : ''}${props.library}/${!props.revision || props.revision == 'published' ? '' : props.revision}`.replace(/\\/$|\\/\\/(?!.+\\/styles\\/)/g, '');\n}\nexport function parseStylesheetSource(source) {\n const match = source.match(/^(?:(.*?)\\/styles\\/)?([^\\/]+)(?:\\/(published|staged|saved|\\d+)(?:.css)?)?$/);\n if (match) {\n var [, cdn, library, revision] = match;\n return { cdn, library, revision: revision };\n // try parsing it as component url\n }\n else {\n const parsed = parseComponentSource(source);\n if (parsed) {\n var { cdn, library, revision } = parsed;\n if (revision === null || revision === void 0 ? void 0 : revision.match(/\\d/))\n revision = undefined;\n return { cdn, library, revision: revision };\n }\n }\n}\nexport function getComponentURL(props) {\n if (typeof props == 'string') {\n props = { src: props };\n }\n if ('src' in props) {\n props = {\n ...parseComponentSource(props.src)\n };\n }\n return `${props.cdn || props.hostname || DEFAULT_CDN_URL}/components/${props.library}/${props.component}/${props.version || 'responsive'}/${props.revision || 'published'}.html`;\n}\nexport function getStylesheetURL(props) {\n if (typeof props == 'string') {\n props = { src: props };\n }\n if ('src' in props) {\n // edge url are always well formed\n if (String(props.src).includes('v1/files/components/styles'))\n return props.src;\n props = {\n ...parseStylesheetSource(props.src)\n };\n }\n return `${props.cdn || props.hostname || DEFAULT_CDN_URL}/styles/${props.library}/${props.revision == 'staged' ? 'staged' : props.revision == 'saved' ? 'saved' : 'published'}.css`;\n}\nexport async function fetchAndRevalidateComponent(props, callback, dontRevalidate = false) {\n const onlyIfNotDeleted = (response) => {\n return response.headers.get('x-ms-meta-versionDeletedAt') == null;\n };\n const parseResponse = (response) => {\n return response.clone().text().then(callback);\n };\n // Fetch two requests in parallel: One optimistically checking if component was forked,\n // and another checking original definition of a component\n const results = await Promise.all([\n props.instance &&\n fetchWithCacheAwareness({\n options: {\n headers: {\n Accept: 'text/html'\n },\n credentials: 'omit'\n },\n url: getComponentURL({ ...props, version: props.instance }),\n validator: onlyIfNotDeleted\n }).catch((e) => e),\n fetchWithCacheAwareness({ url: getComponentURL(props), validator: onlyIfNotDeleted }).catch((e) => e)\n ]);\n const result = results.find((result) => result && 'isCached' in result && result);\n if (!result || result instanceof Error) {\n const error = results.find((result) => result && result instanceof Error);\n throw error || new Error('Can not fetch component');\n }\n if (results[0] == result) {\n console.log('Using fork!', results);\n }\n await parseResponse(result.response);\n if (dontRevalidate)\n return result;\n return fetchToValidateCache({ ...result, callback: parseResponse }).catch((e) => {\n if (results[0] == result) {\n fetchBypassingCache({ ...result, callback: null, validator: null });\n console.log('Fork was deleted');\n // forked version was cached, but it's now deleted\n if (!(results[1] instanceof Error)) {\n parseResponse(results[1].response);\n return fetchToValidateCache({ ...results[1], callback: parseResponse });\n }\n }\n throw e;\n });\n}\n/** Fetches HTML of a component. */\nexport async function fetchComponent(props) {\n if (typeof props == 'string')\n props = { src: props };\n var template;\n const { response } = await fetchAndRevalidateComponent(props, (result) => {\n template = result;\n }, true);\n return { ...props, template, lastModified: response.headers.get('last-modified') };\n}\nexport async function fetchAndRevalidateStylesheet(props, callback) {\n return fetchAndRevalidate(getStylesheetURL(props), {\n headers: {\n Accept: 'text/css'\n },\n credentials: 'omit'\n }, (response) => {\n return response.headers.get('x-ms-meta-deletedAt') == null;\n }, (response, phase) => {\n return response\n .clone()\n .text()\n .then((text) => callback(text, phase));\n });\n}\n//# sourceMappingURL=cdn.js.map","import { fetchAndRevalidateStylesheet, getStylesheetURL, parseStylesheetSource } from '../cdn.js';\nexport function renderStylesheet(props, style) {\n renderStylesheetPromise(props, (style || (style = document.createElement('style'))));\n return style;\n}\nexport function renderStylesheetPromise(props, stylesheet) {\n stylesheet || (stylesheet = document.createElement('style'));\n return fetchAndRevalidateStylesheet(props, (cssText, phase) => {\n stylesheet.textContent = cssText;\n }).then(() => stylesheet);\n}\nconst validatedStylesheets = new WeakSet();\nexport function loadStylesheet(props, callback) {\n var writableStylesheet;\n var foundStylesheet = findStylesheet(props);\n if (foundStylesheet) {\n if (validatedStylesheets.has(foundStylesheet)) {\n return Promise.resolve(foundStylesheet);\n }\n // it can be that page already have stylesheet using alternative URL (e.g. edge url), use that instead\n props = foundStylesheet.getAttribute('data-href') || foundStylesheet.getAttribute('href');\n }\n return fetchAndRevalidateStylesheet(props, (cssText, phase) => {\n // dont need to write stylesheet for cached state if we already found a stylesheet\n if (!(phase == 'initial' && foundStylesheet)) {\n writableStylesheet || (writableStylesheet = !foundStylesheet || foundStylesheet.tagName == 'LINK' ? createStylesheet(props) : foundStylesheet);\n writableStylesheet.textContent = cssText;\n }\n callback === null || callback === void 0 ? void 0 : callback(cssText, phase);\n }).then(() => writableStylesheet || foundStylesheet);\n}\nexport function loadStylesheetAllowStale(props) {\n return new Promise((resolve, reject) => {\n loadStylesheet(props, resolve).catch(reject);\n });\n}\n// Find stylesheet on the page for given props, also check by alternative edge url\nexport function findStylesheet(props) {\n const cdnURL = getStylesheetURL(props);\n const { library } = parseStylesheetSource(cdnURL);\n const edgeURL = `/files/components/styles/${library}.css`;\n return document.querySelector(`style[data-href=\"${cdnURL}\"], \n link[rel=\"stylesheet\"][href=\"${cdnURL}\"], \n style[data-href*=\"${edgeURL}\"], \n link[rel=\"stylesheet\"][href*=\"${edgeURL}\"]`);\n}\nexport function createStylesheet(props) {\n const url = getStylesheetURL(props);\n const stylesheet = document.createElement('style');\n stylesheet.setAttribute('data-href', url);\n document.head.appendChild(stylesheet);\n return stylesheet;\n}\n//# sourceMappingURL=stylesheet.js.map","import { fetchAndRevalidateComponent } from '../cdn.js';\nimport { renderDOMContent, renderDOMElement } from './rendering.js';\nexport function renderComponentElement(content, datasources) {\n const wrapper = document.createElement('div');\n wrapper.innerHTML = content;\n const fragment = document.createDocumentFragment();\n while (wrapper.firstChild) {\n fragment.appendChild(wrapper.firstChild);\n }\n renderDOMElement(fragment, datasources);\n return wrapper;\n}\nexport function renderComponent(props, root) {\n renderComponentPromise(props, (root || (root = document.createElement('div'))));\n return root;\n}\nexport async function renderComponentPromise(props, root) {\n root || (root = document.createElement('div'));\n if (!root.childNodes.length) {\n if ('template' in props) {\n return renderDOMContent(root, props.template, props.data, props);\n }\n else {\n return fetchAndRevalidateComponent(props, (template) => {\n return renderDOMContent(root, template, props.data, props);\n }).then(() => root);\n }\n /* update element with new data */\n }\n else {\n return renderDOMElement(root, props.data, props);\n }\n}\n//# sourceMappingURL=component.js.map","import { queryObject } from './data.js';\nimport { customizeDataSettings } from '@sitecore/byoc';\n/**\n * Cleans the provided settings object by removing unnecessary properties that match the defaults that will be re-added\n * back through normalizations. This method is used for code generated for the user, neant to make it look neater.\n *\n * @param {any} settings - The settings object to be cleaned.\n * @returns {Object} - The cleaned settings object.\n */\nexport function clean(settings) {\n const { params, method, headers, body, url } = DataSettings(settings);\n var cleanSettings = { url };\n var cleanHeaders = { ...headers };\n if (headers['Content-Type'] === 'application/json')\n delete cleanHeaders['Content-Type'];\n if (headers['Accept'] === 'application/json')\n delete cleanHeaders['Accept'];\n if (Object.keys(cleanHeaders).length > 0) {\n cleanSettings.headers = cleanHeaders;\n }\n if (method !== 'GET') {\n cleanSettings.method = method;\n }\n if (!(method === 'GET' || method === 'HEAD' || Object.keys(body).length === 0)) {\n cleanSettings.body = body;\n }\n if (Object.keys(params).length > 0) {\n cleanSettings = { ...cleanSettings, params };\n }\n return cleanSettings;\n}\n/**\n * Checks if the provided data is of type DataSettings by checking if all keys are recognized as settings keys.\n *\n * @param {any} data - The data to be checked.\n * @returns {boolean} - True if the data is of type DataSettings, false otherwise.\n */\nexport const isDataSettings = (data) => {\n if (!data || typeof data.url != 'string')\n return false;\n for (var property in data) {\n if (property == 'body' ||\n property == 'params' ||\n property == 'headers' ||\n property == 'url' ||\n property === 'method' ||\n (property == 'jsonpath' && typeof data[property] == 'string')) {\n continue;\n }\n return false;\n }\n return true;\n};\n/**\n * Converts settings object into fetch function arguments.\n *\n * @param {any} settings - The settings object.\n * @returns {Array} - An array containing URL and options objects as fetch function arguments.\n */\nexport function toFetchArguments(settings) {\n const { url, headers, params, method, body: payload } = DataSettings(settings);\n let body = undefined;\n const contentType = headers['Content-Type'];\n if (method != 'GET' && method != 'HEAD') {\n if (contentType === 'application/json')\n body = JSON.stringify(payload);\n if (contentType === 'multipart/form-data')\n body = Object.keys(payload).reduce((form, key) => {\n form.append(key, payload[key]);\n return form;\n }, new FormData());\n if (contentType === 'application/x-www-form-urlencoded')\n body = new URLSearchParams(payload);\n }\n const query = Object.keys(params).length ? `?${new URLSearchParams(params)}` : '';\n return [\n `${url}${query}`,\n {\n headers,\n body,\n method\n }\n ];\n}\n/**\n * Creates a DataSettings object based on the provided settings. These settings are used later to fetch data for the\n * component. It's essentially fetch options with url.\n *\n * @param {any} settings - The settings object.\n * @returns {DataSettings} - The DataSettings object.\n */\nexport function DataSettings(settings) {\n const headers = {};\n for (const key in (settings === null || settings === void 0 ? void 0 : settings.headers) || {}) {\n if (settings.headers.hasOwnProperty(key)) {\n const headerCase = key.replace(/^[a-z]|\\-[a-z]/g, (m) => m.toUpperCase());\n headers[headerCase] = settings.headers[key];\n }\n }\n if (!headers.Accept)\n headers['Accept'] = 'application/json';\n return {\n params: ((settings === null || settings === void 0 ? void 0 : settings.params) || {}),\n headers: headers,\n jsonpath: String((settings === null || settings === void 0 ? void 0 : settings.jsonpath) || '$'),\n method: ((settings === null || settings === void 0 ? void 0 : settings.method) || 'GET').toUpperCase(),\n body: ((settings === null || settings === void 0 ? void 0 : settings.body) || {}),\n url: String((settings === null || settings === void 0 ? void 0 : settings.url) || '')\n };\n}\n/**\n * Fetches data based on the provided settings. It is expected that reesponse is json (forced by Accept header)\n *\n * @param {DataSettings} settings - The data settings.\n * @param {string} datasourceId - The datasource id.\n * @returns {Promise} - A promise that resolves to the fetched data.\n */\nconst fetchDataSettings = async (settings, datasourceId) => {\n /**\n * Allow BYOC to intercept request and return custom settings\n */\n const datasourceSettingsGetter = customizeDataSettings(datasourceId, settings);\n if (datasourceSettingsGetter instanceof Promise) {\n return datasourceSettingsGetter;\n }\n // Apply custom settings\n let updatedSettings = settings;\n if (datasourceSettingsGetter) {\n updatedSettings = DataSettings(datasourceSettingsGetter);\n }\n try {\n const [url, options] = toFetchArguments(updatedSettings);\n const response = await DataSettings.fetchImplementation(url, {\n ...options,\n // next.js only allows lowercase method\n method: options.method.toLowerCase()\n });\n const json = await response.json();\n if (updatedSettings.jsonpath && updatedSettings.jsonpath != '$') {\n return queryObject(json, updatedSettings.jsonpath);\n }\n return json;\n }\n catch (e) {\n return {};\n }\n};\n/**\n * Fetches data based on the provided data options. Options is a union of different types, settngs, data or\n * datasource-id keyed settings/data. If the function doesnt find settings in the object, it returns it as is. It\n * supports mixing of static and fetched data. If multiple data settings are found, requests are made in parallel.\n *\n * @param {DataOptions} data - The data options.\n * @returns {Promise} - A promise that resolves to the fetched data.\n */\nexport async function fetchData(data) {\n if (!data)\n return data;\n if (isDataSettings(data))\n return fetchDataSettings(data);\n const keys = Object.keys(data);\n const allRequests = await Promise.all(keys\n .map((key) => {\n return isDataSettings(data[key]) ? fetchDataSettings(data[key], key) : null;\n })\n .filter(Boolean));\n return keys.reduce((obj, key) => ({\n ...obj,\n [key]: isDataSettings(data[key]) ? allRequests.shift() : data[key]\n }), {});\n}\nexport function hasDataSettings(data) {\n if (!data)\n return false;\n return isDataSettings(data) || Object.values(data).some(isDataSettings);\n}\nDataSettings.clean = clean;\nDataSettings.toFetchArguments = toFetchArguments;\nDataSettings.fetchOne = fetchDataSettings;\nDataSettings.fetch = fetchData;\nDataSettings.isDataSettings = isDataSettings;\nDataSettings.hasDataSettings = hasDataSettings;\nDataSettings.fetchImplementation = (...args) => fetch(...args);\n//# sourceMappingURL=settings.js.map","import { DEFAULT_CDN_URL, fetchAndRevalidateComponent, parseComponentSource } from '../cdn.js';\nimport { renderDOMContent, renderDOMElement } from '../dom/rendering.js';\nimport { loadStylesheetAllowStale } from '../headless.js';\nimport { ControlledPromise } from '../utils/promise.js';\nimport { DataSettings } from '../utils/settings.js';\nimport { FEAASElement } from './FEAASElement.js';\nexport function FEAASComponentsProps(element) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n let data;\n const src = element.getAttribute('src');\n if (src) {\n const parsed = parseComponentSource(src);\n if (!parsed)\n throw new Error(`Could not parse FEAAS Component source: ${src}`);\n var { cdn, library, component, version, revision } = parsed;\n }\n const dataValue = element.getAttribute('data');\n if (dataValue != null && dataValue != '') {\n try {\n data = typeof dataValue == 'string' ? JSON.parse(dataValue) : {};\n }\n catch (e) {\n console.error(e);\n }\n }\n const fetch = element.getAttribute('fetch');\n return {\n data: (data || {}),\n cdn: (_b = (_a = element.getContextAttribute('cdn')) !== null && _a !== void 0 ? _a : cdn) !== null && _b !== void 0 ? _b : DEFAULT_CDN_URL,\n library: (_c = element.getAttribute('library')) !== null && _c !== void 0 ? _c : library,\n component: (_d = element.getAttribute('component')) !== null && _d !== void 0 ? _d : component,\n version: (_f = (_e = element.getAttribute('version')) !== null && _e !== void 0 ? _e : version) !== null && _f !== void 0 ? _f : 'responsive',\n revision: ((_h = (_g = element.getAttribute('revision')) !== null && _g !== void 0 ? _g : revision) !== null && _h !== void 0 ? _h : 'published'),\n hostname: element.getAttribute('hostname'),\n template: element.getAttribute('template'),\n instance: element.getAttribute('instance'),\n editable: element.getAttribute('editable') != null,\n suspended: element.getAttribute('suspended') != null,\n lastModified: element.getAttribute('last-modified'),\n fetch: fetch == 'false' || (fetch == null && element.hasAttribute('fetch'))\n ? []\n : fetch == null || fetch == 'true'\n ? ['data', 'template', 'stylesheet']\n : fetch.split(/(\\s+|\\-)+/g).filter(Boolean)\n };\n}\n/**\n * - Initialization lifecycle:\n * - - `set(props)`\n * - - `scheduleRender()` - any attribute change causes render to schedule to next frame\n * - - `whenRendered.restart()` - rendering promise is reset and will resolve after render\n * - - `advance()` - called on next frame\n * - - `if (isReadyToLoad()) => boolean` - check if component has all necessary properties to load\n * - - `load() => payload` => component is loaded\n * - - `onLoad?(payload)` => invoke loaded callback for cached version of a component\n * - - `advance()` => going further in state machine\n * - - `flush()` => flushes all react changes if needed\n * - - `update()` => component-specific method (or react) to render changes to dom\n * - - `render(payload, props)` => render means react\n * - - `whenRendered.resolve()` - rendering promise is resolved after rendering\n * - - IF CACHE WAS STALE - FETCH AND RENDER AGAIN\n * - - `fetchByPassingCache()` - load up-to-date version of a component\n * - - `onLoad(newPayload) `\n * - - `advance()` => going further in state machine\n * - - `flush()` => flushes all react changes if needed\n * - - `update()` => component-specific method (or react) to render changes to dom\n * - - `render(payload, props)` => render means react\n * - - `whenRendered.resolve()` - rendering promise is resolved after rendering\n * - - `whenLoaded.resolved()` - resolved after loading of up to date component\n */\nclass FEAASComponent extends FEAASElement {\n setData(data) {\n this.set({ data });\n }\n getProps() {\n return FEAASComponentsProps(this);\n }\n isJSONAttribute(prop) {\n return prop == 'data';\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue === newValue)\n return;\n // force component to be refreshed\n if (name == 'library' || name == 'component' || name == 'revision' || name == 'version') {\n this.payload = undefined;\n if (this.alreadyRendered && this.connected) {\n this.needsRefresh = true;\n this.needsToFetchTemplate = true;\n }\n }\n super.attributeChangedCallback(name, oldValue, newValue);\n if (name == 'data') {\n this.needsRefresh = true;\n if (this.props.fetch.includes('data') || this.alreadyRendered || !DataSettings.hasDataSettings(this.props.data)) {\n this.fetchData();\n }\n }\n }\n // Reset readyData and perform a new fetch.\n async fetchData() {\n this.readyData = undefined;\n this.whenDataReady = this.whenDataReady.restart();\n const data = await DataSettings.fetch(this.props.data);\n const alreadyRendered = this.alreadyRendered;\n await this.whenDataReady.resolve(data);\n if (alreadyRendered) {\n this.advance();\n }\n }\n getEditor() {\n var _a;\n return (_a = document.querySelector('feaas-context')) === null || _a === void 0 ? void 0 : _a.refs.editor;\n }\n constructor() {\n super();\n this.readyData = {};\n this.whenDataReady = ControlledPromise((data) => (this.readyData = data), (e) => this.onError(e));\n this.defaultProps = {\n cdn: DEFAULT_CDN_URL,\n revision: 'published',\n version: 'responsive',\n editable: false,\n suspended: false,\n data: {}\n };\n this.onLoad = (html) => {\n this.payload = html;\n this.advance();\n };\n const data = this.getAttribute('data');\n if (!this.getAttribute('data')) {\n this.whenDataReady.resolve({});\n }\n this.addEventListener('click', () => {\n if (this.props.editable) {\n this.edit();\n }\n });\n }\n edit() {\n const editor = this.getEditor();\n if (editor === null || editor === void 0 ? void 0 : editor.setTarget(this)) {\n editor.open();\n return true;\n }\n }\n /* Check if component is a repeated clone, and return the original */\n getOriginal() {\n const scope = this.getAttribute('data-path-scope');\n if (!scope)\n return;\n for (var current = this; (current = current.previousElementSibling);) {\n if (current.getAttribute('data-path-scope') == scope) {\n var last = current;\n }\n else {\n break;\n }\n }\n return last;\n }\n isReadyToLoad() {\n return (super.isReadyToLoad() && this.props.library != null && this.props.component != null && this.props.version != null);\n }\n async load() {\n var _a;\n // defer loading to original element\n if (this.getOriginal())\n return;\n const advanceIfEverythingIsReady = () => {\n // html is not loaded\n if (this.payload == null)\n return;\n // shared stylesheet is still being loaded\n if (stylesheetPromise)\n return;\n // data is still loading\n if (!this.readyData)\n return;\n this.onLoad(this.payload);\n };\n if (this.props.fetch.includes('stylesheet')) {\n var stylesheetPromise = loadStylesheetAllowStale({ ...this.props }).then(() => {\n stylesheetPromise = null;\n advanceIfEverythingIsReady();\n });\n }\n if (this.props.fetch.includes('template') || this.needsToFetchTemplate) {\n this.needsToFetchTemplate = false;\n var templatePromise = fetchAndRevalidateComponent(this.props, (html) => {\n this.payload = html;\n this.needsRefresh = true;\n advanceIfEverythingIsReady();\n });\n }\n else {\n this.payload = (_a = this.props.template) !== null && _a !== void 0 ? _a : this.innerHTML;\n }\n return Promise.all([\n stylesheetPromise,\n this.whenDataReady.then(() => advanceIfEverythingIsReady()),\n templatePromise\n ]).then(() => this.payload);\n }\n flush() {\n if (!this.readyData)\n return;\n super.flush();\n }\n update() {\n this.alreadyRendered = true;\n // avoid unnecessary rendering if hydration was disabled\n if (!this.props.fetch.includes('data') &&\n !this.props.fetch.includes('template') &&\n this.firstElementChild &&\n !this.needsRefresh)\n return;\n if (Array.from(this.children).filter((c) => c.tagName != 'BR').length > 0 && !this.needsRefresh) {\n renderDOMElement(this, this.readyData);\n }\n else {\n this.needsRefresh = false;\n // defer rendering to original element\n if (this.getOriginal()) {\n return;\n }\n renderDOMContent(this, this.payload, this.readyData);\n }\n }\n}\nFEAASComponent.observedAttributes = [\n 'library',\n 'component',\n 'version',\n 'revision',\n 'hostname',\n 'cdn',\n 'template',\n 'data',\n 'instance',\n 'editable',\n 'with-stylesheet',\n 'fetch'\n];\nexport { FEAASComponent };\nFEAASComponent.register('feaas-component');\nexport { FEAASComponent as Component, FEAASComponentsProps as ComponentProps };\n//# sourceMappingURL=FEAASComponent.js.map","import { FEAASElement } from './FEAASElement.js';\nexport function FEAASLoaderProps(element) {\n return {\n opacity: (element === null || element === void 0 ? void 0 : element.getAttribute('opacity')) ? parseFloat(element === null || element === void 0 ? void 0 : element.getAttribute('opacity')) : 1,\n hidden: (element === null || element === void 0 ? void 0 : element.getAttribute('hidden')) != null\n };\n}\nclass FEAASLoader extends FEAASElement {\n constructor() {\n super(...arguments);\n this.defaultProps = {\n hidden: false\n };\n }\n getProps() {\n return FEAASLoaderProps(this);\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue === newValue)\n return;\n if (name == 'hidden') {\n this.style.setProperty('display', 'block', 'important');\n this.style.setProperty('transition', 'opacity 0.3s', 'important');\n if (newValue) {\n this.style.setProperty('opacity', '0', 'important');\n this.style.pointerEvents = 'none';\n }\n else {\n this.style.setProperty('opacity', '1', 'important');\n this.style.pointerEvents = 'all';\n }\n }\n return super.attributeChangedCallback(name, oldValue, newValue);\n }\n connectedCallback() {\n this.payload = null;\n super.connectedCallback();\n this.attributeChangedCallback('hidden', this.getAttribute('hidden'), this.getAttribute('hidden'));\n this.stylesheet = document.createElement('style');\n this.stylesheet.textContent = `\n #loader {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f6f6ff;\n z-index: 1000;\n }\n @keyframes loader-circular-track {\n 0% {\n stroke-dasharray: 1, 400;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 400, 400;\n stroke-dashoffset: -100;\n }\n 100% {\n stroke-dasharray: 400, 400;\n stroke-dashoffset: -260;\n }\n }\n \n @keyframes loader-circular-spinner {\n 0% {\n transform: rotate(0deg);\n }\n \n 100% {\n transform: rotate(360deg);\n }\n }\n #loader .spinner {\n width: 48px;\n height: 48px;\n }\n `;\n this.loader = document.createElement('div');\n this.loader.id = 'loader';\n this.loader.innerHTML = `\n
\n \n \n \n \n
`;\n this.getRoot().appendChild(this.stylesheet);\n this.getRoot().appendChild(this.loader);\n }\n update() {\n this.loader.style.opacity = String(this.props.opacity);\n }\n}\nFEAASLoader.observedAttributes = ['hidden', 'opacity'];\nexport { FEAASLoader };\nFEAASLoader.register('feaas-loader');\nexport { FEAASLoader as Loader };\n//# sourceMappingURL=FEAASLoader.js.map","import { DEFAULT_CDN_URL, parseStylesheetSource } from '../cdn.js';\nimport { loadStylesheet } from '../dom/stylesheet.js';\nimport { FEAASElement } from './FEAASElement.js';\nexport function FEAASStylesheetProps(element) {\n var _a, _b, _c, _d;\n const src = element.getAttribute('src');\n if (src) {\n var { cdn, library, revision } = parseStylesheetSource(src);\n }\n return {\n library: element === null || element === void 0 ? void 0 : element.getContextAttribute('library'),\n revision: (_b = (_a = element === null || element === void 0 ? void 0 : element.getAttribute('revision')) !== null && _a !== void 0 ? _a : revision) !== null && _b !== void 0 ? _b : 'published',\n cdn: (_d = (_c = element === null || element === void 0 ? void 0 : element.getContextAttribute('cdn')) !== null && _c !== void 0 ? _c : element === null || element === void 0 ? void 0 : element.getContextAttribute('hostname')) !== null && _d !== void 0 ? _d : DEFAULT_CDN_URL\n };\n}\nexport class FEAASStylesheet extends FEAASElement {\n constructor() {\n super(...arguments);\n this.onLoad = (html) => {\n this.payload = html;\n this.advance();\n };\n }\n getProps() {\n return FEAASStylesheetProps(this);\n }\n isReadyToLoad() {\n return this.props.library != null && this.props.revision != null && this.props.cdn != null;\n }\n load() {\n return loadStylesheet(this.props, this.onLoad);\n }\n}\nFEAASStylesheet.register('feaas-stylesheet');\nexport { FEAASStylesheet as Stylesheet };\n//# sourceMappingURL=FEAASStylesheet.js.map","import { fetchAndRevalidate } from '../fetch.js';\nimport { renderComponent } from './component.js';\nexport const convertBase64toBlob = (base64) => fetch(base64).then((res) => res.blob());\n/** Parse fetch response as blob and turn it into HTMLImageElement off thread */\nexport const responseToImage = (response) => response.blob().then((blob) => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onerror = reject;\n img.onload = () => {\n resolve(img);\n };\n img.src = URL.createObjectURL(blob);\n });\n});\n/**\n * Retrieves the version of a given component that best fits a specific display width.\n *\n * The function ensures that the version data for the component is available and selects the one that is most suitable\n * for a display width of 800 pixels.\n *\n * @param {ComponentModel} component - The component for which the version needs to be obtained.\n * @returns {Promise} - A promise that resolves to the most suitable version for a display width of 800\n * pixels.\n */\nexport async function getVersionForThumbnail(component) {\n if (!component.versions.length)\n await component.versions.fetch();\n return component.getVersionForWidth(800);\n}\n/**\n * Ensures an up-to-date thumbnail for a specific component and version.\n *\n * This operation initiates thumbnail load and, if that fails or if file is out of date, a new thumbnail is generated.\n * It can work with a callback, which is designed to potentially fire twice for enhancing user experience. This dual\n * firing allows for an immediate display of a possibly stale cached image while downloading or generating new version\n * in the background.\n *\n * 1. The first call can happen with the stale cached or outdated image.\n * 2. The second call occurs with the up-to-date loaded or freshly generated generated image.\n *\n * @param {ComponentModel} component - Relevant component.\n * @param {VersionModel} [version] - Relevant version (optional, falls back to responsive).\n * @param {Callback} [callback] - Callback to handle the loaded or generated image (optional).\n * @returns {Promise} - The final thumbnail image (either loaded or freshly generated).\n */\nexport async function get(component, version, callback) {\n try {\n if (!component.isNew) {\n return await load(component, version, callback);\n }\n }\n catch (e) {\n component.sdk.log(`FEAAS: Thumbnail ${component.id}, version: ${(version === null || version === void 0 ? void 0 : version.id) || 'responsive'}, status: generating ${status}, reason: ${e}`);\n }\n // generate the image\n const img = await generate(component, version);\n callback === null || callback === void 0 ? void 0 : callback(img, false);\n // upload base64 image as blob off-thread\n if (img && !component.isNew) {\n convertBase64toBlob(img.src).then((blob) => upload(component, version, blob));\n }\n return img;\n}\n/**\n * Retrieves the thumbnail image for a given component/version combination, with a responsive default if version is not\n * provided.\n *\n * The resulting HTML element will have `width`, `height`, and `src` properties ready for use. Although it can\n * operate as a regular promise that resolves when the thumbnail is loaded, it also supports a callback for an enhanced\n * user experience. This callback may be invoked twice, depending on the state of the cache:\n *\n * 1. The first call occurs if the image was previously cached by the browser, but the cache is stale.\n * 2. The second call happens when the image is updated from a fresh download. By this design, the user gets to see a\n * cached image immediately while the updated image is being downloaded in the background.\n *\n * If the version of a component is known to be newer than remote file, the function will throw `InvalidResponse` error.\n * As a way to handle that error, the `generate` function may be used to produce new thumbnail (@see render).\n *\n * @param {ComponentModel} component - The component to load a thumbnail for.\n * @param {VersionModel} [version] - The version of the component to load a thumbnail for. If not provided, a\n * version suitable for a responsive component is selected.\n * @param {Callback} [callback] - A callback to handle the loaded image. This callback may be invoked twice for\n * the reasons described above.\n * @returns {Promise} - The thumbnail image for the component/version combination.\n */\nexport async function load(component, version, callback) {\n const url = version ? version.getThumbnailURL() : component.getThumbnailURL();\n const stylesheet = component.library.stylesheet;\n const lastModifiedDate = new Date(Math.max(Number(component.modifiedAt), Number(stylesheet.modifiedAt)));\n component.sdk.log(`FEAAS: Thumbnail ${component.id}/${(version === null || version === void 0 ? void 0 : version.id) || 'responsive'}, loading`);\n // Otherwise use a logic that will invoke callback for cached request and then try to revalidate it\n var img;\n await fetchAndRevalidate(url, {}, (response, isCached) => {\n // <2 second difference is not considered outdated\n // If thumbnail is detected as outdated it will throw error and promise will be rejected\n const isUpToDate = Math.abs(Number(new Date(response.headers.get('x-ms-meta-componentRenderedAt'))) - Number(lastModifiedDate)) <\n 2000;\n if (isCached && !isUpToDate) {\n responseToImage(response).then((image) => {\n img = image;\n callback(image, isCached);\n });\n }\n return isUpToDate;\n }, (response, state, isCached) => {\n component.sdk.log(`FEAAS: Thumbnail ${component.id}/${(version === null || version === void 0 ? void 0 : version.id) || 'responsive'}, status: ${state}`);\n responseToImage(response).then((image) => {\n img = image;\n callback(image, isCached);\n });\n }, null);\n return img;\n}\n/**\n * Creates a thumbnail image for a given component and version.\n *\n * First, it determines the appropriate version to use. If not provided, it attempts to fetch one suitable for\n * thumbnail. It then leverages `render` to generate an image with provided parameters and finally, if the component\n * isn't new, uploads the generated as a Blob onto cdn for future retrieval.\n *\n * @param {ComponentModel} component - Component instance.\n * @param {VersionModel} [version] - Version instance.\n * @returns {Promise} Thumbnail image or null if generation isn't possible.\n */\nexport async function generate(component, version, customStylesheet) {\n const sourceVersion = version || (component.isNew ? null : await getVersionForThumbnail(component));\n if (!sourceVersion || sourceVersion.isViewEmpty()) {\n return null;\n }\n const stylesheet = customStylesheet || component.library.stylesheets.first;\n const { datasources } = component.sdk;\n const img = await render(sourceVersion.classList, stylesheet.getBreakpointForWidth(800, sourceVersion.getBreakpoints()), sourceVersion.view, datasources.reduce((object, datasource) => {\n return Object.assign(object, { [datasource.id]: datasource.sample });\n }, {}), stylesheet.css, component.sdk);\n return img;\n}\n/**\n * Transforms a specific component version into an image.\n *\n * Generates an isolated environment (iframe) to render the component with supplied parameters. 'html2canvas.js' is then\n * injected into the iframe to capture the rendered component as an image. The image is created respecting the provided\n * design breakpoint, ensuring an accurate visual representation.\n *\n * @param {string[]} classList - Array of class names applied to the rendered component.\n * @param {Style.Rule<'breakpoint'>} breakpoint - Breakpoint style rule that dictates the viewport dimensions for\n * rendering.\n * @param {string} template - String template of the component to render.\n * @param {any} data - Data object to be used when rendering the component.\n * @param {string} cssText - CSS rules to be applied during component rendering.\n * @param {EnvironmentVariables} env - Environment variables used to set frontend and backend endpoint URLs.\n * @returns {Promise} - Promise that resolves to an object containing the src, width, and height of the\n * created image.\n */\nfunction render(classList, breakpoint, template, data, cssText, sdk) {\n const iframe = document.createElement('iframe');\n iframe.style.position = 'absolute';\n iframe.style.top = '-2000px';\n iframe.style.left = '-2000px';\n iframe.style.width = breakpoint.props.minWidth + 'px';\n iframe.style.height = '720px';\n iframe.style.zIndex = '100011';\n document.body.appendChild(iframe);\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.onerror = reject;\n script.src = sdk.frontend + '/assets/html2canvas.js';\n script.onload = () => {\n var _a;\n ;\n (((_a = iframe.contentWindow.document.fonts) === null || _a === void 0 ? void 0 : _a.ready) || Promise.resolve()).then(function () {\n return (iframe.contentWindow\n //@ts-ignore\n .html2canvas(root, {\n // 1.1 scale is to remove shadows that are drawn incorrectly\n scale: Math.max(1.1, 1000 / Math.min(1401, Math.max(320, breakpoint.props.minWidth))),\n width: Math.min(1401, Math.max(320, breakpoint.props.minWidth)),\n height: Math.max(1, Math.min(2000, root.offsetHeight)),\n windowWidth: breakpoint.props.minWidth || breakpoint.props.maxWidth + 'px',\n windowHeight: 1000,\n proxy: sdk.backend + '/proxy/media',\n backgroundColor: '#ffffff'\n })\n .then((canvas) => {\n const src = canvas.toDataURL('image/jpeg', 0.6);\n iframe.parentElement.removeChild(iframe);\n const img = new Image();\n img.onload = () => {\n resolve(img);\n };\n img.onerror = reject;\n img.src = src;\n }));\n });\n };\n iframe.contentWindow.document.head.appendChild(script);\n const stylesheet = iframe.contentWindow.document.createElement('style');\n stylesheet.textContent = `\n ${cssText}\n body, html { padding: 0; margin: 0; overflow: hidden }\n `;\n const stylesheet2 = iframe.contentWindow.document.createElement('style');\n stylesheet2.textContent = `\n body, html { padding: 0; margin: 0; overflow: hidden }\n `;\n iframe.contentWindow.document.head.appendChild(stylesheet);\n iframe.contentWindow.document.head.appendChild(stylesheet2);\n const root = renderComponent({ template, data });\n root.classList.add(...classList, '-feaas--preview', '-emulate--' + breakpoint.details.slug);\n iframe.contentWindow.document.body.appendChild(root);\n });\n}\n/**\n * Uploads a thumbnail Blob to a CDN, enabling it for future retrieval.\n *\n * It constructs a URL based on component and version information, if available. The thumbnail's blob is uploaded with\n * several metadata points, including identifiers and timestamps. Upon successful upload, it sends a no-cache fetch\n * request to the constructed URL to bust the cache.\n *\n * @param {ComponentModel} component - Component instance.\n * @param {VersionModel} version - Version instance.\n * @param {Blob} blob - Blob instance to upload.\n * @returns {Promise} URL of the uploaded Blob.\n */\nexport async function upload(component, version, blob) {\n const url = version ? version.getThumbnailURL() : component.getThumbnailURL();\n const lastModifiedDate = new Date(Math.max(Number(component.modifiedAt), Number(component.library.stylesheet.modifiedAt)));\n try {\n await component.sdk.uploadBlob('thumbnails', url.split(/\\/thumbnails\\//)[1], blob, {\n headers: {\n 'x-ms-blob-content-type': 'image/jpg',\n 'x-ms-blob-cache-control': 'public,max-age=31536000,immutable',\n 'x-ms-meta-versionId': version ? version.id : null,\n 'x-ms-meta-versionRevision': version ? version.revision.toString() : null,\n 'x-ms-meta-componentId': component.id,\n 'x-ms-meta-componentRenderedAt': lastModifiedDate.toUTCString(),\n 'x-ms-meta-componentModifiedAt': component.modifiedAt.toUTCString(),\n 'x-ms-meta-componentCreatedAt': component.createdAt.toUTCString(),\n 'x-ms-meta-modifiedAt': component.modifiedAt.toUTCString()\n }\n });\n // bust thumbnail cache for the future, off-thread\n fetch(url, {\n cache: 'no-cache'\n }).then(() => {\n component.sdk.log('FEAAS: Thumbnail uploaded', url);\n });\n }\n catch (e) {\n component.sdk.log('FEAAS: Thumbnail failed to upload', url, e);\n }\n return url;\n}\n//# sourceMappingURL=thumbnail.js.map","/**\n * Simplified build of clientside that does not rely on any Frontend UI (like pickers). It refered from Frontend app to\n * avoid circular dependency. Regular clientside build entry point is in ui/index.ts\n */\nvar _a;\nimport FEAASReactElement from './components/FEAASReactElement.js';\nexport * from './dom/rendering.js';\nexport * from './utils/data.js';\nexport * from './dom/scripts.js';\nexport * from './dom/stylesheet.js';\nexport * from './dom/component.js';\nexport * from './fetch.js';\nexport * from './utils/promise.js';\nexport * from './cdn.js';\nexport * from './components/FEAASElement.js';\nexport * from './components/FEAASReactElement.js';\nexport * from './components/FEAASComponent.js';\nexport * from './components/FEAASLoader.js';\nexport * from './components/FEAASStylesheet.js';\nexport * from './utils/datapath.js';\nexport * as DOM from './dom/rendering.js';\nexport * as DataScope from './utils/data.js';\nexport * as DataPath from './utils/datapath.js';\nexport { DataSettings, fetchData } from './utils/settings.js';\nexport * as Thumbnail from './dom/thumbnail.js';\nif (typeof window != 'undefined') {\n window.FEAASReactElement = FEAASReactElement;\n (_a = window.FEAASLoading) !== null && _a !== void 0 ? _a : (window.FEAASLoading = Promise.resolve());\n}\nexport { registerDatasource, registerComponent, getComponent, customizeDataSettings } from '@sitecore/byoc';\n//# sourceMappingURL=headless.js.map"],"names":["ControlledPromise","onSuccess","onFailure","e","first","restart","resolve","reject","promise","success","failure","value","controlled","WebComponent","FEAASElement","context","payload","name","oldValue","newValue","parent","element","_a","event","attribute","args","format","arg","onlyFeaas","p","root","el","target","index","_b","error","where","handled","loaded","flushSync","_c","React","ReactDOM","ReactDOMClient","children","child","displayName","errorInfo","props","ErrorBoundary","Wrapper","forceUpdateReact","r","overrides","property","isJSON","valueAsString","defaultValue","defaultValueAsString","odlValueAsString","path","src","hostname","tagName","win","FEAASReactElement","__vitePreload","MyComponent","counter","updates","setUpdates","u","_typeof","obj","_classCallCheck","instance","Constructor","_defineProperties","i","descriptor","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","_getPrototypeOf","o","_isNativeReflectConstruct","_construct","Parent","Class","a","_isNativeFunction","fn","_wrapNativeSuper","_cache","_assertThisInitialized","self","_possibleConstructorReturn","call","_createSuper","Derived","hasNativeReflectConstruct","Super","result","NewTarget","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_arrayLikeToArray","iter","minLen","n","len","arr2","_createForOfIteratorHelper","allowArrayLike","it","F","normalCompletion","didErr","err","step","hasOwnProp","push","item","unshift","NewError","_Error","_super","_this","JSONPath","opts","expr","callback","otherTypeCallback","optObj","ret","json","_this2","currParent","currParentProperty","flatten","wrap","_expr","exprList","ea","rslt","valOrPath","resultType","fullRetObj","type","preferredOutput","val","parentPropName","hasArrExpr","literalPriority","_this3","retObj","loc","x","addRet","elems","t","m","safeLoc","addType","valueType","locProp","parts","_iterator","_step","part","rett","tmp","tl","tt","f","start","end","code","_v","_vname","containsPath","scriptCacheKey","script","pathArr","pointer","cache","subx","normalized","$0","$1","prop","ups","exp","match","moveToAnotherArray","source","conditionCb","il","Script","keys","funcs","key","values","vr","funcString","s","func","fString","lastStatementEnd","queryObjectRaw","queryObject","data","queryScopes","scopes","datapath","singleValue","b","scope","collection","v","serializeCH1Tag","attrs","tag","k","serializeCH1RichText","level","text","mark","HTMLNode","nodeName","nodeType","textContent","attr","newNode","referenceNode","attrName","serializeHTML","html","parseHTML","c","selector","currentNode","selectorMatchesNode","selectors","results","checkNode","node","sel","elementTypeOnly","siblings","sibling","deep","clonedNode","childNode","clonedChild","simpleSelectors","simpleSelector","attrSelectorMatch","attrValue","actualValue","nodes","stack","openTagMatch","closingTagMatch","_","unescapeHTML","parentNode","textEnd","textNode","escapeHTML","input","attributes","serializedAttributes","serializedChildren","parseHTMLContent","template","config","newTemplate","renderDOMElement","observeDOMElement","observer","changes","change","loadScript","autoloadScripts","observe","embeds","embed","scripts","parseLimit","qualifier","limit","parseRange","bits","bit","range","getQualifier","jsonpath","cleanCollectionBit","normalizeCollectionScope","adjustNumbers","string","diff","getHumanizedLabel","maxBits","getLastPathBit","monthNames","formatDate","date","year","month","day","isDate","getDOMCollectionIndex","datascope","updateDOMClones","targetCount","parentElement","count","last","setDOMAttribute","picture","oldKeys","subvalue","datasourceId","placeholder","str","sortOrder","datascopes","isNested","isElement","renderDOMContent","renderHTMLContent","fakeDOM","phases","fetchCache","clearFetchCache","fetchAndRevalidate","url","options","validator","fetchWithCacheAwareness","fetchToValidateCache","phase","cachedRequest","getFetchCache","response","isCached","InvalidResponse","dontCreate","request","head","fetchBypassingCache","DEFAULT_CDN_URL","parseComponentSource","cdn","library","component","version","revision","getComponentSource","getStylesheetSource","parseStylesheetSource","parsed","getComponentURL","getStylesheetURL","fetchAndRevalidateComponent","dontRevalidate","onlyIfNotDeleted","parseResponse","fetchComponent","fetchAndRevalidateStylesheet","renderStylesheet","style","renderStylesheetPromise","stylesheet","cssText","validatedStylesheets","loadStylesheet","writableStylesheet","foundStylesheet","findStylesheet","createStylesheet","loadStylesheetAllowStale","cdnURL","edgeURL","renderComponentElement","content","datasources","wrapper","fragment","renderComponent","renderComponentPromise","clean","settings","params","method","headers","body","DataSettings","cleanSettings","cleanHeaders","isDataSettings","toFetchArguments","contentType","form","query","headerCase","fetchDataSettings","datasourceSettingsGetter","customizeDataSettings","updatedSettings","fetchData","allRequests","hasDataSettings","FEAASComponentsProps","_d","_e","_f","_g","_h","dataValue","fetch","FEAASComponent","alreadyRendered","editor","current","advanceIfEverythingIsReady","stylesheetPromise","templatePromise","FEAASLoaderProps","FEAASLoader","FEAASStylesheetProps","FEAASStylesheet","convertBase64toBlob","base64","res","responseToImage","blob","img","getVersionForThumbnail","get","load","generate","upload","lastModifiedDate","isUpToDate","image","state","customStylesheet","sourceVersion","render","object","datasource","classList","breakpoint","sdk","iframe","canvas","stylesheet2"],"mappings":"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","x_google_ignoreList":[3]}