@sitecore-feaas/clientside 0.1.46 → 0.1.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/promise.ts","../../src/components/FEAASBase.tsx","../../src/components/FEAASElement.tsx","../../node_modules/jsonpath-plus/dist/index-browser-esm.js","../../src/dom/data.ts","../../src/dom/html.ts","../../src/dom/scripts.ts","../../src/dom/rendering.ts","../../src/fetch.ts","../../src/cdn.ts","../../src/dom/stylesheet.ts","../../src/dom/component.ts","../../src/components/FEAASComponent.tsx","../../src/components/FEAASLoader.tsx","../../src/components/FEAASStylesheet.tsx","../../src/headless.ts","../../src/ui/FEAASEditor.tsx","../../src/ui/FEAASPicker.tsx","../../src/ui/FEAASContext.tsx"],"names":[],"mappings":"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","file":"/home/node/clientside/dist/browser/index.esm.js.map","sourcesContent":["export type ControlledPromise<T> = Promise<T> & {\n resolve: (...args: any) => void\n reject: (e: Error) => void\n restart: () => ControlledPromise<T>\n first: ControlledPromise<T>\n}\n\nexport function ControlledPromise<T>(onSuccess?: (result: T) => void, onFailure = (e: Error) => {}) {\n var first: ControlledPromise<T>\n const restart = () => {\n var resolve: (...args: any) => void\n var reject: (e: Error) => void\n const promise = new Promise<T>((success, failure) => {\n resolve = (value: T) => {\n onSuccess?.(value)\n success(value)\n }\n reject = failure\n })\n var controlled: ControlledPromise<T> = Object.assign(promise, {\n resolve,\n reject,\n restart,\n first\n })\n first = controlled\n\n // Avoid unhandled rejection\n controlled.catch(onFailure)\n\n return controlled\n }\n return restart()\n}\n","import type { JSXElementConstructor, ReactElement, ReactNode } from 'react'\nimport type ReactDOMClient from 'react-dom/client'\nimport type ReactDOM from 'react-dom'\nimport type React from 'react'\nimport { ControlledPromise } from '../utils/promise.js'\n\nexport type OptionalExcept<T, K extends keyof T> = Pick<T, K> & Partial<Omit<T, K>>\n\n// Shim in case it's required in node.js environment\nvar WebComponent =\n typeof HTMLElement == 'undefined'\n ? // @ts-ignore\n typeof windowJSDOM != 'undefined'\n ? // @ts-ignore\n (windowJSDOM.HTMLElement as typeof HTMLElement)\n : (class {} as unknown as typeof HTMLElement)\n : HTMLElement\n\nexport interface ReactPayload {\n React: typeof React\n ReactDOM: typeof ReactDOM\n ReactDOMClient: typeof ReactDOMClient\n}\n/**\n * FEAASBase is a superclass for FEAAS components with optional react support.\n *\n * Initialization lifecycle:\n *\n * - `set(props)`\n * - `load() => payload`\n * - `onLoad?(payload)`\n * - `update()`\n * - `render(payload, props)`\n * - `whenRendered`\n * - - / If needs to reload, e.g. bypass cache /\n * - - `onLoad(newPayload) `\n * - - `whenRendered`\n * - `whenLoaded`\n */\nexport class FEAASBase<Props = any, Payload = any> extends WebComponent {\n static observedAttributes: string[]\n\n defaultProps = {} as Partial<Props>\n\n /** Return attributes as parsed values */\n getProps(context?: HTMLElement): any {\n return {}\n }\n\n /** Properties parsed in current tick */\n props: Props\n overrides: Props\n\n /** Timer until next tick */\n nextRender: number\n\n /** Is/was component in the dom? */\n connected = false\n\n refs: Record<string, FEAASBase> = {}\n descendants: FEAASBase[] = []\n\n /** Result of lazy loading */\n payload: Payload\n whenLoaded = ControlledPromise<Payload>((payload) => {\n this.payload = payload\n })\n\n constructor() {\n super()\n this.addEventListener('feaasMount', this)\n this.addEventListener('feaasUnmount', this)\n }\n\n /** Attaches shadow root if getShadowRootOptions any settings, or uses element itself */\n getRoot(): FEAASBase | HTMLElement | ShadowRoot {\n return this\n }\n\n /** Attribute changes trigger props parsing and schedules re-rendering */\n attributeChangedCallback(name: string, oldValue: string, newValue: string) {\n this.set()\n }\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 /**\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() as FEAASBase\n // Allow parent component to initialize first\n if (parent && !parent.connected) return\n if (this.connected) return\n this.connected = true\n this.log('FEAAS: Mount', this.tagName, this)\n this.dispatchEvent(new Event('feaasMount', { bubbles: true, composed: true }))\n this.getElements().map((element: FEAASBase) => element.mount?.())\n this.set()\n } catch (e) {\n this.onError(e)\n }\n }\n\n log(...args: any) {\n console.log(...args)\n }\n\n /** Nothing special happens on unmount, except setting a flag */\n unmount() {\n if (!this.connected) return\n this.log('FEAAS: Unmount', this)\n this.dispatchEvent(new Event('feaasUnmount', { bubbles: true, composed: true }))\n this.connected = false\n }\n\n getParent(onlyFeaas = true) {\n for (\n var p: HTMLElement = this;\n (p = p.parentElement || ((p.parentNode instanceof ShadowRoot ? p.parentNode.host : null) as HTMLElement));\n\n ) {\n if (!onlyFeaas || p.tagName.startsWith('FEAAS-')) return p\n }\n }\n\n getElements(root: HTMLElement | ShadowRoot = this.getRoot(), onlyFeaas = true): HTMLElement[] {\n return Array.from(root.querySelectorAll('*'))\n .map(\n (el) =>\n [\n !onlyFeaas || el.tagName.startsWith('FEAAS-') ? el : null,\n el.shadowRoot ? this.getElements(el.shadowRoot, onlyFeaas) : null\n ] as HTMLElement[]\n )\n .flat()\n .filter(Boolean)\n }\n\n /** Catch-all event handler that dispatches events to callback */\n handleEvent(event: Event) {\n const target = event.composedPath()[0] as FEAASBase\n switch (event.type) {\n case 'feaasMount':\n if (target != this) this.nestedCallback(target)\n break\n case 'feaasUnmount':\n if (target != this) this.unnestedCallback(target)\n break\n }\n }\n\n /** Act on children element being removed */\n unnestedCallback(target: FEAASBase) {\n const index = this.descendants.indexOf(target)\n if (index == -1) 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) target.refs.parent = null\n if (target.refs.top == this) {\n target.refs.top = target.refs.parent\n }\n }\n\n /** Act on children element being added */\n nestedCallback(target: FEAASBase): boolean | void {\n const index = this.descendants.indexOf(target)\n if (index != -1) 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 target.refs.parent ||= this\n if (target.render) {\n for (var p: FEAASBase = target.refs.parent; p; p = p.refs.parent) {\n if (p.render) {\n target.refs.parentReact ||= p\n target.refs.topReact = p\n }\n }\n }\n }\n\n getComponentName() {\n return this.tagName.replace('FEAAS-', '').toLowerCase()\n }\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\n /** Generic error handler */\n onError(error: Error, where: string = 'uncaught', handled = false) {\n const event = new CustomEvent('feaasError', { bubbles: true, composed: true, detail: error })\n this.dispatchEvent(event)\n this.whenLoaded.reject(error)\n if (!event.defaultPrevented && !handled) {\n this.whenRendered.reject(error)\n try {\n this.unmount()\n } catch (e) {}\n return true\n }\n return false\n }\n\n shouldUpdateOnLoad() {\n return true\n }\n\n onLoad: (payload: Payload) => void\n\n /** Load lazy component & render */\n async advance() {\n try {\n if (this.payload === undefined) {\n if (!this.isReadyToLoad()) return\n this.payload = null\n this.dispatchEvent(new Event('feaasLoad', { bubbles: true, composed: true }))\n const loaded = await this.load().catch((e) => {\n this.payload = undefined\n throw e\n })\n\n this.whenLoaded.resolve(loaded)\n\n // Allow component to handle the post-loading\n if (this.onLoad) {\n return\n }\n } else if (this.payload == null) {\n return\n }\n this.flush()\n this.whenRendered.resolve(this)\n } catch (e) {\n this.onError(e)\n }\n }\n\n flush() {\n const flushSync = (this.payload as ReactPayload)?.ReactDOM?.flushSync\n if (flushSync) {\n flushSync(() => this.update())\n } else {\n this.update()\n }\n }\n\n /** Invoke preloading logic that needs to finish before component can render */\n load() {\n return Promise.resolve(null)\n }\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(): any {\n //this.log('FEAAS: React', this.tagName, this.payload)\n if (this.payload == null) return\n if (!this.render) return\n const { React, ReactDOM, ReactDOMClient } = (this.payload as ReactPayload) || {}\n if (!React) throw new Error(`${this.tagName}: React is not present in payload`)\n if (!ReactDOM) throw new Error(`${this.tagName}: ReactDOM is not present in payload`)\n if (!this.refs.topReact && !this.forceUpdateReact) {\n if (ReactDOMClient) {\n this.reactRoot ||= ReactDOMClient.createRoot(this.getReactRootElement())\n this.reactRoot.render(this.getReactElement())\n } else {\n ReactDOM.render(this.getReactElement(), this.getReactRootElement())\n }\n } else if (this.forceUpdateReact) {\n this.forceUpdateReact?.()\n } else {\n this.refs.topReact.forceUpdateReact?.()\n }\n }\n\n invokeReactRendering(): ReactNode {\n const { React, ReactDOM } = (this.payload as ReactPayload) || {}\n if (!this.connected) return null\n const children = this.descendants\n .filter((r) => {\n return r.refs.parentReact == this && r.payload\n })\n .map((child: FEAASBase<any, any>, index) => {\n return this.getReactElement(child)\n })\n return this.render({ ...this.props, children }, this.payload)\n }\n\n reactWrapper: React.FunctionComponent\n reactErrorBoundary: new (...args: any) => React.Component<{ children: any; slot: string }, { error: Error }>\n reactRoot: ReactDOMClient.Root\n\n getReactErrorBoundary(target: FEAASBase = this, displayName = target.tagName) {\n if (this.reactErrorBoundary) return this.reactErrorBoundary\n\n const { React, ReactDOM } = (target.payload as ReactPayload) || {}\n return (this.reactErrorBoundary ||= class FEAASErrorBoundary extends React.Component<\n { children: any; slot: string },\n { error: Error }\n > {\n state = {\n error: null as Error\n }\n\n static getDerivedStateFromError(error: Error) {\n return { error: error }\n }\n\n componentDidCatch(error: Error, errorInfo: any) {\n console.error(`FEAAS: ${target.tagName} Error:`, error, errorInfo)\n target.onError(error, 'react')\n //this.setState({ error: error })\n }\n\n render() {\n if (this.state.error) {\n // target.classList.add('feaas-error')\n return\n //return <h1>There seems to be a problem.</h1>\n }\n //if (target.classList.contains('feaas-error')) target.classList.remove('feaas-error')\n\n return this.props.children\n }\n })\n }\n\n getReactElement(target: FEAASBase = this, props?: any) {\n const { React, ReactDOM } = (target.payload as ReactPayload) || {}\n const ErrorBoundary = this.getReactErrorBoundary()\n const Wrapper = this.getReactWrapper(target)\n return (\n <ErrorBoundary key={target.tagName + '-' + target.getUID()} slot={target.getAttribute('slot')}>\n <Wrapper />\n </ErrorBoundary>\n )\n }\n\n getReactWrapper(target: FEAASBase = this, displayName = target.tagName) {\n if (target.reactWrapper) return target.reactWrapper\n\n const { React, ReactDOM } = (target.payload as ReactPayload) || {}\n\n target.reactWrapper = (props?: any) => {\n if (target.render) {\n const [value, forceUpdateReact] = React.useReducer((r) => r + 1, 0)\n target.forceUpdateReact = forceUpdateReact\n return ReactDOM.createPortal(<>{target.invokeReactRendering()}</>, target.getReactRootElement())\n } else {\n return target.update()\n }\n }\n\n Object.assign(target.reactWrapper, {\n key: target.tagName + '-' + target.getUID(),\n displayName: displayName\n })\n\n return target.reactWrapper\n }\n\n uid: string\n getUID() {\n return (this.uid ||= String(Math.random()))\n }\n forceUpdateReact: (node?: ReactNode) => void\n\n /**\n * Render method that is pretty much the same as React Functional component, but with extra second argument for\n * payload (usually result of import, it is expected to have React in scope).\n */\n render?(props: React.PropsWithChildren<Props>, payload: Payload): ReactNode | ReactElement\n\n useShadowRoot: boolean\n getShadowRoot() {\n if (!this.shadowRoot) {\n this.attachShadow({ mode: 'open' })\n }\n return this.shadowRoot\n }\n getReactRootElement(): HTMLElement | ShadowRoot {\n return this.useShadowRoot ? this.getShadowRoot() : this.getRoot()\n }\n\n /** Set props and return values on new next tick */\n set(overrides?: Partial<Props>) {\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 value = this.props[property]\n const attribute = property.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n if (value == null || value === this.defaultProps[property as keyof typeof this.defaultProps]) {\n this.removeAttribute(attribute)\n } else if (typeof value == 'string' || typeof value == 'number' || typeof value == 'boolean') {\n if (this.getAttribute(attribute) != String(value)) this.setAttribute(attribute, String(value))\n }\n }\n } catch (e) {\n this.whenRendered.reject(e)\n this.onError(e, 'set')\n }\n return this\n }\n\n import(path: string): Promise<Payload> {\n return import(/* @vite-ignore */ /* webpackIgnore: true */ path)\n }\n\n /** Schedule rendering on next tick, to batch multiple attribute changes */\n initialized: boolean\n whenRendered = ControlledPromise<this>(\n () => (this.initialized = true),\n () => cancelAnimationFrame(this.nextRender)\n )\n scheduleRender() {\n if (this.nextRender == null) {\n this.whenRendered = this.whenRendered.restart()\n }\n cancelAnimationFrame(this.nextRender)\n this.nextRender = requestAnimationFrame(() => {\n this.nextRender = null\n this.advance().catch((e) => {})\n })\n }\n\n formatURL(src: string, hostname: string) {\n if (typeof src == 'string' && src.match(/^\\/[^\\/]/)) {\n return hostname + src\n } else {\n return src\n }\n }\n\n getContextAttribute(name: string, element = this) {\n for (\n var p: HTMLElement = this;\n (p = p.parentElement || ((p.parentNode instanceof ShadowRoot ? p.parentNode.host : null) as HTMLElement));\n\n ) {\n if (p.getAttribute(name) != null) return p.getAttribute(name)\n }\n return this.getAttribute(name)\n }\n\n static register(tagName: string, win?: Window) {\n if (win == null) win = typeof window != 'undefined' ? window : null\n if (win && !win.customElements.get(tagName)) {\n win.customElements.define(tagName, this)\n }\n }\n}\n\nexport { FEAASBase as Base }\n","import type { ReactNode, ReactElement, JSXElementConstructor, PropsWithChildren } from 'react'\nimport { FEAASBase } from './FEAASBase.js'\n\nexport type ReactModules = {\n React: typeof React\n ReactDOM: typeof ReactDOM\n}\nexport type ReactJSX = ReactNode | ReactElement<any, string | JSXElementConstructor<any>>\nexport type FEAASReactRender<P> = {\n (this: FEAASElement<P>, props: P, payload: ReactModules): ReactJSX\n}\n\nexport default class FEAASElement<P> extends FEAASBase<P, ReactModules> {\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\n render({}: P, { React }: ReactModules): ReactJSX {\n return <></>\n }\n}\n\ninterface MyComponentProps {\n counter: string\n}\n\nexport class MyComponent extends FEAASElement<MyComponentProps> {\n // will re-render component if any of these attributes have changed\n static observedAttributes = ['counter']\n\n 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\n // First argument is props, second arguments is React stuff\n // Destructuring React is important for JSX to work\n render({ counter }: MyComponentProps, { React }: ReactModules): ReactJSX {\n const [updates, setUpdates] = React.useState(0)\n React.useEffect(() => {\n setUpdates((u) => u + 1)\n }, [counter])\n return (\n <>\n <p>Rendering attribute: {counter}</p>\n <p>Triggered updates: {updates}</p>\n </>\n )\n }\n}\n","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'\n\nexport type Datascopes = Record<string, any> | any[]\n\nexport function cleanCollectionBit(path: string) {\n return path.replace(/(\\[[^\\]\\[]+\\]|\\.\\*)$/g, '')\n}\n\nexport function normalizeCollectionScope(path: string) {\n return cleanCollectionBit(path) + '.*'\n}\n\nexport function queryScopes(scopes: any, datapath: string, singleValue = false, json: any = scopes) {\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 } else {\n continue\n }\n }\n path = datapath.substring(scope.length + 1)\n json = scopes[scope]\n break\n }\n }\n\n var collection = JSONPath({ path, json })\n\n // If regular path didn't match any data, try fallbacks\n // datasourceId.wrapper.$.path\n if (Array.isArray(collection) && 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.'),\n // look up trimmed path in catch all datasource\n // _.path\n path.replace(/^.*?\\.\\$\\./, '_.'),\n // look up trimmed path on root\n // path\n path.replace(/^.*?\\.\\$\\./, ''),\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 : JSONPath({ path, json })\n }, [] as any[])\n }\n\n if (singleValue && Array.isArray(collection)) {\n return collection[0]\n } else {\n return collection\n }\n}\n\nexport type CH1Node =\n | {\n type: string\n text?: string\n content?: CH1Node[]\n marks?: CH1Node[]\n attrs?: Record<string, any>\n }\n | CH1Node[]\nfunction serializeCH1Tag(data: any, attrs: Record<string, string> = {}, tag: string): string {\n if (!tag) return serializeCH1RichText(data)\n return `<${tag}${Object.entries(attrs)\n .map(([k, v]) => v != null && ` ${k}=\"${v}\"`)\n .filter(Boolean)\n .join('')}>${serializeCH1RichText(data)}</${tag}>`.replace(/^<([a-z0-9][^>]*)><\\/[^>]+>$/, '<$1 />')\n}\nexport function serializeCH1RichText(data: CH1Node | string | null | undefined): string {\n if (Array.isArray(data)) return data.map(serializeCH1RichText).join('\\n').trim()\n if (typeof data == 'string') return data\n if (data == null) 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 || []) as any[]).reduce((text, mark) => {\n return serializeCH1Tag(\n text,\n mark.attrs,\n {\n link: 'a',\n bold: 'strong',\n italic: 'em',\n strike: 's',\n underline: 'u'\n }[mark.type as string]\n )\n }, data.text?.replace(/\\s+/, ' '))\n default:\n return serializeCH1Tag(\n data.content || data.text,\n data.attrs,\n {\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 }\n}\n\nexport { JSONPath }\n","/** Lightweight DOM parser and serializer to use in server environments */\n\nimport { Datascopes } from './data.js'\nimport { FEAASCustomizations, renderDOMElement } from './rendering.js'\n\ntype HTMLAttribute = { name: string; value: string }\n\nclass HTMLNode {\n nodeName: string\n nodeType: number\n textContent?: string\n attributes: HTMLAttribute[]\n childNodes: HTMLNode[]\n parentNode?: HTMLNode\n\n constructor(nodeName: string, nodeType: number = 1, textContent?: string) {\n this.nodeName = nodeName\n this.nodeType = nodeType\n this.textContent = textContent\n this.attributes = []\n this.childNodes = []\n }\n\n setAttribute(name: string, value: string) {\n const attr = this.attributes.find((attr) => attr.name === name)\n if (attr) {\n attr.value = value\n } else {\n this.attributes.push({ name, value })\n }\n }\n\n getAttribute(name: string): string | undefined {\n const attr = this.attributes.find((attr) => attr.name === name)\n return attr ? attr.value : undefined\n }\n\n insertBefore(newNode: HTMLNode, referenceNode: HTMLNode | null) {\n newNode.parentNode = this\n if (referenceNode === null) {\n this.childNodes.push(newNode)\n } else {\n const index = this.childNodes.indexOf(referenceNode)\n if (index !== -1) {\n this.childNodes.splice(index, 0, newNode)\n }\n }\n }\n\n removeAttribute(attrName: string) {\n const index = this.attributes.findIndex((attr) => attr.name === attrName)\n if (index !== -1) {\n this.attributes.splice(index, 1)\n }\n }\n\n appendChild(newNode: HTMLNode) {\n newNode.parentNode = this\n this.childNodes.push(newNode)\n }\n\n get tagName() {\n return this.nodeName?.toUpperCase()\n }\n get innerHTML() {\n return serializeHTML(this.childNodes)\n }\n set innerHTML(html: string) {\n this.childNodes = parseHTML(html)\n }\n get outerHTML() {\n return serializeHTML([this])\n }\n\n closest(selector: string): HTMLNode | null {\n let currentNode: HTMLNode | undefined = this\n\n while (currentNode) {\n if (selectorMatchesNode(selector, currentNode)) {\n return currentNode\n }\n\n currentNode = currentNode.parentNode\n }\n\n return null\n }\n\n querySelectorAll(selector: string): HTMLNode[] {\n const selectors = selector.split(/\\s*,\\s*/)\n const results: HTMLNode[] = []\n\n const checkNode = (node: HTMLNode) => {\n for (const sel of selectors) {\n if (selectorMatchesNode(sel, node)) {\n results.push(node)\n break\n }\n }\n\n for (const child of node.childNodes) {\n checkNode(child)\n }\n }\n\n for (const child of this.childNodes) {\n checkNode(child)\n }\n\n return results\n }\n\n querySelector(selector: string): HTMLNode {\n return this.querySelectorAll(selector)[0]\n }\n\n private findSibling(step: -1 | 1, elementTypeOnly?: boolean): HTMLNode | null {\n if (!this.parentNode) return null\n const siblings = this.parentNode.childNodes\n const index = siblings.indexOf(this)\n if (index === -1) return null\n\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\n return null\n }\n\n removeChild(child: HTMLNode): HTMLNode {\n const index = this.childNodes.indexOf(child)\n if (index === -1) return\n this.childNodes.splice(index, 1)\n child.parentNode = undefined\n return child\n }\n\n get previousSibling(): HTMLNode | null {\n return this.findSibling(-1)\n }\n\n get nextSibling(): HTMLNode | null {\n return this.findSibling(1)\n }\n\n get previousElementSibling(): HTMLNode | null {\n return this.findSibling(-1, true)\n }\n\n get nextElementSibling(): HTMLNode | null {\n return this.findSibling(1, true)\n }\n cloneNode(deep: boolean = false): HTMLNode {\n const clonedNode = new HTMLNode(this.nodeName, this.nodeType)\n clonedNode.attributes = JSON.parse(JSON.stringify(this.attributes))\n\n if (this.textContent) {\n clonedNode.textContent = this.textContent\n }\n\n if (deep) {\n for (const childNode of this.childNodes) {\n const clonedChild = childNode.cloneNode(true)\n clonedNode.appendChild(clonedChild)\n }\n }\n\n return clonedNode\n }\n get parentElement() {\n return this.parentNode?.nodeType == 1 ? this.parentNode : null\n }\n\n ownerDocument = {\n createElement(name: string): HTMLNode {\n return new HTMLNode(name)\n }\n }\n}\n\nfunction selectorMatchesNode(selector: string, node: HTMLNode): boolean {\n const simpleSelectors = selector.match(/([.#]?[\\w-]+|\\[([\\w-]+)(=\"([^\"]*)\")?\\])/g)\n if (!simpleSelectors) {\n return false\n }\n\n for (const simpleSelector of simpleSelectors) {\n if (simpleSelector.startsWith('#')) {\n if (node.getAttribute('id') !== simpleSelector.slice(1)) {\n return false\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 } 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\n if (typeof attrValue === 'undefined') {\n if (actualValue === undefined) {\n return false\n }\n } else {\n if (actualValue !== attrValue) {\n return false\n }\n }\n } else {\n return false\n }\n } else {\n if (node.nodeName !== simpleSelector) {\n return false\n }\n }\n }\n\n return true\n}\n\nexport function parseHTML(html: string): HTMLNode[] {\n const nodes: HTMLNode[] = []\n const stack: HTMLNode[] = []\n\n while (html) {\n const openTagMatch = html.match(/^<([\\w-]+)(\\s[^>]*)?>/)\n const closingTagMatch = html.match(/^<\\/([\\w-]+)>/)\n\n if (openTagMatch) {\n const nodeName = openTagMatch[1]\n const attrsStr = openTagMatch[2] || ''\n const attrs =\n attrsStr.match(/([\\w-]+)(=\"([^\"]*)\")?/g)?.map((attr) => {\n const [_, name, , value] = attr.match(/([\\w-]+)(=\"([^\"]*)\")?/)\n return { name, value: unescapeHTML(value || '') }\n }) || []\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 } else {\n nodes.push(node)\n }\n stack.push(node)\n html = html.slice(openTagMatch[0].length)\n } else if (closingTagMatch) {\n stack.pop()\n html = html.slice(closingTagMatch[0].length)\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 } else {\n nodes.push(textNode)\n }\n html = html.slice(textContent.length)\n }\n }\n\n return nodes\n}\n\nexport function escapeHTML(input: string): string {\n return input\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#x27;')\n}\n\nfunction unescapeHTML(input: string): string {\n return input\n .replace(/&amp;/g, '&')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&quot;/g, '\"')\n .replace(/&#x27;/g, \"'\")\n}\n\nexport function serializeHTML(nodes: HTMLNode[]): string {\n return nodes\n .map((node) => {\n if (node.nodeType === 3) {\n return node.textContent || ''\n }\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 } else {\n return `<${nodeName}${serializedAttributes}>${serializedChildren}</${nodeName}>`\n }\n })\n .join('')\n}\n\nexport function renderHTMLContent(template: string, data?: Datascopes, config?: FEAASCustomizations) {\n const newTemplate = config?.processTemplate?.(null, template, data) || template\n const nodes = parseHTML(newTemplate)\n return renderDOMElement(nodes[0] as unknown as HTMLElement, data, config).outerHTML\n}\n","export function observeDOMElement(element: HTMLElement) {\n const observer = new element.ownerDocument.defaultView.MutationObserver((changes) => {\n changes.forEach((change) => {\n const target = change.target as HTMLElement\n const src = target.getAttribute('data-embed-src')\n if (src) {\n loadScript(target, src)\n }\n\n if (change.addedNodes) {\n change.addedNodes.forEach((node) => {\n if (node.nodeType == 1) autoloadScripts(node as HTMLElement, false)\n })\n }\n })\n })\n observer.observe(element, { attributes: true, subtree: true, childList: true })\n return observer\n}\n\nexport function autoloadScripts(element: HTMLElement, 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 as HTMLElement, embed.getAttribute('data-embed-src'))\n }\n if (observe) return observeDOMElement(element)\n}\n\nexport function loadScript(element: HTMLElement, src: string) {\n for (var p = element; p; p = p.parentElement as HTMLElement) {\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') 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","import { FEAASCDNComponentProps } from '../cdn.js'\nimport { Datascopes, normalizeCollectionScope, queryScopes, serializeCH1RichText } from './data.js'\nimport { parseHTML } from './html.js'\nimport { loadScript } from './scripts.js'\n\nexport interface FEAASCustomizations {\n processTemplate?: (element: HTMLElement, template: string, data: any) => string\n processData?: (element: HTMLElement, data: any) => any\n processValue?: (element: HTMLElement, property: string, value: any) => any\n shouldRepeat?: (element: HTMLElement, value: any) => boolean\n onRender?: (element: HTMLElement, data: any) => void\n}\n\nexport interface ExplicitTemplate {\n template: string\n}\n\nexport type FEAASComponentProps<T = Datascopes> = Partial<ExplicitTemplate> & {\n data?: T\n} & (ExplicitTemplate | FEAASCDNComponentProps) &\n FEAASCustomizations\n\nfunction getDOMCollectionIndex(element: HTMLElement) {\n const datascope = element.getAttribute('data-path-scope')\n var index = 0\n for (var p = element; (p = <HTMLElement>p.previousElementSibling); ) {\n if (p.getAttribute('data-path-scope') == datascope) {\n index++\n }\n }\n return index\n}\n\nfunction updateDOMClones(element: HTMLElement, targetCount: number, config?: FEAASCustomizations) {\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\n const parentElement = element.parentNode as HTMLElement\n if (parentElement == null) {\n return\n }\n\n /*dont remove first element, just hide it*/\n if (targetCount == 0) {\n element.setAttribute('hidden', 'hidden')\n } else if (element.getAttribute('hidden') != null) {\n element.removeAttribute('hidden')\n }\n\n var count = index + 1\n var last = element\n for (var n = element; (n = <HTMLElement>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 = <HTMLElement>last.previousElementSibling\n parentElement.removeChild(<HTMLElement>last.nextElementSibling)\n }\n}\n\nexport function setDOMAttribute(element: HTMLElement, attribute: string, value: any, config?: FEAASCustomizations) {\n if (!element) return\n var target = element\n if (value?.type == 'doc' && Array.isArray(value.content)) value = serializeCH1RichText(value)\n if (config?.processValue) {\n value = config?.processValue(element, attribute, value)\n }\n var prop = attribute.replace('data-path-', '')\n if (attribute == 'data-path-src') {\n target = element.tagName == 'IMG' ? element : <HTMLElement>element.querySelector('img, video')\n } else if (attribute == 'data-path-href') {\n target = element.querySelector('a') || element.closest('a')\n } else if (attribute == 'data-path-alt') {\n target = element.querySelector('img, picture')\n } else if (attribute == 'data-path-hidden') {\n value = !value ? true : null\n } else if (attribute == 'data-path' || attribute == 'data-embed-html' || attribute == 'html') {\n prop = 'innerHTML'\n } else if (attribute == 'data-embed-src') {\n loadScript(element, value)\n } else if (attribute == 'data-path-attributes') {\n const oldKeys = element.getAttribute('data-attributes-keys')?.split(',').filter(Boolean) || []\n if (!Array.isArray(value))\n for (var property in value) {\n var subvalue = value[property]\n setDOMAttribute(\n element,\n property,\n typeof subvalue == 'object' && subvalue ? JSON.stringify(subvalue) : subvalue,\n config\n )\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 return\n }\n if (typeof value == 'boolean') {\n value = value ? '' : null\n }\n if (!target) return\n\n var placeholder = String(element.getAttribute('data-path-placeholder') || target[prop as keyof HTMLElement])\n\n if (value != null) {\n if (prop == 'innerHTML') {\n if (target.innerHTML != value) {\n target.innerHTML = value\n }\n } else {\n if (target.getAttribute(prop) != value) {\n target.setAttribute(prop, value)\n }\n }\n } else {\n if (prop == 'innerHTML') {\n target.innerHTML = placeholder\n } else {\n target.removeAttribute(prop)\n }\n }\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(\n input: HTMLElement | DocumentFragment,\n datascopes?: any,\n config?: FEAASCustomizations,\n isNested?: boolean\n) {\n const element = <HTMLElement>input\n if (!isNested) {\n datascopes = config?.processData?.(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, config?.shouldRepeat?.(element, collection) === false ? 1 : collection.length, config)\n }\n\n datascopes = {\n ...datascopes,\n [normalizeCollectionScope(datascope)]: collection[index]\n }\n }\n const attrs = Array.prototype.slice.call(element.attributes).sort((a: Attr, b: Attr) => {\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), 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: Node; (child = element.childNodes[i++]); ) {\n if (isElement(child)) {\n renderDOMElement(child, datascopes, config, true)\n }\n }\n if (!isNested) {\n config?.onRender?.(element, datascopes)\n }\n return element\n}\nfunction isElement(node: Node): node is HTMLElement {\n return node.nodeType == 1\n}\n\nexport function renderDOMContent(root: HTMLElement, template: string, data?: Datascopes, config?: FEAASCustomizations) {\n const newTemplate = config?.processTemplate?.(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: Node; (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}\n\nexport function renderHTMLContent(template: string, data?: Datascopes, config?: FEAASCustomizations, fakeDOM = false) {\n const newTemplate = config?.processTemplate?.(null, template, data) || template\n if (typeof document === 'undefined' || fakeDOM) {\n const nodes = parseHTML(newTemplate)\n return renderDOMElement(nodes[0] as unknown as HTMLElement, data, config).outerHTML\n } else {\n const root = document.createElement('div')\n root.innerHTML = newTemplate\n renderDOMElement(root, data, config)\n return root.innerHTML\n }\n}\n","import { ControlledPromise } from './utils/promise.js'\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 */\nconst phases = ['initial', 'check', 'updated'] as const\nexport type ValidatableRequestPhase = typeof phases[number]\nexport type FetchCache = Record<string, FetchCacheRequest>\nexport interface ValidatableRequest {\n url: Parameters<typeof fetch>[0]\n options?: Parameters<typeof fetch>[1]\n validator?: (resposne: Response) => boolean\n callback?: (response: Response, status: ValidatableRequestPhase, isCached: boolean) => any\n isCached?: boolean\n response?: Response\n cache?: FetchCache\n}\n\nexport type FetchCacheRequest = {\n phase: ValidatableRequestPhase\n initial: ControlledPromise<Response>\n check: ControlledPromise<Response>\n updated: ControlledPromise<Response>\n final: ControlledPromise<Response>\n}\n\nexport var fetchCache: Record<string, FetchCacheRequest> = {}\nexport function clearFetchCache() {\n fetchCache = {}\n}\n\nexport async function fetchAndRevalidate(\n url: ValidatableRequest['url'],\n options?: ValidatableRequest['options'],\n validator?: ValidatableRequest['validator'],\n callback?: ValidatableRequest['callback'],\n cache: FetchCache = fetchCache\n) {\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\nexport function getFetchCache(url: Parameters<typeof fetch>[0], 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}\n\nexport async function fetchWithCacheAwareness(\n { url, options, validator, callback, cache }: ValidatableRequest,\n phase: ValidatableRequestPhase = 'initial'\n) {\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 } 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 } else {\n cachedRequest[phase].resolve(response)\n }\n }\n if (!response.ok) throw new Error('Fetch failed')\n if (validator?.(response) === false) throw new Error('Response is not valid')\n // see if response was pulled from cache\n const isCached =\n new Date(response.headers.get('date')) < date ||\n (promise && phase == 'initial' && (cachedRequest.phase == 'updated' || cachedRequest.phase == 'check'))\n await callback?.(response, phase, isCached)\n return {\n url,\n options,\n isCached,\n response,\n validator,\n callback,\n cache\n }\n}\n\nexport async function fetchToValidateCache(\n request: ValidatableRequest & Required<Pick<ValidatableRequest, 'response'>>\n) {\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 {\n url: url + '?head',\n options: {\n ...options,\n method: 'HEAD',\n cache: 'no-cache'\n },\n validator,\n cache\n },\n 'check'\n )\n\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 // otherwise the new resource has to be re-fetched\n return fetchBypassingCache(request)\n }\n }\n return request\n}\n\nexport async function fetchBypassingCache(request: ValidatableRequest) {\n return fetchWithCacheAwareness(\n {\n ...request,\n options: {\n ...request.options,\n cache: 'reload'\n }\n },\n 'updated'\n )\n}\n","import {\n fetchAndRevalidate,\n fetchWithCacheAwareness,\n fetchBypassingCache,\n fetchToValidateCache,\n ValidatableRequestPhase\n} from './fetch.js'\n\nexport const DEFAULT_CDN_URL = `https://feaas.blob.core.windows.net`\nexport type FEAASCDNComponentParams = {\n cdn?: string\n revision?: 'staged' | 'published' | 'saved' | number\n library: string\n component: string\n version?: string\n\n /** @deprecated Use `cdn` instead */\n hostname?: string\n}\nexport type FEAASCDNComponentSource = {\n src: string\n}\nexport type FEAASCDNComponentParamsCustomizations = {\n instance?: string\n}\nexport type FEAASCDNComponentProps = (FEAASCDNComponentParams | FEAASCDNComponentSource) &\n FEAASCDNComponentParamsCustomizations\n\nexport interface FEAASCDNStylesheetParams {\n cdn?: string\n library: string\n revision?: 'staged' | 'published' | 'saved' | number\n\n /** @deprecated Use `cdn` instead */\n hostname?: string\n}\n\nexport type FEAASCDNStylesheetSource = {\n src: string\n}\nexport type FEAASCDNStylesheetProps = FEAASCDNStylesheetParams | FEAASCDNStylesheetSource | string\n\nexport function parseComponentSource(source: string): FEAASCDNComponentParams {\n const match = source.match(\n /^(?:(.*?)\\/components)?\\/?([^\\/]+)\\/([^\\/]+)(?:\\/([^\\/]+)(?:\\/(published|staged|saved|\\d+)(?:\\.html?)?)?)?$/\n )\n if (match) {\n var [, cdn, library, component, version, revision] = match\n return { cdn, library, component, version, revision: revision as any }\n }\n}\nexport function getComponentSource(props: FEAASCDNComponentParams) {\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}/${\n props.component\n }/${\n !props.version || (props.version == 'responsive' && (!props.revision || props.revision == 'published'))\n ? ''\n : props.version\n }/${!props.revision || props.revision == 'published' ? '' : props.revision}`.replace(\n /(^\\/|\\/$|\\/\\/)(?!.+\\/components\\/)/g,\n ''\n )\n}\n\nexport function getStylesheetSource(props: FEAASCDNStylesheetParams) {\n return `${props.cdn && props.cdn != DEFAULT_CDN_URL ? `${props.cdn}/styles/` : ''}${props.library}/${\n !props.revision || props.revision == 'published' ? '' : props.revision\n }`.replace(/\\/$|\\/\\/(?!.+\\/styles\\/)/g, '')\n}\n\nexport function parseStylesheetSource(source: string): FEAASCDNStylesheetParams {\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 as any }\n // try parsing it as component url\n } else {\n const parsed = parseComponentSource(source) as Record<string, string>\n if (parsed) {\n var { cdn, library, revision } = parsed\n if (revision?.match(/\\d/)) revision = undefined\n return { cdn, library, revision: revision as any }\n }\n }\n}\nexport function getComponentURL(props: FEAASCDNComponentProps | string) {\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}/${\n props.version\n }/${props.revision || 'published'}.html`\n}\n\nexport function getStylesheetURL(props: FEAASCDNStylesheetProps) {\n if (typeof props == 'string') {\n props = { src: props }\n }\n if ('src' in props) {\n props = {\n ...parseStylesheetSource(props.src)\n }\n }\n return `${props.cdn || props.hostname || DEFAULT_CDN_URL}/styles/${props.library}/${\n props.revision || 'published'\n }.css`\n}\n\nexport async function fetchAndRevalidateComponent(\n props: FEAASCDNComponentProps,\n callback?: (html: string) => void,\n dontRevalidate = false\n) {\n const onlyIfNotDeleted = (response: Response) => {\n return response.headers.get('x-ms-meta-versionDeletedAt') == null\n }\n const parseResponse = (response: Response) => {\n return response.clone().text().then(callback)\n }\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 as Error),\n fetchWithCacheAwareness({ url: getComponentURL(props), validator: onlyIfNotDeleted }).catch((e) => e as Error)\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) 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\n/** Fetches HTML of a component. */\nexport async function fetchComponent(props: FEAASCDNComponentProps | string) {\n if (typeof props == 'string') props = { src: props }\n var template: string\n const { response } = await fetchAndRevalidateComponent(\n props,\n (result) => {\n template = result\n },\n true\n )\n return { ...props, template, lastModified: response.headers.get('last-modified') }\n}\n\nexport type ValidatableStylesheetCallback = (css: string, phase: ValidatableRequestPhase) => void\nexport async function fetchAndRevalidateStylesheet(\n props: FEAASCDNStylesheetProps,\n callback: ValidatableStylesheetCallback\n) {\n if (typeof props == 'string') props = { src: props }\n return fetchAndRevalidate(\n getStylesheetURL(props),\n {\n headers: {\n Accept: 'text/css'\n },\n credentials: 'omit'\n },\n (response) => {\n return response.headers.get('x-ms-meta-deletedAt') == null\n },\n (response, phase) => {\n return response\n .clone()\n .text()\n .then((text) => callback(text, phase))\n }\n )\n}\n","import {\n FEAASCDNStylesheetProps,\n fetchAndRevalidateStylesheet,\n getStylesheetURL,\n ValidatableStylesheetCallback\n} from '../cdn.js'\n\nexport function renderStylesheet(props: FEAASCDNStylesheetProps, style?: HTMLStyleElement) {\n renderStylesheetPromise(props, (style ||= document.createElement('style')))\n return style\n}\n\nexport function renderStylesheetPromise(props: FEAASCDNStylesheetProps, stylesheet?: HTMLStyleElement) {\n stylesheet ||= document.createElement('style')\n return fetchAndRevalidateStylesheet(props, (cssText, phase) => {\n stylesheet.textContent = cssText\n }).then(() => stylesheet)\n}\n\nexport function loadStylesheet(props: FEAASCDNStylesheetProps, callback?: ValidatableStylesheetCallback) {\n var foundStylesheet = findStylesheet(props) as HTMLStyleElement\n if (!foundStylesheet) {\n var createdStylesheet = createStylesheet(props)\n }\n return fetchAndRevalidateStylesheet(props, (cssText, phase) => {\n if (createdStylesheet) {\n createdStylesheet.textContent = cssText\n }\n callback?.(cssText, phase)\n }).then(() => foundStylesheet || createdStylesheet)\n}\n\nexport function loadStylesheetAllowStale(props: FEAASCDNStylesheetProps) {\n return new Promise((resolve, reject) => {\n loadStylesheet(props, resolve).catch(reject)\n })\n}\n\nexport function findStylesheet(props: FEAASCDNStylesheetProps) {\n return document.head.querySelector(`style[data-href=\"${getStylesheetURL(props)}\"]`)\n}\n\nexport function createStylesheet(props: FEAASCDNStylesheetProps) {\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","import { fetchAndRevalidateComponent } from '../cdn.js'\nimport { Datascopes } from './data.js'\nimport { FEAASComponentProps, renderDOMContent, renderDOMElement } from './rendering.js'\n\nexport function renderComponentElement(content: string, datasources?: Datascopes) {\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}\n\nexport function renderComponent(props: FEAASComponentProps, root?: HTMLElement) {\n renderComponentPromise(props, (root ||= document.createElement('div')))\n return root\n}\n\nexport async function renderComponentPromise(props: FEAASComponentProps, root?: HTMLElement) {\n root ||= document.createElement('div')\n if (!root.childNodes.length) {\n if ('template' in props) {\n return renderDOMContent(root, props.template, props.data, props)\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 } else {\n return renderDOMElement(root, props.data, props)\n }\n}\n","import { DEFAULT_CDN_URL, FEAASCDNComponentParams, fetchAndRevalidateComponent, parseComponentSource } from '../cdn.js'\nimport { renderDOMContent, renderDOMElement } from '../dom/rendering.js'\nimport { loadStylesheetAllowStale } from '../headless.js'\nimport { FEAASBase } from './FEAASBase.js'\n\nexport function FEAASComponentsProps(element: FEAASBase = this) {\n let data: any\n const src = element.getAttribute('src')\n if (src) {\n const parsed = parseComponentSource(src)\n if (!parsed) 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 } catch (e) {}\n }\n return {\n data: data || {},\n cdn: element.getContextAttribute('cdn') ?? cdn ?? DEFAULT_CDN_URL,\n library: element.getAttribute('library') ?? library,\n component: element.getAttribute('component') ?? component,\n version: element.getAttribute('version') ?? version ?? 'responsive',\n revision: (element.getAttribute('revision') ?? revision ?? 'published') as FEAASCDNComponentParams['revision'],\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 withStylesheet: element.getAttribute('with-stylesheet') != 'false'\n }\n}\nexport type FEAASComponentsProps = ReturnType<typeof FEAASComponentsProps>\nexport class FEAASComponent extends FEAASBase<FEAASComponentsProps, string> {\n static 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 ]\n\n defaultProps = {\n cdn: DEFAULT_CDN_URL,\n revision: 'published',\n version: 'responsive',\n withStylesheet: true,\n editable: false,\n suspended: false\n } as Partial<FEAASComponentsProps>\n\n needsRefresh: boolean\n setData(data: any) {\n this.set({ data })\n }\n\n getProps() {\n return FEAASComponentsProps(this)\n }\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n if (oldValue === newValue) return\n // force component to be refreshed\n if (name == 'library' || name == 'component' || name == 'revision' || name == 'version') {\n this.payload = undefined\n }\n this.needsRefresh = true\n super.attributeChangedCallback(name, oldValue, newValue)\n }\n\n getEditor(): any {\n return (document.querySelector('feaas-context') as FEAASBase)?.refs.editor\n }\n\n constructor() {\n super()\n this.addEventListener('click', () => {\n if (this.props.editable) {\n this.edit()\n }\n })\n }\n\n edit() {\n const editor = this.getEditor()\n if (editor?.setTarget(this)) {\n editor.open()\n return true\n }\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) return\n for (var current = this as Element; (current = current.previousElementSibling); ) {\n if (current.getAttribute('data-path-scope') == scope) {\n var last = current\n } else {\n break\n }\n }\n return last as FEAASComponent\n }\n\n isReadyToLoad() {\n return (\n super.isReadyToLoad() && this.props.library != null && this.props.component != null && this.props.version != null\n )\n }\n\n onLoad = (html: string) => {\n this.payload = html\n this.advance()\n }\n\n async load() {\n // defer loading to original element\n if (this.getOriginal()) {\n return\n }\n if (this.props.withStylesheet) {\n var stylesheetPromise = loadStylesheetAllowStale({ ...this.props, revision: 'published' }).then(() => {\n stylesheetPromise = null\n if (this.payload) {\n this.onLoad(this.payload)\n }\n })\n }\n return Promise.all([\n stylesheetPromise,\n fetchAndRevalidateComponent(this.props, (html) => {\n this.payload = html\n if (!stylesheetPromise) this.onLoad(html)\n })\n ]).then(() => this.payload)\n }\n\n update() {\n if (Array.from(this.children).filter((c) => c.tagName != 'BR').length > 0 && !this.needsRefresh) {\n renderDOMElement(this, this.props.data)\n } else {\n this.needsRefresh = true\n // defer rendering to original element\n if (this.getOriginal()) {\n return\n }\n renderDOMContent(this, this.payload, this.props.data)\n }\n }\n}\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n 'feaas-component': {\n data?: any\n template?: string\n instance?: string\n editable?: boolean\n children?: any\n dangerouslySetInnerHTML?: { __html: string }\n 'last-modified'?: string\n 'with-stylesheet'?: 'false' | 'true' | ''\n } & (\n | {\n /** @deprecated Use cdn instead */\n hostname?: string\n cdn?: string\n library: string\n component: string\n version?: string\n revision?: FEAASComponentsProps['revision']\n }\n | { src: string }\n | { template: string }\n )\n }\n }\n}\nFEAASComponent.register('feaas-component')\n\nexport { FEAASComponent as Component, FEAASComponentsProps as ComponentProps }\n","import { FEAASBase } from './FEAASBase.js'\n\nexport function FEAASLoaderProps(element: HTMLElement = this) {\n return {\n opacity: element?.getAttribute('opacity') ? parseFloat(element?.getAttribute('opacity')) : 1,\n hidden: element?.getAttribute('hidden') != null\n }\n}\ntype FEAASLoaderProps = ReturnType<typeof FEAASLoaderProps>\n\nexport class FEAASLoader extends FEAASBase<FEAASLoaderProps, string> {\n stylesheet: HTMLStyleElement\n loader: HTMLDivElement\n\n getProps() {\n return FEAASLoaderProps(this)\n }\n\n defaultProps = {\n hidden: false\n } as Partial<FEAASLoaderProps>\n\n static observedAttributes = ['hidden', 'opacity']\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n if (oldValue === newValue) 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 } else {\n this.style.setProperty('opacity', '1', 'important')\n this.style.pointerEvents = 'all'\n }\n }\n return super.attributeChangedCallback(name, oldValue, newValue)\n }\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 <div class=\"spinner\">\n <svg\n viewBox=\"0 0 100 100\"\n style=\"\n animation: 2s linear 0s infinite normal none running loader-circular-spinner;\n display: block;\n width: 48px;\n height: 48px;\n \"\n >\n <circle fill=\"transparent\" cx=\"50\" cy=\"50\" r=\"42\" stroke=\"rgba(0,0,0,0.1)\" stroke-width=\"10px\"></circle>\n <circle\n fill=\"transparent\"\n stroke=\"#5548D9\"\n cx=\"50\"\n cy=\"50\"\n r=\"42\"\n stroke-width=\"10px\"\n stroke-linecap=\"round\"\n style=\"animation: 1.5s linear 0s infinite normal none running loader-circular-track\"\n ></circle>\n </svg>\n </div>`\n this.getRoot().appendChild(this.stylesheet)\n this.getRoot().appendChild(this.loader)\n }\n\n update() {\n this.loader.style.opacity = String(this.props.opacity)\n }\n}\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n 'feaas-loader': any\n }\n }\n}\nFEAASLoader.register('feaas-loader')\n\nexport { FEAASLoader as Loader }\n","import { DEFAULT_CDN_URL, FEAASCDNStylesheetParams, parseStylesheetSource } from '../cdn.js'\nimport { loadStylesheet } from '../dom/stylesheet.js'\nimport { FEAASBase } from './FEAASBase.js'\n\nexport function FEAASStylesheetProps(element: FEAASBase = this) {\n const src = element.getAttribute('src')\n if (src) {\n var { cdn, library, revision } = parseStylesheetSource(src)\n }\n return {\n library: element?.getContextAttribute('library'),\n revision: element?.getAttribute('revision') ?? revision ?? 'published',\n cdn: element?.getContextAttribute('cdn') ?? element?.getContextAttribute('hostname') ?? DEFAULT_CDN_URL\n } as FEAASCDNStylesheetParams\n}\nexport type FEAASStylesheetProps = ReturnType<typeof FEAASStylesheetProps>\n\nexport class FEAASStylesheet extends FEAASBase<FEAASStylesheetProps, string> {\n getProps() {\n return FEAASStylesheetProps(this)\n }\n\n isReadyToLoad(): boolean {\n return this.props.library != null && this.props.revision != null && this.props.cdn != null\n }\n\n onLoad = (html: string) => {\n this.payload = html\n this.advance()\n }\n\n load() {\n return loadStylesheet(this.props, this.onLoad)\n }\n}\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n 'feaas-stylesheet': Partial<FEAASStylesheetProps> & { children?: any }\n }\n }\n}\nFEAASStylesheet.register('feaas-stylesheet')\nexport { FEAASStylesheet as Stylesheet }\n","/**\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 */\n\nimport FEAASElement from './components/FEAASElement.js'\n\nexport * from './dom/rendering.js'\nexport * from './dom/data.js'\nexport * from './dom/scripts.js'\nexport * from './dom/stylesheet.js'\nexport * from './dom/component.js'\nexport * from './fetch.js'\nexport * from './cdn.js'\nexport * from './components/FEAASBase.js'\nexport * from './components/FEAASElement.js'\nexport * from './components/FEAASComponent.js'\nexport * from './components/FEAASLoader.js'\nexport * from './components/FEAASStylesheet.js'\n\ndeclare global {\n interface Window {\n FEAASLoading: Promise<any>\n FEAASElement: typeof FEAASElement\n }\n}\n\nif (typeof window != 'undefined') {\n window.FEAASElement = FEAASElement\n window.FEAASLoading ??= Promise.resolve()\n}\n","import type * as FEAASEditorImports from '@sitecore-feaas/frontend/editor'\nimport { FEAASBase, OptionalExcept } from '../components/FEAASBase.js'\nimport { FEAASLoader } from '../components/FEAASLoader.js'\n\nexport function getFramePosition(element: HTMLElement) {\n let positions = []\n if (element) {\n let currentWindow = element.ownerDocument.defaultView as Window\n let currentParentWindow\n let rect\n while (currentWindow !== window.top) {\n currentParentWindow = currentWindow.parent\n for (let idx = 0; idx < currentParentWindow.frames.length; idx++)\n if (currentParentWindow.frames[idx] === currentWindow) {\n for (let frameElement of currentParentWindow.document.getElementsByTagName('iframe')) {\n if (frameElement.contentWindow === currentWindow) {\n rect = frameElement.getBoundingClientRect()\n const style = frameElement.contentWindow.getComputedStyle(frameElement)\n\n positions.push({\n left: rect.left + parseInt(style.borderLeftWidth),\n top: rect.top + parseInt(style.borderTopWidth)\n })\n }\n }\n currentWindow = currentParentWindow as Window\n break\n }\n }\n }\n return positions.reduce(\n (accumulator, currentValue) => {\n return {\n left: accumulator.left + currentValue.left,\n top: accumulator.top + currentValue.top\n }\n },\n { left: 0, top: 0 }\n )\n}\nexport function FEAASEditorProps(element: FEAASBase = this) {\n return {\n context: HTMLElement,\n frontend: element?.getContextAttribute('frontend'),\n src: element?.getAttribute('src') ?? '/editor.js',\n library: element?.getAttribute('library'),\n component: element?.getAttribute('component'),\n version: element?.getAttribute('version'),\n instance: element?.getAttribute('instance'),\n forked: element?.getAttribute('forked'),\n revision: element?.getAttribute('revision') || 'saved',\n hidden: element?.getAttribute('hidden') != null,\n for: element?.getAttribute('for'),\n state: element?.getAttribute('state') || ('idle' as 'idle' | 'loading' | 'ready'),\n changed: element?.getAttribute('changed') != null\n }\n}\ntype FEAASEditorProps = ReturnType<typeof FEAASEditorProps>\ntype Rect = {\n top: number\n left: number\n width: number\n height: number\n}\n\nexport class FEAASEditor extends FEAASBase<FEAASEditorProps, typeof FEAASEditorImports> {\n framePoint: Pick<Rect, 'top' | 'left'> = { top: 0, left: 0 }\n wrapperRect: Rect = { top: 0, left: 0, width: 0, height: 0 }\n bodyRect: Rect = { top: 0, left: 0, width: 0, height: 0 }\n\n static observedAttributes = ['library', 'component', 'version', 'revision', 'hidden', 'state', 'changed', 'forked']\n\n defaultProps = {\n hidden: false\n } as Partial<FEAASEditorProps>\n\n getProps() {\n return FEAASEditorProps(this)\n }\n reactRootElement: HTMLDivElement\n getReactRootElement() {\n if (!this.reactRootElement) {\n this.reactRootElement = document.createElement('div')\n this.getRoot().appendChild(this.reactRootElement)\n }\n return this.reactRootElement\n }\n\n target: HTMLElement\n setTarget = (\n element: HTMLElement,\n props = {\n component: element.getAttribute('component'),\n version: element.getAttribute('version'),\n revision: element.getAttribute('revision'),\n instance: element.getAttribute('instance')\n }\n ) => {\n if (!this.closing && (!this.target || element == null)) {\n this.set(props)\n this.target = element\n return true\n }\n }\n\n showLoader() {\n if (!this.loader) {\n this.loader = document.createElement('feaas-loader') as FEAASLoader\n this.loader.setAttribute('opacity', '0.6')\n this.loader.style.zIndex = '1000'\n this.target.appendChild(this.loader)\n if (this.target.tagName == 'FEAAS-COMPONENT') {\n this.target.style.position = 'relative'\n }\n }\n }\n\n hideLoader() {\n if (this.loader) {\n this.loader.setAttribute('hidden', 'hidden')\n if (this.target.tagName == 'FEAAS-COMPONENT') {\n this.target.style.position = 'relative'\n this.target.style.position = ''\n }\n }\n }\n\n load() {\n return import(/* @vite-ignore */ /* webpackIgnore: true */ this.formatURL(this.props.src, this.props.frontend))\n }\n\n onChromeMeasureElement = (element: HTMLElement, rect: Rect = element.getBoundingClientRect()) => {\n if (element.ownerDocument == document) {\n return {\n left: rect.left - this.bodyRect.left,\n top: rect.top - this.bodyRect.top,\n width: rect.width,\n height: rect.height\n }\n }\n return {\n left: rect.left + this.framePoint.left - this.bodyRect.left,\n top: rect.top + this.framePoint.top - this.bodyRect.top,\n width: rect.width,\n height: rect.height\n }\n }\n\n onBeforeMeasure: FEAASEditorImports.EditorContext['onChromeBeforeMeasure'] = (refs) => {\n if (refs.memoized.focusable) this.framePoint = getFramePosition(refs.memoized.focusable)\n if (this.chrome) {\n this.wrapperRect = this.chrome.positionable.getBoundingClientRect()\n this.bodyRect = this.chrome.positionable.ownerDocument.body.parentElement.getBoundingClientRect()\n }\n }\n\n onMeasure: FEAASEditorImports.EditorContext['onChromeMeasure'] = () => {}\n onPosition: FEAASEditorImports.EditorContext['onChromePosition'] = ({ focusable, root }) => {\n if (!this.chrome || this.props.hidden) return\n if (focusable) {\n const topbarHeight = 64\n const padding = 16\n this.chrome.wrapper.style.width = focusable.width + padding * 2 + 'px'\n this.chrome.wrapper.style.height = focusable.height + padding * 1 + topbarHeight + 'px'\n this.chrome.wrapper.style.left = focusable.left - padding + 'px'\n this.chrome.wrapper.style.top = focusable.top - topbarHeight + 'px'\n this.chrome.wrapper.style.opacity = '1'\n this.chrome.absolute = this.querySelector('.ui.overlays')\n if (this.chrome.absolute) {\n this.chrome.absolute.style.left = root.left + 'px'\n this.chrome.absolute.style.top = root.top + 'px'\n }\n } else {\n this.chrome.wrapper.style.opacity = '0'\n this.chrome.wrapper.style.left = '-1000px'\n this.chrome.wrapper.style.top = '-1000px'\n // wrapper.style.left = '-1000px'\n // wrapper.style.top = '-1000px'\n }\n\n // this.setPlaceholder()\n }\n\n onWindowMessage = (event: MessageEvent) => {\n switch (event.data?.type) {\n case 'feaasEdit':\n const placeholder = this.getPlaceholder()\n if (this.setTarget(placeholder.editable, event.data)) {\n this.loader = placeholder.loader\n document.body.appendChild(placeholder.clipper)\n this.editedUID = event.data.id\n this.setPlaceholder()\n this.open()\n }\n break\n case 'feaasMeasurements':\n this.measurements = event.data.measurements\n if (!this.props.hidden) this.setPlaceholder()\n break\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n\n window.addEventListener('message', this.onWindowMessage)\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n\n window.removeEventListener('message', this.onWindowMessage)\n }\n\n onContentChange = () => {\n this.setAttribute('changed', 'changed')\n requestAnimationFrame(() => {\n this.setIframeComponentContent()\n })\n }\n\n iframe: HTMLIFrameElement\n setIframe(iframe: HTMLIFrameElement) {\n this.iframe = iframe\n }\n\n setIframeComponentContent() {\n if (this.placeholder && this.iframe && this.placeholder.editable.innerHTML)\n this.iframe.contentWindow.postMessage({\n type: 'feaasUpdate',\n id: this.editedUID,\n content: this.placeholder.editable.innerHTML\n })\n }\n\n setPlaceholder() {\n if (!this.iframe) return\n const x = this.iframe.clientWidth\n const y = this.iframe.clientHeight\n const rect = this.iframe.getBoundingClientRect()\n const placeholder = this.getPlaceholder()\n const body = document.body.getBoundingClientRect()\n const measurement = this.measurements[this.editedUID]\n if (!measurement) return\n Object.assign(placeholder.clipper.style, {\n position: 'absolute',\n top: rect.top + this.iframe.clientTop - body.top + 'px',\n left: rect.left + this.iframe.clientLeft - body.left + 'px',\n width: x + 'px',\n height: y + 'px',\n pointerEvents: 'none',\n zIndex: 1,\n overflow: 'hidden'\n })\n Object.assign(placeholder.positionable.style, {\n position: 'absolute',\n top: measurement.top + 'px',\n left: measurement.left + 'px',\n width: measurement.width + 'px',\n zIndex: 2,\n transition: 'opacity 0.4s',\n //height: measurement.height + 'px',\n pointerEvents: this.props.hidden ? 'none' : 'all'\n //outline: '3px solid orange'\n })\n Object.assign(placeholder.loader.style, {\n position: 'absolute',\n top: measurement.top + 'px',\n left: measurement.left + 'px',\n width: measurement.width + 'px',\n height: measurement.height + 'px',\n filter: 'opacity(0.6)',\n zIndex: 3,\n pointerEvents: 'none'\n //outline: '3px solid orange'\n })\n document.dispatchEvent(new Event('feaasRefresh', { bubbles: true }))\n }\n\n chrome: {\n positionable: HTMLDivElement\n absolute: HTMLDivElement\n wrapper: HTMLDivElement\n }\n\n measurements: Record<string, DOMRect>\n editedUID: string\n placeholder: {\n clipper: HTMLDivElement\n positionable: HTMLDivElement\n editable: HTMLDivElement\n loader: FEAASLoader\n }\n loader: FEAASLoader\n getPlaceholder() {\n if (this.placeholder) return this.placeholder\n this.placeholder = {\n clipper: document.createElement('div'),\n positionable: document.createElement('div'),\n editable: Object.assign(document.createElement('div'), { className: '-feaas' }),\n loader: document.createElement('feaas-loader') as FEAASLoader\n }\n this.placeholder.clipper.appendChild(this.placeholder.positionable)\n this.placeholder.positionable.appendChild(this.placeholder.editable)\n this.placeholder.clipper.appendChild(this.placeholder.loader)\n return this.placeholder\n }\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n if (oldValue === newValue) 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 } else {\n this.style.setProperty('opacity', '1', 'important')\n this.style.pointerEvents = 'all'\n }\n }\n super.attributeChangedCallback(name, oldValue, newValue)\n }\n\n open() {\n clearTimeout(this.closing)\n this.removeAttribute('hidden')\n this.removeAttribute('changed')\n this.setLoadingState()\n }\n\n shouldFork(version: FEAASEditorImports.SDK.VersionModel) {\n return version.forkOriginId == null && this.props.instance != null\n }\n\n cleanup() {\n if (this.placeholder) {\n this.placeholder.clipper?.remove()\n this.placeholder = null\n }\n }\n onClose = () => {\n this.setAttribute('hidden', 'hidden')\n if (this.placeholder) {\n this.placeholder.positionable.style.opacity = '0'\n this.placeholder.positionable.style.pointerEvents = 'none'\n }\n if (this.chrome) {\n this.chrome.wrapper.style.opacity = '0'\n }\n // FIXME: Workaround for CKEditor not removing event listeners properly\n // Reported: https://github.com/ckeditor/ckeditor5/issues/13141\n // Have to recreate the whole component\n if (this.target?.parentNode) {\n this.target.outerHTML = this.target.outerHTML\n }\n this.setTarget(null, {\n component: null,\n version: null,\n instance: null,\n revision: null\n })\n this.setEditorContext({\n isFocused: false\n })\n }\n close() {\n console.log('Editor is not ready')\n }\n unfork() {\n console.log('Editor is not ready')\n }\n discard() {\n console.log('Editor is not ready')\n }\n save() {\n console.log('Editor is not ready')\n }\n versionContext: FEAASEditorImports.VersionContext\n setVersionContext(props: Partial<FEAASEditorImports.VersionContext>) {\n console.log('Editor is not ready')\n }\n onVersionStateChange = (\n versionContext: FEAASEditorImports.VersionContext,\n setVersionContext: (context: Partial<FEAASEditorImports.VersionContext>) => void\n ) => {\n this.versionContext = versionContext\n this.setVersionContext = setVersionContext\n }\n\n editorContext: FEAASEditorImports.EditorContext\n setEditorContext(props: Partial<FEAASEditorImports.EditorContext>) {\n console.log('Editor is not ready')\n }\n onEditorStateChange = (\n editorContext: FEAASEditorImports.EditorContext,\n setEditorContext: (context: Partial<FEAASEditorImports.EditorContext>) => void\n ) => {\n this.editorContext = editorContext\n this.setEditorContext = setEditorContext\n // On editor loaded\n if (editorContext.editor && this.props.state == 'loading' && !this.props.hidden) {\n this.setAttribute('state', 'ready')\n this.ownerDocument.fonts.ready.then(() =>\n setTimeout(() => {\n this.setReadyState()\n this.setIframeComponentContent()\n }, 100)\n )\n }\n }\n\n setLoadingState() {\n this.showLoader()\n this.setAttribute('state', 'loading')\n }\n\n setReadyState() {\n this.hideLoader()\n this.setEditorContext({\n activeVersionId: this.component.versions[0].id\n })\n this.setAttribute('state', 'ready')\n }\n\n component: FEAASEditorImports.SDK.ComponentModel\n version: FEAASEditorImports.SDK.VersionModel\n closing: ReturnType<typeof setTimeout>\n\n render(\n {\n children,\n component: componentId,\n version: versionId,\n instance: instanceId\n }: React.PropsWithChildren<FEAASEditorProps>,\n {\n Editor,\n VersionStatusList,\n VersionStatusButton,\n Version,\n VersionMenu,\n EditorUIUndo,\n EditorUIMode,\n React: { useEffect, useMemo, useState, useContext },\n Chakra: { HStack, Box, Button, MenuItem },\n Chrome,\n ReactDOM,\n useSDK,\n useSlots,\n useModelObserver,\n ConfirmationContext,\n VersionContext\n }: typeof FEAASEditorImports\n ) {\n if (!this.payload) return\n const { React } = this.payload\n const { sdk } = useSDK()\n const [component, setComponent] = useState<FEAASEditorImports.SDK.ComponentModel>()\n const { setConfirm } = useContext(ConfirmationContext)\n\n const usedId = instanceId || versionId\n const library = sdk.library\n\n if (component) this.component = component\n\n useEffect(() => {\n if (this.props.hidden) return\n const comp = library.components.getItem(componentId).clone()\n comp.versions\n .search({ ids: [versionId, instanceId].filter(Boolean), componentIds: [componentId] })\n .then((versions) => {\n comp.versions.setItems(versions)\n const fork = comp.findVersion(instanceId, ['staged', 'published'])\n const original = comp.findVersion(versionId, ['staged', 'published'])\n if (fork) {\n if (fork.deletedAt) {\n // Get unforked version up to date\n fork.getDraft().changeAndNotify(original.toProperties()).restore() //.publish()\n console.error('FEAAS Editor: Restoring fork')\n } else {\n console.error('FEAAS Editor: Pre-forked')\n this.setAttribute('forked', fork.id)\n }\n } else {\n this.removeAttribute('forked')\n if (this.shouldFork(original)) {\n console.error('FEAAS Editor: Forking')\n const newForkId = original.fork(instanceId).id\n this.setAttribute('instance', newForkId)\n } else {\n console.error('FEAAS Editor: Regular')\n }\n }\n setComponent(comp)\n })\n return () => {\n this.closing = setTimeout(() => {\n this.closing = null\n this.cleanup()\n setComponent(null)\n }, 400)\n }\n }, [versionId, this.props.hidden])\n\n const versions = useModelObserver(component?.versions, []).filter((v) => v.id == usedId)\n const version = versions[0]\n if (version && !this.props.hidden) this.version = version\n\n useEffect(() => {\n this.unfork = () => {\n setConfirm({\n title: 'Reverting component customizations',\n button: 'Discard',\n body: 'Are you sure to reset component to its original state? All changes will be lost.',\n action: () => {\n const original = component.findVersion(versionId, ['staged', 'published'])\n component.findVersion(instanceId).unstage().unpublish().changeAndNotify(original.toProperties())\n component.saveVersions(false)\n this.setVersionContext({\n needsWrite: true\n })\n this.removeAttribute('forked')\n requestAnimationFrame(this.onClose)\n }\n })\n }\n this.discard = () => {\n if (this.props.changed) {\n component.findVersion(usedId).revert()\n component.saveVersions(false)\n this.setVersionContext({\n needsWrite: true\n })\n }\n }\n this.close = () => {\n setConfirm({\n title: 'Component has unsaved changes',\n button: 'Discard',\n body: 'Are you sure to close editor and discard changes?',\n bypass: !this.props.changed,\n action: () => {\n this.discard()\n requestAnimationFrame(this.onClose)\n }\n })\n }\n this.save = () => {\n setConfirm({\n bypass: !!this.props.forked,\n title: 'Customizing component',\n button: 'Save',\n body: 'Changes to the component will only be visible on that page. Changes to component done in Component Builder will not be reflected here. It will be possible to revert the customization.',\n action: () => {\n component\n .findVersion(usedId)\n .commitData({\n view: this.editorContext.editor.getData({ rootName: usedId }),\n model: ''\n })\n .stage()\n .publish()\n this.removeAttribute('changed')\n this.setAttribute('forked', usedId)\n component.saveVersions(false)\n }\n })\n }\n return () => {\n delete this.unfork\n delete this.discard\n delete this.save\n delete this.editorContext\n delete this.versionContext\n delete this.setEditorContext\n delete this.setVersionContext\n }\n }, [component])\n\n const target = useMemo(() => {\n return this.target\n }, [component])\n return useMemo(\n () =>\n component &&\n useSlots<any, 'picker' | 'children'>(children, ({ picker, children }) => (\n <Box\n ref={(el) => {\n this.chrome = el\n ? {\n positionable: el,\n wrapper: el.querySelector('.editor-chrome'),\n absolute: this.querySelector('.ui.overlays')\n }\n : null\n }}\n >\n <Box className='editor-wrapper' position='absolute' left={0} top={0}>\n <Editor\n datasources={sdk.datasources}\n sdk={sdk}\n library={sdk.library}\n component={component}\n versions={versions}\n context={{\n isAutosaveEnabled: false,\n onChromeMeasure: this.onMeasure,\n onChromeBeforeMeasure: this.onBeforeMeasure,\n onChromeMeasureElement: this.onChromeMeasureElement,\n onChromePosition: this.onPosition,\n onContentChange: this.onContentChange\n }}\n >\n {{\n exports: this.onEditorStateChange,\n after: children,\n chrome: ({ editor }) => editor && <Chrome />,\n children: ({ isArchivedDisplayed, editor, status }) => (\n <Box\n position='absolute'\n left={0}\n top={0}\n className='editor-chrome'\n p={4}\n boxShadow={'2xl'}\n pointerEvents='none'\n opacity={0}\n transition='opacity 0.3s'\n >\n <Box\n left={0}\n width='4'\n top={0}\n bottom={0}\n backdropFilter='blur(2px)'\n background='rgb(244 244 244 / 80%)'\n position='absolute'\n ></Box>\n <Box\n right={0}\n width='4'\n top={0}\n bottom={0}\n backdropFilter='blur(2px)'\n background='rgb(244 244 244 / 80%)'\n position='absolute'\n ></Box>\n <Box\n top={0}\n height='16'\n left={0}\n right={0}\n backdropFilter='blur(2px)'\n background='rgb(244 244 244 / 80%)'\n position='absolute'\n ></Box>\n <Box\n bottom={0}\n height='4'\n left={0}\n right={0}\n backdropFilter='blur(2px)'\n background='rgb(244 244 244 / 80%)'\n position='absolute'\n ></Box>\n {version && (\n <Version\n version={version}\n node={target}\n ignoreBreakpoints={true}\n deps={[this.props.forked, this.props.changed]}\n >\n {{\n exports: this.onVersionStateChange,\n left: (\n <HStack justifyContent='space-between'>\n <EditorUIUndo size='sm' editor={status == 'ready' ? editor : null} />\n <EditorUIMode size='sm' />\n </HStack>\n ),\n middle: (versionContext, setVersionContext) => [\n false && (\n <VersionContext.Provider\n value={[\n {\n ...versionContext,\n version: component.findVersion(versionId)\n },\n setVersionContext\n ]}\n >\n <VersionStatusList></VersionStatusList>\n </VersionContext.Provider>\n )\n ],\n right: (\n <>\n <Button variant='secondary' size='sm' onClick={this.close}>\n Close\n </Button>\n <Button\n variant='primary'\n size='sm'\n onClick={this.save}\n isDisabled={!this.props.changed}\n >\n {!this.props.changed\n ? 'Up to date'\n : this.props.forked\n ? 'Save'\n : 'Save customization'}\n </Button>\n <VersionMenu isDisabled={!this.props.forked && !this.props.changed}>\n <MenuItem onClick={this.unfork} isDisabled={!this.props.forked}>\n Unfork\n </MenuItem>\n <MenuItem onClick={this.discard} isDisabled={!this.props.changed}>\n Discard\n </MenuItem>\n </VersionMenu>\n </>\n )\n }}\n </Version>\n )}\n </Box>\n )\n }}\n </Editor>\n </Box>\n </Box>\n )),\n [version, this.props.forked, this.props.changed]\n )\n }\n\n isReadyToLoad(): boolean {\n return this.props.component != null && this.props.version != null && !this.props.hidden\n }\n}\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n 'feaas-editor': OptionalExcept<FEAASEditorProps, 'component' | 'version'>\n }\n }\n}\nFEAASEditor.register('feaas-editor')\n","import type * as FEAASPickerImports from '@sitecore-feaas/frontend/picker'\nimport { FEAASBase } from '../components/FEAASBase.js'\n\nexport function FEAASPickerProps(element: FEAASBase<any, any> = this) {\n return {\n part: element?.getAttribute('part') || 'picker',\n slot: element?.getAttribute('part') || 'picker',\n mode: element?.getAttribute('mode') as 'library' | 'element' | 'themes',\n placeholder: element?.getAttribute('placeholder') || 'No theme',\n frontend: element?.getContextAttribute('frontend') ?? 'https://components.sitecorecloud.io',\n src: element?.getAttribute('src') ?? '/picker.js',\n hidden: element?.getAttribute('hidden') != null,\n variant: element?.getAttribute('variant') as 'internal' | 'pages',\n context: undefined as FEAASPickerImports.PickerProps['context'],\n onClose: undefined as (...args: any[]) => void,\n onContextAttributeSet: undefined as (context: any, attribute: string, value: string) => void\n }\n}\nexport type FEAASPickerProps = ReturnType<typeof FEAASPickerProps>\n\nexport class FEAASPicker extends FEAASBase<FEAASPickerProps, typeof FEAASPickerImports> {\n static observedAttributes = ['library', 'mode', 'frontend', 'src', 'hidden', 'variant']\n\n defaultProps = {\n hidden: false\n } as Partial<FEAASPickerProps>\n\n getProps() {\n return FEAASPickerProps(this)\n }\n\n load() {\n return this.import(this.formatURL(this.props.src, this.props.frontend))\n }\n\n render(\n { placeholder, context, mode, children, variant }: React.PropsWithChildren<FEAASPickerProps>,\n { Picker, React, ReactDOM }: typeof FEAASPickerImports\n ) {\n return (\n <Picker\n placeholder={placeholder}\n mode={mode || undefined}\n onClose={this.props.onClose}\n onContextAttributeSet={this.props.onContextAttributeSet}\n context={context}\n variant={variant}\n >\n {children}\n </Picker>\n )\n }\n}\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n 'feaas-picker': Partial<typeof FEAASPickerImports>\n }\n }\n}\n\nFEAASPicker.register('feaas-picker')\n","import type * as FEAASContextImports from '@sitecore-feaas/frontend/context'\nimport type { AuthModel } from '@sitecore-feaas/sdk'\nimport { FEAASBase, OptionalExcept } from '../components/FEAASBase.js'\n\nexport function FEAASContextProps(element: HTMLElement = this) {\n return {\n library: element?.getAttribute('library') as string,\n src: element?.getAttribute('src') ?? '/context.js',\n frontend: element?.getAttribute('frontend') ?? 'https://components.sitecoreclud.io',\n backend: element?.getAttribute('backend') ?? 'https://components.sitecoreclud.io/api',\n cdn: element?.getAttribute('cdn') ?? 'https://feaas.blob.core.windows.net',\n auth: null as Partial<AuthModel>,\n isolate: element?.getAttribute('isolate') == null || element?.getAttribute('isolate') == 'true'\n }\n}\nexport type FEAASContextProps = ReturnType<typeof FEAASContextProps>\n\n/**\n * Context provides shared parameters and react providers for its nested elements. It loads lazily once any of its\n * nested components load. Just placing it on the page without any consumers does not impose any overhead.\n */\nexport class FEAASContext extends FEAASBase<FEAASContextProps, typeof FEAASContextImports> {\n static observedAttributes = ['library', 'component', 'version', 'revision', 'hostname', 'template']\n getProps() {\n return FEAASContextProps(this)\n }\n\n defaultProps = {\n isolate: true\n } as Partial<FEAASContextProps>\n\n load() {\n return this.import(this.formatURL(this.props.src, this.props.frontend))\n }\n\n isReadyToLoad() {\n console.log('Is ready?', this.props, super.isReadyToLoad() && this.props.library != null)\n return super.isReadyToLoad() && this.props.library != null\n }\n\n // Remove global styles\n getTheme(theme: FEAASContextImports.Chakra.Theme): FEAASContextImports.Chakra.Theme {\n return theme\n }\n\n getRoot(): HTMLElement | FEAASBase<any, any> | ShadowRoot {\n if (this.getAttribute('isolate') === 'false') return this\n return this.shadowRoot || this.attachShadow({ mode: 'open' })\n }\n\n reactRootElement: HTMLDivElement\n getReactRootElement() {\n //if (!this.props.isolate) return this.getRoot()\n if (!this.reactRootElement) {\n this.reactRootElement = document.createElement('div')\n this.getRoot().appendChild(this.reactRootElement)\n }\n return this.reactRootElement\n }\n\n /** Pull in children FEAAS react elements into the shadow DOM so they receieve the styles */\n connectedCallback(): void {\n Array.from(this.children).forEach((child) => {\n this.getRoot().appendChild(child)\n })\n super.connectedCallback()\n }\n\n onStatusChange = (status: string) => {\n if (status == 'ready') {\n this.dispatchEvent(new Event('feaasReady', { bubbles: true, composed: true }))\n }\n }\n\n render(\n { children, library }: React.PropsWithChildren<FEAASContextProps>,\n { AppContext, Chakra: { Button, Tooltip }, React }: typeof this.payload\n ) {\n const portalProps = {\n containerRef: { current: this.getRoot() as HTMLElement }\n }\n Tooltip.defaultProps = {\n hasArrow: true,\n placement: 'top',\n portalProps\n }\n return (\n <AppContext\n backend={this.props.backend}\n libraryId={this.props.library}\n container={this.getRoot()}\n auth={this.props.auth}\n getTheme={this.getTheme}\n onStatusChange={this.onStatusChange}\n modalProps={{\n portalProps\n }}\n chakraProps={{\n cssVarsRoot: ':host',\n resetCSS: true,\n toastOptions: {\n portalProps\n }\n }}\n >\n {children}\n </AppContext>\n )\n }\n}\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n 'feaas-context': OptionalExcept<FEAASContextProps, 'library'>\n }\n }\n}\n\nFEAASContext.register('feaas-context')\n"]}
1
+ {"version":3,"sources":["../../src/utils/promise.ts","../../src/components/FEAASBase.tsx","../../src/components/FEAASElement.tsx","../../node_modules/jsonpath-plus/dist/index-browser-esm.js","../../src/dom/data.ts","../../src/dom/html.ts","../../src/dom/scripts.ts","../../src/dom/rendering.ts","../../src/fetch.ts","../../src/cdn.ts","../../src/dom/stylesheet.ts","../../src/dom/component.ts","../../src/components/FEAASComponent.tsx","../../src/components/FEAASLoader.tsx","../../src/components/FEAASStylesheet.tsx","../../src/headless.ts","../../src/ui/FEAASEditor.tsx","../../src/ui/FEAASPicker.tsx","../../src/ui/FEAASContext.tsx"],"names":[],"mappings":"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","file":"/home/node/clientside/dist/browser/index.esm.js.map","sourcesContent":["export type ControlledPromise<T> = Promise<T> & {\n resolve: (...args: any) => void\n reject: (e: Error) => void\n restart: () => ControlledPromise<T>\n first: ControlledPromise<T>\n}\n\nexport function ControlledPromise<T>(onSuccess?: (result: T) => void, onFailure = (e: Error) => {}) {\n var first: ControlledPromise<T>\n const restart = () => {\n var resolve: (...args: any) => void\n var reject: (e: Error) => void\n const promise = new Promise<T>((success, failure) => {\n resolve = (value: T) => {\n onSuccess?.(value)\n success(value)\n }\n reject = failure\n })\n var controlled: ControlledPromise<T> = Object.assign(promise, {\n resolve,\n reject,\n restart,\n first\n })\n first = controlled\n\n // Avoid unhandled rejection\n controlled.catch(onFailure)\n\n return controlled\n }\n return restart()\n}\n","import type { JSXElementConstructor, ReactElement, ReactNode } from 'react'\nimport type ReactDOMClient from 'react-dom/client'\nimport type ReactDOM from 'react-dom'\nimport type React from 'react'\nimport { ControlledPromise } from '../utils/promise.js'\n\nexport type OptionalExcept<T, K extends keyof T> = Pick<T, K> & Partial<Omit<T, K>>\n\n// Shim in case it's required in node.js environment\nvar WebComponent =\n typeof HTMLElement == 'undefined'\n ? // @ts-ignore\n typeof windowJSDOM != 'undefined'\n ? // @ts-ignore\n (windowJSDOM.HTMLElement as typeof HTMLElement)\n : (class {} as unknown as typeof HTMLElement)\n : HTMLElement\n\nexport interface ReactPayload {\n React: typeof React\n ReactDOM: typeof ReactDOM\n ReactDOMClient: typeof ReactDOMClient\n}\n/**\n * FEAASBase is a superclass for FEAAS components with optional react support.\n *\n * Initialization lifecycle:\n *\n * - `set(props)`\n * - `load() => payload`\n * - `onLoad?(payload)`\n * - `update()`\n * - `render(payload, props)`\n * - `whenRendered`\n * - - / If needs to reload, e.g. bypass cache /\n * - - `onLoad(newPayload) `\n * - - `whenRendered`\n * - `whenLoaded`\n */\nexport class FEAASBase<Props = any, Payload = any> extends WebComponent {\n static observedAttributes: string[]\n\n defaultProps = {} as Partial<Props>\n\n /** Return attributes as parsed values */\n getProps(context?: HTMLElement): any {\n return {}\n }\n\n /** Properties parsed in current tick */\n props: Props\n overrides: Props\n\n /** Timer until next tick */\n nextRender: number\n\n /** Is/was component in the dom? */\n connected = false\n\n refs: Record<string, FEAASBase> = {}\n descendants: FEAASBase[] = []\n\n /** Result of lazy loading */\n payload: Payload\n whenLoaded = ControlledPromise<Payload>((payload) => {\n this.payload = payload\n })\n\n constructor() {\n super()\n this.addEventListener('feaasMount', this)\n this.addEventListener('feaasUnmount', this)\n }\n\n /** Attaches shadow root if getShadowRootOptions any settings, or uses element itself */\n getRoot(): FEAASBase | HTMLElement | ShadowRoot {\n return this\n }\n\n /** Attribute changes trigger props parsing and schedules re-rendering */\n attributeChangedCallback(name: string, oldValue: string, newValue: string) {\n this.set()\n }\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 /**\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() as FEAASBase\n // Allow parent component to initialize first\n if (parent && !parent.connected) return\n if (this.connected) return\n this.connected = true\n this.log('FEAAS: Mount', this.tagName, this)\n this.dispatchEvent(new Event('feaasMount', { bubbles: true, composed: true }))\n this.getElements().map((element: FEAASBase) => element.mount?.())\n this.set()\n } catch (e) {\n this.onError(e)\n }\n }\n\n log(...args: any) {\n console.log(...args)\n }\n\n /** Nothing special happens on unmount, except setting a flag */\n unmount() {\n if (!this.connected) return\n this.log('FEAAS: Unmount', this)\n this.dispatchEvent(new Event('feaasUnmount', { bubbles: true, composed: true }))\n this.connected = false\n }\n\n getParent(onlyFeaas = true) {\n for (\n var p: HTMLElement = this;\n (p = p.parentElement || ((p.parentNode instanceof ShadowRoot ? p.parentNode.host : null) as HTMLElement));\n\n ) {\n if (!onlyFeaas || p.tagName.startsWith('FEAAS-')) return p\n }\n }\n\n getElements(root: HTMLElement | ShadowRoot = this.getRoot(), onlyFeaas = true): HTMLElement[] {\n return Array.from(root.querySelectorAll('*'))\n .map(\n (el) =>\n [\n !onlyFeaas || el.tagName.startsWith('FEAAS-') ? el : null,\n el.shadowRoot ? this.getElements(el.shadowRoot, onlyFeaas) : null\n ] as HTMLElement[]\n )\n .flat()\n .filter(Boolean)\n }\n\n /** Catch-all event handler that dispatches events to callback */\n handleEvent(event: Event) {\n const target = event.composedPath()[0] as FEAASBase\n switch (event.type) {\n case 'feaasMount':\n if (target != this) this.nestedCallback(target)\n break\n case 'feaasUnmount':\n if (target != this) this.unnestedCallback(target)\n break\n }\n }\n\n /** Act on children element being removed */\n unnestedCallback(target: FEAASBase) {\n const index = this.descendants.indexOf(target)\n if (index == -1) 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) target.refs.parent = null\n if (target.refs.top == this) {\n target.refs.top = target.refs.parent\n }\n }\n\n /** Act on children element being added */\n nestedCallback(target: FEAASBase): boolean | void {\n const index = this.descendants.indexOf(target)\n if (index != -1) 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 target.refs.parent ||= this\n if (target.render) {\n for (var p: FEAASBase = target.refs.parent; p; p = p.refs.parent) {\n if (p.render) {\n target.refs.parentReact ||= p\n target.refs.topReact = p\n }\n }\n }\n }\n\n getComponentName() {\n return this.tagName.replace('FEAAS-', '').toLowerCase()\n }\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\n /** Generic error handler */\n onError(error: Error, where: string = 'uncaught', handled = false) {\n const event = new CustomEvent('feaasError', { bubbles: true, composed: true, detail: error })\n this.dispatchEvent(event)\n this.whenLoaded.reject(error)\n if (!event.defaultPrevented && !handled) {\n this.whenRendered.reject(error)\n try {\n this.unmount()\n } catch (e) {}\n return true\n }\n return false\n }\n\n shouldUpdateOnLoad() {\n return true\n }\n\n onLoad: (payload: Payload) => void\n\n /** Load lazy component & render */\n async advance() {\n try {\n if (this.payload === undefined) {\n if (!this.isReadyToLoad()) return\n this.payload = null\n this.dispatchEvent(new Event('feaasLoad', { bubbles: true, composed: true }))\n const loaded = await this.load().catch((e) => {\n this.payload = undefined\n throw e\n })\n\n this.whenLoaded.resolve(loaded)\n\n // Allow component to handle the post-loading\n if (this.onLoad) {\n return\n }\n } else if (this.payload == null) {\n return\n }\n this.flush()\n this.whenRendered.resolve(this)\n } catch (e) {\n this.onError(e)\n }\n }\n\n flush() {\n const flushSync = (this.payload as ReactPayload)?.ReactDOM?.flushSync\n if (flushSync) {\n flushSync(() => this.update())\n } else {\n this.update()\n }\n }\n\n /** Invoke preloading logic that needs to finish before component can render */\n load() {\n return Promise.resolve(null)\n }\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(): any {\n //this.log('FEAAS: React', this.tagName, this.payload)\n if (this.payload == null) return\n if (!this.render) return\n const { React, ReactDOM, ReactDOMClient } = (this.payload as ReactPayload) || {}\n if (!React) throw new Error(`${this.tagName}: React is not present in payload`)\n if (!ReactDOM) throw new Error(`${this.tagName}: ReactDOM is not present in payload`)\n if (!this.refs.topReact && !this.forceUpdateReact) {\n if (ReactDOMClient) {\n this.reactRoot ||= ReactDOMClient.createRoot(this.getReactRootElement())\n this.reactRoot.render(this.getReactElement())\n } else {\n ReactDOM.render(this.getReactElement(), this.getReactRootElement())\n }\n } else if (this.forceUpdateReact) {\n this.forceUpdateReact?.()\n } else {\n this.refs.topReact.forceUpdateReact?.()\n }\n }\n\n invokeReactRendering(): ReactNode {\n const { React, ReactDOM } = (this.payload as ReactPayload) || {}\n if (!this.connected) return null\n const children = this.descendants\n .filter((r) => {\n return r.refs.parentReact == this && r.payload\n })\n .map((child: FEAASBase<any, any>, index) => {\n return this.getReactElement(child)\n })\n return this.render({ ...this.props, children }, this.payload)\n }\n\n reactWrapper: React.FunctionComponent\n reactErrorBoundary: new (...args: any) => React.Component<{ children: any; slot: string }, { error: Error }>\n reactRoot: ReactDOMClient.Root\n\n getReactErrorBoundary(target: FEAASBase = this, displayName = target.tagName) {\n if (this.reactErrorBoundary) return this.reactErrorBoundary\n\n const { React, ReactDOM } = (target.payload as ReactPayload) || {}\n return (this.reactErrorBoundary ||= class FEAASErrorBoundary extends React.Component<\n { children: any; slot: string },\n { error: Error }\n > {\n state = {\n error: null as Error\n }\n\n static getDerivedStateFromError(error: Error) {\n return { error: error }\n }\n\n componentDidCatch(error: Error, errorInfo: any) {\n console.error(`FEAAS: ${target.tagName} Error:`, error, errorInfo)\n target.onError(error, 'react')\n //this.setState({ error: error })\n }\n\n render() {\n if (this.state.error) {\n // target.classList.add('feaas-error')\n return\n //return <h1>There seems to be a problem.</h1>\n }\n //if (target.classList.contains('feaas-error')) target.classList.remove('feaas-error')\n\n return this.props.children\n }\n })\n }\n\n getReactElement(target: FEAASBase = this, props?: any) {\n const { React, ReactDOM } = (target.payload as ReactPayload) || {}\n const ErrorBoundary = this.getReactErrorBoundary()\n const Wrapper = this.getReactWrapper(target)\n return (\n <ErrorBoundary key={target.tagName + '-' + target.getUID()} slot={target.getAttribute('slot')}>\n <Wrapper />\n </ErrorBoundary>\n )\n }\n\n getReactWrapper(target: FEAASBase = this, displayName = target.tagName) {\n if (target.reactWrapper) return target.reactWrapper\n\n const { React, ReactDOM } = (target.payload as ReactPayload) || {}\n\n target.reactWrapper = (props?: any) => {\n if (target.render) {\n const [value, forceUpdateReact] = React.useReducer((r) => r + 1, 0)\n target.forceUpdateReact = forceUpdateReact\n return ReactDOM.createPortal(<>{target.invokeReactRendering()}</>, target.getReactRootElement())\n } else {\n return target.update()\n }\n }\n\n Object.assign(target.reactWrapper, {\n key: target.tagName + '-' + target.getUID(),\n displayName: displayName\n })\n\n return target.reactWrapper\n }\n\n uid: string\n getUID() {\n return (this.uid ||= String(Math.random()))\n }\n forceUpdateReact: (node?: ReactNode) => void\n\n /**\n * Render method that is pretty much the same as React Functional component, but with extra second argument for\n * payload (usually result of import, it is expected to have React in scope).\n */\n render?(props: React.PropsWithChildren<Props>, payload: Payload): ReactNode | ReactElement\n\n useShadowRoot: boolean\n getShadowRoot() {\n if (!this.shadowRoot) {\n this.attachShadow({ mode: 'open' })\n }\n return this.shadowRoot\n }\n getReactRootElement(): HTMLElement | ShadowRoot {\n return this.useShadowRoot ? this.getShadowRoot() : this.getRoot()\n }\n\n /** Set props and return values on new next tick */\n set(overrides?: Partial<Props>) {\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 value = this.props[property]\n const attribute = property.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n if (value == null || value === this.defaultProps[property as keyof typeof this.defaultProps]) {\n this.removeAttribute(attribute)\n } else if (typeof value == 'string' || typeof value == 'number' || typeof value == 'boolean') {\n if (this.getAttribute(attribute) != String(value)) this.setAttribute(attribute, String(value))\n }\n }\n } catch (e) {\n this.whenRendered.reject(e)\n this.onError(e, 'set')\n }\n return this\n }\n\n import(path: string): Promise<Payload> {\n return import(/* @vite-ignore */ /* webpackIgnore: true */ path)\n }\n\n /** Schedule rendering on next tick, to batch multiple attribute changes */\n initialized: boolean\n whenRendered = ControlledPromise<this>(\n () => (this.initialized = true),\n () => cancelAnimationFrame(this.nextRender)\n )\n scheduleRender() {\n if (this.nextRender == null) {\n this.whenRendered = this.whenRendered.restart()\n }\n cancelAnimationFrame(this.nextRender)\n this.nextRender = requestAnimationFrame(() => {\n this.nextRender = null\n this.advance().catch((e) => {})\n })\n }\n\n formatURL(src: string, hostname: string) {\n if (typeof src == 'string' && src.match(/^\\/[^\\/]/)) {\n return hostname + src\n } else {\n return src\n }\n }\n\n getContextAttribute(name: string, element = this) {\n for (\n var p: HTMLElement = this;\n (p = p.parentElement || ((p.parentNode instanceof ShadowRoot ? p.parentNode.host : null) as HTMLElement));\n\n ) {\n if (p.getAttribute(name) != null) return p.getAttribute(name)\n }\n return this.getAttribute(name)\n }\n\n static register(tagName: string, win?: Window) {\n if (win == null) win = typeof window != 'undefined' ? window : null\n if (win && !win.customElements.get(tagName)) {\n win.customElements.define(tagName, this)\n }\n }\n}\n\nexport { FEAASBase as Base }\n","import type { ReactNode, ReactElement, JSXElementConstructor, PropsWithChildren } from 'react'\nimport { FEAASBase } from './FEAASBase.js'\n\nexport type ReactModules = {\n React: typeof React\n ReactDOM: typeof ReactDOM\n}\nexport type ReactJSX = ReactNode | ReactElement<any, string | JSXElementConstructor<any>>\nexport type FEAASReactRender<P> = {\n (this: FEAASElement<P>, props: P, payload: ReactModules): ReactJSX\n}\n\nexport default class FEAASElement<P> extends FEAASBase<P, ReactModules> {\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\n render({}: P, { React }: ReactModules): ReactJSX {\n return <></>\n }\n}\n\ninterface MyComponentProps {\n counter: string\n}\n\nexport class MyComponent extends FEAASElement<MyComponentProps> {\n // will re-render component if any of these attributes have changed\n static observedAttributes = ['counter']\n\n 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\n // First argument is props, second arguments is React stuff\n // Destructuring React is important for JSX to work\n render({ counter }: MyComponentProps, { React }: ReactModules): ReactJSX {\n const [updates, setUpdates] = React.useState(0)\n React.useEffect(() => {\n setUpdates((u) => u + 1)\n }, [counter])\n return (\n <>\n <p>Rendering attribute: {counter}</p>\n <p>Triggered updates: {updates}</p>\n </>\n )\n }\n}\n","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'\n\nexport type Datascopes = Record<string, any> | any[]\n\nexport function cleanCollectionBit(path: string) {\n return path.replace(/(\\[[^\\]\\[]+\\]|\\.\\*)$/g, '')\n}\n\nexport function normalizeCollectionScope(path: string) {\n return cleanCollectionBit(path) + '.*'\n}\n\nexport function queryScopes(scopes: any, datapath: string, singleValue = false, json: any = scopes) {\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 } else {\n continue\n }\n }\n path = datapath.substring(scope.length + 1)\n json = scopes[scope]\n break\n }\n }\n\n var collection = JSONPath({ path, json })\n\n // If regular path didn't match any data, try fallbacks\n // datasourceId.wrapper.$.path\n if (Array.isArray(collection) && 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.'),\n // look up trimmed path in catch all datasource\n // _.path\n path.replace(/^.*?\\.\\$\\./, '_.'),\n // look up trimmed path on root\n // path\n path.replace(/^.*?\\.\\$\\./, ''),\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 : JSONPath({ path, json })\n }, [] as any[])\n }\n\n if (singleValue && Array.isArray(collection)) {\n return collection[0]\n } else {\n return collection\n }\n}\n\nexport type CH1Node =\n | {\n type: string\n text?: string\n content?: CH1Node[]\n marks?: CH1Node[]\n attrs?: Record<string, any>\n }\n | CH1Node[]\nfunction serializeCH1Tag(data: any, attrs: Record<string, string> = {}, tag: string): string {\n if (!tag) return serializeCH1RichText(data)\n return `<${tag}${Object.entries(attrs)\n .map(([k, v]) => v != null && ` ${k}=\"${v}\"`)\n .filter(Boolean)\n .join('')}>${serializeCH1RichText(data)}</${tag}>`.replace(/^<([a-z0-9][^>]*)><\\/[^>]+>$/, '<$1 />')\n}\nexport function serializeCH1RichText(data: CH1Node | string | null | undefined): string {\n if (Array.isArray(data)) return data.map(serializeCH1RichText).join('\\n').trim()\n if (typeof data == 'string') return data\n if (data == null) 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 || []) as any[]).reduce((text, mark) => {\n return serializeCH1Tag(\n text,\n mark.attrs,\n {\n link: 'a',\n bold: 'strong',\n italic: 'em',\n strike: 's',\n underline: 'u'\n }[mark.type as string]\n )\n }, data.text?.replace(/\\s+/, ' '))\n default:\n return serializeCH1Tag(\n data.content || data.text,\n data.attrs,\n {\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 }\n}\n\nexport { JSONPath }\n","/** Lightweight DOM parser and serializer to use in server environments */\n\nimport { Datascopes } from './data.js'\nimport { FEAASCustomizations, renderDOMElement } from './rendering.js'\n\ntype HTMLAttribute = { name: string; value: string }\n\nclass HTMLNode {\n nodeName: string\n nodeType: number\n textContent?: string\n attributes: HTMLAttribute[]\n childNodes: HTMLNode[]\n parentNode?: HTMLNode\n\n constructor(nodeName: string, nodeType: number = 1, textContent?: string) {\n this.nodeName = nodeName\n this.nodeType = nodeType\n this.textContent = textContent\n this.attributes = []\n this.childNodes = []\n }\n\n setAttribute(name: string, value: string) {\n const attr = this.attributes.find((attr) => attr.name === name)\n if (attr) {\n attr.value = value\n } else {\n this.attributes.push({ name, value })\n }\n }\n\n getAttribute(name: string): string | undefined {\n const attr = this.attributes.find((attr) => attr.name === name)\n return attr ? attr.value : undefined\n }\n\n insertBefore(newNode: HTMLNode, referenceNode: HTMLNode | null) {\n newNode.parentNode = this\n if (referenceNode === null) {\n this.childNodes.push(newNode)\n } else {\n const index = this.childNodes.indexOf(referenceNode)\n if (index !== -1) {\n this.childNodes.splice(index, 0, newNode)\n }\n }\n }\n\n removeAttribute(attrName: string) {\n const index = this.attributes.findIndex((attr) => attr.name === attrName)\n if (index !== -1) {\n this.attributes.splice(index, 1)\n }\n }\n\n appendChild(newNode: HTMLNode) {\n newNode.parentNode = this\n this.childNodes.push(newNode)\n }\n\n get tagName() {\n return this.nodeName?.toUpperCase()\n }\n get innerHTML() {\n return serializeHTML(this.childNodes)\n }\n set innerHTML(html: string) {\n this.childNodes = parseHTML(String(html ?? ''))\n }\n get outerHTML() {\n return serializeHTML([this])\n }\n\n closest(selector: string): HTMLNode | null {\n let currentNode: HTMLNode | undefined = this\n\n while (currentNode) {\n if (selectorMatchesNode(selector, currentNode)) {\n return currentNode\n }\n\n currentNode = currentNode.parentNode\n }\n\n return null\n }\n\n querySelectorAll(selector: string): HTMLNode[] {\n const selectors = selector.split(/\\s*,\\s*/)\n const results: HTMLNode[] = []\n\n const checkNode = (node: HTMLNode) => {\n for (const sel of selectors) {\n if (selectorMatchesNode(sel, node)) {\n results.push(node)\n break\n }\n }\n\n for (const child of node.childNodes) {\n checkNode(child)\n }\n }\n\n for (const child of this.childNodes) {\n checkNode(child)\n }\n\n return results\n }\n\n querySelector(selector: string): HTMLNode {\n return this.querySelectorAll(selector)[0]\n }\n\n private findSibling(step: -1 | 1, elementTypeOnly?: boolean): HTMLNode | null {\n if (!this.parentNode) return null\n const siblings = this.parentNode.childNodes\n const index = siblings.indexOf(this)\n if (index === -1) return null\n\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\n return null\n }\n\n removeChild(child: HTMLNode): HTMLNode {\n const index = this.childNodes.indexOf(child)\n if (index === -1) return\n this.childNodes.splice(index, 1)\n child.parentNode = undefined\n return child\n }\n\n get previousSibling(): HTMLNode | null {\n return this.findSibling(-1)\n }\n\n get nextSibling(): HTMLNode | null {\n return this.findSibling(1)\n }\n\n get previousElementSibling(): HTMLNode | null {\n return this.findSibling(-1, true)\n }\n\n get nextElementSibling(): HTMLNode | null {\n return this.findSibling(1, true)\n }\n cloneNode(deep: boolean = false): HTMLNode {\n const clonedNode = new HTMLNode(this.nodeName, this.nodeType)\n clonedNode.attributes = JSON.parse(JSON.stringify(this.attributes))\n\n if (this.textContent) {\n clonedNode.textContent = this.textContent\n }\n\n if (deep) {\n for (const childNode of this.childNodes) {\n const clonedChild = childNode.cloneNode(true)\n clonedNode.appendChild(clonedChild)\n }\n }\n\n return clonedNode\n }\n get parentElement() {\n return this.parentNode?.nodeType == 1 ? this.parentNode : null\n }\n\n ownerDocument = {\n createElement(name: string): HTMLNode {\n return new HTMLNode(name)\n }\n }\n}\n\nfunction selectorMatchesNode(selector: string, node: HTMLNode): boolean {\n const simpleSelectors = selector.match(/([.#]?[\\w-]+|\\[([\\w-]+)(=\"([^\"]*)\")?\\])/g)\n if (!simpleSelectors) {\n return false\n }\n\n for (const simpleSelector of simpleSelectors) {\n if (simpleSelector.startsWith('#')) {\n if (node.getAttribute('id') !== simpleSelector.slice(1)) {\n return false\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 } 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\n if (typeof attrValue === 'undefined') {\n if (actualValue === undefined) {\n return false\n }\n } else {\n if (actualValue !== attrValue) {\n return false\n }\n }\n } else {\n return false\n }\n } else {\n if (node.nodeName !== simpleSelector) {\n return false\n }\n }\n }\n\n return true\n}\n\nexport function parseHTML(html: string): HTMLNode[] {\n const nodes: HTMLNode[] = []\n const stack: HTMLNode[] = []\n\n while (html) {\n const openTagMatch = html.match(/^<([\\w-]+)(\\s[^>]*)?>/)\n const closingTagMatch = html.match(/^<\\/([\\w-]+)>/)\n\n if (openTagMatch) {\n const nodeName = openTagMatch[1]\n const attrsStr = openTagMatch[2] || ''\n const attrs =\n attrsStr.match(/([\\w-]+)(=\"([^\"]*)\")?/g)?.map((attr) => {\n const [_, name, , value] = attr.match(/([\\w-]+)(=\"([^\"]*)\")?/)\n return { name, value: unescapeHTML(value || '') }\n }) || []\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 } else {\n nodes.push(node)\n }\n stack.push(node)\n html = html.slice(openTagMatch[0].length)\n } else if (closingTagMatch) {\n stack.pop()\n html = html.slice(closingTagMatch[0].length)\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 } else {\n nodes.push(textNode)\n }\n html = html.slice(textContent.length)\n }\n }\n\n return nodes\n}\n\nexport function escapeHTML(input: string): string {\n return input\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#x27;')\n}\n\nfunction unescapeHTML(input: string): string {\n return input\n .replace(/&amp;/g, '&')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&quot;/g, '\"')\n .replace(/&#x27;/g, \"'\")\n}\n\nexport function serializeHTML(nodes: HTMLNode[]): string {\n return nodes\n .map((node) => {\n if (node.nodeType === 3) {\n return node.textContent || ''\n }\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 } else {\n return `<${nodeName}${serializedAttributes}>${serializedChildren}</${nodeName}>`\n }\n })\n .join('')\n}\n\nexport function renderHTMLContent(template: string, data?: Datascopes, config?: FEAASCustomizations) {\n const newTemplate = config?.processTemplate?.(null, template, data) || template\n const nodes = parseHTML(newTemplate)\n return renderDOMElement(nodes[0] as unknown as HTMLElement, data, config).outerHTML\n}\n","export function observeDOMElement(element: HTMLElement) {\n const observer = new element.ownerDocument.defaultView.MutationObserver((changes) => {\n changes.forEach((change) => {\n const target = change.target as HTMLElement\n const src = target.getAttribute('data-embed-src')\n if (src) {\n loadScript(target, src)\n }\n\n if (change.addedNodes) {\n change.addedNodes.forEach((node) => {\n if (node.nodeType == 1) autoloadScripts(node as HTMLElement, false)\n })\n }\n })\n })\n observer.observe(element, { attributes: true, subtree: true, childList: true })\n return observer\n}\n\nexport function autoloadScripts(element: HTMLElement, 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 as HTMLElement, embed.getAttribute('data-embed-src'))\n }\n if (observe) return observeDOMElement(element)\n}\n\nexport function loadScript(element: HTMLElement, src: string) {\n for (var p = element; p; p = p.parentElement as HTMLElement) {\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') 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","import { FEAASCDNComponentProps } from '../cdn.js'\nimport { Datascopes, normalizeCollectionScope, queryScopes, serializeCH1RichText } from './data.js'\nimport { parseHTML } from './html.js'\nimport { loadScript } from './scripts.js'\n\nexport interface FEAASCustomizations {\n processTemplate?: (element: HTMLElement, template: string, data: any) => string\n processData?: (element: HTMLElement, data: any) => any\n processValue?: (element: HTMLElement, property: string, value: any) => any\n shouldRepeat?: (element: HTMLElement, value: any) => boolean\n onRender?: (element: HTMLElement, data: any) => void\n}\n\nexport interface ExplicitTemplate {\n template: string\n}\n\nexport type FEAASComponentProps<T = Datascopes> = Partial<ExplicitTemplate> & {\n data?: T\n} & (ExplicitTemplate | FEAASCDNComponentProps) &\n FEAASCustomizations\n\nfunction getDOMCollectionIndex(element: HTMLElement) {\n const datascope = element.getAttribute('data-path-scope')\n var index = 0\n for (var p = element; (p = <HTMLElement>p.previousElementSibling); ) {\n if (p.getAttribute('data-path-scope') == datascope) {\n index++\n }\n }\n return index\n}\n\nfunction updateDOMClones(element: HTMLElement, targetCount: number, config?: FEAASCustomizations) {\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\n const parentElement = element.parentNode as HTMLElement\n if (parentElement == null) {\n return\n }\n\n /*dont remove first element, just hide it*/\n if (targetCount == 0) {\n element.setAttribute('hidden', 'hidden')\n } else if (element.getAttribute('hidden') != null) {\n element.removeAttribute('hidden')\n }\n\n var count = index + 1\n var last = element\n for (var n = element; (n = <HTMLElement>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 = <HTMLElement>last.previousElementSibling\n parentElement.removeChild(<HTMLElement>last.nextElementSibling)\n }\n}\n\nexport function setDOMAttribute(element: HTMLElement, attribute: string, value: any, config?: FEAASCustomizations) {\n if (!element) return\n var target = element\n if (value?.type == 'doc' && Array.isArray(value.content)) value = serializeCH1RichText(value)\n if (config?.processValue) {\n value = config?.processValue(element, attribute, value)\n }\n var prop = attribute.replace('data-path-', '')\n if (attribute == 'data-path-src') {\n target = element.tagName == 'IMG' ? element : <HTMLElement>element.querySelector('img, video')\n } else if (attribute == 'data-path-href') {\n target = element.querySelector('a') || element.closest('a')\n } else if (attribute == 'data-path-alt') {\n target = element.querySelector('img, picture')\n } else if (attribute == 'data-path-hidden') {\n value = !value ? true : null\n } else if (attribute == 'data-path' || attribute == 'data-embed-html' || attribute == 'html') {\n prop = 'innerHTML'\n } else if (attribute == 'data-embed-src') {\n loadScript(element, value)\n } else if (attribute == 'data-path-attributes') {\n const oldKeys = element.getAttribute('data-attributes-keys')?.split(',').filter(Boolean) || []\n if (!Array.isArray(value))\n for (var property in value) {\n var subvalue = value[property]\n setDOMAttribute(\n element,\n property,\n typeof subvalue == 'object' && subvalue ? JSON.stringify(subvalue) : subvalue,\n config\n )\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 return\n }\n if (typeof value == 'boolean') {\n value = value ? '' : null\n }\n if (!target) return\n\n var placeholder = String(element.getAttribute('data-path-placeholder') || target[prop as keyof HTMLElement])\n\n if (value != null) {\n if (prop == 'innerHTML') {\n if (target.innerHTML != value) {\n target.innerHTML = value\n }\n } else {\n if (target.getAttribute(prop) != value) {\n target.setAttribute(prop, value)\n }\n }\n } else {\n if (prop == 'innerHTML') {\n target.innerHTML = placeholder\n } else {\n target.removeAttribute(prop)\n }\n }\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(\n input: HTMLElement | DocumentFragment,\n datascopes?: any,\n config?: FEAASCustomizations,\n isNested?: boolean\n) {\n const element = <HTMLElement>input\n if (!isNested) {\n datascopes = config?.processData?.(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, config?.shouldRepeat?.(element, collection) === false ? 1 : collection.length, config)\n }\n\n datascopes = {\n ...datascopes,\n [normalizeCollectionScope(datascope)]: collection[index]\n }\n }\n const attrs = Array.prototype.slice.call(element.attributes).sort((a: Attr, b: Attr) => {\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), 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: Node; (child = element.childNodes[i++]); ) {\n if (isElement(child)) {\n renderDOMElement(child, datascopes, config, true)\n }\n }\n if (!isNested) {\n config?.onRender?.(element, datascopes)\n }\n return element\n}\nfunction isElement(node: Node): node is HTMLElement {\n return node.nodeType == 1\n}\n\nexport function renderDOMContent(root: HTMLElement, template: string, data?: Datascopes, config?: FEAASCustomizations) {\n const newTemplate = config?.processTemplate?.(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: Node; (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}\n\nexport function renderHTMLContent(template: string, data?: Datascopes, config?: FEAASCustomizations, fakeDOM = false) {\n const newTemplate = config?.processTemplate?.(null, template, data) || template\n if (typeof document === 'undefined' || fakeDOM) {\n const nodes = parseHTML(newTemplate)\n return renderDOMElement(nodes[0] as unknown as HTMLElement, data, config).outerHTML\n } else {\n const root = document.createElement('div')\n root.innerHTML = newTemplate\n renderDOMElement(root, data, config)\n return root.innerHTML\n }\n}\n","import { ControlledPromise } from './utils/promise.js'\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 */\nconst phases = ['initial', 'check', 'updated'] as const\nexport type ValidatableRequestPhase = typeof phases[number]\nexport type FetchCache = Record<string, FetchCacheRequest>\nexport interface ValidatableRequest {\n url: Parameters<typeof fetch>[0]\n options?: Parameters<typeof fetch>[1]\n validator?: (resposne: Response) => boolean\n callback?: (response: Response, status: ValidatableRequestPhase, isCached: boolean) => any\n isCached?: boolean\n response?: Response\n cache?: FetchCache\n}\n\nexport type FetchCacheRequest = {\n phase: ValidatableRequestPhase\n initial: ControlledPromise<Response>\n check: ControlledPromise<Response>\n updated: ControlledPromise<Response>\n final: ControlledPromise<Response>\n}\n\nexport var fetchCache: Record<string, FetchCacheRequest> = {}\nexport function clearFetchCache() {\n fetchCache = {}\n}\n\nexport async function fetchAndRevalidate(\n url: ValidatableRequest['url'],\n options?: ValidatableRequest['options'],\n validator?: ValidatableRequest['validator'],\n callback?: ValidatableRequest['callback'],\n cache: FetchCache = fetchCache\n) {\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\nexport function getFetchCache(url: Parameters<typeof fetch>[0], 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}\n\nexport async function fetchWithCacheAwareness(\n { url, options, validator, callback, cache }: ValidatableRequest,\n phase: ValidatableRequestPhase = 'initial'\n) {\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 } 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 } else {\n cachedRequest[phase].resolve(response)\n }\n }\n if (!response.ok) throw new Error('Fetch failed')\n if (validator?.(response) === false) throw new Error('Response is not valid')\n // see if response was pulled from cache\n const isCached =\n new Date(response.headers.get('date')) < date ||\n (promise && phase == 'initial' && (cachedRequest.phase == 'updated' || cachedRequest.phase == 'check'))\n await callback?.(response, phase, isCached)\n return {\n url,\n options,\n isCached,\n response,\n validator,\n callback,\n cache\n }\n}\n\nexport async function fetchToValidateCache(\n request: ValidatableRequest & Required<Pick<ValidatableRequest, 'response'>>\n) {\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 {\n url: url + '?head',\n options: {\n ...options,\n method: 'HEAD',\n cache: 'no-cache'\n },\n validator,\n cache\n },\n 'check'\n )\n\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 // otherwise the new resource has to be re-fetched\n return fetchBypassingCache(request)\n }\n }\n return request\n}\n\nexport async function fetchBypassingCache(request: ValidatableRequest) {\n return fetchWithCacheAwareness(\n {\n ...request,\n options: {\n ...request.options,\n cache: 'reload'\n }\n },\n 'updated'\n )\n}\n","import {\n fetchAndRevalidate,\n fetchWithCacheAwareness,\n fetchBypassingCache,\n fetchToValidateCache,\n ValidatableRequestPhase\n} from './fetch.js'\n\nexport const DEFAULT_CDN_URL = `https://feaas.blob.core.windows.net`\nexport type FEAASCDNComponentParams = {\n cdn?: string\n revision?: 'staged' | 'published' | 'saved' | number\n library: string\n component: string\n version?: string\n\n /** @deprecated Use `cdn` instead */\n hostname?: string\n}\nexport type FEAASCDNComponentSource = {\n src: string\n}\nexport type FEAASCDNComponentParamsCustomizations = {\n instance?: string\n}\nexport type FEAASCDNComponentProps = (FEAASCDNComponentParams | FEAASCDNComponentSource) &\n FEAASCDNComponentParamsCustomizations\n\nexport interface FEAASCDNStylesheetParams {\n cdn?: string\n library: string\n revision?: 'staged' | 'published' | 'saved' | number\n\n /** @deprecated Use `cdn` instead */\n hostname?: string\n}\n\nexport type FEAASCDNStylesheetSource = {\n src: string\n}\nexport type FEAASCDNStylesheetProps = FEAASCDNStylesheetParams | FEAASCDNStylesheetSource | string\n\nexport function parseComponentSource(source: string): FEAASCDNComponentParams {\n const match = source.match(\n /^(?:(.*?)\\/components)?\\/?([^\\/]+)\\/([^\\/]+)(?:\\/([^\\/]+)(?:\\/(published|staged|saved|\\d+)(?:\\.html?)?)?)?$/\n )\n if (match) {\n var [, cdn, library, component, version, revision] = match\n return { cdn, library, component, version, revision: revision as any }\n }\n}\nexport function getComponentSource(props: FEAASCDNComponentParams) {\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}/${\n props.component\n }/${\n !props.version || (props.version == 'responsive' && (!props.revision || props.revision == 'published'))\n ? ''\n : props.version\n }/${!props.revision || props.revision == 'published' ? '' : props.revision}`.replace(\n /(^\\/|\\/$|\\/\\/)(?!.+\\/components\\/)/g,\n ''\n )\n}\n\nexport function getStylesheetSource(props: FEAASCDNStylesheetParams) {\n return `${props.cdn && props.cdn != DEFAULT_CDN_URL ? `${props.cdn}/styles/` : ''}${props.library}/${\n !props.revision || props.revision == 'published' ? '' : props.revision\n }`.replace(/\\/$|\\/\\/(?!.+\\/styles\\/)/g, '')\n}\n\nexport function parseStylesheetSource(source: string): FEAASCDNStylesheetParams {\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 as any }\n // try parsing it as component url\n } else {\n const parsed = parseComponentSource(source) as Record<string, string>\n if (parsed) {\n var { cdn, library, revision } = parsed\n if (revision?.match(/\\d/)) revision = undefined\n return { cdn, library, revision: revision as any }\n }\n }\n}\nexport function getComponentURL(props: FEAASCDNComponentProps | string) {\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}/${\n props.version\n }/${props.revision || 'published'}.html`\n}\n\nexport function getStylesheetURL(props: FEAASCDNStylesheetProps) {\n if (typeof props == 'string') {\n props = { src: props }\n }\n if ('src' in props) {\n props = {\n ...parseStylesheetSource(props.src)\n }\n }\n return `${props.cdn || props.hostname || DEFAULT_CDN_URL}/styles/${props.library}/${\n props.revision || 'published'\n }.css`\n}\n\nexport async function fetchAndRevalidateComponent(\n props: FEAASCDNComponentProps,\n callback?: (html: string) => void,\n dontRevalidate = false\n) {\n const onlyIfNotDeleted = (response: Response) => {\n return response.headers.get('x-ms-meta-versionDeletedAt') == null\n }\n const parseResponse = (response: Response) => {\n return response.clone().text().then(callback)\n }\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 as Error),\n fetchWithCacheAwareness({ url: getComponentURL(props), validator: onlyIfNotDeleted }).catch((e) => e as Error)\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) 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\n/** Fetches HTML of a component. */\nexport async function fetchComponent(props: FEAASCDNComponentProps | string) {\n if (typeof props == 'string') props = { src: props }\n var template: string\n const { response } = await fetchAndRevalidateComponent(\n props,\n (result) => {\n template = result\n },\n true\n )\n return { ...props, template, lastModified: response.headers.get('last-modified') }\n}\n\nexport type ValidatableStylesheetCallback = (css: string, phase: ValidatableRequestPhase) => void\nexport async function fetchAndRevalidateStylesheet(\n props: FEAASCDNStylesheetProps,\n callback: ValidatableStylesheetCallback\n) {\n if (typeof props == 'string') props = { src: props }\n return fetchAndRevalidate(\n getStylesheetURL(props),\n {\n headers: {\n Accept: 'text/css'\n },\n credentials: 'omit'\n },\n (response) => {\n return response.headers.get('x-ms-meta-deletedAt') == null\n },\n (response, phase) => {\n return response\n .clone()\n .text()\n .then((text) => callback(text, phase))\n }\n )\n}\n","import {\n FEAASCDNStylesheetProps,\n fetchAndRevalidateStylesheet,\n getStylesheetURL,\n ValidatableStylesheetCallback\n} from '../cdn.js'\n\nexport function renderStylesheet(props: FEAASCDNStylesheetProps, style?: HTMLStyleElement) {\n renderStylesheetPromise(props, (style ||= document.createElement('style')))\n return style\n}\n\nexport function renderStylesheetPromise(props: FEAASCDNStylesheetProps, stylesheet?: HTMLStyleElement) {\n stylesheet ||= document.createElement('style')\n return fetchAndRevalidateStylesheet(props, (cssText, phase) => {\n stylesheet.textContent = cssText\n }).then(() => stylesheet)\n}\n\nexport function loadStylesheet(props: FEAASCDNStylesheetProps, callback?: ValidatableStylesheetCallback) {\n var foundStylesheet = findStylesheet(props) as HTMLStyleElement\n if (!foundStylesheet) {\n var createdStylesheet = createStylesheet(props)\n }\n return fetchAndRevalidateStylesheet(props, (cssText, phase) => {\n if (createdStylesheet) {\n createdStylesheet.textContent = cssText\n }\n callback?.(cssText, phase)\n }).then(() => foundStylesheet || createdStylesheet)\n}\n\nexport function loadStylesheetAllowStale(props: FEAASCDNStylesheetProps) {\n return new Promise((resolve, reject) => {\n loadStylesheet(props, resolve).catch(reject)\n })\n}\n\nexport function findStylesheet(props: FEAASCDNStylesheetProps) {\n return document.head.querySelector(`style[data-href=\"${getStylesheetURL(props)}\"]`)\n}\n\nexport function createStylesheet(props: FEAASCDNStylesheetProps) {\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","import { fetchAndRevalidateComponent } from '../cdn.js'\nimport { Datascopes } from './data.js'\nimport { FEAASComponentProps, renderDOMContent, renderDOMElement } from './rendering.js'\n\nexport function renderComponentElement(content: string, datasources?: Datascopes) {\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}\n\nexport function renderComponent(props: FEAASComponentProps, root?: HTMLElement) {\n renderComponentPromise(props, (root ||= document.createElement('div')))\n return root\n}\n\nexport async function renderComponentPromise(props: FEAASComponentProps, root?: HTMLElement) {\n root ||= document.createElement('div')\n if (!root.childNodes.length) {\n if ('template' in props) {\n return renderDOMContent(root, props.template, props.data, props)\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 } else {\n return renderDOMElement(root, props.data, props)\n }\n}\n","import { DEFAULT_CDN_URL, FEAASCDNComponentParams, fetchAndRevalidateComponent, parseComponentSource } from '../cdn.js'\nimport { renderDOMContent, renderDOMElement } from '../dom/rendering.js'\nimport { loadStylesheetAllowStale } from '../headless.js'\nimport { FEAASBase } from './FEAASBase.js'\n\nexport function FEAASComponentsProps(element: FEAASBase = this) {\n let data: any\n const src = element.getAttribute('src')\n if (src) {\n const parsed = parseComponentSource(src)\n if (!parsed) 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 } catch (e) {}\n }\n return {\n data: data || {},\n cdn: element.getContextAttribute('cdn') ?? cdn ?? DEFAULT_CDN_URL,\n library: element.getAttribute('library') ?? library,\n component: element.getAttribute('component') ?? component,\n version: element.getAttribute('version') ?? version ?? 'responsive',\n revision: (element.getAttribute('revision') ?? revision ?? 'published') as FEAASCDNComponentParams['revision'],\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 withStylesheet: element.getAttribute('with-stylesheet') != 'false'\n }\n}\nexport type FEAASComponentsProps = ReturnType<typeof FEAASComponentsProps>\nexport class FEAASComponent extends FEAASBase<FEAASComponentsProps, string> {\n static 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 ]\n\n defaultProps = {\n cdn: DEFAULT_CDN_URL,\n revision: 'published',\n version: 'responsive',\n withStylesheet: true,\n editable: false,\n suspended: false\n } as Partial<FEAASComponentsProps>\n\n needsRefresh: boolean\n setData(data: any) {\n this.set({ data })\n }\n\n getProps() {\n return FEAASComponentsProps(this)\n }\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n if (oldValue === newValue) return\n // force component to be refreshed\n if (name == 'library' || name == 'component' || name == 'revision' || name == 'version') {\n this.payload = undefined\n }\n this.needsRefresh = true\n super.attributeChangedCallback(name, oldValue, newValue)\n }\n\n getEditor(): any {\n return (document.querySelector('feaas-context') as FEAASBase)?.refs.editor\n }\n\n constructor() {\n super()\n this.addEventListener('click', () => {\n if (this.props.editable) {\n this.edit()\n }\n })\n }\n\n edit() {\n const editor = this.getEditor()\n if (editor?.setTarget(this)) {\n editor.open()\n return true\n }\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) return\n for (var current = this as Element; (current = current.previousElementSibling); ) {\n if (current.getAttribute('data-path-scope') == scope) {\n var last = current\n } else {\n break\n }\n }\n return last as FEAASComponent\n }\n\n isReadyToLoad() {\n return (\n super.isReadyToLoad() && this.props.library != null && this.props.component != null && this.props.version != null\n )\n }\n\n onLoad = (html: string) => {\n this.payload = html\n this.advance()\n }\n\n async load() {\n // defer loading to original element\n if (this.getOriginal()) {\n return\n }\n if (this.props.withStylesheet) {\n var stylesheetPromise = loadStylesheetAllowStale({ ...this.props, revision: 'published' }).then(() => {\n stylesheetPromise = null\n if (this.payload) {\n this.onLoad(this.payload)\n }\n })\n }\n return Promise.all([\n stylesheetPromise,\n fetchAndRevalidateComponent(this.props, (html) => {\n this.payload = html\n if (!stylesheetPromise) this.onLoad(html)\n })\n ]).then(() => this.payload)\n }\n\n update() {\n if (Array.from(this.children).filter((c) => c.tagName != 'BR').length > 0 && !this.needsRefresh) {\n renderDOMElement(this, this.props.data)\n } else {\n this.needsRefresh = true\n // defer rendering to original element\n if (this.getOriginal()) {\n return\n }\n renderDOMContent(this, this.payload, this.props.data)\n }\n }\n}\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n 'feaas-component': {\n data?: any\n template?: string\n instance?: string\n editable?: boolean\n children?: any\n dangerouslySetInnerHTML?: { __html: string }\n 'last-modified'?: string\n 'with-stylesheet'?: 'false' | 'true' | ''\n } & (\n | {\n /** @deprecated Use cdn instead */\n hostname?: string\n cdn?: string\n library: string\n component: string\n version?: string\n revision?: FEAASComponentsProps['revision']\n }\n | { src: string }\n | { template: string }\n )\n }\n }\n}\nFEAASComponent.register('feaas-component')\n\nexport { FEAASComponent as Component, FEAASComponentsProps as ComponentProps }\n","import { FEAASBase } from './FEAASBase.js'\n\nexport function FEAASLoaderProps(element: HTMLElement = this) {\n return {\n opacity: element?.getAttribute('opacity') ? parseFloat(element?.getAttribute('opacity')) : 1,\n hidden: element?.getAttribute('hidden') != null\n }\n}\ntype FEAASLoaderProps = ReturnType<typeof FEAASLoaderProps>\n\nexport class FEAASLoader extends FEAASBase<FEAASLoaderProps, string> {\n stylesheet: HTMLStyleElement\n loader: HTMLDivElement\n\n getProps() {\n return FEAASLoaderProps(this)\n }\n\n defaultProps = {\n hidden: false\n } as Partial<FEAASLoaderProps>\n\n static observedAttributes = ['hidden', 'opacity']\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n if (oldValue === newValue) 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 } else {\n this.style.setProperty('opacity', '1', 'important')\n this.style.pointerEvents = 'all'\n }\n }\n return super.attributeChangedCallback(name, oldValue, newValue)\n }\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 <div class=\"spinner\">\n <svg\n viewBox=\"0 0 100 100\"\n style=\"\n animation: 2s linear 0s infinite normal none running loader-circular-spinner;\n display: block;\n width: 48px;\n height: 48px;\n \"\n >\n <circle fill=\"transparent\" cx=\"50\" cy=\"50\" r=\"42\" stroke=\"rgba(0,0,0,0.1)\" stroke-width=\"10px\"></circle>\n <circle\n fill=\"transparent\"\n stroke=\"#5548D9\"\n cx=\"50\"\n cy=\"50\"\n r=\"42\"\n stroke-width=\"10px\"\n stroke-linecap=\"round\"\n style=\"animation: 1.5s linear 0s infinite normal none running loader-circular-track\"\n ></circle>\n </svg>\n </div>`\n this.getRoot().appendChild(this.stylesheet)\n this.getRoot().appendChild(this.loader)\n }\n\n update() {\n this.loader.style.opacity = String(this.props.opacity)\n }\n}\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n 'feaas-loader': any\n }\n }\n}\nFEAASLoader.register('feaas-loader')\n\nexport { FEAASLoader as Loader }\n","import { DEFAULT_CDN_URL, FEAASCDNStylesheetParams, parseStylesheetSource } from '../cdn.js'\nimport { loadStylesheet } from '../dom/stylesheet.js'\nimport { FEAASBase } from './FEAASBase.js'\n\nexport function FEAASStylesheetProps(element: FEAASBase = this) {\n const src = element.getAttribute('src')\n if (src) {\n var { cdn, library, revision } = parseStylesheetSource(src)\n }\n return {\n library: element?.getContextAttribute('library'),\n revision: element?.getAttribute('revision') ?? revision ?? 'published',\n cdn: element?.getContextAttribute('cdn') ?? element?.getContextAttribute('hostname') ?? DEFAULT_CDN_URL\n } as FEAASCDNStylesheetParams\n}\nexport type FEAASStylesheetProps = ReturnType<typeof FEAASStylesheetProps>\n\nexport class FEAASStylesheet extends FEAASBase<FEAASStylesheetProps, string> {\n getProps() {\n return FEAASStylesheetProps(this)\n }\n\n isReadyToLoad(): boolean {\n return this.props.library != null && this.props.revision != null && this.props.cdn != null\n }\n\n onLoad = (html: string) => {\n this.payload = html\n this.advance()\n }\n\n load() {\n return loadStylesheet(this.props, this.onLoad)\n }\n}\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n 'feaas-stylesheet': Partial<FEAASStylesheetProps> & { children?: any }\n }\n }\n}\nFEAASStylesheet.register('feaas-stylesheet')\nexport { FEAASStylesheet as Stylesheet }\n","/**\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 */\n\nimport FEAASElement from './components/FEAASElement.js'\n\nexport * from './dom/rendering.js'\nexport * from './dom/data.js'\nexport * from './dom/scripts.js'\nexport * from './dom/stylesheet.js'\nexport * from './dom/component.js'\nexport * from './fetch.js'\nexport * from './cdn.js'\nexport * from './components/FEAASBase.js'\nexport * from './components/FEAASElement.js'\nexport * from './components/FEAASComponent.js'\nexport * from './components/FEAASLoader.js'\nexport * from './components/FEAASStylesheet.js'\n\ndeclare global {\n interface Window {\n FEAASLoading: Promise<any>\n FEAASElement: typeof FEAASElement\n }\n}\n\nif (typeof window != 'undefined') {\n window.FEAASElement = FEAASElement\n window.FEAASLoading ??= Promise.resolve()\n}\n","import type * as FEAASEditorImports from '@sitecore-feaas/frontend/editor'\nimport { FEAASBase, OptionalExcept } from '../components/FEAASBase.js'\nimport { FEAASLoader } from '../components/FEAASLoader.js'\n\nexport function getFramePosition(element: HTMLElement) {\n let positions = []\n if (element) {\n let currentWindow = element.ownerDocument.defaultView as Window\n let currentParentWindow\n let rect\n while (currentWindow !== window.top) {\n currentParentWindow = currentWindow.parent\n for (let idx = 0; idx < currentParentWindow.frames.length; idx++)\n if (currentParentWindow.frames[idx] === currentWindow) {\n for (let frameElement of currentParentWindow.document.getElementsByTagName('iframe')) {\n if (frameElement.contentWindow === currentWindow) {\n rect = frameElement.getBoundingClientRect()\n const style = frameElement.contentWindow.getComputedStyle(frameElement)\n\n positions.push({\n left: rect.left + parseInt(style.borderLeftWidth),\n top: rect.top + parseInt(style.borderTopWidth)\n })\n }\n }\n currentWindow = currentParentWindow as Window\n break\n }\n }\n }\n return positions.reduce(\n (accumulator, currentValue) => {\n return {\n left: accumulator.left + currentValue.left,\n top: accumulator.top + currentValue.top\n }\n },\n { left: 0, top: 0 }\n )\n}\nexport function FEAASEditorProps(element: FEAASBase = this) {\n return {\n context: HTMLElement,\n frontend: element?.getContextAttribute('frontend'),\n src: element?.getAttribute('src') ?? '/editor.js',\n library: element?.getAttribute('library'),\n component: element?.getAttribute('component'),\n version: element?.getAttribute('version'),\n instance: element?.getAttribute('instance'),\n forked: element?.getAttribute('forked'),\n revision: element?.getAttribute('revision') || 'saved',\n hidden: element?.getAttribute('hidden') != null,\n for: element?.getAttribute('for'),\n state: element?.getAttribute('state') || ('idle' as 'idle' | 'loading' | 'ready'),\n changed: element?.getAttribute('changed') != null\n }\n}\ntype FEAASEditorProps = ReturnType<typeof FEAASEditorProps>\ntype Rect = {\n top: number\n left: number\n width: number\n height: number\n}\n\nexport class FEAASEditor extends FEAASBase<FEAASEditorProps, typeof FEAASEditorImports> {\n framePoint: Pick<Rect, 'top' | 'left'> = { top: 0, left: 0 }\n wrapperRect: Rect = { top: 0, left: 0, width: 0, height: 0 }\n bodyRect: Rect = { top: 0, left: 0, width: 0, height: 0 }\n\n static observedAttributes = ['library', 'component', 'version', 'revision', 'hidden', 'state', 'changed', 'forked']\n\n defaultProps = {\n hidden: false\n } as Partial<FEAASEditorProps>\n\n getProps() {\n return FEAASEditorProps(this)\n }\n reactRootElement: HTMLDivElement\n getReactRootElement() {\n if (!this.reactRootElement) {\n this.reactRootElement = document.createElement('div')\n this.getRoot().appendChild(this.reactRootElement)\n }\n return this.reactRootElement\n }\n\n target: HTMLElement\n setTarget = (\n element: HTMLElement,\n props = {\n component: element.getAttribute('component'),\n version: element.getAttribute('version'),\n revision: element.getAttribute('revision'),\n instance: element.getAttribute('instance')\n }\n ) => {\n if (!this.closing && (!this.target || element == null)) {\n this.set(props)\n this.target = element\n return true\n }\n }\n\n showLoader() {\n if (!this.loader) {\n this.loader = document.createElement('feaas-loader') as FEAASLoader\n this.loader.setAttribute('opacity', '0.6')\n this.loader.style.zIndex = '1000'\n this.target.appendChild(this.loader)\n if (this.target.tagName == 'FEAAS-COMPONENT') {\n this.target.style.position = 'relative'\n }\n }\n }\n\n hideLoader() {\n if (this.loader) {\n this.loader.setAttribute('hidden', 'hidden')\n if (this.target.tagName == 'FEAAS-COMPONENT') {\n this.target.style.position = 'relative'\n this.target.style.position = ''\n }\n }\n }\n\n load() {\n return import(/* @vite-ignore */ /* webpackIgnore: true */ this.formatURL(this.props.src, this.props.frontend))\n }\n\n onChromeMeasureElement = (element: HTMLElement, rect: Rect = element.getBoundingClientRect()) => {\n if (element.ownerDocument == document) {\n return {\n left: rect.left - this.bodyRect.left,\n top: rect.top - this.bodyRect.top,\n width: rect.width,\n height: rect.height\n }\n }\n return {\n left: rect.left + this.framePoint.left - this.bodyRect.left,\n top: rect.top + this.framePoint.top - this.bodyRect.top,\n width: rect.width,\n height: rect.height\n }\n }\n\n onBeforeMeasure: FEAASEditorImports.EditorContext['onChromeBeforeMeasure'] = (refs) => {\n if (refs.memoized.focusable) this.framePoint = getFramePosition(refs.memoized.focusable)\n if (this.chrome) {\n this.wrapperRect = this.chrome.positionable.getBoundingClientRect()\n this.bodyRect = this.chrome.positionable.ownerDocument.body.parentElement.getBoundingClientRect()\n }\n }\n\n onMeasure: FEAASEditorImports.EditorContext['onChromeMeasure'] = () => {}\n onPosition: FEAASEditorImports.EditorContext['onChromePosition'] = ({ focusable, root }) => {\n if (!this.chrome || this.props.hidden) return\n if (focusable) {\n const topbarHeight = 64\n const padding = 16\n this.chrome.wrapper.style.width = focusable.width + padding * 2 + 'px'\n this.chrome.wrapper.style.height = focusable.height + padding * 1 + topbarHeight + 'px'\n this.chrome.wrapper.style.left = focusable.left - padding + 'px'\n this.chrome.wrapper.style.top = focusable.top - topbarHeight + 'px'\n this.chrome.wrapper.style.opacity = '1'\n this.chrome.absolute = this.querySelector('.ui.overlays')\n if (this.chrome.absolute) {\n this.chrome.absolute.style.left = root.left + 'px'\n this.chrome.absolute.style.top = root.top + 'px'\n }\n } else {\n this.chrome.wrapper.style.opacity = '0'\n this.chrome.wrapper.style.left = '-1000px'\n this.chrome.wrapper.style.top = '-1000px'\n // wrapper.style.left = '-1000px'\n // wrapper.style.top = '-1000px'\n }\n\n // this.setPlaceholder()\n }\n\n onWindowMessage = (event: MessageEvent) => {\n switch (event.data?.type) {\n case 'feaasEdit':\n const placeholder = this.getPlaceholder()\n if (this.setTarget(placeholder.editable, event.data)) {\n this.loader = placeholder.loader\n document.body.appendChild(placeholder.clipper)\n this.editedUID = event.data.id\n this.setPlaceholder()\n this.open()\n }\n break\n case 'feaasMeasurements':\n this.measurements = event.data.measurements\n if (!this.props.hidden) this.setPlaceholder()\n break\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n\n window.addEventListener('message', this.onWindowMessage)\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n\n window.removeEventListener('message', this.onWindowMessage)\n }\n\n onContentChange = () => {\n this.setAttribute('changed', 'changed')\n requestAnimationFrame(() => {\n this.setIframeComponentContent()\n })\n }\n\n iframe: HTMLIFrameElement\n setIframe(iframe: HTMLIFrameElement) {\n this.iframe = iframe\n }\n\n setIframeComponentContent() {\n if (this.placeholder && this.iframe && this.placeholder.editable.innerHTML)\n this.iframe.contentWindow.postMessage({\n type: 'feaasUpdate',\n id: this.editedUID,\n content: this.placeholder.editable.innerHTML\n })\n }\n\n setPlaceholder() {\n if (!this.iframe) return\n const x = this.iframe.clientWidth\n const y = this.iframe.clientHeight\n const rect = this.iframe.getBoundingClientRect()\n const placeholder = this.getPlaceholder()\n const body = document.body.getBoundingClientRect()\n const measurement = this.measurements[this.editedUID]\n if (!measurement) return\n Object.assign(placeholder.clipper.style, {\n position: 'absolute',\n top: rect.top + this.iframe.clientTop - body.top + 'px',\n left: rect.left + this.iframe.clientLeft - body.left + 'px',\n width: x + 'px',\n height: y + 'px',\n pointerEvents: 'none',\n zIndex: 1,\n overflow: 'hidden'\n })\n Object.assign(placeholder.positionable.style, {\n position: 'absolute',\n top: measurement.top + 'px',\n left: measurement.left + 'px',\n width: measurement.width + 'px',\n zIndex: 2,\n transition: 'opacity 0.4s',\n //height: measurement.height + 'px',\n pointerEvents: this.props.hidden ? 'none' : 'all'\n //outline: '3px solid orange'\n })\n Object.assign(placeholder.loader.style, {\n position: 'absolute',\n top: measurement.top + 'px',\n left: measurement.left + 'px',\n width: measurement.width + 'px',\n height: measurement.height + 'px',\n filter: 'opacity(0.6)',\n zIndex: 3,\n pointerEvents: 'none'\n //outline: '3px solid orange'\n })\n document.dispatchEvent(new Event('feaasRefresh', { bubbles: true }))\n }\n\n chrome: {\n positionable: HTMLDivElement\n absolute: HTMLDivElement\n wrapper: HTMLDivElement\n }\n\n measurements: Record<string, DOMRect>\n editedUID: string\n placeholder: {\n clipper: HTMLDivElement\n positionable: HTMLDivElement\n editable: HTMLDivElement\n loader: FEAASLoader\n }\n loader: FEAASLoader\n getPlaceholder() {\n if (this.placeholder) return this.placeholder\n this.placeholder = {\n clipper: document.createElement('div'),\n positionable: document.createElement('div'),\n editable: Object.assign(document.createElement('div'), { className: '-feaas' }),\n loader: document.createElement('feaas-loader') as FEAASLoader\n }\n this.placeholder.clipper.appendChild(this.placeholder.positionable)\n this.placeholder.positionable.appendChild(this.placeholder.editable)\n this.placeholder.clipper.appendChild(this.placeholder.loader)\n return this.placeholder\n }\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n if (oldValue === newValue) 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 } else {\n this.style.setProperty('opacity', '1', 'important')\n this.style.pointerEvents = 'all'\n }\n }\n super.attributeChangedCallback(name, oldValue, newValue)\n }\n\n open() {\n clearTimeout(this.closing)\n this.removeAttribute('hidden')\n this.removeAttribute('changed')\n this.setLoadingState()\n }\n\n shouldFork(version: FEAASEditorImports.SDK.VersionModel) {\n return version.forkOriginId == null && this.props.instance != null\n }\n\n cleanup() {\n if (this.placeholder) {\n this.placeholder.clipper?.remove()\n this.placeholder = null\n }\n }\n onClose = () => {\n this.setAttribute('hidden', 'hidden')\n if (this.placeholder) {\n this.placeholder.positionable.style.opacity = '0'\n this.placeholder.positionable.style.pointerEvents = 'none'\n }\n if (this.chrome) {\n this.chrome.wrapper.style.opacity = '0'\n }\n // FIXME: Workaround for CKEditor not removing event listeners properly\n // Reported: https://github.com/ckeditor/ckeditor5/issues/13141\n // Have to recreate the whole component\n if (this.target?.parentNode) {\n this.target.outerHTML = this.target.outerHTML\n }\n this.setTarget(null, {\n component: null,\n version: null,\n instance: null,\n revision: null\n })\n this.setEditorContext({\n isFocused: false\n })\n }\n close() {\n console.log('Editor is not ready')\n }\n unfork() {\n console.log('Editor is not ready')\n }\n discard() {\n console.log('Editor is not ready')\n }\n save() {\n console.log('Editor is not ready')\n }\n versionContext: FEAASEditorImports.VersionContext\n setVersionContext(props: Partial<FEAASEditorImports.VersionContext>) {\n console.log('Editor is not ready')\n }\n onVersionStateChange = (\n versionContext: FEAASEditorImports.VersionContext,\n setVersionContext: (context: Partial<FEAASEditorImports.VersionContext>) => void\n ) => {\n this.versionContext = versionContext\n this.setVersionContext = setVersionContext\n }\n\n editorContext: FEAASEditorImports.EditorContext\n setEditorContext(props: Partial<FEAASEditorImports.EditorContext>) {\n console.log('Editor is not ready')\n }\n onEditorStateChange = (\n editorContext: FEAASEditorImports.EditorContext,\n setEditorContext: (context: Partial<FEAASEditorImports.EditorContext>) => void\n ) => {\n this.editorContext = editorContext\n this.setEditorContext = setEditorContext\n // On editor loaded\n if (editorContext.editor && this.props.state == 'loading' && !this.props.hidden) {\n this.setAttribute('state', 'ready')\n this.ownerDocument.fonts.ready.then(() =>\n setTimeout(() => {\n this.setReadyState()\n this.setIframeComponentContent()\n }, 100)\n )\n }\n }\n\n setLoadingState() {\n this.showLoader()\n this.setAttribute('state', 'loading')\n }\n\n setReadyState() {\n this.hideLoader()\n this.setEditorContext({\n activeVersionId: this.component.versions[0].id\n })\n this.setAttribute('state', 'ready')\n }\n\n component: FEAASEditorImports.SDK.ComponentModel\n version: FEAASEditorImports.SDK.VersionModel\n closing: ReturnType<typeof setTimeout>\n\n render(\n {\n children,\n component: componentId,\n version: versionId,\n instance: instanceId\n }: React.PropsWithChildren<FEAASEditorProps>,\n {\n Editor,\n VersionStatusList,\n VersionStatusButton,\n Version,\n VersionMenu,\n EditorUIUndo,\n EditorUIMode,\n React: { useEffect, useMemo, useState, useContext },\n Chakra: { HStack, Box, Button, MenuItem },\n Chrome,\n ReactDOM,\n useSDK,\n useSlots,\n useModelObserver,\n ConfirmationContext,\n VersionContext\n }: typeof FEAASEditorImports\n ) {\n if (!this.payload) return\n const { React } = this.payload\n const { sdk } = useSDK()\n const [component, setComponent] = useState<FEAASEditorImports.SDK.ComponentModel>()\n const { setConfirm } = useContext(ConfirmationContext)\n\n const usedId = instanceId || versionId\n const library = sdk.library\n\n if (component) this.component = component\n\n useEffect(() => {\n if (this.props.hidden) return\n const comp = library.components.getItem(componentId).clone()\n comp.versions\n .search({ ids: [versionId, instanceId].filter(Boolean), componentIds: [componentId] })\n .then((versions) => {\n comp.versions.setItems(versions)\n const fork = comp.findVersion(instanceId, ['staged', 'published'])\n const original = comp.findVersion(versionId, ['staged', 'published'])\n if (fork) {\n if (fork.deletedAt) {\n // Get unforked version up to date\n fork.getDraft().changeAndNotify(original.toProperties()).restore() //.publish()\n console.error('FEAAS Editor: Restoring fork')\n } else {\n console.error('FEAAS Editor: Pre-forked')\n this.setAttribute('forked', fork.id)\n }\n } else {\n this.removeAttribute('forked')\n if (this.shouldFork(original)) {\n console.error('FEAAS Editor: Forking')\n const newForkId = original.fork(instanceId).id\n this.setAttribute('instance', newForkId)\n } else {\n console.error('FEAAS Editor: Regular')\n }\n }\n setComponent(comp)\n })\n return () => {\n this.closing = setTimeout(() => {\n this.closing = null\n this.cleanup()\n setComponent(null)\n }, 400)\n }\n }, [versionId, this.props.hidden])\n\n const versions = useModelObserver(component?.versions, []).filter((v) => v.id == usedId)\n const version = versions[0]\n if (version && !this.props.hidden) this.version = version\n\n useEffect(() => {\n this.unfork = () => {\n setConfirm({\n title: 'Reverting component customizations',\n button: 'Discard',\n body: 'Are you sure to reset component to its original state? All changes will be lost.',\n action: () => {\n const original = component.findVersion(versionId, ['staged', 'published'])\n component.findVersion(instanceId).unstage().unpublish().changeAndNotify(original.toProperties())\n component.saveVersions(false)\n this.setVersionContext({\n needsWrite: true\n })\n this.removeAttribute('forked')\n requestAnimationFrame(this.onClose)\n }\n })\n }\n this.discard = () => {\n if (this.props.changed) {\n component.findVersion(usedId).revert()\n component.saveVersions(false)\n this.setVersionContext({\n needsWrite: true\n })\n }\n }\n this.close = () => {\n setConfirm({\n title: 'Component has unsaved changes',\n button: 'Discard',\n body: 'Are you sure to close editor and discard changes?',\n bypass: !this.props.changed,\n action: () => {\n this.discard()\n requestAnimationFrame(this.onClose)\n }\n })\n }\n this.save = () => {\n setConfirm({\n bypass: !!this.props.forked,\n title: 'Customizing component',\n button: 'Save',\n body: 'Changes to the component will only be visible on that page. Changes to component done in Component Builder will not be reflected here. It will be possible to revert the customization.',\n action: () => {\n component\n .findVersion(usedId)\n .commitData({\n view: this.editorContext.editor.getData({ rootName: usedId }),\n model: ''\n })\n .stage()\n .publish()\n this.removeAttribute('changed')\n this.setAttribute('forked', usedId)\n component.saveVersions(false)\n }\n })\n }\n return () => {\n delete this.unfork\n delete this.discard\n delete this.save\n delete this.editorContext\n delete this.versionContext\n delete this.setEditorContext\n delete this.setVersionContext\n }\n }, [component])\n\n const target = useMemo(() => {\n return this.target\n }, [component])\n return useMemo(\n () =>\n component &&\n useSlots<any, 'picker' | 'children'>(children, ({ picker, children }) => (\n <Box\n ref={(el) => {\n this.chrome = el\n ? {\n positionable: el,\n wrapper: el.querySelector('.editor-chrome'),\n absolute: this.querySelector('.ui.overlays')\n }\n : null\n }}\n >\n <Box className='editor-wrapper' position='absolute' left={0} top={0}>\n <Editor\n datasources={sdk.datasources}\n sdk={sdk}\n library={sdk.library}\n component={component}\n versions={versions}\n context={{\n isAutosaveEnabled: false,\n onChromeMeasure: this.onMeasure,\n onChromeBeforeMeasure: this.onBeforeMeasure,\n onChromeMeasureElement: this.onChromeMeasureElement,\n onChromePosition: this.onPosition,\n onContentChange: this.onContentChange\n }}\n >\n {{\n exports: this.onEditorStateChange,\n after: children,\n chrome: ({ editor }) => editor && <Chrome />,\n children: ({ isArchivedDisplayed, editor, status }) => (\n <Box\n position='absolute'\n left={0}\n top={0}\n className='editor-chrome'\n p={4}\n boxShadow={'2xl'}\n pointerEvents='none'\n opacity={0}\n transition='opacity 0.3s'\n >\n <Box\n left={0}\n width='4'\n top={0}\n bottom={0}\n backdropFilter='blur(2px)'\n background='rgb(244 244 244 / 80%)'\n position='absolute'\n ></Box>\n <Box\n right={0}\n width='4'\n top={0}\n bottom={0}\n backdropFilter='blur(2px)'\n background='rgb(244 244 244 / 80%)'\n position='absolute'\n ></Box>\n <Box\n top={0}\n height='16'\n left={0}\n right={0}\n backdropFilter='blur(2px)'\n background='rgb(244 244 244 / 80%)'\n position='absolute'\n ></Box>\n <Box\n bottom={0}\n height='4'\n left={0}\n right={0}\n backdropFilter='blur(2px)'\n background='rgb(244 244 244 / 80%)'\n position='absolute'\n ></Box>\n {version && (\n <Version\n version={version}\n node={target}\n ignoreBreakpoints={true}\n deps={[this.props.forked, this.props.changed]}\n >\n {{\n exports: this.onVersionStateChange,\n left: (\n <HStack justifyContent='space-between'>\n <EditorUIUndo size='sm' editor={status == 'ready' ? editor : null} />\n <EditorUIMode size='sm' />\n </HStack>\n ),\n middle: (versionContext, setVersionContext) => [\n false && (\n <VersionContext.Provider\n value={[\n {\n ...versionContext,\n version: component.findVersion(versionId)\n },\n setVersionContext\n ]}\n >\n <VersionStatusList></VersionStatusList>\n </VersionContext.Provider>\n )\n ],\n right: (\n <>\n <Button variant='secondary' size='sm' onClick={this.close}>\n Close\n </Button>\n <Button\n variant='primary'\n size='sm'\n onClick={this.save}\n isDisabled={!this.props.changed}\n >\n {!this.props.changed\n ? 'Up to date'\n : this.props.forked\n ? 'Save'\n : 'Save customization'}\n </Button>\n <VersionMenu isDisabled={!this.props.forked && !this.props.changed}>\n <MenuItem onClick={this.unfork} isDisabled={!this.props.forked}>\n Unfork\n </MenuItem>\n <MenuItem onClick={this.discard} isDisabled={!this.props.changed}>\n Discard\n </MenuItem>\n </VersionMenu>\n </>\n )\n }}\n </Version>\n )}\n </Box>\n )\n }}\n </Editor>\n </Box>\n </Box>\n )),\n [version, this.props.forked, this.props.changed]\n )\n }\n\n isReadyToLoad(): boolean {\n return this.props.component != null && this.props.version != null && !this.props.hidden\n }\n}\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n 'feaas-editor': OptionalExcept<FEAASEditorProps, 'component' | 'version'>\n }\n }\n}\nFEAASEditor.register('feaas-editor')\n","import type * as FEAASPickerImports from '@sitecore-feaas/frontend/picker'\nimport { FEAASBase } from '../components/FEAASBase.js'\n\nexport function FEAASPickerProps(element: FEAASBase<any, any> = this) {\n return {\n part: element?.getAttribute('part') || 'picker',\n slot: element?.getAttribute('part') || 'picker',\n mode: element?.getAttribute('mode') as 'library' | 'element' | 'themes',\n placeholder: element?.getAttribute('placeholder') || 'No theme',\n frontend: element?.getContextAttribute('frontend') ?? 'https://components.sitecorecloud.io',\n src: element?.getAttribute('src') ?? '/picker.js',\n hidden: element?.getAttribute('hidden') != null,\n variant: element?.getAttribute('variant') as 'internal' | 'pages',\n context: undefined as FEAASPickerImports.PickerProps['context'],\n onClose: undefined as (...args: any[]) => void,\n onContextAttributeSet: undefined as (context: any, attribute: string, value: string) => void\n }\n}\nexport type FEAASPickerProps = ReturnType<typeof FEAASPickerProps>\n\nexport class FEAASPicker extends FEAASBase<FEAASPickerProps, typeof FEAASPickerImports> {\n static observedAttributes = ['library', 'mode', 'frontend', 'src', 'hidden', 'variant']\n\n defaultProps = {\n hidden: false\n } as Partial<FEAASPickerProps>\n\n getProps() {\n return FEAASPickerProps(this)\n }\n\n load() {\n return this.import(this.formatURL(this.props.src, this.props.frontend))\n }\n\n render(\n { placeholder, context, mode, children, variant }: React.PropsWithChildren<FEAASPickerProps>,\n { Picker, React, ReactDOM }: typeof FEAASPickerImports\n ) {\n return (\n <Picker\n placeholder={placeholder}\n mode={mode || undefined}\n onClose={this.props.onClose}\n onContextAttributeSet={this.props.onContextAttributeSet}\n context={context}\n variant={variant}\n >\n {children}\n </Picker>\n )\n }\n}\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n 'feaas-picker': Partial<typeof FEAASPickerImports>\n }\n }\n}\n\nFEAASPicker.register('feaas-picker')\n","import type * as FEAASContextImports from '@sitecore-feaas/frontend/context'\nimport type { AuthModel } from '@sitecore-feaas/sdk'\nimport { FEAASBase, OptionalExcept } from '../components/FEAASBase.js'\n\nexport function FEAASContextProps(element: HTMLElement = this) {\n return {\n library: element?.getAttribute('library') as string,\n src: element?.getAttribute('src') ?? '/context.js',\n frontend: element?.getAttribute('frontend') ?? 'https://components.sitecoreclud.io',\n backend: element?.getAttribute('backend') ?? 'https://components.sitecoreclud.io/api',\n cdn: element?.getAttribute('cdn') ?? 'https://feaas.blob.core.windows.net',\n auth: null as Partial<AuthModel>,\n isolate: element?.getAttribute('isolate') == null || element?.getAttribute('isolate') == 'true'\n }\n}\nexport type FEAASContextProps = ReturnType<typeof FEAASContextProps>\n\n/**\n * Context provides shared parameters and react providers for its nested elements. It loads lazily once any of its\n * nested components load. Just placing it on the page without any consumers does not impose any overhead.\n */\nexport class FEAASContext extends FEAASBase<FEAASContextProps, typeof FEAASContextImports> {\n static observedAttributes = ['library', 'component', 'version', 'revision', 'hostname', 'template']\n getProps() {\n return FEAASContextProps(this)\n }\n\n defaultProps = {\n isolate: true\n } as Partial<FEAASContextProps>\n\n load() {\n return this.import(this.formatURL(this.props.src, this.props.frontend))\n }\n\n isReadyToLoad() {\n console.log('Is ready?', this.props, super.isReadyToLoad() && this.props.library != null)\n return super.isReadyToLoad() && this.props.library != null\n }\n\n // Remove global styles\n getTheme(theme: FEAASContextImports.Chakra.Theme): FEAASContextImports.Chakra.Theme {\n return theme\n }\n\n getRoot(): HTMLElement | FEAASBase<any, any> | ShadowRoot {\n if (this.getAttribute('isolate') === 'false') return this\n return this.shadowRoot || this.attachShadow({ mode: 'open' })\n }\n\n reactRootElement: HTMLDivElement\n getReactRootElement() {\n //if (!this.props.isolate) return this.getRoot()\n if (!this.reactRootElement) {\n this.reactRootElement = document.createElement('div')\n this.getRoot().appendChild(this.reactRootElement)\n }\n return this.reactRootElement\n }\n\n /** Pull in children FEAAS react elements into the shadow DOM so they receieve the styles */\n connectedCallback(): void {\n Array.from(this.children).forEach((child) => {\n this.getRoot().appendChild(child)\n })\n super.connectedCallback()\n }\n\n onStatusChange = (status: string) => {\n if (status == 'ready') {\n this.dispatchEvent(new Event('feaasReady', { bubbles: true, composed: true }))\n }\n }\n\n render(\n { children, library }: React.PropsWithChildren<FEAASContextProps>,\n { AppContext, Chakra: { Button, Tooltip }, React }: typeof this.payload\n ) {\n const portalProps = {\n containerRef: { current: this.getRoot() as HTMLElement }\n }\n Tooltip.defaultProps = {\n hasArrow: true,\n placement: 'top',\n portalProps\n }\n return (\n <AppContext\n backend={this.props.backend}\n libraryId={this.props.library}\n container={this.getRoot()}\n auth={this.props.auth}\n getTheme={this.getTheme}\n onStatusChange={this.onStatusChange}\n modalProps={{\n portalProps\n }}\n chakraProps={{\n cssVarsRoot: ':host',\n resetCSS: true,\n toastOptions: {\n portalProps\n }\n }}\n >\n {children}\n </AppContext>\n )\n }\n}\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n 'feaas-context': OptionalExcept<FEAASContextProps, 'library'>\n }\n }\n}\n\nFEAASContext.register('feaas-context')\n"]}