@sitecore-feaas/clientside 0.6.3-alpha.6 → 0.6.3-alpha.8

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.
package/react.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["src/ui/react.tsx", "src/dom/rendering.ts", "src/utils/data.ts", "node_modules/jsonpath-plus/dist/index-browser-esm.js", "src/dom/scripts.ts", "src/utils/datapath.ts", "src/utils/date.ts", "src/dom/html.ts", "src/utils/settings.ts", "src/ui/FEAAS.tsx", "src/utils/promise.ts", "src/components/FEAASElement.tsx", "src/components/FEAASReactElement.tsx", "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/dom/thumbnail.ts", "src/headless.ts", "src/ui/FEAASEditor.tsx", "src/ui/FEAASPicker.tsx", "src/ui/FEAASContext.tsx", "src/ui/index.ts", "src/ui/FEAASExternal.tsx"],
4
- "sourcesContent": ["import * as BYOC from '@sitecore/byoc/react'\nimport React from 'react'\nimport { HTMLNode, parseHTMLContent, renderHTMLContent } from '../dom/html.js'\nimport { DataSettings } from '../utils/settings.js'\nimport {\n FEAASCDNStylesheetParams,\n FEAASCDNStylesheetSource,\n FEAASComponentProps,\n fetchComponent,\n getComponentURL,\n getStylesheetSource,\n getStylesheetURL,\n parseComponentSource,\n parseStylesheetSource\n} from './index.js'\nexport * from '../headless.js'\nexport { External, FEAASExternalPropsObject, linkComponents } from './FEAASExternal.js'\nexport * from './index.js'\nexport { renderHTMLContent }\n\nvar ReactElementComponents: Record<string, React.Component | React.FC> = {}\n/**\n * Set custom implementation for a HTML tag name. Useful for Next.js Image component, handling image optimization.\n *\n * @param Component\n */\nexport function setElementImplementation(\n tagName: string,\n Component: React.Component<Record<string, string>> | React.FC<Record<string, string>>\n) {\n ReactElementComponents[tagName] = Component\n}\n\ntype FEEASReactComponentFetch = string[] | string | null | undefined | boolean\nexport function normalizeFetchAttribute(fetch: FEEASReactComponentFetch) {\n if (fetch == null || fetch === true) {\n return ['template', 'stylesheet', 'data']\n }\n return [].concat(fetch || [])\n}\n\nexport type FEAASReactComponentProps = FEAASComponentProps & {\n fetch?: FEEASReactComponentFetch\n preload?: boolean\n lastModified?: Date | string\n renderNode?: (node: HTMLNode, attributes: Record<string, any>) => JSX.Element | Record<string, any> | null\n}\n\n/**\n * A component to include a stylesheet using a <link> tag. Placing one in the HEAD ensures that there will be no flash\n * of unstyled content.\n *\n * @param {FEAASCDNStylesheetParams | FEAASCDNStylesheetSource} props - The properties for including the stylesheet.\n * @returns {JSX.Element} The <link> element for the stylesheet.\n */\nexport const FEAASReactStylesheet = (props: FEAASCDNStylesheetParams | FEAASCDNStylesheetSource) => {\n if ('src' in props) {\n props = parseStylesheetSource(props.src)\n }\n return <link rel='stylesheet' href={getStylesheetSource(props)} />\n}\n\n/**\n * An asynchronous wrapper over FEAAS.Component for use in React, especially suited for Next.js.\n * This component fetches HTML and data asynchronously for server-side rendering with data mapping.\n *\n * @param {FEAASReactComponentProps} props - The properties for the component.\n * @returns {Promise<JSX.Element>} The JSX element representing the component.\n */\nexport const FEAASReactServerComponent = async ({ data, fetch, ...props }: FEAASReactComponentProps) => {\n const fetchedData = await DataSettings.fetch(data || {})\n fetch = normalizeFetchAttribute(fetch ?? ['stylesheet'])\n\n const p: FEAASReactComponentProps = { ...props }\n\n if (('src' in props || 'component' in props) && props?.template == null) {\n const response = await fetchComponent(props)\n\n p.template = response.template\n p.lastModified = response.lastModified\n } else if (props?.template == null && !fetch.includes('template')) {\n fetch.push('template')\n }\n\n return FEAASReactComponent({\n ...p,\n data,\n fetch,\n fetchedData\n })\n}\n/**\n * A wrapper over FEAAS.Component for use in React. It converts a passed template HTML into React,\n * allowing external components in the render tree. Data can be provided in JSON format.\n *\n * @param {FEAASReactComponentProps} props - The properties for the component.\n * @returns {JSX.Element} The JSX element representing the component.\n */\nexport function FEAASReactComponent({\n data,\n lastModified,\n fetchedData,\n renderNode,\n ...props\n}: FEAASReactComponentProps & { fetchedData?: any }) {\n console.log('=== FEAASReactComponent', data, props)\n\n let preload = null\n let children: null | React.ReactNode\n\n if ('template' in props && props.template) {\n children = parseHTMLContent(props.template, fetchedData || data || {}).map((node, index) =>\n HTMLNodeToReact(\n node,\n (node, attributes) => {\n // invoke customization of HTML node rendering\n if (renderNode) {\n const override = renderNode?.(node, attributes)\n if (override != null && 'type' in override) {\n return [override.type, override.props]\n }\n attributes = {\n ...attributes,\n ...override\n }\n }\n // Override rendering of html tag if user provided\n if (ReactElementComponents[node.localName]) {\n return [ReactElementComponents[node.localName], attributes]\n }\n if (node.localName == 'feaas-external') {\n const camelized = {} as any\n for (var prop in attributes) {\n const key = prop == 'data-external-id' ? 'componentName' : BYOC.toCamelCase(prop)\n camelized[key] = attributes[prop]\n }\n return [BYOC.Component, camelized]\n }\n },\n index\n )\n )\n }\n\n if ('src' in props) {\n props = { ...parseComponentSource(props.src), ...props }\n }\n const fetch = normalizeFetchAttribute(props.fetch)\n const embeddedData = fetch.includes('data') ? data : fetch.includes('template') ? fetchedData || data : null\n console.log(embeddedData)\n return (\n <>\n {'preload' in props && preload === true && 'src' in props && (\n <>\n <link rel='preload' as='fetch' href={getComponentURL(props.src)} crossOrigin='anonymous' />\n <link rel='preload' as='style' href={getStylesheetURL(props.src)} crossOrigin='anonymous' />\n </>\n )}\n <feaas-component\n class='-feaas'\n {...props}\n last-modified={lastModified ? String(lastModified) : null}\n fetch={props.fetch == null ? props.fetch : ([].concat(props.fetch).join(' ') as any)}\n suppressHydrationWarning\n template={null}\n data={typeof embeddedData == 'string' ? embeddedData : embeddedData ? JSON.stringify(embeddedData) : null}\n >\n {children}\n </feaas-component>\n </>\n )\n}\n\n/**\n * Converts an HTMLNode into a React tree, ensuring proper context access for external components.\n *\n * @param {HTMLNode} node - The HTML node to be converted.\n * @param {any} [callback] - Callback to customize turning of HTML node into react tree.\n * @param {any} [key] - The key for the React element.\n * @returns {React.ReactNode} The resulting React node.\n */\nexport function HTMLNodeToReact(\n node: HTMLNode,\n callback?: (node: HTMLNode, attributes: Record<string, any>) => [tagName: any, attributes: Record<string, any>],\n key?: any\n): React.ReactNode {\n if (node.nodeType === 3) {\n return node.textContent\n }\n const children = Array.from(node.childNodes).map((child, index) => HTMLNodeToReact(child, callback, index))\n\n const attributes: { [key: string]: string | Record<string, string> } = {}\n for (let i = 0; i < node.attributes.length; i++) {\n const { name, value } = node.attributes[i]\n if (name == 'style') {\n attributes[name] = String(value || '')\n .trim()\n .split(/\\s*;\\s*/)\n .reduce((object, pair) => {\n const [k, v] = pair.split(':')\n return {\n ...object,\n [BYOC.toCamelCase(k)]: v\n }\n }, {})\n } else if (name == 'class') {\n attributes.className = value\n } else {\n attributes[name] = value\n }\n }\n\n const reactNode = callback?.(node, attributes)\n const reactName = reactNode?.[0] || node.nodeName.toLowerCase()\n if (reactName == 'style') {\n attributes.dangerouslySetInnerHTML = { __html: children.join('\\n') }\n }\n const reactAttributes = Object.assign({ key, suppressHydrationWarning: true }, reactNode?.[1] || attributes)\n const reactChildren = reactNode?.[1]?.children || children\n return React.createElement(\n reactName,\n reactAttributes,\n ['img', 'br', 'input', 'style'].includes(reactName) ? null : reactChildren\n )\n}\n\nexport type ExternalComponentProps = BYOC.ComponentProps\nexport type ContextProperties = BYOC.ContextProperties\nexport const enableNextClientsideComponents = BYOC.enableNextClientsideComponents\nexport const setContextProperties = BYOC.setContextProperties\nexport const ExternalComponentBundle = BYOC.Bundle\nexport const ExternalComponent = BYOC.Component\nexport const ReactExternalComponent = BYOC.RegularComponent\nexport const NextExternalComponent = BYOC.NextComponent\nexport const Component = FEAASReactComponent\nexport const ServerComponent = FEAASReactServerComponent\nexport const Stylesheet = FEAASReactStylesheet\n", "import { FEAASCDNComponentProps } from '../cdn.js'\nimport { queryScopes, serializeCH1RichText } from '../utils/data.js'\nimport { Data, DataScopes } from '../utils/settings.js'\nimport { parseHTML } from './html.js'\nimport { loadScript as loadScriptUtil } from './scripts.js'\nimport { normalizeCollectionScope } from '../utils/datapath.js'\nimport { DataOptions } from '../headless.js'\nimport { isDate, formatDate } from '../utils/date.js'\n\nexport interface FEAASCustomizations {\n processTemplate?: (element: HTMLElement, template: string, data: DataScopes) => string\n processData?: (element: HTMLElement, data: DataScopes) => any\n processValue?: (element: HTMLElement, property: string, value: any) => any\n shouldRepeat?: (element: HTMLElement, value: any) => boolean\n onRender?: (element: HTMLElement, data: DataScopes) => void\n}\n\nexport interface ExplicitTemplate {\n template: string\n}\n\nexport type FEAASComponentProps<T = DataOptions> = 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(\n element: HTMLElement,\n attribute: string,\n value: any,\n config?: FEAASCustomizations,\n loadScript = true\n) {\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' || attribute == 'data-path-alt') {\n const picture = Array.from(element.children).find((n) => n.localName == 'picture') || element\n target = element.localName == 'img' ? element : <HTMLElement>picture.querySelector('img, video')\n } else if (attribute == 'data-path-href') {\n target = element.querySelector('a') || element.closest('a')\n } else if (attribute == 'data-path-hidden') {\n console.log('hidden init value', value)\n value = !value ? true : null\n console.log('~~~ after:', value)\n } else if (attribute == 'data-path' || attribute == 'data-embed-html' || attribute == 'html') {\n prop = 'innerHTML'\n } else if (attribute == 'data-embed-src' && loadScript) {\n loadScriptUtil(element, value)\n } else if (attribute == 'data-path-attributes') {\n if (!Array.isArray(value)) {\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 loadScript\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, loadScript)\n }\n }\n setDOMAttribute(element, 'data-attributes-keys', Object.keys(value || {}).join(','), {}, loadScript)\n }\n // BYOC components also accept their data object in datasources attribute.\n if (element.tagName == 'FEAAS-EXTERNAL') {\n const datasourceId =\n String(element.getAttribute('data-path-attributes') || '')\n .slice(0, -1)\n .split('.')[0] || '_'\n setDOMAttribute(element, 'datasources', JSON.stringify({ [datasourceId]: value }), {}, loadScript)\n }\n return\n }\n if (typeof value == 'boolean') {\n value = value ? '' : null\n console.log('turns it to empty?', value)\n }\n\n if (!target) return\n\n const usePlaceholder = prop == 'innerHTML' || prop == 'src'\n console.log('debug set dom', attribute, prop, value, usePlaceholder)\n if (usePlaceholder && (value == null || value === '')) {\n var placeholder = String(\n (element.getAttribute('data-path-placeholder') || target[prop as keyof HTMLElement]) ??\n target.getAttribute(prop) ??\n ''\n )\n if (prop == 'innerHTML') {\n target.innerHTML = placeholder\n } else if (placeholder) {\n console.log('set with empty value placeholder', attribute, prop, placeholder)\n target.setAttribute(prop, placeholder)\n } else {\n target.removeAttribute(prop)\n }\n } else if (value != null) {\n if (prop == 'innerHTML') {\n var str = String(value)\n // sanitize html of structural text elements\n for (var parent = target; parent.parentElement && parent.localName.match(/^(a|var|strong|em|i|b)$/); )\n parent = parent.parentElement\n if (parent.localName.match(/p|h\\d|button|time|li/)) {\n str = str\n .replace(/<(p|h\\d|li|ul)[^>]*?>|<\\/(p|h\\d|li|ul)[^>]*?>/g, ' ')\n .trim()\n .replace(/\\s+/g, ' ')\n }\n if (String(parent.getAttribute('class')).includes('-inline--time')) {\n if (isDate(str)) {\n str = formatDate(new Date(str))\n }\n }\n\n if (target.innerHTML != str) {\n target.innerHTML = str\n }\n } else {\n if (target.getAttribute(prop) != value) {\n console.log('set with value', attribute, prop, value)\n if (prop === 'hidden') {\n target[prop] = true\n } else {\n target.setAttribute(prop, value)\n }\n }\n }\n } else {\n target.removeAttribute(prop)\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 loadScript = true\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 console.log(\n 'debug entry',\n name,\n datascopes,\n datapath,\n queryScopes(datascopes, datapath, true, undefined, element.tagName != 'FEAAS-EXTERNAL')\n )\n setDOMAttribute(\n element,\n name,\n queryScopes(datascopes, datapath, true, undefined, element.tagName != 'FEAAS-EXTERNAL'),\n config,\n loadScript\n )\n }\n if (name == 'data-embed-src') {\n setDOMAttribute(element, name, element.getAttribute(name), config, loadScript)\n }\n }\n }\n for (var i = 0, child: Node; (child = element.childNodes[i++]); ) {\n if (isElement(child)) {\n renderDOMElement(child, datascopes, config, true, loadScript)\n }\n }\n if (!isNested) {\n config?.onRender?.(element, datascopes)\n }\n return element\n}\n\nfunction isElement(node: Node): node is HTMLElement {\n return node.nodeType == 1\n}\n\nexport function renderDOMContent(\n root: HTMLElement,\n template: string,\n data?: Data,\n config?: FEAASCustomizations,\n loadScript = true\n) {\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, null, loadScript)\n}\n\nexport function renderHTMLContent(\n template: string,\n data?: Data,\n config?: FEAASCustomizations,\n fakeDOM = false,\n loadScript = true\n) {\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, null, loadScript).outerHTML\n } else {\n const root = document.createElement('div')\n root.innerHTML = newTemplate\n renderDOMElement(root, data, config, null, loadScript)\n return root.innerHTML\n }\n}\n", "import { JSONPath } from 'jsonpath-plus'\n\nexport function queryObjectRaw(json: any, path: string) {\n try {\n return JSONPath<any[]>({ path, json })\n } catch (e) {\n return []\n }\n}\nexport function queryObject(json: any, path: string, flatten = true) {\n const data = queryObjectRaw(json, path) || []\n if (flatten) {\n return data.flat(Infinity)\n }\n return data\n}\n\nexport function queryScopes(scopes: any, datapath: string, singleValue = false, json: any = scopes, flatten = true) {\n var path = datapath\n /* find closest parent scope */\n const keys = Object.keys(scopes).sort((b, a) => a.length - b.length)\n for (const scope of keys) {\n if (datapath.startsWith(scope) && 'ends with it') {\n if (scope == datapath) {\n if (singleValue) {\n return scopes[scope]\n } else {\n continue\n }\n }\n path = datapath.substring(scope.length + 1)\n json = scopes[scope]\n break\n }\n }\n var collection = queryObject(json, path, flatten)\n console.log('------', collection)\n // If regular path didn't match any data, try fallbacks\n // datasourceId.wrapper.$.path\n if (collection.length == 0) {\n collection = [\n // look up in `_` datasource id (catch-all id is used in JSS)\n // _.wrapper.$.path\n path.replace(/^.*?\\./, '_.'),\n // look up directly on data root\n // wrapper.$.path\n path.replace(/^.*?\\./, ''),\n // look up trimmed path in datasource\n // datasourceId.path\n path.replace(/^([^.]+).*?\\.\\$([\\.\\[])/, '$1$2'),\n // look up trimmed path in catch all datasource\n // _.path\n path.replace(/^.*?\\.\\$([\\.\\[])/, '_$1'),\n // look up trimmed path on root\n // path\n path.replace(/^.*?\\.\\$([\\.\\[])/, '$$$1'),\n // for case of top-level object data mapping full path can be replaced to _\n path.replace(/^[^.]+$/, '_')\n ]\n .filter((v, i, a) => a.indexOf(v) === i)\n .reduce((v, path) => {\n return v.length > 0 ? v : queryObject(json, path, flatten)\n }, [] as any[])\n }\n console.log('----', path, collection)\n\n if (singleValue) {\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", "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", "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", "export const parseLimit = (qualifier: string) => {\n const limit = parseInt(qualifier?.match(/\\[0:(\\d+)\\]/)?.[1], 10)\n if (!isNaN(limit) && limit > 0) return String(limit)\n return null\n}\n\nexport const parseRange = (qualifier: string) => {\n const bits = qualifier\n ?.match(/\\[([^\\]]+)\\]/)?.[1]\n .split(/\\s*,\\s*/g)\n .filter(Boolean)\n .map((bit) => {\n // individual indexes\n if (bit.match(/^-?\\d+$/)) return bit\n // ranges\n const range = bit.match(/^(\\d+):(\\d+)$/)\n return range && parseInt(range[1], 10) < parseInt(range[2], 10) ? range[1] + '-' + range[2] : null\n })\n if (!bits?.every(Boolean)) return null\n return bits.join(',')\n}\n\nexport const getQualifier = (jsonpath: string) => jsonpath?.match(/(\\.\\*|\\[[^\\]]*\\])$/)?.[0]\n\nexport function cleanCollectionBit(path: string) {\n return path.replace(/(\\.?\\[[^\\]\\[]*\\]|\\.\\*)$/g, '')\n}\n\nexport function normalizeCollectionScope(path: string) {\n return cleanCollectionBit(path) + '.*'\n}\n\n// increment numbers by given numbers, exclude second value of ranges to ensure inclusivity\nexport function adjustNumbers(string: string, diff: number) {\n return string?.replace(/(.|^)(\\d+)/g, (m, b, n) => b + (b == ':' ? n : String(parseInt(n) + diff)))\n}\n\nexport function getHumanizedLabel(path: string, maxBits = 2) {\n var bits = cleanCollectionBit(path)\n .split(/]\\.|\\.\\*\\./g)\n .pop()\n .split(/\\./g)\n .slice(-3)\n bits = bits.filter((b) => isNaN(parseInt(b)))\n return bits\n .map((bit) => bit.charAt(0).toUpperCase() + bit.slice(1))\n .slice(-maxBits)\n .join(' ')\n}\n\nexport function getLastPathBit(path: string) {\n return cleanCollectionBit(path).split('.').pop()\n}\n", "const monthNames = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n]\n\nexport const formatDate = (date: Date) => {\n if (!date || typeof date.getDay !== 'function') return\n\n const year = date.getFullYear()\n const month = monthNames[date.getMonth()]\n const day = date.getDate()\n\n return `${month} ${day}, ${year}`\n}\n\nexport const isDate = function (date: string) {\n return String(new Date(date)) !== 'Invalid Date' && !isNaN(Number(new Date(date)))\n}\n", "/** Lightweight DOM parser and serializer to use in server environments */\n\nimport { DataScopes } from '../utils/settings.js'\nimport { FEAASCustomizations, renderDOMElement } from './rendering.js'\n\nexport type HTMLAttribute = { name: string; value: string }\n\nexport class 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\n get localName() {\n return this.nodeName?.toLowerCase()\n }\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 get children() {\n return this.childNodes.filter((c) => c.nodeType == 1)\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 createDocumentFragment(): HTMLNode {\n return new HTMLNode(null, 11)\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].toLowerCase()\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 if (!['img', 'input', 'br'].includes(nodeName)) 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\nexport function 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 return parseHTMLContent(template, data, config)[0].outerHTML\n}\n\nexport function parseHTMLContent(template: string, data?: DataScopes, config?: FEAASCustomizations) {\n const newTemplate = config?.processTemplate?.(null, template, data) || template\n const nodes = parseHTML(newTemplate)\n console.log('=== parseHTMLContent', nodes)\n return nodes.map((node) => {\n console.log('=== parseHTMLContent renderdomelement', node)\n return renderDOMElement(node as unknown as HTMLElement, data, config)\n }) as unknown as HTMLNode[]\n}\n", "import { queryObject } from './data.js'\nimport { customizeDataSettings } from '@sitecore/byoc'\n\nexport type DataSourceId = string\n\n// Fully resolved data - object or array\nexport type Data = Record<string, any> | any[]\n\n// Data keyed by datasource id\nexport type DataScopes = Data | Record<DataSourceId, Data>\n\n// Data settings is json object representing fetch call\nexport type DataSettings = ReturnType<typeof DataSettings>\n\n// Data options/samples indexed by id\nexport type DataOptionsById = Record<DataSourceId, DataSettings | Data>\n\n// Data options combines of the above: data, settings, plain or keyed by datasource id\nexport type DataOptions = Data | DataSettings | DataOptionsById\n\n/**\n * Cleans the provided settings object by removing unnecessary properties that match the defaults that will be re-added\n * back through normalizations. This method is used for code generated for the user, neant to make it look neater.\n *\n * @param {any} settings - The settings object to be cleaned.\n * @returns {Object} - The cleaned settings object.\n */\nexport function clean(settings: any) {\n const { params, method, headers, body, url } = DataSettings(settings)\n var cleanSettings = { url } as Partial<DataSettings>\n var cleanHeaders = { ...headers }\n if (headers['Content-Type'] === 'application/json') delete cleanHeaders['Content-Type']\n if (headers['Accept'] === 'application/json') delete cleanHeaders['Accept']\n if (Object.keys(cleanHeaders).length > 0) {\n cleanSettings.headers = cleanHeaders\n }\n if (method !== 'GET') {\n cleanSettings.method = method\n }\n if (!(method === 'GET' || method === 'HEAD' || Object.keys(body).length === 0)) {\n cleanSettings.body = body\n }\n if (Object.keys(params).length > 0) {\n cleanSettings = { ...cleanSettings, params }\n }\n return cleanSettings\n}\n\n/**\n * Checks if the provided data is of type DataSettings by checking if all keys are recognized as settings keys.\n *\n * @param {any} data - The data to be checked.\n * @returns {boolean} - True if the data is of type DataSettings, false otherwise.\n */\nexport const isDataSettings = (data: any): data is DataSettings => {\n if (!data || typeof data.url != 'string') return false\n\n for (var property in data) {\n if (\n property == 'body' ||\n property == 'params' ||\n property == 'headers' ||\n property == 'url' ||\n property === 'method' ||\n (property == 'jsonpath' && typeof data[property] == 'string')\n ) {\n continue\n }\n\n return false\n }\n\n return true\n}\n\n/**\n * Converts settings object into fetch function arguments.\n *\n * @param {any} settings - The settings object.\n * @returns {Array} - An array containing URL and options objects as fetch function arguments.\n */\nexport function toFetchArguments(settings?: any): Parameters<typeof fetch> {\n const { url, headers, params, method, body: payload } = DataSettings(settings)\n\n let body = undefined\n\n const contentType = headers['Content-Type']\n\n if (method != 'GET' && method != 'HEAD') {\n if (contentType === 'application/json') body = JSON.stringify(payload)\n if (contentType === 'multipart/form-data')\n body = Object.keys(payload).reduce((form, key) => {\n form.append(key, (payload as any)[key])\n return form\n }, new FormData())\n if (contentType === 'application/x-www-form-urlencoded') body = new URLSearchParams(payload)\n }\n\n const query = Object.keys(params).length ? `?${new URLSearchParams(params)}` : ''\n\n return [\n `${url}${query}`,\n {\n headers,\n body,\n method\n }\n ]\n}\n\n/**\n * Creates a DataSettings object based on the provided settings. These settings are used later to fetch data for the\n * component. It's essentially fetch options with url.\n *\n * @param {any} settings - The settings object.\n * @returns {DataSettings} - The DataSettings object.\n */\nexport function DataSettings(settings: any) {\n const headers = {} as any\n for (const key in settings?.headers || {}) {\n if (settings.headers.hasOwnProperty(key)) {\n const headerCase = key.replace(/^[a-z]|\\-[a-z]/g, (m) => m.toUpperCase())\n headers[headerCase] = settings.headers[key]\n }\n }\n if (!headers.Accept) headers['Accept'] = 'application/json'\n return {\n params: (settings?.params || {}) as Record<string, any>,\n headers: headers as Record<string, string>,\n jsonpath: String(settings?.jsonpath || '$'),\n method: (settings?.method || 'GET').toUpperCase() as\n | 'GET'\n | 'POST'\n | 'OPTIONS'\n | 'PUT'\n | 'DELETE'\n | 'UPDATE'\n | 'HEAD',\n body: (settings?.body || {}) as Record<string, any>,\n url: String(settings?.url || '')\n }\n}\n/**\n * Fetches data based on the provided settings. It is expected that reesponse is json (forced by Accept header)\n *\n * @param {DataSettings} settings - The data settings.\n * @param {string} datasourceId - The datasource id.\n * @returns {Promise<Data>} - A promise that resolves to the fetched data.\n */\n\nconst fetchDataSettings = async (settings: DataSettings, datasourceId?: string): Promise<Data> => {\n /**\n * Allow BYOC to intercept request and return custom settings\n */\n const datasourceSettingsGetter = customizeDataSettings(datasourceId, settings)\n\n if (datasourceSettingsGetter instanceof Promise) {\n return datasourceSettingsGetter\n }\n // Apply custom settings\n let updatedSettings = settings\n if (datasourceSettingsGetter) {\n updatedSettings = DataSettings(datasourceSettingsGetter)\n }\n\n try {\n const [url, options] = toFetchArguments(updatedSettings)\n const response = await DataSettings.fetchImplementation(url, {\n ...options,\n // next.js only allows lowercase method\n method: options.method.toLowerCase()\n })\n const json = await response.json()\n if (updatedSettings.jsonpath && updatedSettings.jsonpath != '$') {\n return queryObject(json, updatedSettings.jsonpath)\n }\n return json\n } catch (e) {\n return {}\n }\n}\n/**\n * Fetches data based on the provided data options. Options is a union of different types, settngs, data or\n * datasource-id keyed settings/data. If the function doesnt find settings in the object, it returns it as is. It\n * supports mixing of static and fetched data. If multiple data settings are found, requests are made in parallel.\n *\n * @param {DataOptions} data - The data options.\n * @returns {Promise<DataScopes>} - A promise that resolves to the fetched data.\n */\nexport async function fetchData(data: DataOptions): Promise<DataScopes> {\n if (!data) return data\n if (isDataSettings(data)) return fetchDataSettings(data)\n\n const keys = Object.keys(data)\n const allRequests = await Promise.all(\n keys\n .map((key: keyof typeof data) => {\n return isDataSettings(data[key]) ? fetchDataSettings(data[key], key) : null\n })\n\n .filter(Boolean)\n )\n\n return keys.reduce(\n (obj, key: keyof typeof data) => ({\n ...obj,\n [key]: isDataSettings(data[key]) ? allRequests.shift() : data[key]\n }),\n {}\n )\n}\n\nexport function hasDataSettings(data: DataOptions) {\n if (!data) return false\n return isDataSettings(data) || Object.values(data).some(isDataSettings)\n}\n\nDataSettings.clean = clean\nDataSettings.toFetchArguments = toFetchArguments\nDataSettings.fetchOne = fetchDataSettings\nDataSettings.fetch = fetchData\nDataSettings.isDataSettings = isDataSettings\nDataSettings.hasDataSettings = hasDataSettings\nDataSettings.fetchImplementation = (...args: Parameters<typeof fetch>) => fetch(...args)\n", "export * from '../headless.js'\nexport * from './FEAASEditor.js'\nexport * from './FEAASPicker.js'\nexport * from './FEAASContext.js'\n", "export type ControlledPromise<T> = Promise<T> & {\n resolve: (result?: T) => void\n reject: (e: Error) => void\n restart: () => ControlledPromise<T>\n first: ControlledPromise<T>\n}\n\n/**\n * ControlledPromise is a function that returns a promise with additional methods for resolve, reject, restart, and\n * first. This allows more granular control over the promise resolution process. It also avoids unhandled rejections by\n * catching any errors and passing them to the onFailure callback.\n *\n * @example\n * const promise = ControlledPromise(\n * (result) => console.log(result),\n * (error) => console.error(error)\n * )\n * promise.resolve('Success') // logs: \"Success\"\n * promise.reject(new Error('Failure')) // logs: Error: Failure\n *\n * @template T The type of value that the promise will resolve with.\n * @param {(result: T) => void} [onSuccess] - A callback function that is called when the promise is successfully\n * resolved. The resolved value is passed to this function.\n * @param {(e: Error) => void} [onFailure=(e: Error) => {}] - A callback function that is called when the promise is\n * rejected. The Error object is passed to this function. Default is `(e: Error) => {}`\n * @returns {ControlledPromise<T>} A ControlledPromise object with the following properties:\n *\n * - Resolve: A function that when called, will resolve the promise.\n * - Reject: A function that when called, will reject the promise with the provided error.\n * - Restart: A function that when called, will restart the promise. This creates a new promise and replaces the current\n * promise with the new one.\n * - First: The first promise that was created by the restart function. This property is initially undefined, and is set\n * when the restart function is called for the first time.\n */\nexport function ControlledPromise<T>(onSuccess?: (result: T) => void, onFailure = (e: Error) => {}) {\n var first: ControlledPromise<T>\n const restart = () => {\n var resolve: (result?: T) => 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\ndeclare global {\n interface DocumentEventMap {\n feaasMount: Event\n feaasUnmount: Event\n feaasLoad: Event\n feaasError: CustomEvent<Error>\n }\n}\n\n/**\n * FEAASElement is a superclass for FEAAS components with optional react support.\n *\n * Initialization lifecycle:\n *\n * - `set(props)`\n * - `scheduleRender()` - any attribute change causes render to schedule to next frame\n * - `whenRendered.restart()` - rendering promise is reset and will resolve after render\n * - `advance()` - called on next frame\n * - `if (isReadyToLoad()) => boolean` - check if component has all necessary properties to load\n * - `load() => payload` => component is loaded\n * - `onLoad?(payload)` => invoke loaded callback\n * - `advance()` => going further in state machine\n * - `flush()` => flushes all react changes if needed\n * - `update()` => component-specific method (or react) to render changes to dom\n * - `render(payload, props)` => render means react\n * - `whenRendered.resolve()` - rendering promise is resolved after rendering\n * - `whenLoaded.resolved()` - resolved after loading and rendering\n */\nexport class FEAASElement<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, FEAASElement> = {}\n descendants: FEAASElement[] = []\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(): FEAASElement | 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 * 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 console.log('hello in here')\n const parent = this.getParent() as FEAASElement\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.dispatchEventIndirectly(new Event('feaasMount', { bubbles: true, composed: true }))\n this.getElements().map((element: FEAASElement) => element.mount?.())\n this.set()\n } catch (e) {\n this.onError(e)\n }\n }\n\n dispatchEventIndirectly(event: Event) {\n this.dispatchEvent(event)\n const parent = this.getParent() as FEAASElement\n\n if (parent && !parent.contains(this)) {\n Object.defineProperty(event, 'target', { value: this, writable: false })\n Object.defineProperty(event, 'composedPath', { value: () => [this], writable: false })\n parent.handleEvent(event)\n }\n }\n\n isJSONAttribute(attribute: keyof Props) {\n return false\n }\n\n log(...args: any) {\n const format = args[0]\n\n if (\n (typeof location != 'undefined' && location?.hostname.startsWith('components-')) ||\n localStorage['Sitecore.Components.Debug']\n )\n console.log(\n format +\n ' ' +\n args\n .slice(1)\n .map((arg: any) => {\n return arg && typeof arg == 'object' ? '%O' : '%s'\n })\n .join(' '),\n ...args.slice(1)\n )\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.dispatchEventIndirectly(new Event('feaasUnmount', { bubbles: true, composed: true }))\n // If a component is react component, we need to re-render tree so that React can unmount it from VDOM\n // so observers can be removed\n if (this.connected && this.initialized && this.render) {\n this.update()\n }\n this.cancelRender()\n this.connected = false\n // If a component is react component, we need to re-render tree so that React can unmount\n // it from VDOM, removing the observers\n if (this.initialized && this.render) {\n this.update()\n }\n }\n\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 // feaas context anywhere in the dom acts as a root element\n if (this.tagName != 'FEAAS-CONTEXT') return document.querySelector('feaas-context')\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 FEAASElement\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: FEAASElement) {\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: FEAASElement): 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: FEAASElement = 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.dispatchEventIndirectly(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.dispatchEventIndirectly(new Event('feaasLoad', { bubbles: true, composed: true }))\n const loaded = await this.load().catch((e) => {\n this.payload = undefined\n throw e\n })\n\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\n this.flush()\n this.whenRendered.resolve(this)\n } catch (e) {\n this.onError(e)\n }\n }\n\n flush() {\n if (!this.connected) return\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.getAttribute('hydrate') == 'false' && this.firstElementChild) return\n if (!this.refs.topReact && !this.forceUpdateReact) {\n this.reactRoot ||= ReactDOMClient.createRoot(this.getReactRootElement())\n this.reactRoot.render(this.getReactElement())\n } else if (this.forceUpdateReact && this.connected) {\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 && r.connected\n })\n .map((child: FEAASElement<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: FEAASElement = 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: FEAASElement = 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 // @ts-ignore TS5 react types throws here\n <ErrorBoundary key={target.tagName + '-' + target.getUID()} slot={target.getAttribute('slot')}>\n <Wrapper />\n </ErrorBoundary>\n )\n }\n\n getReactWrapper(target: FEAASElement = 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 isJSON = this.isJSONAttribute(property)\n const value = this.props[property]\n const valueAsString = isJSON ? JSON.stringify(value) : String(value)\n const defaultValue = this.defaultProps[property as keyof typeof this.defaultProps]\n const defaultValueAsString = isJSON ? JSON.stringify(defaultValue) : String(defaultValue)\n const attribute = property.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n const oldValue = this.getAttribute(attribute)\n try {\n var odlValueAsString: string = isJSON ? JSON.stringify(JSON.parse(oldValue)) : oldValue\n } catch (e) {\n var odlValueAsString: string = null\n }\n\n if (value == null || valueAsString === defaultValueAsString) {\n this.removeAttribute(attribute)\n } else if (typeof value == 'string' || typeof value == 'number' || typeof value == 'boolean' || isJSON) {\n if (odlValueAsString != valueAsString) this.setAttribute(attribute, valueAsString)\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 () => this.cancelRender()\n )\n scheduleRender() {\n if (this.nextRender == null) {\n this.whenRendered = this.whenRendered.restart()\n }\n this.cancelRender()\n this.nextRender = requestAnimationFrame(() => {\n this.nextRender = null\n this.advance().catch((e) => {})\n })\n }\n\n cancelRender() {\n cancelAnimationFrame(this.nextRender)\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 { FEAASElement as Element }\nexport { WebComponent }\n", "import type { ReactNode, ReactElement, JSXElementConstructor, PropsWithChildren } from 'react'\nimport { FEAASElement } from './FEAASElement.js'\nimport type ReactDOMClient from 'react-dom/client'\n\nexport type ReactModules = {\n React: typeof React\n ReactDOM: typeof ReactDOM\n ReactDOMClient: typeof ReactDOMClient\n}\nexport type ReactJSX = ReactNode | ReactElement<any, string | JSXElementConstructor<any>>\nexport type FEAASReactRender<P> = {\n (this: FEAASReactElement<P>, props: P, payload: ReactModules): ReactJSX\n}\n\nexport default class FEAASReactElement<P> extends FEAASElement<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 // @ts-ignore\n import('https://cdn.skypack.dev/react-dom/client')\n ]).then(([React, ReactDOM, ReactDOMClient]) => {\n return { React, ReactDOM, ReactDOMClient }\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 FEAASReactElement<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", "import { ControlledPromise } from './utils/promise.js'\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, isCached: boolean) => 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\n/**\n * Utility to cache-bust static files. It relies on reading Date header to detect cached response, so it requires CORS\n * settings to be set.\n *\n * It accepts validator function that determines if response is usable. If response was pulled from cache and is valid,\n * the optional callback function is fired right away. Then HEAD request is made bypassing the cache, to see if the\n * response has an newer Last-Modified header. In case it does and it passes validation, third request is fired that\n * actually fetches the new content and callback is invoked the second time.\n *\n * It works as promise, but also accepts callback to use cached blobs mid-flight and have access to headers. Any network\n * errors will not be caught. Function throws when unable to fetch valid response.\n */\nexport async function fetchAndRevalidate(\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\n/**\n * Executes a fetch request optionally validating and handling the response. Using callback function it's possible to\n * observe successful response twice: Cached version first, and up-to-date later.\n *\n * @param {Object} request - An object containing request parameters.\n * @param {string} request.url - The URL to fetch.\n * @param {Object} request.options - Fetch request options.\n * @param {Function} [request.validator] - Function to validate the response. Should return `false` if\n * validation fails.\n * @param {Function} [request.callback] - Function to execute after fetching. Receives the response,\n * phase, and cache status.\n * @param {Object} [request.cache] - Cache object to store or retrieve cached data.\n * @param {ValidatableRequestPhase} [phase='initial'] - The phase of the request, defaults to 'initial'.\n * @returns {Promise<Object>} A promise that resolves to an object containing request details and the response.\n * @throws {Error} Throws an error if the fetch fails or if the response is not valid according to the validator.\n */\nexport async function fetchWithCacheAwareness(\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 // 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 if (validator?.(response, isCached) === false) throw new InvalidResponse('Response is not valid')\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 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 class InvalidResponse extends Error {}\n\n/**\n * Validates cache\u00A0of previousl fetch If the resource is cached and there is a newer version available, it will be\n * re-fetched.\n *\n * @param request - The request object containing the URL, cache information, options, validator, and response of\n * initial request.\n * @returns A promise that resolves to the request object.\n */\nexport async function fetchToValidateCache(\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 + (url.toString().includes('?') ? '&' : '?') + '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 // 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 /**\n * @deprecated Use `cdn` instead.\n */\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 /**\n * @deprecated Use `cdn` instead.\n */\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 && props.src) {\n props = {\n ...parseComponentSource(props.src)\n }\n } else props = { ...(props as FEAASCDNComponentParams) }\n return `${props.cdn || props.hostname || DEFAULT_CDN_URL}/components/${props.library}/${props.component}/${\n props.version || 'responsive'\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 // edge url are always well formed\n if (String(props.src).includes('v1/files/components/styles')) return props.src\n\n props = {\n ...parseStylesheetSource(props.src)\n }\n } else props = { ...(props as FEAASCDNComponentParams) }\n return `${props.cdn || props.hostname || DEFAULT_CDN_URL}/styles/${props.library}/${\n props.revision == 'staged' ? 'staged' : props.revision == 'saved' ? 'saved' : '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 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 parseStylesheetSource,\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\nconst validatedStylesheets = new WeakSet<HTMLStyleElement | HTMLLinkElement>()\nexport function loadStylesheet(props: FEAASCDNStylesheetProps, callback?: ValidatableStylesheetCallback) {\n var writableStylesheet: HTMLStyleElement\n var foundStylesheet = findStylesheet(props)\n\n if (foundStylesheet) {\n if (validatedStylesheets.has(foundStylesheet)) {\n return Promise.resolve(foundStylesheet)\n }\n // it can be that page already have stylesheet using alternative URL (e.g. edge url), use that instead\n props = foundStylesheet.getAttribute('data-href') || foundStylesheet.getAttribute('href')\n }\n\n return fetchAndRevalidateStylesheet(props, (cssText, phase) => {\n // dont need to write stylesheet for cached state if we already found a stylesheet\n if (!(phase == 'initial' && foundStylesheet)) {\n writableStylesheet ||=\n !foundStylesheet || foundStylesheet.tagName == 'LINK' ? createStylesheet(props) : foundStylesheet\n writableStylesheet.textContent = cssText\n }\n callback?.(cssText, phase)\n }).then(() => writableStylesheet || foundStylesheet)\n}\n\nexport function loadStylesheetAllowStale(props: FEAASCDNStylesheetProps) {\n return new Promise((resolve, reject) => {\n loadStylesheet(props, resolve).catch(reject)\n })\n}\n\n// Find stylesheet on the page for given props, also check by alternative edge url\nexport function findStylesheet(props: FEAASCDNStylesheetProps) {\n const cdnURL = getStylesheetURL(props)\n const { library } = parseStylesheetSource(cdnURL)\n const edgeURL = `/files/components/styles/${library}.css`\n return document.querySelector(\n `style[data-href=\"${cdnURL}\"], \n link[rel=\"stylesheet\"][href=\"${cdnURL}\"], \n style[data-href*=\"${edgeURL}\"], \n link[rel=\"stylesheet\"][href*=\"${edgeURL}\"]`\n ) as HTMLStyleElement | HTMLLinkElement\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 '../utils/settings.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 console.log('=== renderComponentElement', fragment, datasources)\n renderDOMElement(fragment, datasources)\n return wrapper\n}\n\nexport function renderComponent(props: FEAASComponentProps, root?: HTMLElement, loadScript = true) {\n renderComponentPromise(props, (root ||= document.createElement('div')), loadScript)\n return root\n}\n\nexport async function renderComponentPromise(props: FEAASComponentProps, root?: HTMLElement, loadScript = true) {\n root ||= document.createElement('div')\n if (!root.childNodes.length) {\n if ('template' in props) {\n return renderDOMContent(root, props.template, props.data, props, loadScript)\n } else {\n return fetchAndRevalidateComponent(props, (template) => {\n return renderDOMContent(root, template, props.data, props, loadScript)\n }).then(() => root)\n }\n /* update element with new data */\n } else {\n console.log('=== renderComponentPromise', root, props.data)\n\n return renderDOMElement(root, props.data, props, null, loadScript)\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 { ControlledPromise } from '../utils/promise.js'\nimport { DataOptions, DataSettings } from '../utils/settings.js'\nimport { FEAASElement } from './FEAASElement.js'\n\nexport function FEAASComponentsProps(element: FEAASElement) {\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\n const dataValue = element.getAttribute('data')\n\n if (dataValue != null && dataValue != '') {\n try {\n data = typeof dataValue == 'string' ? JSON.parse(dataValue) : {}\n } catch (e) {\n console.error(e)\n }\n }\n\n const fetch = element.getAttribute('fetch')\n return {\n data: (data || {}) as DataOptions,\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 fetch:\n fetch == 'false' || (fetch == null && element.hasAttribute('fetch'))\n ? []\n : fetch == null || fetch == 'true'\n ? ['data', 'template', 'stylesheet']\n : fetch.split(/(\\s+|\\-)+/g).filter(Boolean)\n }\n}\n\nexport type FEAASComponentsProps = ReturnType<typeof FEAASComponentsProps>\n\n/**\n * - Initialization lifecycle:\n * - - `set(props)`\n * - - `scheduleRender()` - any attribute change causes render to schedule to next frame\n * - - `whenRendered.restart()` - rendering promise is reset and will resolve after render\n * - - `advance()` - called on next frame\n * - - `if (isReadyToLoad()) => boolean` - check if component has all necessary properties to load\n * - - `load() => payload` => component is loaded\n * - - `onLoad?(payload)` => invoke loaded callback for cached version of a component\n * - - `advance()` => going further in state machine\n * - - `flush()` => flushes all react changes if needed\n * - - `update()` => component-specific method (or react) to render changes to dom\n * - - `render(payload, props)` => render means react\n * - - `whenRendered.resolve()` - rendering promise is resolved after rendering\n * - - IF CACHE WAS STALE - FETCH AND RENDER AGAIN\n * - - `fetchByPassingCache()` - load up-to-date version of a component\n * - - `onLoad(newPayload) `\n * - - `advance()` => going further in state machine\n * - - `flush()` => flushes all react changes if needed\n * - - `update()` => component-specific method (or react) to render changes to dom\n * - - `render(payload, props)` => render means react\n * - - `whenRendered.resolve()` - rendering promise is resolved after rendering\n * - - `whenLoaded.resolved()` - resolved after loading of up to date component\n */\nexport class FEAASComponent extends FEAASElement<FEAASComponentsProps, string> {\n readyData: any = {}\n whenDataReady = ControlledPromise<any>(\n (data) => (this.readyData = data),\n (e) => this.onError(e)\n )\n\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 'fetch'\n ]\n\n defaultProps = {\n cdn: DEFAULT_CDN_URL,\n revision: 'published',\n version: 'responsive',\n editable: false,\n suspended: false,\n data: {}\n } as Partial<FEAASComponentsProps>\n\n needsRefresh: boolean\n needsToFetchTemplate: boolean\n\n setData(data: DataOptions) {\n this.set({ data })\n }\n\n getProps() {\n return FEAASComponentsProps(this)\n }\n\n isJSONAttribute(prop: keyof FEAASComponentsProps) {\n return prop == 'data'\n }\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n if (oldValue === newValue) return\n\n // force component to be refreshed\n if (name == 'library' || name == 'component' || name == 'revision' || name == 'version') {\n this.payload = undefined\n if (this.alreadyRendered && this.connected) {\n this.needsRefresh = true\n this.needsToFetchTemplate = true\n }\n }\n\n super.attributeChangedCallback(name, oldValue, newValue)\n\n if (name == 'data') {\n this.needsRefresh = true\n if (this.props.fetch.includes('data') || this.alreadyRendered || !DataSettings.hasDataSettings(this.props.data)) {\n this.fetchData()\n }\n }\n }\n\n // Reset readyData and perform a new fetch.\n async fetchData() {\n this.readyData = undefined\n\n this.whenDataReady = this.whenDataReady.restart()\n\n const data = await DataSettings.fetch(this.props.data)\n\n const alreadyRendered = this.alreadyRendered\n\n await this.whenDataReady.resolve(data)\n if (alreadyRendered) {\n this.advance()\n }\n }\n\n getEditor(): any {\n return (document.querySelector('feaas-context') as FEAASElement)?.refs.editor\n }\n\n constructor() {\n super()\n\n const data = this.getAttribute('data')\n if (!this.getAttribute('data')) {\n this.whenDataReady.resolve({})\n }\n\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()) return\n\n const advanceIfEverythingIsReady = () => {\n // html is not loaded\n if (this.payload == null) return\n\n // shared stylesheet is still being loaded\n if (stylesheetPromise) return\n\n // data is still loading\n if (!this.readyData) return\n\n this.onLoad(this.payload)\n }\n\n if (this.props.fetch.includes('stylesheet')) {\n var stylesheetPromise = loadStylesheetAllowStale({ ...this.props }).then(() => {\n stylesheetPromise = null\n advanceIfEverythingIsReady()\n })\n }\n\n if (this.props.fetch.includes('template') || this.needsToFetchTemplate) {\n this.needsToFetchTemplate = false\n var templatePromise = fetchAndRevalidateComponent(this.props, (html) => {\n this.payload = html\n this.needsRefresh = true\n advanceIfEverythingIsReady()\n })\n } else {\n this.payload = this.props.template ?? this.innerHTML\n }\n\n return Promise.all([\n stylesheetPromise,\n this.whenDataReady.then(() => advanceIfEverythingIsReady()),\n templatePromise\n ]).then(() => this.payload)\n }\n\n alreadyRendered: boolean\n\n flush() {\n if (!this.readyData) return\n\n super.flush()\n }\n\n update() {\n this.alreadyRendered = true\n console.log('=== feaascomponent update', this.alreadyRendered)\n // avoid unnecessary rendering if hydration was disabled\n if (\n !this.props.fetch.includes('data') &&\n !this.props.fetch.includes('template') &&\n this.firstElementChild &&\n !this.needsRefresh\n )\n return\n if (Array.from(this.children).filter((c) => c.tagName != 'BR').length > 0 && !this.needsRefresh) {\n console.log('=== feaas component render dom', this.readyData)\n renderDOMElement(this, this.readyData)\n } else {\n this.needsRefresh = false\n // defer rendering to original element\n if (this.getOriginal()) {\n return\n }\n renderDOMContent(this, this.payload, this.readyData)\n }\n }\n}\n\ntype FetchKeyword = 'data' | 'template' | 'stylesheet'\n\ndeclare module 'react' {\n namespace JSX {\n interface IntrinsicElements {\n 'feaas-component': {\n data?: any\n class?: string\n suppressHydrationWarning?: boolean\n template?: string\n instance?: string\n editable?: boolean\n children?: any\n dangerouslySetInnerHTML?: { __html: string }\n 'last-modified'?: string\n fetch?:\n | `${FetchKeyword} ${FetchKeyword} ${FetchKeyword}`\n | `${FetchKeyword} ${FetchKeyword}`\n | `${FetchKeyword}`\n | ''\n } & (\n | {\n /**\n * @deprecated Use cdn instead.\n */\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 { FEAASElement } from './FEAASElement.js'\n\nexport function FEAASLoaderProps(element: HTMLElement) {\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 FEAASElement<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 { FEAASElement } from './FEAASElement.js'\n\nexport function FEAASStylesheetProps(element: FEAASElement) {\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 FEAASElement<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", "import type { SDK, Style, VersionModel, ComponentModel, StylesheetModel } from '@sitecore-feaas/sdk'\nimport { fetchAndRevalidate } from '../fetch.js'\nimport { renderComponent } from './component.js'\n\nexport type Callback = (image: HTMLImageElement | null, isCached: boolean) => void\n\nexport const convertBase64toBlob = (base64: string) => fetch(base64).then((res) => res.blob())\n\n/** Parse fetch response as blob and turn it into HTMLImageElement off thread */\nexport const responseToImage = (response: Response): Promise<HTMLImageElement> =>\n response.blob().then((blob) => {\n return new Promise((resolve, reject) => {\n const img = new Image()\n img.onerror = reject\n img.onload = () => {\n resolve(img)\n }\n img.src = URL.createObjectURL(blob)\n })\n })\n\n/**\n * Retrieves the version of a given component that best fits a specific display width.\n *\n * The function ensures that the version data for the component is available and selects the one that is most suitable\n * for a display width of 800 pixels.\n *\n * @param {ComponentModel} component - The component for which the version needs to be obtained.\n * @returns {Promise<VersionModel>} - A promise that resolves to the most suitable version for a display width of 800\n * pixels.\n */\nexport async function getVersionForThumbnail(component: ComponentModel): Promise<VersionModel> {\n if (!component.versions.length) await component.versions.fetch()\n return component.getVersionForWidth(800)\n}\n\n/**\n * Ensures an up-to-date thumbnail for a specific component and version.\n *\n * This operation initiates thumbnail load and, if that fails or if file is out of date, a new thumbnail is generated.\n * It can work with a callback, which is designed to potentially fire twice for enhancing user experience. This dual\n * firing allows for an immediate display of a possibly stale cached image while downloading or generating new version\n * in the background.\n *\n * 1. The first call can happen with the stale cached or outdated image.\n * 2. The second call occurs with the up-to-date loaded or freshly generated generated image.\n *\n * @param {ComponentModel} component - Relevant component.\n * @param {VersionModel} [version] - Relevant version (optional, falls back to responsive).\n * @param {Callback} [callback] - Callback to handle the loaded or generated image (optional).\n * @returns {Promise<HTMLImageElement | null>} - The final thumbnail image (either loaded or freshly generated).\n */\nexport async function get(component: ComponentModel, version?: VersionModel, callback?: Callback) {\n try {\n if (!component.isNew) {\n return await load(component, version, callback)\n }\n } catch (e) {\n component.sdk.log(\n `FEAAS: Thumbnail ${component.id}, version: ${\n version?.id || 'responsive'\n }, status: generating ${status}, reason: ${e}`\n )\n }\n // generate the image\n const img = await generate(component, version)\n callback?.(img, false)\n\n // upload base64 image as blob off-thread\n if (img && !component.isNew) {\n convertBase64toBlob(img.src).then((blob) => upload(component, version, blob))\n }\n return img\n}\n\n/**\n * Retrieves the thumbnail image for a given component/version combination, with a responsive default if version is not\n * provided.\n *\n * The resulting HTML <img> element will have `width`, `height`, and `src` properties ready for use. Although it can\n * operate as a regular promise that resolves when the thumbnail is loaded, it also supports a callback for an enhanced\n * user experience. This callback may be invoked twice, depending on the state of the cache:\n *\n * 1. The first call occurs if the image was previously cached by the browser, but the cache is stale.\n * 2. The second call happens when the image is updated from a fresh download. By this design, the user gets to see a\n * cached image immediately while the updated image is being downloaded in the background.\n *\n * If the version of a component is known to be newer than remote file, the function will throw `InvalidResponse` error.\n * As a way to handle that error, the `generate` function may be used to produce new thumbnail (@see render).\n *\n * @param {ComponentModel} component - The component to load a thumbnail for.\n * @param {VersionModel} [version] - The version of the component to load a thumbnail for. If not provided, a\n * version suitable for a responsive component is selected.\n * @param {Callback} [callback] - A callback to handle the loaded image. This callback may be invoked twice for\n * the reasons described above.\n * @returns {Promise<HTMLImageElement>} - The thumbnail image for the component/version combination.\n */\nexport async function load(\n component: ComponentModel,\n version?: VersionModel,\n callback?: Callback\n): Promise<HTMLImageElement> {\n const url = version ? version.getThumbnailURL() : component.getThumbnailURL()\n const stylesheet = component.library.stylesheet\n const lastModifiedDate = new Date(Math.max(Number(component.modifiedAt), Number(stylesheet.modifiedAt)))\n component.sdk.log(`FEAAS: Thumbnail ${component.id}/${version?.id || 'responsive'}, loading`)\n // Otherwise use a logic that will invoke callback for cached request and then try to revalidate it\n var img: HTMLImageElement\n await fetchAndRevalidate(\n url,\n {},\n (response, isCached) => {\n // <2 second difference is not considered outdated\n // If thumbnail is detected as outdated it will throw error and promise will be rejected\n const isUpToDate =\n Math.abs(Number(new Date(response.headers.get('x-ms-meta-componentRenderedAt'))) - Number(lastModifiedDate)) <\n 2000\n\n if (isCached && !isUpToDate) {\n responseToImage(response).then((image) => {\n img = image\n callback(image, isCached)\n })\n }\n return isUpToDate\n },\n (response, state, isCached) => {\n component.sdk.log(`FEAAS: Thumbnail ${component.id}/${version?.id || 'responsive'}, status: ${state}`)\n responseToImage(response).then((image) => {\n img = image\n callback(image, isCached)\n })\n },\n null\n )\n return img\n}\n\n/**\n * Creates a thumbnail image for a given component and version.\n *\n * First, it determines the appropriate version to use. If not provided, it attempts to fetch one suitable for\n * thumbnail. It then leverages `render` to generate an image with provided parameters and finally, if the component\n * isn't new, uploads the generated as a Blob onto cdn for future retrieval.\n *\n * @param {ComponentModel} component - Component instance.\n * @param {VersionModel} [version] - Version instance.\n * @returns {Promise<HTMLImageElement | null>} Thumbnail image or null if generation isn't possible.\n */\nexport async function generate(component: ComponentModel, version?: VersionModel, customStylesheet?: StylesheetModel) {\n const sourceVersion = version || (component.isNew ? null : await getVersionForThumbnail(component))\n\n if (!sourceVersion || sourceVersion.isViewEmpty()) {\n return null\n }\n const stylesheet = customStylesheet || component.library.stylesheets.first\n\n const { datasources } = component.sdk\n\n const img = await render(\n sourceVersion.classList,\n stylesheet.getBreakpointForWidth(800, sourceVersion.getBreakpoints()),\n sourceVersion.view,\n datasources.reduce((object, datasource) => {\n return Object.assign(object, { [datasource.id]: datasource.sample })\n }, {}),\n stylesheet.css,\n component.sdk\n )\n\n return img\n}\n\n/**\n * Transforms a specific component version into an image.\n *\n * Generates an isolated environment (iframe) to render the component with supplied parameters. 'html2canvas.js' is then\n * injected into the iframe to capture the rendered component as an image. The image is created respecting the provided\n * design breakpoint, ensuring an accurate visual representation.\n *\n * @param {string[]} classList - Array of class names applied to the rendered component.\n * @param {Style.Rule<'breakpoint'>} breakpoint - Breakpoint style rule that dictates the viewport dimensions for\n * rendering.\n * @param {string} template - String template of the component to render.\n * @param {any} data - Data object to be used when rendering the component.\n * @param {string} cssText - CSS rules to be applied during component rendering.\n * @param {EnvironmentVariables} env - Environment variables used to set frontend and backend endpoint URLs.\n * @returns {Promise<BasicImage>} - Promise that resolves to an object containing the src, width, and height of the\n * created image.\n */\nfunction render(\n classList: string[],\n breakpoint: Style.Rule<'breakpoint'>,\n template: string,\n data: any,\n cssText: string,\n sdk: SDK\n) {\n const iframe = document.createElement('iframe')\n iframe.style.position = 'absolute'\n iframe.style.top = '-2000px'\n iframe.style.left = '-2000px'\n iframe.style.width = breakpoint.props.minWidth + 'px'\n iframe.style.height = '720px'\n iframe.style.zIndex = '100011'\n document.body.appendChild(iframe)\n\n return new Promise<HTMLImageElement>((resolve, reject) => {\n const script = document.createElement('script')\n script.onerror = reject\n script.src = sdk.frontend + '/assets/html2canvas.js'\n script.onload = () => {\n ;(iframe.contentWindow.document.fonts?.ready || Promise.resolve()).then(function () {\n return (\n iframe.contentWindow\n //@ts-ignore\n .html2canvas(root, {\n // 1.1 scale is to remove shadows that are drawn incorrectly\n scale: Math.max(1.1, 1000 / Math.min(1401, Math.max(320, breakpoint.props.minWidth))),\n width: Math.min(1401, Math.max(320, breakpoint.props.minWidth)),\n height: Math.max(1, Math.min(2000, root.offsetHeight)),\n windowWidth: breakpoint.props.minWidth || breakpoint.props.maxWidth + 'px',\n windowHeight: 1000,\n proxy: sdk.backend + '/proxy/media',\n backgroundColor: '#ffffff'\n })\n .then((canvas: HTMLCanvasElement) => {\n const src = canvas.toDataURL('image/jpeg', 0.6)\n iframe.parentElement.removeChild(iframe)\n const img = new Image()\n img.onload = () => {\n resolve(img)\n }\n img.onerror = reject\n img.src = src\n })\n )\n })\n }\n iframe.contentWindow.document.head.appendChild(script)\n const stylesheet = iframe.contentWindow.document.createElement('style')\n stylesheet.textContent = `\n ${cssText}\n body, html { padding: 0; margin: 0; overflow: hidden }\n `\n const stylesheet2 = iframe.contentWindow.document.createElement('style')\n stylesheet2.textContent = `\n body, html { padding: 0; margin: 0; overflow: hidden }\n `\n\n iframe.contentWindow.document.head.appendChild(stylesheet)\n iframe.contentWindow.document.head.appendChild(stylesheet2)\n const root = renderComponent({ template, data }, null, false)\n root.classList.add(...classList, '-feaas--preview', '-emulate--' + breakpoint.details.slug)\n iframe.contentWindow.document.body.appendChild(root)\n })\n}\n\n/**\n * Uploads a thumbnail Blob to a CDN, enabling it for future retrieval.\n *\n * It constructs a URL based on component and version information, if available. The thumbnail's blob is uploaded with\n * several metadata points, including identifiers and timestamps. Upon successful upload, it sends a no-cache fetch\n * request to the constructed URL to bust the cache.\n *\n * @param {ComponentModel} component - Component instance.\n * @param {VersionModel} version - Version instance.\n * @param {Blob} blob - Blob instance to upload.\n * @returns {Promise<string>} URL of the uploaded Blob.\n */\nexport async function upload(component: ComponentModel, version: VersionModel, blob: Blob): Promise<string> {\n const url = version ? version.getThumbnailURL() : component.getThumbnailURL()\n const lastModifiedDate = new Date(\n Math.max(Number(component.modifiedAt), Number(component.library.stylesheet.modifiedAt))\n )\n\n try {\n await component.sdk.uploadBlob('thumbnails', url.split(/\\/thumbnails\\//)[1], blob, {\n headers: {\n 'x-ms-blob-content-type': 'image/jpg',\n 'x-ms-blob-cache-control': 'public,max-age=31536000,immutable',\n 'x-ms-meta-versionId': version ? version.id : null,\n 'x-ms-meta-versionRevision': version ? version.revision.toString() : null,\n 'x-ms-meta-componentId': component.id,\n 'x-ms-meta-componentRenderedAt': lastModifiedDate.toUTCString(),\n 'x-ms-meta-componentModifiedAt': component.modifiedAt.toUTCString(),\n 'x-ms-meta-componentCreatedAt': component.createdAt.toUTCString(),\n 'x-ms-meta-modifiedAt': component.modifiedAt.toUTCString()\n }\n })\n // bust thumbnail cache for the future, off-thread\n fetch(url, {\n cache: 'no-cache'\n }).then(() => {\n component.sdk.log('FEAAS: Thumbnail uploaded', url)\n })\n } catch (e) {\n component.sdk.log('FEAAS: Thumbnail failed to upload', url, e)\n }\n\n return url\n}\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 FEAASReactElement from './components/FEAASReactElement.js'\n\nexport * from './dom/rendering.js'\nexport * from './utils/data.js'\nexport * from './dom/scripts.js'\nexport * from './dom/stylesheet.js'\nexport * from './dom/component.js'\nexport * from './fetch.js'\nexport * from './utils/promise.js'\nexport * from './cdn.js'\nexport * from './components/FEAASElement.js'\nexport * from './components/FEAASReactElement.js'\nexport * from './components/FEAASComponent.js'\nexport * from './components/FEAASLoader.js'\nexport * from './components/FEAASStylesheet.js'\nexport * from './utils/datapath.js'\nexport * as DOM from './dom/rendering.js'\nexport * as DataScope from './utils/data.js'\nexport * as DataPath from './utils/datapath.js'\nexport { DataSettings, fetchData } from './utils/settings.js'\nexport type { Data, DataOptionsById, DataOptions, DataScopes } from './utils/settings.js'\nexport * as Thumbnail from './dom/thumbnail.js'\n\ndeclare global {\n interface Window {\n FEAASLoading: Promise<any>\n FEAASReactElement: typeof FEAASReactElement\n }\n}\n\nif (typeof window != 'undefined') {\n window.FEAASReactElement = FEAASReactElement\n window.FEAASLoading ??= Promise.resolve()\n}\nexport { registerDatasource, registerComponent, getComponent, customizeDataSettings } from '@sitecore/byoc'\n", "import type * as FEAASEditorImports from '@sitecore-feaas/frontend/editor'\nimport { FEAASElement, OptionalExcept } from '../components/FEAASElement.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: FEAASElement) {\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 FEAASElement<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.Model.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.Model.ComponentModel\n version: FEAASEditorImports.Model.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 useLibrary,\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 library = useLibrary()\n const [component, setComponent] = useState<FEAASEditorImports.Model.ComponentModel>()\n const { setConfirm } = useContext(ConfirmationContext)\n const usedId = instanceId || versionId\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={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 { FEAASElement } from '../components/FEAASElement.js'\n\nexport function FEAASPickerProps(element: FEAASElement<any, any>) {\n return {\n part: element?.getAttribute('part') || 'picker',\n slot: element?.getAttribute('part') || 'picker',\n mode: element?.getAttribute('mode') as FEAASPickerImports.PickerProps['mode'],\n dialog: element?.getAttribute('dialog') as FEAASPickerImports.PickerProps['dialog'],\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 setAttribute: undefined as FEAASPickerImports.AttributeSetter,\n getAttribute: undefined as FEAASPickerImports.AttributeGetter\n }\n}\nexport type FEAASPickerProps = ReturnType<typeof FEAASPickerProps>\n\nexport class FEAASPicker extends FEAASElement<FEAASPickerProps, typeof FEAASPickerImports> {\n static observedAttributes = ['library', 'mode', 'frontend', 'src', 'hidden', 'variant', 'dialog']\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 connectedCallback() {\n this.setAttribute('feaas-role', 'ui')\n super.connectedCallback()\n }\n render(\n { placeholder, context, mode, dialog, children, variant }: React.PropsWithChildren<FEAASPickerProps>,\n { Picker, React, useContext, EnvironmentContext, useLibrary, useSDK, BYOC }: typeof FEAASPickerImports\n ) {\n const [renders, forceRender] = React.useReducer((c) => c + 1, 0)\n const sdk = useSDK()\n const env = useContext(EnvironmentContext)\n const collections = useLibrary('collections')\n const components = useLibrary('components')\n const datasources = useSDK('datasources')\n const library = useLibrary()\n // @ts-ignore temporary workaround until we release all environments\n const rules = library?.stylesheets?.first?.rules || library?.stylesheet?.styles\n const expandedComponents = useSDK('renderingHost.expandedComponents')\n var settings = context?.getAttribute('data')\n if (settings) {\n try {\n settings = JSON.parse(settings)\n } catch (e) {}\n }\n if (context) {\n var embedDefinition = sdk.ExternalComponent.getDefinition(context)\n var isUnconfigured = embedDefinition && !embedDefinition.getConfiguration(context)\n var externalComponent =\n embedDefinition?.type == 'feaas'\n ? components.find((c) => c.id == context.getAttribute('component'))\n : BYOC?.getComponent(String(context.getAttribute('data-external-id')))\n }\n return (\n <Picker\n cdn={env.cdn}\n rules={rules}\n collections={collections}\n themeContext={context}\n placeholder={placeholder}\n embed={externalComponent}\n externalComponents={expandedComponents}\n datasources={datasources}\n data={settings}\n versionId={context?.getAttribute('version')}\n mode={mode || (isUnconfigured ? 'library' : externalComponent ? 'context' : null)}\n setAttribute={(context, attribute, value) => {\n if (attribute == 'data' && value) value = JSON.stringify(value)\n this.props.setAttribute(context, attribute, value)\n forceRender()\n }}\n getAttribute={(c, property) => context?.getAttribute(property)}\n dialog={dialog}\n context={context}\n variant={variant}\n onModeChange={(mode, dialog) => {\n this.set({ mode, dialog })\n }}\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\nexport { FEAASPicker as Picker }\nFEAASPicker.register('feaas-picker')\n", "import type * as FEAASContextImports from '@sitecore-feaas/frontend/context'\nimport type { AuthModel } from '@sitecore-feaas/sdk'\nimport { FEAASElement, OptionalExcept } from '../components/FEAASElement.js'\nimport { ControlledPromise } from '../utils/promise.js'\nimport type * as FEAAS from './index.js'\n\nexport function FEAASContextProps(element: HTMLElement) {\n return {\n library: element?.getAttribute('library') as string,\n src: element?.getAttribute('src') ?? '/context.js',\n // override environment\n environment: element?.getAttribute('environment') ?? undefined,\n frontend: element?.getAttribute('frontend') ?? 'https://components.sitecorecloud.io',\n backend: element?.getAttribute('backend') ?? 'https://components.sitecorecloud.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 FEAASElement<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 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 | FEAASElement<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() {\n this.setAttribute('feaas-role', 'ui')\n //if (this.props.isolate)\n Array.from(this.children).forEach((child) => {\n this.getRoot().appendChild(child)\n })\n document.addEventListener('feaasMount', this)\n document.addEventListener('feaasUnmount', this)\n super.connectedCallback()\n }\n disconnectedCallback() {\n document.removeEventListener('feaasMount', this)\n document.removeEventListener('feaasUnmount', this)\n super.disconnectedCallback()\n }\n\n sdk: FEAASContextImports.SDK\n clientside: typeof FEAAS\n onStatusChange: FEAASContextImports.SDKStatusCallback = (status, sdk) => {\n if (status == 'ready') {\n this.whenSDKReady.resolve(sdk)\n this.dispatchEvent(new CustomEvent('feaasReady', { bubbles: true, composed: true, detail: sdk }))\n }\n }\n whenSDKReady = ControlledPromise<FEAASContextImports.SDK>((sdk) => {\n this.sdk = sdk\n })\n\n getPortalRoot() {\n return this.getRoot()\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.getPortalRoot() as HTMLElement }\n }\n Tooltip.defaultProps = {\n hasArrow: true,\n placement: 'top',\n portalProps\n }\n return (\n <AppContext\n environment={this.props.environment as any}\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 resetScope: ':where([feaas-role=\"ui\"])',\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 interface DocumentEventMap {\n feaasReady: CustomEvent<FEAASContextImports.SDK>\n }\n}\n\nexport { FEAASContext as Context }\nFEAASContext.register('feaas-context')\n", "export * from './FEAAS.js'\nimport * as FEAAS from './FEAAS.js'\n\nFEAAS.Context.prototype.clientside = FEAAS\n", "import * as BYOC from '@sitecore/byoc'\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport { FEAASElement } from '../components/FEAASElement.js'\nimport { ReactJSX, ReactModules } from '../components/FEAASReactElement.js'\nimport { Component, FEAASComponentProps } from './react.js'\n\nexport const FEAASExternalPropsObject = BYOC.getMergedComponentProperties\n\nexport function FEAASExternalProps(element: FEAASElement): FEAASExternalProps {\n const props = BYOC.objectKeysToCamelCase(\n Array.from(element.attributes).reduce((prev, { name, value }) => {\n if (name == 'data-external-id') name = 'component-name'\n return Object.assign(prev, { [name]: value })\n }, {} as any)\n ) as FEAASExternalProps\n return FEAASExternalPropsObject(props).merged\n}\n\nexport type FEAASExternalProps = { componentName: string; [key: string]: any }\n\nexport default class FEAASExternal extends FEAASElement<FEAASExternalProps, ReactModules> {\n load() {\n return Promise.all([\n // @ts-ignore\n import('https://cdn.skypack.dev/react-dom/client')\n ]).then(([ReactDOMClient]) => {\n return { React, ReactDOM, ReactDOMClient }\n })\n }\n\n // observe all arttribute changes\n _setAttribute: typeof HTMLElement.prototype.setAttribute\n connectedCallback() {\n if (!this._setAttribute) {\n this._setAttribute = this.setAttribute\n this.setAttribute = function (name, value) {\n const old = this.getAttribute(value)\n this._setAttribute(name, value)\n this.attributeChangedCallback(name, old, value)\n }\n }\n super.connectedCallback()\n }\n\n update() {\n const Component = BYOC.getComponent(this.getComponentName())?.component\n if (!Component && this.getAttribute('hydrate') == 'false') return\n return super.update()\n }\n\n render(props: FEAASExternalProps, { React }: ReactModules): ReactJSX {\n const Component = BYOC.getComponent(this.getComponentName())?.component as any\n if (!Component) {\n console.warn(`FEAASExternal: \\`${this.getComponentName()}\\` is not registered`)\n }\n return <>{Component && <Component componentName={this.getComponentName()} {...props} />}</>\n }\n\n getComponentName() {\n return this.getAttribute('data-external-id')\n }\n\n getProps() {\n return FEAASExternalProps(this)\n }\n\n static Preview(props: Partial<FEAASComponentProps<any>> & { src: string }) {\n const src =\n props?.src || (typeof window !== 'undefined' ? window.location.search.match(/feaasSrc=([^&]+)/)?.[1] : null)\n return src ? <Component src={src} {...props} /> : null\n }\n\n static linkComponents(components: Promise<any>[]): () => any {\n return () => components.map((components) => null)\n }\n\n static registered: BYOC.RegisteredComponents = BYOC.registered\n static registerComponent = BYOC.registerComponent\n static setRegistrationCallback = BYOC.setRegistrationCallback\n static getComponent = BYOC.getComponent\n}\n\nFEAASExternal.register('feaas-external')\n\nexport const { linkComponents } = FEAASExternal\nexport { FEAASExternal as External }\n"],
5
- "mappings": "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",
6
- "names": ["react_exports", "__export", "Component", "FEAASComponentsProps", "FEAASContext", "ControlledPromise", "DEFAULT_CDN_URL", "rendering_exports", "datapath_exports", "data_exports", "DataSettings", "FEAASElement", "FEAASExternal", "ExternalComponent", "ExternalComponentBundle", "FEAASComponent", "FEAASContextProps", "FEAASEditor", "FEAASEditorProps", "FEAASExternalPropsObject", "FEAASLoader", "FEAASLoaderProps", "FEAASPicker", "FEAASPickerProps", "FEAASReactComponent", "FEAASReactServerComponent", "FEAASReactStylesheet", "FEAASStylesheet", "FEAASStylesheetProps", "HTMLNodeToReact", "InvalidResponse", "JSONPath", "MyComponent", "NextExternalComponent", "ReactExternalComponent", "ServerComponent", "Stylesheet", "thumbnail_exports", "WebComponent", "adjustNumbers", "autoloadScripts", "cleanCollectionBit", "clearFetchCache", "createStylesheet", "enableNextClientsideComponents", "fetchAndRevalidate", "fetchAndRevalidateComponent", "fetchAndRevalidateStylesheet", "fetchBypassingCache", "fetchCache", "fetchComponent", "fetchData", "fetchToValidateCache", "fetchWithCacheAwareness", "findStylesheet", "getComponentSource", "getComponentURL", "getFetchCache", "getFramePosition", "getHumanizedLabel", "getLastPathBit", "getQualifier", "getStylesheetSource", "getStylesheetURL", "linkComponents", "loadScript", "loadStylesheet", "loadStylesheetAllowStale", "normalizeCollectionScope", "normalizeFetchAttribute", "observeDOMElement", "parseComponentSource", "parseLimit", "parseRange", "parseStylesheetSource", "queryObject", "queryObjectRaw", "queryScopes", "renderComponent", "renderComponentElement", "renderComponentPromise", "renderDOMContent", "renderDOMElement", "renderHTMLContent", "renderStylesheet", "renderStylesheetPromise", "serializeCH1RichText", "setContextProperties", "setDOMAttribute", "setElementImplementation", "__toCommonJS", "BYOC", "import_react", "rendering_exports", "__export", "renderDOMContent", "renderDOMElement", "renderHTMLContent", "setDOMAttribute", "data_exports", "__export", "JSONPath", "queryObject", "queryObjectRaw", "queryScopes", "serializeCH1RichText", "_typeof", "obj", "_classCallCheck", "instance", "Constructor", "_defineProperties", "target", "props", "i", "descriptor", "_createClass", "protoProps", "staticProps", "_inherits", "subClass", "superClass", "_setPrototypeOf", "_getPrototypeOf", "o", "p", "_isNativeReflectConstruct", "_construct", "Parent", "args", "Class", "_isNativeFunction", "fn", "_wrapNativeSuper", "_cache", "Wrapper", "_assertThisInitialized", "self", "_possibleConstructorReturn", "call", "_createSuper", "Derived", "hasNativeReflectConstruct", "Super", "result", "NewTarget", "_toConsumableArray", "arr", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "_arrayLikeToArray", "iter", "minLen", "n", "len", "arr2", "_createForOfIteratorHelper", "allowArrayLike", "it", "F", "e", "normalCompletion", "didErr", "err", "step", "hasOwnProp", "push", "item", "unshift", "NewError", "_Error", "_super", "value", "_this", "JSONPath", "opts", "expr", "callback", "otherTypeCallback", "optObj", "ret", "json", "_this2", "currParent", "currParentProperty", "flatten", "wrap", "_expr", "exprList", "ea", "rslt", "valOrPath", "resultType", "path", "fullRetObj", "type", "preferredOutput", "val", "parent", "parentPropName", "hasArrExpr", "literalPriority", "_this3", "retObj", "loc", "x", "addRet", "elems", "t", "m", "safeLoc", "addType", "valueType", "locProp", "parts", "_iterator", "_step", "part", "rett", "tmp", "tl", "tt", "f", "start", "end", "code", "_v", "_vname", "containsPath", "scriptCacheKey", "script", "pathArr", "pointer", "cache", "subx", "normalized", "$0", "$1", "prop", "ups", "exp", "match", "moveToAnotherArray", "source", "conditionCb", "il", "Script", "context", "keys", "funcs", "key", "values", "vr", "funcString", "s", "func", "fString", "lastStatementEnd", "queryObjectRaw", "json", "path", "JSONPath", "e", "queryObject", "flatten", "data", "queryScopes", "scopes", "datapath", "singleValue", "keys", "b", "a", "scope", "collection", "v", "i", "serializeCH1Tag", "attrs", "tag", "k", "serializeCH1RichText", "level", "text", "mark", "_a", "observeDOMElement", "element", "observer", "changes", "change", "target", "src", "loadScript", "node", "autoloadScripts", "observe", "embeds", "i", "embed", "p", "scripts", "script", "datapath_exports", "__export", "adjustNumbers", "cleanCollectionBit", "getHumanizedLabel", "getLastPathBit", "getQualifier", "normalizeCollectionScope", "parseLimit", "parseRange", "qualifier", "limit", "_a", "bits", "bit", "range", "jsonpath", "path", "string", "diff", "m", "b", "n", "maxBits", "monthNames", "formatDate", "date", "year", "month", "day", "isDate", "getDOMCollectionIndex", "element", "datascope", "index", "p", "updateDOMClones", "targetCount", "config", "parentElement", "count", "last", "n", "i", "setDOMAttribute", "attribute", "value", "loadScript", "target", "serializeCH1RichText", "prop", "picture", "oldKeys", "_a", "property", "subvalue", "datasourceId", "usePlaceholder", "placeholder", "_c", "_b", "str", "parent", "isDate", "formatDate", "sortOrder", "renderDOMElement", "input", "datascopes", "isNested", "collection", "queryScopes", "normalizeCollectionScope", "attrs", "a", "b", "name", "datapath", "child", "isElement", "node", "renderDOMContent", "root", "template", "data", "newTemplate", "renderHTMLContent", "fakeDOM", "nodes", "parseHTML", "HTMLNode", "nodeName", "nodeType", "textContent", "name", "value", "attr", "newNode", "referenceNode", "index", "attrName", "_a", "serializeHTML", "html", "parseHTML", "c", "selector", "currentNode", "selectorMatchesNode", "selectors", "results", "checkNode", "node", "sel", "child", "step", "elementTypeOnly", "siblings", "i", "sibling", "deep", "clonedNode", "childNode", "clonedChild", "simpleSelectors", "simpleSelector", "attrSelectorMatch", "attrValue", "actualValue", "nodes", "stack", "openTagMatch", "closingTagMatch", "attrs", "_", "unescapeHTML", "parentNode", "textEnd", "textNode", "escapeHTML", "input", "attributes", "serializedAttributes", "serializedChildren", "renderHTMLContent", "template", "data", "config", "parseHTMLContent", "newTemplate", "renderDOMElement", "import_byoc", "clean", "settings", "params", "method", "headers", "body", "url", "DataSettings", "cleanSettings", "cleanHeaders", "isDataSettings", "data", "property", "toFetchArguments", "payload", "contentType", "form", "key", "query", "headerCase", "m", "fetchDataSettings", "datasourceId", "datasourceSettingsGetter", "updatedSettings", "options", "json", "queryObject", "e", "fetchData", "keys", "allRequests", "obj", "hasDataSettings", "args", "FEAAS_exports", "__export", "FEAASComponent", "FEAASComponentsProps", "FEAASContext", "ControlledPromise", "DEFAULT_CDN_URL", "rendering_exports", "datapath_exports", "data_exports", "DataSettings", "FEAASElement", "FEAASContextProps", "FEAASEditor", "FEAASEditorProps", "FEAASLoader", "FEAASLoaderProps", "FEAASPicker", "FEAASPickerProps", "FEAASStylesheet", "FEAASStylesheetProps", "InvalidResponse", "JSONPath", "MyComponent", "thumbnail_exports", "WebComponent", "adjustNumbers", "autoloadScripts", "cleanCollectionBit", "clearFetchCache", "createStylesheet", "fetchAndRevalidate", "fetchAndRevalidateComponent", "fetchAndRevalidateStylesheet", "fetchBypassingCache", "fetchCache", "fetchComponent", "fetchData", "fetchToValidateCache", "fetchWithCacheAwareness", "findStylesheet", "getComponentSource", "getComponentURL", "getFetchCache", "getFramePosition", "getHumanizedLabel", "getLastPathBit", "getQualifier", "getStylesheetSource", "getStylesheetURL", "loadScript", "loadStylesheet", "loadStylesheetAllowStale", "normalizeCollectionScope", "observeDOMElement", "parseComponentSource", "parseLimit", "parseRange", "parseStylesheetSource", "queryObject", "queryObjectRaw", "queryScopes", "renderComponent", "renderComponentElement", "renderComponentPromise", "renderDOMContent", "renderDOMElement", "renderHTMLContent", "renderStylesheet", "renderStylesheetPromise", "serializeCH1RichText", "setDOMAttribute", "ControlledPromise", "onSuccess", "onFailure", "e", "first", "restart", "resolve", "reject", "promise", "success", "failure", "value", "controlled", "WebComponent", "FEAASElement", "context", "ControlledPromise", "payload", "name", "oldValue", "newValue", "parent", "element", "_a", "event", "attribute", "args", "format", "arg", "onlyFeaas", "p", "root", "el", "target", "index", "_b", "error", "where", "handled", "e", "loaded", "flushSync", "React", "ReactDOM", "ReactDOMClient", "_c", "children", "r", "child", "displayName", "errorInfo", "props", "ErrorBoundary", "Wrapper", "value", "forceUpdateReact", "overrides", "property", "isJSON", "valueAsString", "defaultValue", "defaultValueAsString", "odlValueAsString", "path", "src", "hostname", "tagName", "win", "FEAASReactElement", "FEAASElement", "React", "ReactDOM", "ReactDOMClient", "MyComponent", "counter", "updates", "setUpdates", "u", "phases", "fetchCache", "clearFetchCache", "fetchAndRevalidate", "url", "options", "validator", "callback", "cache", "fetchWithCacheAwareness", "fetchToValidateCache", "result", "phase", "date", "cachedRequest", "getFetchCache", "promise", "response", "isCached", "InvalidResponse", "dontCreate", "key", "ControlledPromise", "request", "head", "fetchBypassingCache", "DEFAULT_CDN_URL", "parseComponentSource", "source", "match", "cdn", "library", "component", "version", "revision", "getComponentSource", "props", "getStylesheetSource", "parseStylesheetSource", "parsed", "getComponentURL", "getStylesheetURL", "fetchAndRevalidateComponent", "callback", "dontRevalidate", "onlyIfNotDeleted", "response", "parseResponse", "results", "fetchWithCacheAwareness", "e", "result", "fetchToValidateCache", "fetchBypassingCache", "fetchComponent", "template", "fetchAndRevalidateStylesheet", "fetchAndRevalidate", "phase", "text", "renderStylesheet", "props", "style", "renderStylesheetPromise", "stylesheet", "fetchAndRevalidateStylesheet", "cssText", "phase", "validatedStylesheets", "loadStylesheet", "callback", "writableStylesheet", "foundStylesheet", "findStylesheet", "createStylesheet", "loadStylesheetAllowStale", "resolve", "reject", "cdnURL", "getStylesheetURL", "library", "parseStylesheetSource", "edgeURL", "url", "renderComponentElement", "content", "datasources", "wrapper", "fragment", "renderDOMElement", "renderComponent", "props", "root", "loadScript", "renderComponentPromise", "renderDOMContent", "fetchAndRevalidateComponent", "template", "FEAASComponentsProps", "element", "data", "src", "parsed", "parseComponentSource", "cdn", "library", "component", "version", "revision", "dataValue", "e", "fetch", "_b", "_a", "DEFAULT_CDN_URL", "_c", "_d", "_f", "_e", "_h", "_g", "FEAASComponent", "FEAASElement", "prop", "name", "oldValue", "newValue", "DataSettings", "alreadyRendered", "ControlledPromise", "html", "editor", "scope", "current", "last", "advanceIfEverythingIsReady", "stylesheetPromise", "loadStylesheetAllowStale", "templatePromise", "fetchAndRevalidateComponent", "c", "renderDOMElement", "renderDOMContent", "FEAASComponent", "FEAASLoaderProps", "element", "FEAASLoader", "FEAASElement", "name", "oldValue", "newValue", "FEAASLoader", "FEAASStylesheetProps", "element", "src", "cdn", "library", "revision", "parseStylesheetSource", "_b", "_a", "_d", "_c", "DEFAULT_CDN_URL", "FEAASStylesheet", "FEAASElement", "html", "loadStylesheet", "thumbnail_exports", "__export", "convertBase64toBlob", "generate", "get", "getVersionForThumbnail", "load", "responseToImage", "upload", "convertBase64toBlob", "base64", "res", "responseToImage", "response", "blob", "resolve", "reject", "img", "getVersionForThumbnail", "component", "get", "version", "callback", "load", "e", "generate", "upload", "url", "stylesheet", "lastModifiedDate", "fetchAndRevalidate", "isCached", "isUpToDate", "image", "state", "customStylesheet", "sourceVersion", "datasources", "render", "object", "datasource", "classList", "breakpoint", "template", "data", "cssText", "sdk", "iframe", "script", "_a", "root", "canvas", "src", "stylesheet2", "renderComponent", "import_byoc", "FEAASReactElement", "_a", "getFramePosition", "element", "positions", "currentWindow", "currentParentWindow", "rect", "idx", "frameElement", "style", "accumulator", "currentValue", "FEAASEditorProps", "_a", "FEAASEditor", "FEAASElement", "props", "refs", "focusable", "root", "event", "placeholder", "versionContext", "setVersionContext", "editorContext", "setEditorContext", "iframe", "x", "y", "body", "measurement", "name", "oldValue", "newValue", "version", "children", "componentId", "versionId", "instanceId", "Editor", "VersionStatusList", "VersionStatusButton", "Version", "VersionMenu", "EditorUIUndo", "EditorUIMode", "useEffect", "useMemo", "useState", "useContext", "HStack", "Box", "Button", "MenuItem", "Chrome", "ReactDOM", "useSDK", "useLibrary", "useSlots", "useModelObserver", "ConfirmationContext", "VersionContext", "React", "sdk", "library", "component", "setComponent", "setConfirm", "usedId", "comp", "versions", "fork", "original", "newForkId", "v", "_b", "target", "picker", "el", "editor", "isArchivedDisplayed", "status", "FEAASEditor", "FEAASPickerProps", "element", "_a", "_b", "FEAASPicker", "FEAASElement", "placeholder", "context", "mode", "dialog", "children", "variant", "Picker", "React", "useContext", "EnvironmentContext", "useLibrary", "useSDK", "BYOC", "renders", "forceRender", "c", "sdk", "env", "collections", "components", "datasources", "library", "rules", "_c", "expandedComponents", "settings", "e", "embedDefinition", "isUnconfigured", "externalComponent", "attribute", "value", "property", "FEAASPicker", "FEAASContextProps", "element", "_a", "_b", "_c", "_d", "_e", "FEAASContext", "FEAASElement", "status", "sdk", "ControlledPromise", "theme", "child", "children", "library", "AppContext", "Button", "Tooltip", "React", "portalProps", "FEAASContext", "FEAASContext", "FEAAS_exports", "BYOC", "import_react", "import_react_dom", "FEAASExternalPropsObject", "FEAASExternalProps", "element", "props", "prev", "name", "value", "FEAASExternal", "FEAASElement", "ReactDOMClient", "React", "ReactDOM", "old", "_a", "Component", "src", "components", "FEAASExternal", "linkComponents", "ReactElementComponents", "setElementImplementation", "tagName", "Component", "normalizeFetchAttribute", "fetch", "FEAASReactStylesheet", "props", "parseStylesheetSource", "React", "getStylesheetSource", "FEAASReactServerComponent", "data", "fetchedData", "DataSettings", "p", "response", "fetchComponent", "FEAASReactComponent", "lastModified", "renderNode", "preload", "children", "parseHTMLContent", "node", "index", "HTMLNodeToReact", "attributes", "override", "camelized", "prop", "key", "parseComponentSource", "embeddedData", "getComponentURL", "getStylesheetURL", "callback", "child", "i", "name", "value", "object", "pair", "k", "v", "reactNode", "reactName", "reactAttributes", "reactChildren", "_a", "enableNextClientsideComponents", "setContextProperties", "ExternalComponentBundle", "ExternalComponent", "ReactExternalComponent", "NextExternalComponent", "ServerComponent", "Stylesheet"]
4
+ "sourcesContent": ["import * as BYOC from '@sitecore/byoc/react'\nimport React from 'react'\nimport { HTMLNode, parseHTMLContent, renderHTMLContent } from '../dom/html.js'\nimport { DataSettings } from '../utils/settings.js'\nimport {\n FEAASCDNStylesheetParams,\n FEAASCDNStylesheetSource,\n FEAASComponentProps,\n fetchComponent,\n getComponentURL,\n getStylesheetSource,\n getStylesheetURL,\n parseComponentSource,\n parseStylesheetSource\n} from './index.js'\nexport * from '../headless.js'\nexport { External, FEAASExternalPropsObject, linkComponents } from './FEAASExternal.js'\nexport * from './index.js'\nexport { renderHTMLContent }\n\nvar ReactElementComponents: Record<string, React.Component | React.FC> = {}\n/**\n * Set custom implementation for a HTML tag name. Useful for Next.js Image component, handling image optimization.\n *\n * @param Component\n */\nexport function setElementImplementation(\n tagName: string,\n Component: React.Component<Record<string, string>> | React.FC<Record<string, string>>\n) {\n ReactElementComponents[tagName] = Component\n}\n\ntype FEEASReactComponentFetch = string[] | string | null | undefined | boolean\nexport function normalizeFetchAttribute(fetch: FEEASReactComponentFetch) {\n if (fetch == null || fetch === true) {\n return ['template', 'stylesheet', 'data']\n }\n return [].concat(fetch || [])\n}\n\nexport type FEAASReactComponentProps = FEAASComponentProps & {\n fetch?: FEEASReactComponentFetch\n preload?: boolean\n lastModified?: Date | string\n renderNode?: (node: HTMLNode, attributes: Record<string, any>) => JSX.Element | Record<string, any> | null\n}\n\n/**\n * A component to include a stylesheet using a <link> tag. Placing one in the HEAD ensures that there will be no flash\n * of unstyled content.\n *\n * @param {FEAASCDNStylesheetParams | FEAASCDNStylesheetSource} props - The properties for including the stylesheet.\n * @returns {JSX.Element} The <link> element for the stylesheet.\n */\nexport const FEAASReactStylesheet = (props: FEAASCDNStylesheetParams | FEAASCDNStylesheetSource) => {\n if ('src' in props) {\n props = parseStylesheetSource(props.src)\n }\n return <link rel='stylesheet' href={getStylesheetSource(props)} />\n}\n\n/**\n * An asynchronous wrapper over FEAAS.Component for use in React, especially suited for Next.js.\n * This component fetches HTML and data asynchronously for server-side rendering with data mapping.\n *\n * @param {FEAASReactComponentProps} props - The properties for the component.\n * @returns {Promise<JSX.Element>} The JSX element representing the component.\n */\nexport const FEAASReactServerComponent = async ({ data, fetch, ...props }: FEAASReactComponentProps) => {\n const fetchedData = await DataSettings.fetch(data || {})\n fetch = normalizeFetchAttribute(fetch ?? ['stylesheet'])\n\n const p: FEAASReactComponentProps = { ...props }\n\n if (('src' in props || 'component' in props) && props?.template == null) {\n const response = await fetchComponent(props)\n\n p.template = response.template\n p.lastModified = response.lastModified\n } else if (props?.template == null && !fetch.includes('template')) {\n fetch.push('template')\n }\n\n return FEAASReactComponent({\n ...p,\n data,\n fetch,\n fetchedData\n })\n}\n/**\n * A wrapper over FEAAS.Component for use in React. It converts a passed template HTML into React,\n * allowing external components in the render tree. Data can be provided in JSON format.\n *\n * @param {FEAASReactComponentProps} props - The properties for the component.\n * @returns {JSX.Element} The JSX element representing the component.\n */\nexport function FEAASReactComponent({\n data,\n lastModified,\n fetchedData,\n renderNode,\n ...props\n}: FEAASReactComponentProps & { fetchedData?: any }) {\n console.log('=== FEAASReactComponent', data, props)\n\n let preload = null\n let children: null | React.ReactNode\n\n if ('template' in props && props.template) {\n children = parseHTMLContent(props.template, fetchedData || data || {}).map((node, index) =>\n HTMLNodeToReact(\n node,\n (node, attributes) => {\n // invoke customization of HTML node rendering\n if (renderNode) {\n const override = renderNode?.(node, attributes)\n if (override != null && 'type' in override) {\n return [override.type, override.props]\n }\n attributes = {\n ...attributes,\n ...override\n }\n }\n // Override rendering of html tag if user provided\n if (ReactElementComponents[node.localName]) {\n return [ReactElementComponents[node.localName], attributes]\n }\n if (node.localName == 'feaas-external') {\n const camelized = {} as any\n for (var prop in attributes) {\n const key = prop == 'data-external-id' ? 'componentName' : BYOC.toCamelCase(prop)\n camelized[key] = attributes[prop]\n }\n return [BYOC.Component, camelized]\n }\n },\n index\n )\n )\n }\n\n if ('src' in props) {\n props = { ...parseComponentSource(props.src), ...props }\n }\n const fetch = normalizeFetchAttribute(props.fetch)\n const embeddedData = fetch.includes('data') ? data : fetch.includes('template') ? fetchedData || data : null\n console.log(embeddedData)\n return (\n <>\n {'preload' in props && preload === true && 'src' in props && (\n <>\n <link rel='preload' as='fetch' href={getComponentURL(props.src)} crossOrigin='anonymous' />\n <link rel='preload' as='style' href={getStylesheetURL(props.src)} crossOrigin='anonymous' />\n </>\n )}\n <feaas-component\n class='-feaas'\n {...props}\n last-modified={lastModified ? String(lastModified) : null}\n fetch={props.fetch == null ? props.fetch : ([].concat(props.fetch).join(' ') as any)}\n suppressHydrationWarning\n template={null}\n data={typeof embeddedData == 'string' ? embeddedData : embeddedData ? JSON.stringify(embeddedData) : null}\n >\n {children}\n </feaas-component>\n </>\n )\n}\n\n/**\n * Converts an HTMLNode into a React tree, ensuring proper context access for external components.\n *\n * @param {HTMLNode} node - The HTML node to be converted.\n * @param {any} [callback] - Callback to customize turning of HTML node into react tree.\n * @param {any} [key] - The key for the React element.\n * @returns {React.ReactNode} The resulting React node.\n */\nexport function HTMLNodeToReact(\n node: HTMLNode,\n callback?: (node: HTMLNode, attributes: Record<string, any>) => [tagName: any, attributes: Record<string, any>],\n key?: any\n): React.ReactNode {\n if (node.nodeType === 3) {\n return node.textContent\n }\n const children = Array.from(node.childNodes).map((child, index) => HTMLNodeToReact(child, callback, index))\n\n const attributes: { [key: string]: string | Record<string, string> } = {}\n for (let i = 0; i < node.attributes.length; i++) {\n const { name, value } = node.attributes[i]\n if (name == 'style') {\n attributes[name] = String(value || '')\n .trim()\n .split(/\\s*;\\s*/)\n .reduce((object, pair) => {\n const [k, v] = pair.split(':')\n return {\n ...object,\n [BYOC.toCamelCase(k)]: v\n }\n }, {})\n } else if (name == 'class') {\n attributes.className = value\n } else {\n attributes[name] = value\n }\n }\n\n const reactNode = callback?.(node, attributes)\n const reactName = reactNode?.[0] || node.nodeName.toLowerCase()\n if (reactName == 'style') {\n attributes.dangerouslySetInnerHTML = { __html: children.join('\\n') }\n }\n const reactAttributes = Object.assign({ key, suppressHydrationWarning: true }, reactNode?.[1] || attributes)\n const reactChildren = reactNode?.[1]?.children || children\n return React.createElement(\n reactName,\n reactAttributes,\n ['img', 'br', 'input', 'style'].includes(reactName) ? null : reactChildren\n )\n}\n\nexport type ExternalComponentProps = BYOC.ComponentProps\nexport type ContextProperties = BYOC.ContextProperties\nexport const enableNextClientsideComponents = BYOC.enableNextClientsideComponents\nexport const setContextProperties = BYOC.setContextProperties\nexport const ExternalComponentBundle = BYOC.Bundle\nexport const ExternalComponent = BYOC.Component\nexport const ReactExternalComponent = BYOC.RegularComponent\nexport const NextExternalComponent = BYOC.NextComponent\nexport const Component = FEAASReactComponent\nexport const ServerComponent = FEAASReactServerComponent\nexport const Stylesheet = FEAASReactStylesheet\n", "import { FEAASCDNComponentProps } from '../cdn.js'\nimport { queryScopes, serializeCH1RichText } from '../utils/data.js'\nimport { Data, DataScopes } from '../utils/settings.js'\nimport { parseHTML } from './html.js'\nimport { loadScript as loadScriptUtil } from './scripts.js'\nimport { normalizeCollectionScope } from '../utils/datapath.js'\nimport { DataOptions } from '../headless.js'\nimport { isDate, formatDate } from '../utils/date.js'\n\nexport interface FEAASCustomizations {\n processTemplate?: (element: HTMLElement, template: string, data: DataScopes) => string\n processData?: (element: HTMLElement, data: DataScopes) => any\n processValue?: (element: HTMLElement, property: string, value: any) => any\n shouldRepeat?: (element: HTMLElement, value: any) => boolean\n onRender?: (element: HTMLElement, data: DataScopes) => void\n}\n\nexport interface ExplicitTemplate {\n template: string\n}\n\nexport type FEAASComponentProps<T = DataOptions> = 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(\n element: HTMLElement,\n attribute: string,\n value: any,\n config?: FEAASCustomizations,\n loadScript = true\n) {\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' || attribute == 'data-path-alt') {\n const picture = Array.from(element.children).find((n) => n.localName == 'picture') || element\n target = element.localName == 'img' ? element : <HTMLElement>picture.querySelector('img, video')\n } else if (attribute == 'data-path-href') {\n target = element.querySelector('a') || element.closest('a')\n } else if (attribute == 'data-path-hidden') {\n console.log('hidden init value', value)\n value = !value ? true : null\n console.log('~~~ after:', value)\n } else if (attribute == 'data-path' || attribute == 'data-embed-html' || attribute == 'html') {\n prop = 'innerHTML'\n } else if (attribute == 'data-embed-src' && loadScript) {\n loadScriptUtil(element, value)\n } else if (attribute == 'data-path-attributes') {\n if (!Array.isArray(value)) {\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 loadScript\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, loadScript)\n }\n }\n setDOMAttribute(element, 'data-attributes-keys', Object.keys(value || {}).join(','), {}, loadScript)\n }\n // BYOC components also accept their data object in datasources attribute.\n if (element.tagName == 'FEAAS-EXTERNAL') {\n const datasourceId =\n String(element.getAttribute('data-path-attributes') || '')\n .slice(0, -1)\n .split('.')[0] || '_'\n setDOMAttribute(element, 'datasources', JSON.stringify({ [datasourceId]: value }), {}, loadScript)\n }\n return\n }\n if (typeof value == 'boolean') {\n value = value ? '' : null\n console.log('turns it to empty?', value)\n }\n\n if (!target) return\n\n const usePlaceholder = prop == 'innerHTML' || prop == 'src'\n console.log('debug set dom', attribute, prop, value, usePlaceholder)\n if (usePlaceholder && (value == null || value === '')) {\n var placeholder = String(\n (element.getAttribute('data-path-placeholder') || target[prop as keyof HTMLElement]) ??\n target.getAttribute(prop) ??\n ''\n )\n if (prop == 'innerHTML') {\n target.innerHTML = placeholder\n } else if (placeholder) {\n console.log('set with empty value placeholder', attribute, prop, placeholder)\n target.setAttribute(prop, placeholder)\n } else {\n target.removeAttribute(prop)\n }\n } else if (value != null) {\n if (prop == 'innerHTML') {\n var str = String(value)\n // sanitize html of structural text elements\n for (var parent = target; parent.parentElement && parent.localName.match(/^(a|var|strong|em|i|b)$/); )\n parent = parent.parentElement\n if (parent.localName.match(/p|h\\d|button|time|li/)) {\n str = str\n .replace(/<(p|h\\d|li|ul)[^>]*?>|<\\/(p|h\\d|li|ul)[^>]*?>/g, ' ')\n .trim()\n .replace(/\\s+/g, ' ')\n }\n if (String(parent.getAttribute('class')).includes('-inline--time')) {\n if (isDate(str)) {\n str = formatDate(new Date(str))\n }\n }\n\n if (target.innerHTML != str) {\n target.innerHTML = str\n }\n } else {\n if (target.getAttribute(prop) != value) {\n console.log('set with value', attribute, prop, value)\n if (prop === 'hidden') {\n console.log('in here?...')\n target[prop] = true\n } else {\n target.setAttribute(prop, value)\n }\n }\n }\n } else {\n target.removeAttribute(prop)\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 loadScript = true\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 console.log(\n 'debug entry',\n name,\n datascopes,\n datapath,\n queryScopes(datascopes, datapath, true, undefined, element.tagName != 'FEAAS-EXTERNAL')\n )\n setDOMAttribute(\n element,\n name,\n queryScopes(datascopes, datapath, true, undefined, element.tagName != 'FEAAS-EXTERNAL'),\n config,\n loadScript\n )\n }\n if (name == 'data-embed-src') {\n setDOMAttribute(element, name, element.getAttribute(name), config, loadScript)\n }\n }\n }\n for (var i = 0, child: Node; (child = element.childNodes[i++]); ) {\n if (isElement(child)) {\n renderDOMElement(child, datascopes, config, true, loadScript)\n }\n }\n if (!isNested) {\n config?.onRender?.(element, datascopes)\n }\n console.log(element)\n return element\n}\n\nfunction isElement(node: Node): node is HTMLElement {\n return node.nodeType == 1\n}\n\nexport function renderDOMContent(\n root: HTMLElement,\n template: string,\n data?: Data,\n config?: FEAASCustomizations,\n loadScript = true\n) {\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, null, loadScript)\n}\n\nexport function renderHTMLContent(\n template: string,\n data?: Data,\n config?: FEAASCustomizations,\n fakeDOM = false,\n loadScript = true\n) {\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, null, loadScript).outerHTML\n } else {\n const root = document.createElement('div')\n root.innerHTML = newTemplate\n renderDOMElement(root, data, config, null, loadScript)\n return root.innerHTML\n }\n}\n", "import { JSONPath } from 'jsonpath-plus'\n\nexport function queryObjectRaw(json: any, path: string) {\n try {\n return JSONPath<any[]>({ path, json })\n } catch (e) {\n return []\n }\n}\nexport function queryObject(json: any, path: string, flatten = true) {\n const data = queryObjectRaw(json, path) || []\n if (flatten) {\n return data.flat(Infinity)\n }\n return data\n}\n\nexport function queryScopes(scopes: any, datapath: string, singleValue = false, json: any = scopes, flatten = true) {\n var path = datapath\n /* find closest parent scope */\n const keys = Object.keys(scopes).sort((b, a) => a.length - b.length)\n for (const scope of keys) {\n if (datapath.startsWith(scope) && 'ends with it') {\n if (scope == datapath) {\n if (singleValue) {\n return scopes[scope]\n } else {\n continue\n }\n }\n path = datapath.substring(scope.length + 1)\n json = scopes[scope]\n break\n }\n }\n var collection = queryObject(json, path, flatten)\n console.log('------', collection)\n // If regular path didn't match any data, try fallbacks\n // datasourceId.wrapper.$.path\n if (collection.length == 0) {\n collection = [\n // look up in `_` datasource id (catch-all id is used in JSS)\n // _.wrapper.$.path\n path.replace(/^.*?\\./, '_.'),\n // look up directly on data root\n // wrapper.$.path\n path.replace(/^.*?\\./, ''),\n // look up trimmed path in datasource\n // datasourceId.path\n path.replace(/^([^.]+).*?\\.\\$([\\.\\[])/, '$1$2'),\n // look up trimmed path in catch all datasource\n // _.path\n path.replace(/^.*?\\.\\$([\\.\\[])/, '_$1'),\n // look up trimmed path on root\n // path\n path.replace(/^.*?\\.\\$([\\.\\[])/, '$$$1'),\n // for case of top-level object data mapping full path can be replaced to _\n path.replace(/^[^.]+$/, '_')\n ]\n .filter((v, i, a) => a.indexOf(v) === i)\n .reduce((v, path) => {\n return v.length > 0 ? v : queryObject(json, path, flatten)\n }, [] as any[])\n }\n console.log('----', path, collection)\n\n if (singleValue) {\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", "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", "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", "export const parseLimit = (qualifier: string) => {\n const limit = parseInt(qualifier?.match(/\\[0:(\\d+)\\]/)?.[1], 10)\n if (!isNaN(limit) && limit > 0) return String(limit)\n return null\n}\n\nexport const parseRange = (qualifier: string) => {\n const bits = qualifier\n ?.match(/\\[([^\\]]+)\\]/)?.[1]\n .split(/\\s*,\\s*/g)\n .filter(Boolean)\n .map((bit) => {\n // individual indexes\n if (bit.match(/^-?\\d+$/)) return bit\n // ranges\n const range = bit.match(/^(\\d+):(\\d+)$/)\n return range && parseInt(range[1], 10) < parseInt(range[2], 10) ? range[1] + '-' + range[2] : null\n })\n if (!bits?.every(Boolean)) return null\n return bits.join(',')\n}\n\nexport const getQualifier = (jsonpath: string) => jsonpath?.match(/(\\.\\*|\\[[^\\]]*\\])$/)?.[0]\n\nexport function cleanCollectionBit(path: string) {\n return path.replace(/(\\.?\\[[^\\]\\[]*\\]|\\.\\*)$/g, '')\n}\n\nexport function normalizeCollectionScope(path: string) {\n return cleanCollectionBit(path) + '.*'\n}\n\n// increment numbers by given numbers, exclude second value of ranges to ensure inclusivity\nexport function adjustNumbers(string: string, diff: number) {\n return string?.replace(/(.|^)(\\d+)/g, (m, b, n) => b + (b == ':' ? n : String(parseInt(n) + diff)))\n}\n\nexport function getHumanizedLabel(path: string, maxBits = 2) {\n var bits = cleanCollectionBit(path)\n .split(/]\\.|\\.\\*\\./g)\n .pop()\n .split(/\\./g)\n .slice(-3)\n bits = bits.filter((b) => isNaN(parseInt(b)))\n return bits\n .map((bit) => bit.charAt(0).toUpperCase() + bit.slice(1))\n .slice(-maxBits)\n .join(' ')\n}\n\nexport function getLastPathBit(path: string) {\n return cleanCollectionBit(path).split('.').pop()\n}\n", "const monthNames = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n]\n\nexport const formatDate = (date: Date) => {\n if (!date || typeof date.getDay !== 'function') return\n\n const year = date.getFullYear()\n const month = monthNames[date.getMonth()]\n const day = date.getDate()\n\n return `${month} ${day}, ${year}`\n}\n\nexport const isDate = function (date: string) {\n return String(new Date(date)) !== 'Invalid Date' && !isNaN(Number(new Date(date)))\n}\n", "/** Lightweight DOM parser and serializer to use in server environments */\n\nimport { DataScopes } from '../utils/settings.js'\nimport { FEAASCustomizations, renderDOMElement } from './rendering.js'\n\nexport type HTMLAttribute = { name: string; value: string }\n\nexport class 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\n get localName() {\n return this.nodeName?.toLowerCase()\n }\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 get children() {\n return this.childNodes.filter((c) => c.nodeType == 1)\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 createDocumentFragment(): HTMLNode {\n return new HTMLNode(null, 11)\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].toLowerCase()\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 if (!['img', 'input', 'br'].includes(nodeName)) 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\nexport function 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 return parseHTMLContent(template, data, config)[0].outerHTML\n}\n\nexport function parseHTMLContent(template: string, data?: DataScopes, config?: FEAASCustomizations) {\n const newTemplate = config?.processTemplate?.(null, template, data) || template\n const nodes = parseHTML(newTemplate)\n console.log('=== parseHTMLContent', nodes)\n return nodes.map((node) => {\n console.log('=== parseHTMLContent renderdomelement', node)\n return renderDOMElement(node as unknown as HTMLElement, data, config)\n }) as unknown as HTMLNode[]\n}\n", "import { queryObject } from './data.js'\nimport { customizeDataSettings } from '@sitecore/byoc'\n\nexport type DataSourceId = string\n\n// Fully resolved data - object or array\nexport type Data = Record<string, any> | any[]\n\n// Data keyed by datasource id\nexport type DataScopes = Data | Record<DataSourceId, Data>\n\n// Data settings is json object representing fetch call\nexport type DataSettings = ReturnType<typeof DataSettings>\n\n// Data options/samples indexed by id\nexport type DataOptionsById = Record<DataSourceId, DataSettings | Data>\n\n// Data options combines of the above: data, settings, plain or keyed by datasource id\nexport type DataOptions = Data | DataSettings | DataOptionsById\n\n/**\n * Cleans the provided settings object by removing unnecessary properties that match the defaults that will be re-added\n * back through normalizations. This method is used for code generated for the user, neant to make it look neater.\n *\n * @param {any} settings - The settings object to be cleaned.\n * @returns {Object} - The cleaned settings object.\n */\nexport function clean(settings: any) {\n const { params, method, headers, body, url } = DataSettings(settings)\n var cleanSettings = { url } as Partial<DataSettings>\n var cleanHeaders = { ...headers }\n if (headers['Content-Type'] === 'application/json') delete cleanHeaders['Content-Type']\n if (headers['Accept'] === 'application/json') delete cleanHeaders['Accept']\n if (Object.keys(cleanHeaders).length > 0) {\n cleanSettings.headers = cleanHeaders\n }\n if (method !== 'GET') {\n cleanSettings.method = method\n }\n if (!(method === 'GET' || method === 'HEAD' || Object.keys(body).length === 0)) {\n cleanSettings.body = body\n }\n if (Object.keys(params).length > 0) {\n cleanSettings = { ...cleanSettings, params }\n }\n return cleanSettings\n}\n\n/**\n * Checks if the provided data is of type DataSettings by checking if all keys are recognized as settings keys.\n *\n * @param {any} data - The data to be checked.\n * @returns {boolean} - True if the data is of type DataSettings, false otherwise.\n */\nexport const isDataSettings = (data: any): data is DataSettings => {\n if (!data || typeof data.url != 'string') return false\n\n for (var property in data) {\n if (\n property == 'body' ||\n property == 'params' ||\n property == 'headers' ||\n property == 'url' ||\n property === 'method' ||\n (property == 'jsonpath' && typeof data[property] == 'string')\n ) {\n continue\n }\n\n return false\n }\n\n return true\n}\n\n/**\n * Converts settings object into fetch function arguments.\n *\n * @param {any} settings - The settings object.\n * @returns {Array} - An array containing URL and options objects as fetch function arguments.\n */\nexport function toFetchArguments(settings?: any): Parameters<typeof fetch> {\n const { url, headers, params, method, body: payload } = DataSettings(settings)\n\n let body = undefined\n\n const contentType = headers['Content-Type']\n\n if (method != 'GET' && method != 'HEAD') {\n if (contentType === 'application/json') body = JSON.stringify(payload)\n if (contentType === 'multipart/form-data')\n body = Object.keys(payload).reduce((form, key) => {\n form.append(key, (payload as any)[key])\n return form\n }, new FormData())\n if (contentType === 'application/x-www-form-urlencoded') body = new URLSearchParams(payload)\n }\n\n const query = Object.keys(params).length ? `?${new URLSearchParams(params)}` : ''\n\n return [\n `${url}${query}`,\n {\n headers,\n body,\n method\n }\n ]\n}\n\n/**\n * Creates a DataSettings object based on the provided settings. These settings are used later to fetch data for the\n * component. It's essentially fetch options with url.\n *\n * @param {any} settings - The settings object.\n * @returns {DataSettings} - The DataSettings object.\n */\nexport function DataSettings(settings: any) {\n const headers = {} as any\n for (const key in settings?.headers || {}) {\n if (settings.headers.hasOwnProperty(key)) {\n const headerCase = key.replace(/^[a-z]|\\-[a-z]/g, (m) => m.toUpperCase())\n headers[headerCase] = settings.headers[key]\n }\n }\n if (!headers.Accept) headers['Accept'] = 'application/json'\n return {\n params: (settings?.params || {}) as Record<string, any>,\n headers: headers as Record<string, string>,\n jsonpath: String(settings?.jsonpath || '$'),\n method: (settings?.method || 'GET').toUpperCase() as\n | 'GET'\n | 'POST'\n | 'OPTIONS'\n | 'PUT'\n | 'DELETE'\n | 'UPDATE'\n | 'HEAD',\n body: (settings?.body || {}) as Record<string, any>,\n url: String(settings?.url || '')\n }\n}\n/**\n * Fetches data based on the provided settings. It is expected that reesponse is json (forced by Accept header)\n *\n * @param {DataSettings} settings - The data settings.\n * @param {string} datasourceId - The datasource id.\n * @returns {Promise<Data>} - A promise that resolves to the fetched data.\n */\n\nconst fetchDataSettings = async (settings: DataSettings, datasourceId?: string): Promise<Data> => {\n /**\n * Allow BYOC to intercept request and return custom settings\n */\n const datasourceSettingsGetter = customizeDataSettings(datasourceId, settings)\n\n if (datasourceSettingsGetter instanceof Promise) {\n return datasourceSettingsGetter\n }\n // Apply custom settings\n let updatedSettings = settings\n if (datasourceSettingsGetter) {\n updatedSettings = DataSettings(datasourceSettingsGetter)\n }\n\n try {\n const [url, options] = toFetchArguments(updatedSettings)\n const response = await DataSettings.fetchImplementation(url, {\n ...options,\n // next.js only allows lowercase method\n method: options.method.toLowerCase()\n })\n const json = await response.json()\n if (updatedSettings.jsonpath && updatedSettings.jsonpath != '$') {\n return queryObject(json, updatedSettings.jsonpath)\n }\n return json\n } catch (e) {\n return {}\n }\n}\n/**\n * Fetches data based on the provided data options. Options is a union of different types, settngs, data or\n * datasource-id keyed settings/data. If the function doesnt find settings in the object, it returns it as is. It\n * supports mixing of static and fetched data. If multiple data settings are found, requests are made in parallel.\n *\n * @param {DataOptions} data - The data options.\n * @returns {Promise<DataScopes>} - A promise that resolves to the fetched data.\n */\nexport async function fetchData(data: DataOptions): Promise<DataScopes> {\n if (!data) return data\n if (isDataSettings(data)) return fetchDataSettings(data)\n\n const keys = Object.keys(data)\n const allRequests = await Promise.all(\n keys\n .map((key: keyof typeof data) => {\n return isDataSettings(data[key]) ? fetchDataSettings(data[key], key) : null\n })\n\n .filter(Boolean)\n )\n\n return keys.reduce(\n (obj, key: keyof typeof data) => ({\n ...obj,\n [key]: isDataSettings(data[key]) ? allRequests.shift() : data[key]\n }),\n {}\n )\n}\n\nexport function hasDataSettings(data: DataOptions) {\n if (!data) return false\n return isDataSettings(data) || Object.values(data).some(isDataSettings)\n}\n\nDataSettings.clean = clean\nDataSettings.toFetchArguments = toFetchArguments\nDataSettings.fetchOne = fetchDataSettings\nDataSettings.fetch = fetchData\nDataSettings.isDataSettings = isDataSettings\nDataSettings.hasDataSettings = hasDataSettings\nDataSettings.fetchImplementation = (...args: Parameters<typeof fetch>) => fetch(...args)\n", "export * from '../headless.js'\nexport * from './FEAASEditor.js'\nexport * from './FEAASPicker.js'\nexport * from './FEAASContext.js'\n", "export type ControlledPromise<T> = Promise<T> & {\n resolve: (result?: T) => void\n reject: (e: Error) => void\n restart: () => ControlledPromise<T>\n first: ControlledPromise<T>\n}\n\n/**\n * ControlledPromise is a function that returns a promise with additional methods for resolve, reject, restart, and\n * first. This allows more granular control over the promise resolution process. It also avoids unhandled rejections by\n * catching any errors and passing them to the onFailure callback.\n *\n * @example\n * const promise = ControlledPromise(\n * (result) => console.log(result),\n * (error) => console.error(error)\n * )\n * promise.resolve('Success') // logs: \"Success\"\n * promise.reject(new Error('Failure')) // logs: Error: Failure\n *\n * @template T The type of value that the promise will resolve with.\n * @param {(result: T) => void} [onSuccess] - A callback function that is called when the promise is successfully\n * resolved. The resolved value is passed to this function.\n * @param {(e: Error) => void} [onFailure=(e: Error) => {}] - A callback function that is called when the promise is\n * rejected. The Error object is passed to this function. Default is `(e: Error) => {}`\n * @returns {ControlledPromise<T>} A ControlledPromise object with the following properties:\n *\n * - Resolve: A function that when called, will resolve the promise.\n * - Reject: A function that when called, will reject the promise with the provided error.\n * - Restart: A function that when called, will restart the promise. This creates a new promise and replaces the current\n * promise with the new one.\n * - First: The first promise that was created by the restart function. This property is initially undefined, and is set\n * when the restart function is called for the first time.\n */\nexport function ControlledPromise<T>(onSuccess?: (result: T) => void, onFailure = (e: Error) => {}) {\n var first: ControlledPromise<T>\n const restart = () => {\n var resolve: (result?: T) => 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\ndeclare global {\n interface DocumentEventMap {\n feaasMount: Event\n feaasUnmount: Event\n feaasLoad: Event\n feaasError: CustomEvent<Error>\n }\n}\n\n/**\n * FEAASElement is a superclass for FEAAS components with optional react support.\n *\n * Initialization lifecycle:\n *\n * - `set(props)`\n * - `scheduleRender()` - any attribute change causes render to schedule to next frame\n * - `whenRendered.restart()` - rendering promise is reset and will resolve after render\n * - `advance()` - called on next frame\n * - `if (isReadyToLoad()) => boolean` - check if component has all necessary properties to load\n * - `load() => payload` => component is loaded\n * - `onLoad?(payload)` => invoke loaded callback\n * - `advance()` => going further in state machine\n * - `flush()` => flushes all react changes if needed\n * - `update()` => component-specific method (or react) to render changes to dom\n * - `render(payload, props)` => render means react\n * - `whenRendered.resolve()` - rendering promise is resolved after rendering\n * - `whenLoaded.resolved()` - resolved after loading and rendering\n */\nexport class FEAASElement<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, FEAASElement> = {}\n descendants: FEAASElement[] = []\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(): FEAASElement | 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 * 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 console.log('hello in here')\n const parent = this.getParent() as FEAASElement\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.dispatchEventIndirectly(new Event('feaasMount', { bubbles: true, composed: true }))\n this.getElements().map((element: FEAASElement) => element.mount?.())\n this.set()\n } catch (e) {\n this.onError(e)\n }\n }\n\n dispatchEventIndirectly(event: Event) {\n this.dispatchEvent(event)\n const parent = this.getParent() as FEAASElement\n\n if (parent && !parent.contains(this)) {\n Object.defineProperty(event, 'target', { value: this, writable: false })\n Object.defineProperty(event, 'composedPath', { value: () => [this], writable: false })\n parent.handleEvent(event)\n }\n }\n\n isJSONAttribute(attribute: keyof Props) {\n return false\n }\n\n log(...args: any) {\n const format = args[0]\n\n if (\n (typeof location != 'undefined' && location?.hostname.startsWith('components-')) ||\n localStorage['Sitecore.Components.Debug']\n )\n console.log(\n format +\n ' ' +\n args\n .slice(1)\n .map((arg: any) => {\n return arg && typeof arg == 'object' ? '%O' : '%s'\n })\n .join(' '),\n ...args.slice(1)\n )\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.dispatchEventIndirectly(new Event('feaasUnmount', { bubbles: true, composed: true }))\n // If a component is react component, we need to re-render tree so that React can unmount it from VDOM\n // so observers can be removed\n if (this.connected && this.initialized && this.render) {\n this.update()\n }\n this.cancelRender()\n this.connected = false\n // If a component is react component, we need to re-render tree so that React can unmount\n // it from VDOM, removing the observers\n if (this.initialized && this.render) {\n this.update()\n }\n }\n\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 // feaas context anywhere in the dom acts as a root element\n if (this.tagName != 'FEAAS-CONTEXT') return document.querySelector('feaas-context')\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 FEAASElement\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: FEAASElement) {\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: FEAASElement): 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: FEAASElement = 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.dispatchEventIndirectly(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.dispatchEventIndirectly(new Event('feaasLoad', { bubbles: true, composed: true }))\n const loaded = await this.load().catch((e) => {\n this.payload = undefined\n throw e\n })\n\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\n this.flush()\n this.whenRendered.resolve(this)\n } catch (e) {\n this.onError(e)\n }\n }\n\n flush() {\n if (!this.connected) return\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.getAttribute('hydrate') == 'false' && this.firstElementChild) return\n if (!this.refs.topReact && !this.forceUpdateReact) {\n this.reactRoot ||= ReactDOMClient.createRoot(this.getReactRootElement())\n this.reactRoot.render(this.getReactElement())\n } else if (this.forceUpdateReact && this.connected) {\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 && r.connected\n })\n .map((child: FEAASElement<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: FEAASElement = 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: FEAASElement = 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 // @ts-ignore TS5 react types throws here\n <ErrorBoundary key={target.tagName + '-' + target.getUID()} slot={target.getAttribute('slot')}>\n <Wrapper />\n </ErrorBoundary>\n )\n }\n\n getReactWrapper(target: FEAASElement = 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 isJSON = this.isJSONAttribute(property)\n const value = this.props[property]\n const valueAsString = isJSON ? JSON.stringify(value) : String(value)\n const defaultValue = this.defaultProps[property as keyof typeof this.defaultProps]\n const defaultValueAsString = isJSON ? JSON.stringify(defaultValue) : String(defaultValue)\n const attribute = property.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n const oldValue = this.getAttribute(attribute)\n try {\n var odlValueAsString: string = isJSON ? JSON.stringify(JSON.parse(oldValue)) : oldValue\n } catch (e) {\n var odlValueAsString: string = null\n }\n\n if (value == null || valueAsString === defaultValueAsString) {\n this.removeAttribute(attribute)\n } else if (typeof value == 'string' || typeof value == 'number' || typeof value == 'boolean' || isJSON) {\n if (odlValueAsString != valueAsString) this.setAttribute(attribute, valueAsString)\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 () => this.cancelRender()\n )\n scheduleRender() {\n if (this.nextRender == null) {\n this.whenRendered = this.whenRendered.restart()\n }\n this.cancelRender()\n this.nextRender = requestAnimationFrame(() => {\n this.nextRender = null\n this.advance().catch((e) => {})\n })\n }\n\n cancelRender() {\n cancelAnimationFrame(this.nextRender)\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 { FEAASElement as Element }\nexport { WebComponent }\n", "import type { ReactNode, ReactElement, JSXElementConstructor, PropsWithChildren } from 'react'\nimport { FEAASElement } from './FEAASElement.js'\nimport type ReactDOMClient from 'react-dom/client'\n\nexport type ReactModules = {\n React: typeof React\n ReactDOM: typeof ReactDOM\n ReactDOMClient: typeof ReactDOMClient\n}\nexport type ReactJSX = ReactNode | ReactElement<any, string | JSXElementConstructor<any>>\nexport type FEAASReactRender<P> = {\n (this: FEAASReactElement<P>, props: P, payload: ReactModules): ReactJSX\n}\n\nexport default class FEAASReactElement<P> extends FEAASElement<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 // @ts-ignore\n import('https://cdn.skypack.dev/react-dom/client')\n ]).then(([React, ReactDOM, ReactDOMClient]) => {\n return { React, ReactDOM, ReactDOMClient }\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 FEAASReactElement<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", "import { ControlledPromise } from './utils/promise.js'\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, isCached: boolean) => 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\n/**\n * Utility to cache-bust static files. It relies on reading Date header to detect cached response, so it requires CORS\n * settings to be set.\n *\n * It accepts validator function that determines if response is usable. If response was pulled from cache and is valid,\n * the optional callback function is fired right away. Then HEAD request is made bypassing the cache, to see if the\n * response has an newer Last-Modified header. In case it does and it passes validation, third request is fired that\n * actually fetches the new content and callback is invoked the second time.\n *\n * It works as promise, but also accepts callback to use cached blobs mid-flight and have access to headers. Any network\n * errors will not be caught. Function throws when unable to fetch valid response.\n */\nexport async function fetchAndRevalidate(\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\n/**\n * Executes a fetch request optionally validating and handling the response. Using callback function it's possible to\n * observe successful response twice: Cached version first, and up-to-date later.\n *\n * @param {Object} request - An object containing request parameters.\n * @param {string} request.url - The URL to fetch.\n * @param {Object} request.options - Fetch request options.\n * @param {Function} [request.validator] - Function to validate the response. Should return `false` if\n * validation fails.\n * @param {Function} [request.callback] - Function to execute after fetching. Receives the response,\n * phase, and cache status.\n * @param {Object} [request.cache] - Cache object to store or retrieve cached data.\n * @param {ValidatableRequestPhase} [phase='initial'] - The phase of the request, defaults to 'initial'.\n * @returns {Promise<Object>} A promise that resolves to an object containing request details and the response.\n * @throws {Error} Throws an error if the fetch fails or if the response is not valid according to the validator.\n */\nexport async function fetchWithCacheAwareness(\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 // 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 if (validator?.(response, isCached) === false) throw new InvalidResponse('Response is not valid')\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 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 class InvalidResponse extends Error {}\n\n/**\n * Validates cache\u00A0of previousl fetch If the resource is cached and there is a newer version available, it will be\n * re-fetched.\n *\n * @param request - The request object containing the URL, cache information, options, validator, and response of\n * initial request.\n * @returns A promise that resolves to the request object.\n */\nexport async function fetchToValidateCache(\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 + (url.toString().includes('?') ? '&' : '?') + '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 // 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 /**\n * @deprecated Use `cdn` instead.\n */\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 /**\n * @deprecated Use `cdn` instead.\n */\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 && props.src) {\n props = {\n ...parseComponentSource(props.src)\n }\n } else props = { ...(props as FEAASCDNComponentParams) }\n return `${props.cdn || props.hostname || DEFAULT_CDN_URL}/components/${props.library}/${props.component}/${\n props.version || 'responsive'\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 // edge url are always well formed\n if (String(props.src).includes('v1/files/components/styles')) return props.src\n\n props = {\n ...parseStylesheetSource(props.src)\n }\n } else props = { ...(props as FEAASCDNComponentParams) }\n return `${props.cdn || props.hostname || DEFAULT_CDN_URL}/styles/${props.library}/${\n props.revision == 'staged' ? 'staged' : props.revision == 'saved' ? 'saved' : '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 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 parseStylesheetSource,\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\nconst validatedStylesheets = new WeakSet<HTMLStyleElement | HTMLLinkElement>()\nexport function loadStylesheet(props: FEAASCDNStylesheetProps, callback?: ValidatableStylesheetCallback) {\n var writableStylesheet: HTMLStyleElement\n var foundStylesheet = findStylesheet(props)\n\n if (foundStylesheet) {\n if (validatedStylesheets.has(foundStylesheet)) {\n return Promise.resolve(foundStylesheet)\n }\n // it can be that page already have stylesheet using alternative URL (e.g. edge url), use that instead\n props = foundStylesheet.getAttribute('data-href') || foundStylesheet.getAttribute('href')\n }\n\n return fetchAndRevalidateStylesheet(props, (cssText, phase) => {\n // dont need to write stylesheet for cached state if we already found a stylesheet\n if (!(phase == 'initial' && foundStylesheet)) {\n writableStylesheet ||=\n !foundStylesheet || foundStylesheet.tagName == 'LINK' ? createStylesheet(props) : foundStylesheet\n writableStylesheet.textContent = cssText\n }\n callback?.(cssText, phase)\n }).then(() => writableStylesheet || foundStylesheet)\n}\n\nexport function loadStylesheetAllowStale(props: FEAASCDNStylesheetProps) {\n return new Promise((resolve, reject) => {\n loadStylesheet(props, resolve).catch(reject)\n })\n}\n\n// Find stylesheet on the page for given props, also check by alternative edge url\nexport function findStylesheet(props: FEAASCDNStylesheetProps) {\n const cdnURL = getStylesheetURL(props)\n const { library } = parseStylesheetSource(cdnURL)\n const edgeURL = `/files/components/styles/${library}.css`\n return document.querySelector(\n `style[data-href=\"${cdnURL}\"], \n link[rel=\"stylesheet\"][href=\"${cdnURL}\"], \n style[data-href*=\"${edgeURL}\"], \n link[rel=\"stylesheet\"][href*=\"${edgeURL}\"]`\n ) as HTMLStyleElement | HTMLLinkElement\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 '../utils/settings.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 console.log('=== renderComponentElement', fragment, datasources)\n renderDOMElement(fragment, datasources)\n return wrapper\n}\n\nexport function renderComponent(props: FEAASComponentProps, root?: HTMLElement, loadScript = true) {\n renderComponentPromise(props, (root ||= document.createElement('div')), loadScript)\n return root\n}\n\nexport async function renderComponentPromise(props: FEAASComponentProps, root?: HTMLElement, loadScript = true) {\n root ||= document.createElement('div')\n if (!root.childNodes.length) {\n if ('template' in props) {\n return renderDOMContent(root, props.template, props.data, props, loadScript)\n } else {\n return fetchAndRevalidateComponent(props, (template) => {\n return renderDOMContent(root, template, props.data, props, loadScript)\n }).then(() => root)\n }\n /* update element with new data */\n } else {\n console.log('=== renderComponentPromise', root, props.data)\n\n return renderDOMElement(root, props.data, props, null, loadScript)\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 { ControlledPromise } from '../utils/promise.js'\nimport { DataOptions, DataSettings } from '../utils/settings.js'\nimport { FEAASElement } from './FEAASElement.js'\n\nexport function FEAASComponentsProps(element: FEAASElement) {\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\n const dataValue = element.getAttribute('data')\n\n if (dataValue != null && dataValue != '') {\n try {\n data = typeof dataValue == 'string' ? JSON.parse(dataValue) : {}\n } catch (e) {\n console.error(e)\n }\n }\n\n const fetch = element.getAttribute('fetch')\n return {\n data: (data || {}) as DataOptions,\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 fetch:\n fetch == 'false' || (fetch == null && element.hasAttribute('fetch'))\n ? []\n : fetch == null || fetch == 'true'\n ? ['data', 'template', 'stylesheet']\n : fetch.split(/(\\s+|\\-)+/g).filter(Boolean)\n }\n}\n\nexport type FEAASComponentsProps = ReturnType<typeof FEAASComponentsProps>\n\n/**\n * - Initialization lifecycle:\n * - - `set(props)`\n * - - `scheduleRender()` - any attribute change causes render to schedule to next frame\n * - - `whenRendered.restart()` - rendering promise is reset and will resolve after render\n * - - `advance()` - called on next frame\n * - - `if (isReadyToLoad()) => boolean` - check if component has all necessary properties to load\n * - - `load() => payload` => component is loaded\n * - - `onLoad?(payload)` => invoke loaded callback for cached version of a component\n * - - `advance()` => going further in state machine\n * - - `flush()` => flushes all react changes if needed\n * - - `update()` => component-specific method (or react) to render changes to dom\n * - - `render(payload, props)` => render means react\n * - - `whenRendered.resolve()` - rendering promise is resolved after rendering\n * - - IF CACHE WAS STALE - FETCH AND RENDER AGAIN\n * - - `fetchByPassingCache()` - load up-to-date version of a component\n * - - `onLoad(newPayload) `\n * - - `advance()` => going further in state machine\n * - - `flush()` => flushes all react changes if needed\n * - - `update()` => component-specific method (or react) to render changes to dom\n * - - `render(payload, props)` => render means react\n * - - `whenRendered.resolve()` - rendering promise is resolved after rendering\n * - - `whenLoaded.resolved()` - resolved after loading of up to date component\n */\nexport class FEAASComponent extends FEAASElement<FEAASComponentsProps, string> {\n readyData: any = {}\n whenDataReady = ControlledPromise<any>(\n (data) => (this.readyData = data),\n (e) => this.onError(e)\n )\n\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 'fetch'\n ]\n\n defaultProps = {\n cdn: DEFAULT_CDN_URL,\n revision: 'published',\n version: 'responsive',\n editable: false,\n suspended: false,\n data: {}\n } as Partial<FEAASComponentsProps>\n\n needsRefresh: boolean\n needsToFetchTemplate: boolean\n\n setData(data: DataOptions) {\n this.set({ data })\n }\n\n getProps() {\n return FEAASComponentsProps(this)\n }\n\n isJSONAttribute(prop: keyof FEAASComponentsProps) {\n return prop == 'data'\n }\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n if (oldValue === newValue) return\n\n // force component to be refreshed\n if (name == 'library' || name == 'component' || name == 'revision' || name == 'version') {\n this.payload = undefined\n if (this.alreadyRendered && this.connected) {\n this.needsRefresh = true\n this.needsToFetchTemplate = true\n }\n }\n\n super.attributeChangedCallback(name, oldValue, newValue)\n\n if (name == 'data') {\n this.needsRefresh = true\n if (this.props.fetch.includes('data') || this.alreadyRendered || !DataSettings.hasDataSettings(this.props.data)) {\n this.fetchData()\n }\n }\n }\n\n // Reset readyData and perform a new fetch.\n async fetchData() {\n this.readyData = undefined\n\n this.whenDataReady = this.whenDataReady.restart()\n\n const data = await DataSettings.fetch(this.props.data)\n\n const alreadyRendered = this.alreadyRendered\n\n await this.whenDataReady.resolve(data)\n if (alreadyRendered) {\n this.advance()\n }\n }\n\n getEditor(): any {\n return (document.querySelector('feaas-context') as FEAASElement)?.refs.editor\n }\n\n constructor() {\n super()\n\n const data = this.getAttribute('data')\n if (!this.getAttribute('data')) {\n this.whenDataReady.resolve({})\n }\n\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()) return\n\n const advanceIfEverythingIsReady = () => {\n // html is not loaded\n if (this.payload == null) return\n\n // shared stylesheet is still being loaded\n if (stylesheetPromise) return\n\n // data is still loading\n if (!this.readyData) return\n\n this.onLoad(this.payload)\n }\n\n if (this.props.fetch.includes('stylesheet')) {\n var stylesheetPromise = loadStylesheetAllowStale({ ...this.props }).then(() => {\n stylesheetPromise = null\n advanceIfEverythingIsReady()\n })\n }\n\n if (this.props.fetch.includes('template') || this.needsToFetchTemplate) {\n this.needsToFetchTemplate = false\n var templatePromise = fetchAndRevalidateComponent(this.props, (html) => {\n this.payload = html\n this.needsRefresh = true\n advanceIfEverythingIsReady()\n })\n } else {\n this.payload = this.props.template ?? this.innerHTML\n }\n\n return Promise.all([\n stylesheetPromise,\n this.whenDataReady.then(() => advanceIfEverythingIsReady()),\n templatePromise\n ]).then(() => this.payload)\n }\n\n alreadyRendered: boolean\n\n flush() {\n if (!this.readyData) return\n\n super.flush()\n }\n\n update() {\n this.alreadyRendered = true\n console.log('=== feaascomponent update', this.alreadyRendered)\n // avoid unnecessary rendering if hydration was disabled\n if (\n !this.props.fetch.includes('data') &&\n !this.props.fetch.includes('template') &&\n this.firstElementChild &&\n !this.needsRefresh\n )\n return\n if (Array.from(this.children).filter((c) => c.tagName != 'BR').length > 0 && !this.needsRefresh) {\n console.log('=== feaas component render dom', this.readyData)\n renderDOMElement(this, this.readyData)\n } else {\n this.needsRefresh = false\n // defer rendering to original element\n if (this.getOriginal()) {\n return\n }\n renderDOMContent(this, this.payload, this.readyData)\n }\n }\n}\n\ntype FetchKeyword = 'data' | 'template' | 'stylesheet'\n\ndeclare module 'react' {\n namespace JSX {\n interface IntrinsicElements {\n 'feaas-component': {\n data?: any\n class?: string\n suppressHydrationWarning?: boolean\n template?: string\n instance?: string\n editable?: boolean\n children?: any\n dangerouslySetInnerHTML?: { __html: string }\n 'last-modified'?: string\n fetch?:\n | `${FetchKeyword} ${FetchKeyword} ${FetchKeyword}`\n | `${FetchKeyword} ${FetchKeyword}`\n | `${FetchKeyword}`\n | ''\n } & (\n | {\n /**\n * @deprecated Use cdn instead.\n */\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 { FEAASElement } from './FEAASElement.js'\n\nexport function FEAASLoaderProps(element: HTMLElement) {\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 FEAASElement<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 { FEAASElement } from './FEAASElement.js'\n\nexport function FEAASStylesheetProps(element: FEAASElement) {\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 FEAASElement<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", "import type { SDK, Style, VersionModel, ComponentModel, StylesheetModel } from '@sitecore-feaas/sdk'\nimport { fetchAndRevalidate } from '../fetch.js'\nimport { renderComponent } from './component.js'\n\nexport type Callback = (image: HTMLImageElement | null, isCached: boolean) => void\n\nexport const convertBase64toBlob = (base64: string) => fetch(base64).then((res) => res.blob())\n\n/** Parse fetch response as blob and turn it into HTMLImageElement off thread */\nexport const responseToImage = (response: Response): Promise<HTMLImageElement> =>\n response.blob().then((blob) => {\n return new Promise((resolve, reject) => {\n const img = new Image()\n img.onerror = reject\n img.onload = () => {\n resolve(img)\n }\n img.src = URL.createObjectURL(blob)\n })\n })\n\n/**\n * Retrieves the version of a given component that best fits a specific display width.\n *\n * The function ensures that the version data for the component is available and selects the one that is most suitable\n * for a display width of 800 pixels.\n *\n * @param {ComponentModel} component - The component for which the version needs to be obtained.\n * @returns {Promise<VersionModel>} - A promise that resolves to the most suitable version for a display width of 800\n * pixels.\n */\nexport async function getVersionForThumbnail(component: ComponentModel): Promise<VersionModel> {\n if (!component.versions.length) await component.versions.fetch()\n return component.getVersionForWidth(800)\n}\n\n/**\n * Ensures an up-to-date thumbnail for a specific component and version.\n *\n * This operation initiates thumbnail load and, if that fails or if file is out of date, a new thumbnail is generated.\n * It can work with a callback, which is designed to potentially fire twice for enhancing user experience. This dual\n * firing allows for an immediate display of a possibly stale cached image while downloading or generating new version\n * in the background.\n *\n * 1. The first call can happen with the stale cached or outdated image.\n * 2. The second call occurs with the up-to-date loaded or freshly generated generated image.\n *\n * @param {ComponentModel} component - Relevant component.\n * @param {VersionModel} [version] - Relevant version (optional, falls back to responsive).\n * @param {Callback} [callback] - Callback to handle the loaded or generated image (optional).\n * @returns {Promise<HTMLImageElement | null>} - The final thumbnail image (either loaded or freshly generated).\n */\nexport async function get(component: ComponentModel, version?: VersionModel, callback?: Callback) {\n try {\n if (!component.isNew) {\n return await load(component, version, callback)\n }\n } catch (e) {\n component.sdk.log(\n `FEAAS: Thumbnail ${component.id}, version: ${\n version?.id || 'responsive'\n }, status: generating ${status}, reason: ${e}`\n )\n }\n // generate the image\n const img = await generate(component, version)\n callback?.(img, false)\n\n // upload base64 image as blob off-thread\n if (img && !component.isNew) {\n convertBase64toBlob(img.src).then((blob) => upload(component, version, blob))\n }\n return img\n}\n\n/**\n * Retrieves the thumbnail image for a given component/version combination, with a responsive default if version is not\n * provided.\n *\n * The resulting HTML <img> element will have `width`, `height`, and `src` properties ready for use. Although it can\n * operate as a regular promise that resolves when the thumbnail is loaded, it also supports a callback for an enhanced\n * user experience. This callback may be invoked twice, depending on the state of the cache:\n *\n * 1. The first call occurs if the image was previously cached by the browser, but the cache is stale.\n * 2. The second call happens when the image is updated from a fresh download. By this design, the user gets to see a\n * cached image immediately while the updated image is being downloaded in the background.\n *\n * If the version of a component is known to be newer than remote file, the function will throw `InvalidResponse` error.\n * As a way to handle that error, the `generate` function may be used to produce new thumbnail (@see render).\n *\n * @param {ComponentModel} component - The component to load a thumbnail for.\n * @param {VersionModel} [version] - The version of the component to load a thumbnail for. If not provided, a\n * version suitable for a responsive component is selected.\n * @param {Callback} [callback] - A callback to handle the loaded image. This callback may be invoked twice for\n * the reasons described above.\n * @returns {Promise<HTMLImageElement>} - The thumbnail image for the component/version combination.\n */\nexport async function load(\n component: ComponentModel,\n version?: VersionModel,\n callback?: Callback\n): Promise<HTMLImageElement> {\n const url = version ? version.getThumbnailURL() : component.getThumbnailURL()\n const stylesheet = component.library.stylesheet\n const lastModifiedDate = new Date(Math.max(Number(component.modifiedAt), Number(stylesheet.modifiedAt)))\n component.sdk.log(`FEAAS: Thumbnail ${component.id}/${version?.id || 'responsive'}, loading`)\n // Otherwise use a logic that will invoke callback for cached request and then try to revalidate it\n var img: HTMLImageElement\n await fetchAndRevalidate(\n url,\n {},\n (response, isCached) => {\n // <2 second difference is not considered outdated\n // If thumbnail is detected as outdated it will throw error and promise will be rejected\n const isUpToDate =\n Math.abs(Number(new Date(response.headers.get('x-ms-meta-componentRenderedAt'))) - Number(lastModifiedDate)) <\n 2000\n\n if (isCached && !isUpToDate) {\n responseToImage(response).then((image) => {\n img = image\n callback(image, isCached)\n })\n }\n return isUpToDate\n },\n (response, state, isCached) => {\n component.sdk.log(`FEAAS: Thumbnail ${component.id}/${version?.id || 'responsive'}, status: ${state}`)\n responseToImage(response).then((image) => {\n img = image\n callback(image, isCached)\n })\n },\n null\n )\n return img\n}\n\n/**\n * Creates a thumbnail image for a given component and version.\n *\n * First, it determines the appropriate version to use. If not provided, it attempts to fetch one suitable for\n * thumbnail. It then leverages `render` to generate an image with provided parameters and finally, if the component\n * isn't new, uploads the generated as a Blob onto cdn for future retrieval.\n *\n * @param {ComponentModel} component - Component instance.\n * @param {VersionModel} [version] - Version instance.\n * @returns {Promise<HTMLImageElement | null>} Thumbnail image or null if generation isn't possible.\n */\nexport async function generate(component: ComponentModel, version?: VersionModel, customStylesheet?: StylesheetModel) {\n const sourceVersion = version || (component.isNew ? null : await getVersionForThumbnail(component))\n\n if (!sourceVersion || sourceVersion.isViewEmpty()) {\n return null\n }\n const stylesheet = customStylesheet || component.library.stylesheets.first\n\n const { datasources } = component.sdk\n\n const img = await render(\n sourceVersion.classList,\n stylesheet.getBreakpointForWidth(800, sourceVersion.getBreakpoints()),\n sourceVersion.view,\n datasources.reduce((object, datasource) => {\n return Object.assign(object, { [datasource.id]: datasource.sample })\n }, {}),\n stylesheet.css,\n component.sdk\n )\n\n return img\n}\n\n/**\n * Transforms a specific component version into an image.\n *\n * Generates an isolated environment (iframe) to render the component with supplied parameters. 'html2canvas.js' is then\n * injected into the iframe to capture the rendered component as an image. The image is created respecting the provided\n * design breakpoint, ensuring an accurate visual representation.\n *\n * @param {string[]} classList - Array of class names applied to the rendered component.\n * @param {Style.Rule<'breakpoint'>} breakpoint - Breakpoint style rule that dictates the viewport dimensions for\n * rendering.\n * @param {string} template - String template of the component to render.\n * @param {any} data - Data object to be used when rendering the component.\n * @param {string} cssText - CSS rules to be applied during component rendering.\n * @param {EnvironmentVariables} env - Environment variables used to set frontend and backend endpoint URLs.\n * @returns {Promise<BasicImage>} - Promise that resolves to an object containing the src, width, and height of the\n * created image.\n */\nfunction render(\n classList: string[],\n breakpoint: Style.Rule<'breakpoint'>,\n template: string,\n data: any,\n cssText: string,\n sdk: SDK\n) {\n const iframe = document.createElement('iframe')\n iframe.style.position = 'absolute'\n iframe.style.top = '-2000px'\n iframe.style.left = '-2000px'\n iframe.style.width = breakpoint.props.minWidth + 'px'\n iframe.style.height = '720px'\n iframe.style.zIndex = '100011'\n document.body.appendChild(iframe)\n\n return new Promise<HTMLImageElement>((resolve, reject) => {\n const script = document.createElement('script')\n script.onerror = reject\n script.src = sdk.frontend + '/assets/html2canvas.js'\n script.onload = () => {\n ;(iframe.contentWindow.document.fonts?.ready || Promise.resolve()).then(function () {\n return (\n iframe.contentWindow\n //@ts-ignore\n .html2canvas(root, {\n // 1.1 scale is to remove shadows that are drawn incorrectly\n scale: Math.max(1.1, 1000 / Math.min(1401, Math.max(320, breakpoint.props.minWidth))),\n width: Math.min(1401, Math.max(320, breakpoint.props.minWidth)),\n height: Math.max(1, Math.min(2000, root.offsetHeight)),\n windowWidth: breakpoint.props.minWidth || breakpoint.props.maxWidth + 'px',\n windowHeight: 1000,\n proxy: sdk.backend + '/proxy/media',\n backgroundColor: '#ffffff'\n })\n .then((canvas: HTMLCanvasElement) => {\n const src = canvas.toDataURL('image/jpeg', 0.6)\n iframe.parentElement.removeChild(iframe)\n const img = new Image()\n img.onload = () => {\n resolve(img)\n }\n img.onerror = reject\n img.src = src\n })\n )\n })\n }\n iframe.contentWindow.document.head.appendChild(script)\n const stylesheet = iframe.contentWindow.document.createElement('style')\n stylesheet.textContent = `\n ${cssText}\n body, html { padding: 0; margin: 0; overflow: hidden }\n `\n const stylesheet2 = iframe.contentWindow.document.createElement('style')\n stylesheet2.textContent = `\n body, html { padding: 0; margin: 0; overflow: hidden }\n `\n\n iframe.contentWindow.document.head.appendChild(stylesheet)\n iframe.contentWindow.document.head.appendChild(stylesheet2)\n const root = renderComponent({ template, data }, null, false)\n root.classList.add(...classList, '-feaas--preview', '-emulate--' + breakpoint.details.slug)\n iframe.contentWindow.document.body.appendChild(root)\n })\n}\n\n/**\n * Uploads a thumbnail Blob to a CDN, enabling it for future retrieval.\n *\n * It constructs a URL based on component and version information, if available. The thumbnail's blob is uploaded with\n * several metadata points, including identifiers and timestamps. Upon successful upload, it sends a no-cache fetch\n * request to the constructed URL to bust the cache.\n *\n * @param {ComponentModel} component - Component instance.\n * @param {VersionModel} version - Version instance.\n * @param {Blob} blob - Blob instance to upload.\n * @returns {Promise<string>} URL of the uploaded Blob.\n */\nexport async function upload(component: ComponentModel, version: VersionModel, blob: Blob): Promise<string> {\n const url = version ? version.getThumbnailURL() : component.getThumbnailURL()\n const lastModifiedDate = new Date(\n Math.max(Number(component.modifiedAt), Number(component.library.stylesheet.modifiedAt))\n )\n\n try {\n await component.sdk.uploadBlob('thumbnails', url.split(/\\/thumbnails\\//)[1], blob, {\n headers: {\n 'x-ms-blob-content-type': 'image/jpg',\n 'x-ms-blob-cache-control': 'public,max-age=31536000,immutable',\n 'x-ms-meta-versionId': version ? version.id : null,\n 'x-ms-meta-versionRevision': version ? version.revision.toString() : null,\n 'x-ms-meta-componentId': component.id,\n 'x-ms-meta-componentRenderedAt': lastModifiedDate.toUTCString(),\n 'x-ms-meta-componentModifiedAt': component.modifiedAt.toUTCString(),\n 'x-ms-meta-componentCreatedAt': component.createdAt.toUTCString(),\n 'x-ms-meta-modifiedAt': component.modifiedAt.toUTCString()\n }\n })\n // bust thumbnail cache for the future, off-thread\n fetch(url, {\n cache: 'no-cache'\n }).then(() => {\n component.sdk.log('FEAAS: Thumbnail uploaded', url)\n })\n } catch (e) {\n component.sdk.log('FEAAS: Thumbnail failed to upload', url, e)\n }\n\n return url\n}\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 FEAASReactElement from './components/FEAASReactElement.js'\n\nexport * from './dom/rendering.js'\nexport * from './utils/data.js'\nexport * from './dom/scripts.js'\nexport * from './dom/stylesheet.js'\nexport * from './dom/component.js'\nexport * from './fetch.js'\nexport * from './utils/promise.js'\nexport * from './cdn.js'\nexport * from './components/FEAASElement.js'\nexport * from './components/FEAASReactElement.js'\nexport * from './components/FEAASComponent.js'\nexport * from './components/FEAASLoader.js'\nexport * from './components/FEAASStylesheet.js'\nexport * from './utils/datapath.js'\nexport * as DOM from './dom/rendering.js'\nexport * as DataScope from './utils/data.js'\nexport * as DataPath from './utils/datapath.js'\nexport { DataSettings, fetchData } from './utils/settings.js'\nexport type { Data, DataOptionsById, DataOptions, DataScopes } from './utils/settings.js'\nexport * as Thumbnail from './dom/thumbnail.js'\n\ndeclare global {\n interface Window {\n FEAASLoading: Promise<any>\n FEAASReactElement: typeof FEAASReactElement\n }\n}\n\nif (typeof window != 'undefined') {\n window.FEAASReactElement = FEAASReactElement\n window.FEAASLoading ??= Promise.resolve()\n}\nexport { registerDatasource, registerComponent, getComponent, customizeDataSettings } from '@sitecore/byoc'\n", "import type * as FEAASEditorImports from '@sitecore-feaas/frontend/editor'\nimport { FEAASElement, OptionalExcept } from '../components/FEAASElement.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: FEAASElement) {\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 FEAASElement<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.Model.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.Model.ComponentModel\n version: FEAASEditorImports.Model.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 useLibrary,\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 library = useLibrary()\n const [component, setComponent] = useState<FEAASEditorImports.Model.ComponentModel>()\n const { setConfirm } = useContext(ConfirmationContext)\n const usedId = instanceId || versionId\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={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 { FEAASElement } from '../components/FEAASElement.js'\n\nexport function FEAASPickerProps(element: FEAASElement<any, any>) {\n return {\n part: element?.getAttribute('part') || 'picker',\n slot: element?.getAttribute('part') || 'picker',\n mode: element?.getAttribute('mode') as FEAASPickerImports.PickerProps['mode'],\n dialog: element?.getAttribute('dialog') as FEAASPickerImports.PickerProps['dialog'],\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 setAttribute: undefined as FEAASPickerImports.AttributeSetter,\n getAttribute: undefined as FEAASPickerImports.AttributeGetter\n }\n}\nexport type FEAASPickerProps = ReturnType<typeof FEAASPickerProps>\n\nexport class FEAASPicker extends FEAASElement<FEAASPickerProps, typeof FEAASPickerImports> {\n static observedAttributes = ['library', 'mode', 'frontend', 'src', 'hidden', 'variant', 'dialog']\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 connectedCallback() {\n this.setAttribute('feaas-role', 'ui')\n super.connectedCallback()\n }\n render(\n { placeholder, context, mode, dialog, children, variant }: React.PropsWithChildren<FEAASPickerProps>,\n { Picker, React, useContext, EnvironmentContext, useLibrary, useSDK, BYOC }: typeof FEAASPickerImports\n ) {\n const [renders, forceRender] = React.useReducer((c) => c + 1, 0)\n const sdk = useSDK()\n const env = useContext(EnvironmentContext)\n const collections = useLibrary('collections')\n const components = useLibrary('components')\n const datasources = useSDK('datasources')\n const library = useLibrary()\n // @ts-ignore temporary workaround until we release all environments\n const rules = library?.stylesheets?.first?.rules || library?.stylesheet?.styles\n const expandedComponents = useSDK('renderingHost.expandedComponents')\n var settings = context?.getAttribute('data')\n if (settings) {\n try {\n settings = JSON.parse(settings)\n } catch (e) {}\n }\n if (context) {\n var embedDefinition = sdk.ExternalComponent.getDefinition(context)\n var isUnconfigured = embedDefinition && !embedDefinition.getConfiguration(context)\n var externalComponent =\n embedDefinition?.type == 'feaas'\n ? components.find((c) => c.id == context.getAttribute('component'))\n : BYOC?.getComponent(String(context.getAttribute('data-external-id')))\n }\n return (\n <Picker\n cdn={env.cdn}\n rules={rules}\n collections={collections}\n themeContext={context}\n placeholder={placeholder}\n embed={externalComponent}\n externalComponents={expandedComponents}\n datasources={datasources}\n data={settings}\n versionId={context?.getAttribute('version')}\n mode={mode || (isUnconfigured ? 'library' : externalComponent ? 'context' : null)}\n setAttribute={(context, attribute, value) => {\n if (attribute == 'data' && value) value = JSON.stringify(value)\n this.props.setAttribute(context, attribute, value)\n forceRender()\n }}\n getAttribute={(c, property) => context?.getAttribute(property)}\n dialog={dialog}\n context={context}\n variant={variant}\n onModeChange={(mode, dialog) => {\n this.set({ mode, dialog })\n }}\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\nexport { FEAASPicker as Picker }\nFEAASPicker.register('feaas-picker')\n", "import type * as FEAASContextImports from '@sitecore-feaas/frontend/context'\nimport type { AuthModel } from '@sitecore-feaas/sdk'\nimport { FEAASElement, OptionalExcept } from '../components/FEAASElement.js'\nimport { ControlledPromise } from '../utils/promise.js'\nimport type * as FEAAS from './index.js'\n\nexport function FEAASContextProps(element: HTMLElement) {\n return {\n library: element?.getAttribute('library') as string,\n src: element?.getAttribute('src') ?? '/context.js',\n // override environment\n environment: element?.getAttribute('environment') ?? undefined,\n frontend: element?.getAttribute('frontend') ?? 'https://components.sitecorecloud.io',\n backend: element?.getAttribute('backend') ?? 'https://components.sitecorecloud.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 FEAASElement<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 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 | FEAASElement<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() {\n this.setAttribute('feaas-role', 'ui')\n //if (this.props.isolate)\n Array.from(this.children).forEach((child) => {\n this.getRoot().appendChild(child)\n })\n document.addEventListener('feaasMount', this)\n document.addEventListener('feaasUnmount', this)\n super.connectedCallback()\n }\n disconnectedCallback() {\n document.removeEventListener('feaasMount', this)\n document.removeEventListener('feaasUnmount', this)\n super.disconnectedCallback()\n }\n\n sdk: FEAASContextImports.SDK\n clientside: typeof FEAAS\n onStatusChange: FEAASContextImports.SDKStatusCallback = (status, sdk) => {\n if (status == 'ready') {\n this.whenSDKReady.resolve(sdk)\n this.dispatchEvent(new CustomEvent('feaasReady', { bubbles: true, composed: true, detail: sdk }))\n }\n }\n whenSDKReady = ControlledPromise<FEAASContextImports.SDK>((sdk) => {\n this.sdk = sdk\n })\n\n getPortalRoot() {\n return this.getRoot()\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.getPortalRoot() as HTMLElement }\n }\n Tooltip.defaultProps = {\n hasArrow: true,\n placement: 'top',\n portalProps\n }\n return (\n <AppContext\n environment={this.props.environment as any}\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 resetScope: ':where([feaas-role=\"ui\"])',\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 interface DocumentEventMap {\n feaasReady: CustomEvent<FEAASContextImports.SDK>\n }\n}\n\nexport { FEAASContext as Context }\nFEAASContext.register('feaas-context')\n", "export * from './FEAAS.js'\nimport * as FEAAS from './FEAAS.js'\n\nFEAAS.Context.prototype.clientside = FEAAS\n", "import * as BYOC from '@sitecore/byoc'\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport { FEAASElement } from '../components/FEAASElement.js'\nimport { ReactJSX, ReactModules } from '../components/FEAASReactElement.js'\nimport { Component, FEAASComponentProps } from './react.js'\n\nexport const FEAASExternalPropsObject = BYOC.getMergedComponentProperties\n\nexport function FEAASExternalProps(element: FEAASElement): FEAASExternalProps {\n const props = BYOC.objectKeysToCamelCase(\n Array.from(element.attributes).reduce((prev, { name, value }) => {\n if (name == 'data-external-id') name = 'component-name'\n return Object.assign(prev, { [name]: value })\n }, {} as any)\n ) as FEAASExternalProps\n return FEAASExternalPropsObject(props).merged\n}\n\nexport type FEAASExternalProps = { componentName: string; [key: string]: any }\n\nexport default class FEAASExternal extends FEAASElement<FEAASExternalProps, ReactModules> {\n load() {\n return Promise.all([\n // @ts-ignore\n import('https://cdn.skypack.dev/react-dom/client')\n ]).then(([ReactDOMClient]) => {\n return { React, ReactDOM, ReactDOMClient }\n })\n }\n\n // observe all arttribute changes\n _setAttribute: typeof HTMLElement.prototype.setAttribute\n connectedCallback() {\n if (!this._setAttribute) {\n this._setAttribute = this.setAttribute\n this.setAttribute = function (name, value) {\n const old = this.getAttribute(value)\n this._setAttribute(name, value)\n this.attributeChangedCallback(name, old, value)\n }\n }\n super.connectedCallback()\n }\n\n update() {\n const Component = BYOC.getComponent(this.getComponentName())?.component\n if (!Component && this.getAttribute('hydrate') == 'false') return\n return super.update()\n }\n\n render(props: FEAASExternalProps, { React }: ReactModules): ReactJSX {\n const Component = BYOC.getComponent(this.getComponentName())?.component as any\n if (!Component) {\n console.warn(`FEAASExternal: \\`${this.getComponentName()}\\` is not registered`)\n }\n return <>{Component && <Component componentName={this.getComponentName()} {...props} />}</>\n }\n\n getComponentName() {\n return this.getAttribute('data-external-id')\n }\n\n getProps() {\n return FEAASExternalProps(this)\n }\n\n static Preview(props: Partial<FEAASComponentProps<any>> & { src: string }) {\n const src =\n props?.src || (typeof window !== 'undefined' ? window.location.search.match(/feaasSrc=([^&]+)/)?.[1] : null)\n return src ? <Component src={src} {...props} /> : null\n }\n\n static linkComponents(components: Promise<any>[]): () => any {\n return () => components.map((components) => null)\n }\n\n static registered: BYOC.RegisteredComponents = BYOC.registered\n static registerComponent = BYOC.registerComponent\n static setRegistrationCallback = BYOC.setRegistrationCallback\n static getComponent = BYOC.getComponent\n}\n\nFEAASExternal.register('feaas-external')\n\nexport const { linkComponents } = FEAASExternal\nexport { FEAASExternal as External }\n"],
5
+ "mappings": "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",
6
+ "names": ["react_exports", "__export", "Component", "FEAASComponentsProps", "FEAASContext", "ControlledPromise", "DEFAULT_CDN_URL", "rendering_exports", "datapath_exports", "data_exports", "DataSettings", "FEAASElement", "FEAASExternal", "ExternalComponent", "ExternalComponentBundle", "FEAASComponent", "FEAASContextProps", "FEAASEditor", "FEAASEditorProps", "FEAASExternalPropsObject", "FEAASLoader", "FEAASLoaderProps", "FEAASPicker", "FEAASPickerProps", "FEAASReactComponent", "FEAASReactServerComponent", "FEAASReactStylesheet", "FEAASStylesheet", "FEAASStylesheetProps", "HTMLNodeToReact", "InvalidResponse", "JSONPath", "MyComponent", "NextExternalComponent", "ReactExternalComponent", "ServerComponent", "Stylesheet", "thumbnail_exports", "WebComponent", "adjustNumbers", "autoloadScripts", "cleanCollectionBit", "clearFetchCache", "createStylesheet", "enableNextClientsideComponents", "fetchAndRevalidate", "fetchAndRevalidateComponent", "fetchAndRevalidateStylesheet", "fetchBypassingCache", "fetchCache", "fetchComponent", "fetchData", "fetchToValidateCache", "fetchWithCacheAwareness", "findStylesheet", "getComponentSource", "getComponentURL", "getFetchCache", "getFramePosition", "getHumanizedLabel", "getLastPathBit", "getQualifier", "getStylesheetSource", "getStylesheetURL", "linkComponents", "loadScript", "loadStylesheet", "loadStylesheetAllowStale", "normalizeCollectionScope", "normalizeFetchAttribute", "observeDOMElement", "parseComponentSource", "parseLimit", "parseRange", "parseStylesheetSource", "queryObject", "queryObjectRaw", "queryScopes", "renderComponent", "renderComponentElement", "renderComponentPromise", "renderDOMContent", "renderDOMElement", "renderHTMLContent", "renderStylesheet", "renderStylesheetPromise", "serializeCH1RichText", "setContextProperties", "setDOMAttribute", "setElementImplementation", "__toCommonJS", "BYOC", "import_react", "rendering_exports", "__export", "renderDOMContent", "renderDOMElement", "renderHTMLContent", "setDOMAttribute", "data_exports", "__export", "JSONPath", "queryObject", "queryObjectRaw", "queryScopes", "serializeCH1RichText", "_typeof", "obj", "_classCallCheck", "instance", "Constructor", "_defineProperties", "target", "props", "i", "descriptor", "_createClass", "protoProps", "staticProps", "_inherits", "subClass", "superClass", "_setPrototypeOf", "_getPrototypeOf", "o", "p", "_isNativeReflectConstruct", "_construct", "Parent", "args", "Class", "_isNativeFunction", "fn", "_wrapNativeSuper", "_cache", "Wrapper", "_assertThisInitialized", "self", "_possibleConstructorReturn", "call", "_createSuper", "Derived", "hasNativeReflectConstruct", "Super", "result", "NewTarget", "_toConsumableArray", "arr", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "_arrayLikeToArray", "iter", "minLen", "n", "len", "arr2", "_createForOfIteratorHelper", "allowArrayLike", "it", "F", "e", "normalCompletion", "didErr", "err", "step", "hasOwnProp", "push", "item", "unshift", "NewError", "_Error", "_super", "value", "_this", "JSONPath", "opts", "expr", "callback", "otherTypeCallback", "optObj", "ret", "json", "_this2", "currParent", "currParentProperty", "flatten", "wrap", "_expr", "exprList", "ea", "rslt", "valOrPath", "resultType", "path", "fullRetObj", "type", "preferredOutput", "val", "parent", "parentPropName", "hasArrExpr", "literalPriority", "_this3", "retObj", "loc", "x", "addRet", "elems", "t", "m", "safeLoc", "addType", "valueType", "locProp", "parts", "_iterator", "_step", "part", "rett", "tmp", "tl", "tt", "f", "start", "end", "code", "_v", "_vname", "containsPath", "scriptCacheKey", "script", "pathArr", "pointer", "cache", "subx", "normalized", "$0", "$1", "prop", "ups", "exp", "match", "moveToAnotherArray", "source", "conditionCb", "il", "Script", "context", "keys", "funcs", "key", "values", "vr", "funcString", "s", "func", "fString", "lastStatementEnd", "queryObjectRaw", "json", "path", "JSONPath", "e", "queryObject", "flatten", "data", "queryScopes", "scopes", "datapath", "singleValue", "keys", "b", "a", "scope", "collection", "v", "i", "serializeCH1Tag", "attrs", "tag", "k", "serializeCH1RichText", "level", "text", "mark", "_a", "observeDOMElement", "element", "observer", "changes", "change", "target", "src", "loadScript", "node", "autoloadScripts", "observe", "embeds", "i", "embed", "p", "scripts", "script", "datapath_exports", "__export", "adjustNumbers", "cleanCollectionBit", "getHumanizedLabel", "getLastPathBit", "getQualifier", "normalizeCollectionScope", "parseLimit", "parseRange", "qualifier", "limit", "_a", "bits", "bit", "range", "jsonpath", "path", "string", "diff", "m", "b", "n", "maxBits", "monthNames", "formatDate", "date", "year", "month", "day", "isDate", "getDOMCollectionIndex", "element", "datascope", "index", "p", "updateDOMClones", "targetCount", "config", "parentElement", "count", "last", "n", "i", "setDOMAttribute", "attribute", "value", "loadScript", "target", "serializeCH1RichText", "prop", "picture", "oldKeys", "_a", "property", "subvalue", "datasourceId", "usePlaceholder", "placeholder", "_c", "_b", "str", "parent", "isDate", "formatDate", "sortOrder", "renderDOMElement", "input", "datascopes", "isNested", "collection", "queryScopes", "normalizeCollectionScope", "attrs", "a", "b", "name", "datapath", "child", "isElement", "node", "renderDOMContent", "root", "template", "data", "newTemplate", "renderHTMLContent", "fakeDOM", "nodes", "parseHTML", "HTMLNode", "nodeName", "nodeType", "textContent", "name", "value", "attr", "newNode", "referenceNode", "index", "attrName", "_a", "serializeHTML", "html", "parseHTML", "c", "selector", "currentNode", "selectorMatchesNode", "selectors", "results", "checkNode", "node", "sel", "child", "step", "elementTypeOnly", "siblings", "i", "sibling", "deep", "clonedNode", "childNode", "clonedChild", "simpleSelectors", "simpleSelector", "attrSelectorMatch", "attrValue", "actualValue", "nodes", "stack", "openTagMatch", "closingTagMatch", "attrs", "_", "unescapeHTML", "parentNode", "textEnd", "textNode", "escapeHTML", "input", "attributes", "serializedAttributes", "serializedChildren", "renderHTMLContent", "template", "data", "config", "parseHTMLContent", "newTemplate", "renderDOMElement", "import_byoc", "clean", "settings", "params", "method", "headers", "body", "url", "DataSettings", "cleanSettings", "cleanHeaders", "isDataSettings", "data", "property", "toFetchArguments", "payload", "contentType", "form", "key", "query", "headerCase", "m", "fetchDataSettings", "datasourceId", "datasourceSettingsGetter", "updatedSettings", "options", "json", "queryObject", "e", "fetchData", "keys", "allRequests", "obj", "hasDataSettings", "args", "FEAAS_exports", "__export", "FEAASComponent", "FEAASComponentsProps", "FEAASContext", "ControlledPromise", "DEFAULT_CDN_URL", "rendering_exports", "datapath_exports", "data_exports", "DataSettings", "FEAASElement", "FEAASContextProps", "FEAASEditor", "FEAASEditorProps", "FEAASLoader", "FEAASLoaderProps", "FEAASPicker", "FEAASPickerProps", "FEAASStylesheet", "FEAASStylesheetProps", "InvalidResponse", "JSONPath", "MyComponent", "thumbnail_exports", "WebComponent", "adjustNumbers", "autoloadScripts", "cleanCollectionBit", "clearFetchCache", "createStylesheet", "fetchAndRevalidate", "fetchAndRevalidateComponent", "fetchAndRevalidateStylesheet", "fetchBypassingCache", "fetchCache", "fetchComponent", "fetchData", "fetchToValidateCache", "fetchWithCacheAwareness", "findStylesheet", "getComponentSource", "getComponentURL", "getFetchCache", "getFramePosition", "getHumanizedLabel", "getLastPathBit", "getQualifier", "getStylesheetSource", "getStylesheetURL", "loadScript", "loadStylesheet", "loadStylesheetAllowStale", "normalizeCollectionScope", "observeDOMElement", "parseComponentSource", "parseLimit", "parseRange", "parseStylesheetSource", "queryObject", "queryObjectRaw", "queryScopes", "renderComponent", "renderComponentElement", "renderComponentPromise", "renderDOMContent", "renderDOMElement", "renderHTMLContent", "renderStylesheet", "renderStylesheetPromise", "serializeCH1RichText", "setDOMAttribute", "ControlledPromise", "onSuccess", "onFailure", "e", "first", "restart", "resolve", "reject", "promise", "success", "failure", "value", "controlled", "WebComponent", "FEAASElement", "context", "ControlledPromise", "payload", "name", "oldValue", "newValue", "parent", "element", "_a", "event", "attribute", "args", "format", "arg", "onlyFeaas", "p", "root", "el", "target", "index", "_b", "error", "where", "handled", "e", "loaded", "flushSync", "React", "ReactDOM", "ReactDOMClient", "_c", "children", "r", "child", "displayName", "errorInfo", "props", "ErrorBoundary", "Wrapper", "value", "forceUpdateReact", "overrides", "property", "isJSON", "valueAsString", "defaultValue", "defaultValueAsString", "odlValueAsString", "path", "src", "hostname", "tagName", "win", "FEAASReactElement", "FEAASElement", "React", "ReactDOM", "ReactDOMClient", "MyComponent", "counter", "updates", "setUpdates", "u", "phases", "fetchCache", "clearFetchCache", "fetchAndRevalidate", "url", "options", "validator", "callback", "cache", "fetchWithCacheAwareness", "fetchToValidateCache", "result", "phase", "date", "cachedRequest", "getFetchCache", "promise", "response", "isCached", "InvalidResponse", "dontCreate", "key", "ControlledPromise", "request", "head", "fetchBypassingCache", "DEFAULT_CDN_URL", "parseComponentSource", "source", "match", "cdn", "library", "component", "version", "revision", "getComponentSource", "props", "getStylesheetSource", "parseStylesheetSource", "parsed", "getComponentURL", "getStylesheetURL", "fetchAndRevalidateComponent", "callback", "dontRevalidate", "onlyIfNotDeleted", "response", "parseResponse", "results", "fetchWithCacheAwareness", "e", "result", "fetchToValidateCache", "fetchBypassingCache", "fetchComponent", "template", "fetchAndRevalidateStylesheet", "fetchAndRevalidate", "phase", "text", "renderStylesheet", "props", "style", "renderStylesheetPromise", "stylesheet", "fetchAndRevalidateStylesheet", "cssText", "phase", "validatedStylesheets", "loadStylesheet", "callback", "writableStylesheet", "foundStylesheet", "findStylesheet", "createStylesheet", "loadStylesheetAllowStale", "resolve", "reject", "cdnURL", "getStylesheetURL", "library", "parseStylesheetSource", "edgeURL", "url", "renderComponentElement", "content", "datasources", "wrapper", "fragment", "renderDOMElement", "renderComponent", "props", "root", "loadScript", "renderComponentPromise", "renderDOMContent", "fetchAndRevalidateComponent", "template", "FEAASComponentsProps", "element", "data", "src", "parsed", "parseComponentSource", "cdn", "library", "component", "version", "revision", "dataValue", "e", "fetch", "_b", "_a", "DEFAULT_CDN_URL", "_c", "_d", "_f", "_e", "_h", "_g", "FEAASComponent", "FEAASElement", "prop", "name", "oldValue", "newValue", "DataSettings", "alreadyRendered", "ControlledPromise", "html", "editor", "scope", "current", "last", "advanceIfEverythingIsReady", "stylesheetPromise", "loadStylesheetAllowStale", "templatePromise", "fetchAndRevalidateComponent", "c", "renderDOMElement", "renderDOMContent", "FEAASComponent", "FEAASLoaderProps", "element", "FEAASLoader", "FEAASElement", "name", "oldValue", "newValue", "FEAASLoader", "FEAASStylesheetProps", "element", "src", "cdn", "library", "revision", "parseStylesheetSource", "_b", "_a", "_d", "_c", "DEFAULT_CDN_URL", "FEAASStylesheet", "FEAASElement", "html", "loadStylesheet", "thumbnail_exports", "__export", "convertBase64toBlob", "generate", "get", "getVersionForThumbnail", "load", "responseToImage", "upload", "convertBase64toBlob", "base64", "res", "responseToImage", "response", "blob", "resolve", "reject", "img", "getVersionForThumbnail", "component", "get", "version", "callback", "load", "e", "generate", "upload", "url", "stylesheet", "lastModifiedDate", "fetchAndRevalidate", "isCached", "isUpToDate", "image", "state", "customStylesheet", "sourceVersion", "datasources", "render", "object", "datasource", "classList", "breakpoint", "template", "data", "cssText", "sdk", "iframe", "script", "_a", "root", "canvas", "src", "stylesheet2", "renderComponent", "import_byoc", "FEAASReactElement", "_a", "getFramePosition", "element", "positions", "currentWindow", "currentParentWindow", "rect", "idx", "frameElement", "style", "accumulator", "currentValue", "FEAASEditorProps", "_a", "FEAASEditor", "FEAASElement", "props", "refs", "focusable", "root", "event", "placeholder", "versionContext", "setVersionContext", "editorContext", "setEditorContext", "iframe", "x", "y", "body", "measurement", "name", "oldValue", "newValue", "version", "children", "componentId", "versionId", "instanceId", "Editor", "VersionStatusList", "VersionStatusButton", "Version", "VersionMenu", "EditorUIUndo", "EditorUIMode", "useEffect", "useMemo", "useState", "useContext", "HStack", "Box", "Button", "MenuItem", "Chrome", "ReactDOM", "useSDK", "useLibrary", "useSlots", "useModelObserver", "ConfirmationContext", "VersionContext", "React", "sdk", "library", "component", "setComponent", "setConfirm", "usedId", "comp", "versions", "fork", "original", "newForkId", "v", "_b", "target", "picker", "el", "editor", "isArchivedDisplayed", "status", "FEAASEditor", "FEAASPickerProps", "element", "_a", "_b", "FEAASPicker", "FEAASElement", "placeholder", "context", "mode", "dialog", "children", "variant", "Picker", "React", "useContext", "EnvironmentContext", "useLibrary", "useSDK", "BYOC", "renders", "forceRender", "c", "sdk", "env", "collections", "components", "datasources", "library", "rules", "_c", "expandedComponents", "settings", "e", "embedDefinition", "isUnconfigured", "externalComponent", "attribute", "value", "property", "FEAASPicker", "FEAASContextProps", "element", "_a", "_b", "_c", "_d", "_e", "FEAASContext", "FEAASElement", "status", "sdk", "ControlledPromise", "theme", "child", "children", "library", "AppContext", "Button", "Tooltip", "React", "portalProps", "FEAASContext", "FEAASContext", "FEAAS_exports", "BYOC", "import_react", "import_react_dom", "FEAASExternalPropsObject", "FEAASExternalProps", "element", "props", "prev", "name", "value", "FEAASExternal", "FEAASElement", "ReactDOMClient", "React", "ReactDOM", "old", "_a", "Component", "src", "components", "FEAASExternal", "linkComponents", "ReactElementComponents", "setElementImplementation", "tagName", "Component", "normalizeFetchAttribute", "fetch", "FEAASReactStylesheet", "props", "parseStylesheetSource", "React", "getStylesheetSource", "FEAASReactServerComponent", "data", "fetchedData", "DataSettings", "p", "response", "fetchComponent", "FEAASReactComponent", "lastModified", "renderNode", "preload", "children", "parseHTMLContent", "node", "index", "HTMLNodeToReact", "attributes", "override", "camelized", "prop", "key", "parseComponentSource", "embeddedData", "getComponentURL", "getStylesheetURL", "callback", "child", "i", "name", "value", "object", "pair", "k", "reactNode", "reactName", "reactAttributes", "reactChildren", "_a", "enableNextClientsideComponents", "setContextProperties", "ExternalComponentBundle", "ExternalComponent", "ReactExternalComponent", "NextExternalComponent", "ServerComponent", "Stylesheet"]
7
7
  }