@luigi-project/container 0.0.1 → 0.0.3

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.d.ts","sources":["../src/services/container.service.ts","../src/services/web-component-helpers.ts","../src/services/webcomponents.service.ts","../src/LuigiContainer.svelte","../src/LuigiCompoundContainer.svelte"],"sourcesContent":["export class ContainerService {\r\n constructor() {}\r\n\r\n isVisible(component: HTMLElement) {\r\n return !!(component.offsetWidth || component.offsetHeight || component.getClientRects().length);\r\n }\r\n\r\n dispatch(msg: string, targetCnt: HTMLElement, data: any, callback?: Function): void {\r\n let ev = new CustomEvent(msg, { detail: data });\r\n (ev as any).luigiCallback = data => {\r\n if (callback) {\r\n callback(data);\r\n }\r\n };\r\n targetCnt.dispatchEvent(ev);\r\n console.log('Dispatch WC event:', msg, targetCnt, data);\r\n }\r\n\r\n getTargetContainer(event) {\r\n let cnt;\r\n globalThis.__luigi_container_manager.container.forEach(element => {\r\n if (element.iframeHandle?.iframe && element.iframeHandle.iframe.contentWindow === event.source) {\r\n cnt = element;\r\n }\r\n });\r\n\r\n return cnt;\r\n }\r\n\r\n getContainerManager() {\r\n if (!globalThis.__luigi_container_manager) {\r\n globalThis.__luigi_container_manager = {\r\n container: [],\r\n messageListener: event => {\r\n const targetCnt = this.getTargetContainer(event);\r\n const target = targetCnt?.iframeHandle?.iframe?.contentWindow;\r\n console.log('Container event', event, targetCnt);\r\n if (target === event.source && event.data?.msg?.indexOf('luigi.') === 0) {\r\n const msg = event.data.msg;\r\n\r\n switch (msg) {\r\n case 'luigi.get-context':\r\n target.postMessage({ msg: 'luigi.init', context: targetCnt.context, internal: {} }, '*');\r\n break;\r\n case 'luigi.navigation.open':\r\n this.dispatch('navigation-request', targetCnt, event.data.params);\r\n break;\r\n case 'luigi.ux.alert.show':\r\n this.dispatch('alert-request', targetCnt, event.data.params);\r\n break;\r\n\r\n default:\r\n console.warn('Functionality not yet implemented: ', msg);\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n window.addEventListener('message', globalThis.__luigi_container_manager.messageListener);\r\n }\r\n return globalThis.__luigi_container_manager;\r\n }\r\n\r\n registerContainer(container: HTMLElement) {\r\n this.getContainerManager().container.push(container);\r\n }\r\n}\r\n","/**\r\n * Default compound renderer.\r\n */\r\nexport class DefaultCompoundRenderer {\r\n rendererObject: any;\r\n config: any;\r\n\r\n constructor(rendererObj?: any) {\r\n if (rendererObj) {\r\n this.rendererObject = rendererObj;\r\n this.config = rendererObj.config || {};\r\n } else {\r\n this.config = {};\r\n }\r\n }\r\n\r\n createCompoundContainer() {\r\n return document.createElement('div');\r\n }\r\n\r\n createCompoundItemContainer(layoutConfig?: any) {\r\n return document.createElement('div');\r\n }\r\n\r\n attachCompoundItem(compoundCnt, compoundItemCnt) {\r\n compoundCnt.appendChild(compoundItemCnt);\r\n }\r\n}\r\n\r\n/**\r\n * Compound Renderer for custom rendering as defined in luigi config.\r\n */\r\nexport class CustomCompoundRenderer extends DefaultCompoundRenderer {\r\n superRenderer: DefaultCompoundRenderer | CustomCompoundRenderer | GridCompoundRenderer;\r\n\r\n constructor(rendererObj) {\r\n super(rendererObj || { use: {} });\r\n if (rendererObj && rendererObj.use && rendererObj.use.extends) {\r\n this.superRenderer = resolveRenderer({\r\n use: rendererObj.use.extends,\r\n config: rendererObj.config\r\n });\r\n }\r\n }\r\n\r\n createCompoundContainer() {\r\n if (this.rendererObject.use.createCompoundContainer) {\r\n return this.rendererObject.use.createCompoundContainer(this.config, this.superRenderer);\r\n } else if (this.superRenderer) {\r\n return this.superRenderer.createCompoundContainer();\r\n }\r\n return super.createCompoundContainer();\r\n }\r\n\r\n createCompoundItemContainer(layoutConfig) {\r\n if (this.rendererObject.use.createCompoundItemContainer) {\r\n return this.rendererObject.use.createCompoundItemContainer(layoutConfig, this.config, this.superRenderer);\r\n } else if (this.superRenderer) {\r\n return this.superRenderer.createCompoundItemContainer(layoutConfig);\r\n }\r\n return super.createCompoundItemContainer(layoutConfig);\r\n }\r\n\r\n attachCompoundItem(compoundCnt, compoundItemCnt) {\r\n if (this.rendererObject.use.attachCompoundItem) {\r\n this.rendererObject.use.attachCompoundItem(compoundCnt, compoundItemCnt, this.superRenderer);\r\n } else if (this.superRenderer) {\r\n this.superRenderer.attachCompoundItem(compoundCnt, compoundItemCnt);\r\n } else {\r\n super.attachCompoundItem(compoundCnt, compoundItemCnt);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Compound Renderer for a css grid compound view.\r\n */\r\nexport class GridCompoundRenderer extends DefaultCompoundRenderer {\r\n createCompoundContainer() {\r\n const containerClass = '__lui_compound_' + new Date().getTime();\r\n const compoundCnt = document.createElement('div');\r\n compoundCnt.classList.add(containerClass);\r\n let mediaQueries = '';\r\n\r\n if (this.config.layouts) {\r\n this.config.layouts.forEach(el => {\r\n if (el.minWidth || el.maxWidth) {\r\n let mq = '@media only screen ';\r\n if (el.minWidth != null) {\r\n mq += `and (min-width: ${el.minWidth}px) `;\r\n }\r\n if (el.maxWidth != null) {\r\n mq += `and (max-width: ${el.maxWidth}px) `;\r\n }\r\n\r\n mq += `{\r\n .${containerClass} {\r\n grid-template-columns: ${el.columns || 'auto'};\r\n grid-template-rows: ${el.rows || 'auto'};\r\n grid-gap: ${el.gap || '0'};\r\n }\r\n }\r\n `;\r\n mediaQueries += mq;\r\n }\r\n });\r\n }\r\n\r\n compoundCnt.innerHTML = /*html*/ `\r\n <style scoped>\r\n .${containerClass} {\r\n display: grid;\r\n grid-template-columns: ${this.config.columns || 'auto'};\r\n grid-template-rows: ${this.config.rows || 'auto'};\r\n grid-gap: ${this.config.gap || '0'};\r\n min-height: ${this.config.minHeight || 'auto'};\r\n }\r\n ${mediaQueries}\r\n </style>\r\n `;\r\n return compoundCnt;\r\n }\r\n\r\n createCompoundItemContainer(layoutConfig) {\r\n const config = layoutConfig || {};\r\n const compoundItemCnt = document.createElement('div');\r\n compoundItemCnt.setAttribute('style', `grid-row: ${config.row || 'auto'}; grid-column: ${config.column || 'auto'}`);\r\n return compoundItemCnt;\r\n }\r\n}\r\n\r\n/**\r\n * Returns the compound renderer class for a given config.\r\n * If no specific one is found, {DefaultCompoundRenderer} is returned.\r\n *\r\n * @param {*} rendererConfig the renderer config object defined in luigi config\r\n */\r\nexport const resolveRenderer = rendererConfig => {\r\n const rendererDef = rendererConfig.use;\r\n if (!rendererDef) {\r\n return new DefaultCompoundRenderer(rendererConfig);\r\n } else if (rendererDef === 'grid') {\r\n return new GridCompoundRenderer(rendererConfig);\r\n } else if (\r\n rendererDef.createCompoundContainer ||\r\n rendererDef.createCompoundItemContainer ||\r\n rendererDef.attachCompoundItem\r\n ) {\r\n return new CustomCompoundRenderer(rendererConfig);\r\n }\r\n return new DefaultCompoundRenderer(rendererConfig);\r\n};\r\n\r\n/**\r\n * Registers event listeners defined at the navNode.\r\n *\r\n * @param {*} eventbusListeners a map of event listener arrays with event id as key\r\n * @param {*} navNode the web component node configuration object\r\n * @param {*} nodeId the web component node id\r\n * @param {*} wcElement the web component element - optional\r\n */\r\nexport const registerEventListeners = (eventbusListeners, navNode, nodeId, wcElement?) => {\r\n if (navNode?.eventListeners) {\r\n navNode.eventListeners.forEach(el => {\r\n const evID = el.source + '.' + el.name;\r\n const listenerList = eventbusListeners[evID];\r\n const listenerInfo = {\r\n wcElementId: nodeId,\r\n wcElement: wcElement,\r\n action: el.action,\r\n converter: el.dataConverter\r\n };\r\n\r\n if (listenerList) {\r\n listenerList.push(listenerInfo);\r\n } else {\r\n eventbusListeners[evID] = [listenerInfo];\r\n }\r\n });\r\n }\r\n};\r\n","import { DefaultCompoundRenderer, resolveRenderer, registerEventListeners } from './web-component-helpers';\r\nimport { ContainerService } from './container.service';\r\n\r\n/** Methods for dealing with web components based micro frontend handling */\r\nexport class WebComponentService {\r\n containerService: ContainerService;\r\n\r\n constructor() {\r\n this.containerService = new ContainerService();\r\n }\r\n\r\n dynamicImport(viewUrl) {\r\n return import(viewUrl);\r\n }\r\n\r\n processViewUrl(viewUrl: string, data?: any): string {\r\n return viewUrl;\r\n }\r\n\r\n /** Creates a web component with tagname wc_id and adds it to wcItemContainer,\r\n * if attached to wc_container\r\n */\r\n attachWC(wc_id, wcItemPlaceholder, wc_container, ctx, viewUrl, nodeId) {\r\n if (wc_container && wc_container.contains(wcItemPlaceholder)) {\r\n const wc = document.createElement(wc_id);\r\n if (nodeId) {\r\n wc.setAttribute('nodeId', nodeId);\r\n }\r\n\r\n this.initWC(wc, wc_id, wc_container, viewUrl, ctx, nodeId);\r\n\r\n wc_container.replaceChild(wc, wcItemPlaceholder);\r\n }\r\n }\r\n\r\n createClientAPI(eventBusElement, nodeId, wc_id) {\r\n return {\r\n linkManager: () => {}, //window.Luigi.navigation,\r\n uxManager: () => {\r\n return {\r\n showAlert: alertSettings => {},\r\n showConfirmationModal: async settings => {\r\n return new Promise((resolve, reject) => {\r\n resolve(true);\r\n });\r\n }\r\n };\r\n }, //window.Luigi.ux,\r\n getCurrentLocale: () => {}, //() => window.Luigi.i18n().getCurrentLocale(),\r\n publishEvent: ev => {\r\n // if (eventBusElement.eventBus) {\r\n // eventBusElement.eventBus.onPublishEvent(ev, nodeId, wc_id);\r\n // }\r\n }\r\n };\r\n }\r\n\r\n initWC(wc, wc_id, eventBusElement, viewUrl, ctx, nodeId) {\r\n const clientAPI = this.createClientAPI(eventBusElement, nodeId, wc_id);\r\n\r\n if (wc.__postProcess) {\r\n const url =\r\n new URL(document.baseURI).origin === new URL(viewUrl, document.baseURI).origin // TODO: check if needed\r\n ? new URL('./', new URL(viewUrl, document.baseURI))\r\n : new URL('./', viewUrl);\r\n wc.__postProcess(ctx, clientAPI, url.origin + url.pathname);\r\n } else {\r\n wc.context = ctx;\r\n wc.LuigiClient = clientAPI;\r\n }\r\n }\r\n\r\n /** Generates a unique web component id (tagname) based on the viewUrl\r\n * returns a string that can be used as part of a tagname, only alphanumeric\r\n * characters and no whitespaces.\r\n */\r\n generateWCId(viewUrl) {\r\n let charRep = '';\r\n for (let i = 0; i < viewUrl.length; i++) {\r\n charRep += viewUrl.charCodeAt(i).toString(16);\r\n }\r\n return 'luigi-wc-' + charRep;\r\n }\r\n\r\n /** Does a module import from viewUrl and defines a new web component\r\n * with the default export of the module or the first export extending HTMLElement if no default is\r\n * specified.\r\n * @returns a promise that gets resolved after successfull import */\r\n registerWCFromUrl(viewUrl, wc_id) {\r\n const i18nViewUrl = this.processViewUrl(viewUrl);\r\n return new Promise((resolve, reject) => {\r\n if (this.checkWCUrl(i18nViewUrl)) {\r\n this.dynamicImport(i18nViewUrl)\r\n .then(module => {\r\n try {\r\n if (!window.customElements.get(wc_id)) {\r\n let cmpClazz = module.default;\r\n if (!HTMLElement.isPrototypeOf(cmpClazz)) {\r\n let props = Object.keys(module);\r\n for (let i = 0; i < props.length; i++) {\r\n cmpClazz = module[props[i]];\r\n if (HTMLElement.isPrototypeOf(cmpClazz)) {\r\n break;\r\n }\r\n }\r\n }\r\n window.customElements.define(wc_id, cmpClazz);\r\n }\r\n resolve(1);\r\n } catch (e) {\r\n reject(e);\r\n }\r\n })\r\n .catch(err => reject(err));\r\n } else {\r\n console.warn(`View URL '${i18nViewUrl}' not allowed to be included`);\r\n reject(`View URL '${i18nViewUrl}' not allowed`);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Handles the import of self registered web component bundles, i.e. the web component\r\n * is added to the customElements registry by the bundle code rather than by luigi.\r\n *\r\n * @param {*} node the corresponding navigation node\r\n * @param {*} viewUrl the source of the wc bundle\r\n * @param {*} onload callback function executed after script attached and loaded\r\n */\r\n includeSelfRegisteredWCFromUrl(node, viewUrl, onload) {\r\n if (this.checkWCUrl(viewUrl)) {\r\n /** Append reg function to luigi object if not present */\r\n if (!this.containerService.getContainerManager()._registerWebcomponent) {\r\n this.containerService.getContainerManager()._registerWebcomponent = (srcString, el) => {\r\n window.customElements.define(this.generateWCId(srcString), el);\r\n };\r\n }\r\n\r\n let scriptTag = document.createElement('script');\r\n scriptTag.setAttribute('src', viewUrl);\r\n if (node.webcomponent.type === 'module') {\r\n scriptTag.setAttribute('type', 'module');\r\n }\r\n scriptTag.setAttribute('defer', 'true');\r\n scriptTag.addEventListener('load', () => {\r\n onload();\r\n });\r\n document.body.appendChild(scriptTag);\r\n } else {\r\n console.warn(`View URL '${viewUrl}' not allowed to be included`);\r\n }\r\n }\r\n\r\n /**\r\n * Checks if a url is allowed to be included, based on 'navigation.validWebcomponentUrls' in luigi config.\r\n * Returns true, if allowed.\r\n *\r\n * @param {*} url the url string to check\r\n */\r\n checkWCUrl(url) {\r\n // if (url.indexOf('://') > 0 || url.trim().indexOf('//') === 0) {\r\n // const ur = new URL(url);\r\n // if (ur.host === window.location.host) {\r\n // return true; // same host is okay\r\n // }\r\n\r\n // const valids = LuigiConfig.getConfigValue('navigation.validWebcomponentUrls');\r\n // if (valids && valids.length > 0) {\r\n // for (let el of valids) {\r\n // try {\r\n // if (new RegExp(el).test(url)) {\r\n // return true;\r\n // }\r\n // } catch (e) {\r\n // console.error(e);\r\n // }\r\n // }\r\n // }\r\n // return false;\r\n // }\r\n // relative URL is okay\r\n return true;\r\n }\r\n\r\n /** Adds a web component defined by viewUrl to the wc_container and sets the node context.\r\n * If the web component is not defined yet, it gets imported.\r\n */\r\n renderWebComponent(viewUrl, wc_container, context, node, nodeId) {\r\n const i18nViewUrl = this.processViewUrl(viewUrl, { context });\r\n const wc_id =\r\n node.webcomponent && node.webcomponent.tagName ? node.webcomponent.tagName : this.generateWCId(i18nViewUrl);\r\n const wcItemPlaceholder = document.createElement('div');\r\n wc_container.appendChild(wcItemPlaceholder);\r\n wc_container._luigi_node = node;\r\n\r\n if (window.customElements.get(wc_id)) {\r\n this.attachWC(wc_id, wcItemPlaceholder, wc_container, context, i18nViewUrl, nodeId);\r\n } else {\r\n /** Custom import function, if defined */\r\n if ((window as any).luigiWCFn) {\r\n (window as any).luigiWCFn(i18nViewUrl, wc_id, wcItemPlaceholder, () => {\r\n this.attachWC(wc_id, wcItemPlaceholder, wc_container, context, i18nViewUrl, nodeId);\r\n });\r\n } else if (node.webcomponent && node.webcomponent.selfRegistered) {\r\n this.includeSelfRegisteredWCFromUrl(node, i18nViewUrl, () => {\r\n this.attachWC(wc_id, wcItemPlaceholder, wc_container, context, i18nViewUrl, nodeId);\r\n });\r\n } else {\r\n this.registerWCFromUrl(i18nViewUrl, wc_id).then(() => {\r\n this.attachWC(wc_id, wcItemPlaceholder, wc_container, context, i18nViewUrl, nodeId);\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Creates a compound container according to the given renderer.\r\n * Returns a promise that gets resolved with the created container DOM element.\r\n *\r\n * @param {DefaultCompoundRenderer} renderer\r\n */\r\n createCompoundContainerAsync(renderer, ctx): Promise<HTMLElement> {\r\n return new Promise((resolve, reject) => {\r\n if (renderer.viewUrl) {\r\n try {\r\n const wc_id = this.generateWCId(renderer.viewUrl);\r\n this.registerWCFromUrl(renderer.viewUrl, wc_id).then(() => {\r\n const wc = document.createElement(wc_id);\r\n this.initWC(wc, wc_id, wc, renderer.viewUrl, ctx, '_root');\r\n resolve(wc);\r\n });\r\n } catch (e) {\r\n reject(e);\r\n }\r\n } else {\r\n resolve(renderer.createCompoundContainer());\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Responsible for rendering web component compounds based on a renderer or a nesting\r\n * micro frontend.\r\n *\r\n * @param {*} navNode the navigation node defining the compound\r\n * @param {*} wc_container the web component container dom element\r\n * @param {*} context the luigi node context\r\n */\r\n renderWebComponentCompound(navNode, wc_container, context) {\r\n let renderer;\r\n if (navNode.webcomponent && navNode.viewUrl) {\r\n renderer = new DefaultCompoundRenderer();\r\n renderer.viewUrl = this.processViewUrl(navNode.viewUrl, { context });\r\n renderer.createCompoundItemContainer = layoutConfig => {\r\n var cnt = document.createElement('div');\r\n if (layoutConfig && layoutConfig.slot) {\r\n cnt.setAttribute('slot', layoutConfig.slot);\r\n }\r\n return cnt;\r\n };\r\n } else if (navNode.compound?.renderer) {\r\n renderer = resolveRenderer(navNode.compound.renderer);\r\n }\r\n\r\n renderer = renderer || new DefaultCompoundRenderer();\r\n\r\n return new Promise(resolve => {\r\n this.createCompoundContainerAsync(renderer, context).then((compoundCnt: HTMLElement) => {\r\n const ebListeners = {};\r\n (compoundCnt as any).eventBus = {\r\n listeners: ebListeners,\r\n onPublishEvent: (event, srcNodeId, wcId) => {\r\n const listeners = ebListeners[srcNodeId + '.' + event.type] || [];\r\n listeners.push(...(ebListeners['*.' + event.type] || []));\r\n\r\n listeners.forEach(listenerInfo => {\r\n const target =\r\n listenerInfo.wcElement || compoundCnt.querySelector('[nodeId=' + listenerInfo.wcElementId + ']');\r\n if (target) {\r\n target.dispatchEvent(\r\n new CustomEvent(listenerInfo.action, {\r\n detail: listenerInfo.converter ? listenerInfo.converter(event.detail) : event.detail\r\n })\r\n );\r\n } else {\r\n console.debug('Could not find event target', listenerInfo);\r\n }\r\n });\r\n }\r\n };\r\n navNode.compound?.children.forEach((wc, index) => {\r\n const ctx = { ...context, ...wc.context };\r\n const compoundItemCnt = renderer.createCompoundItemContainer(wc.layoutConfig);\r\n compoundItemCnt.eventBus = (compoundCnt as any).eventBus;\r\n renderer.attachCompoundItem(compoundCnt, compoundItemCnt);\r\n\r\n const nodeId = wc.id || 'gen_' + index;\r\n this.renderWebComponent(wc.viewUrl, compoundItemCnt, ctx, wc, nodeId);\r\n registerEventListeners(ebListeners, wc, nodeId);\r\n });\r\n wc_container.appendChild(compoundCnt);\r\n\r\n // listener for nesting wc\r\n registerEventListeners(ebListeners, navNode.compound, '_root', compoundCnt);\r\n resolve(compoundCnt);\r\n });\r\n });\r\n }\r\n}\r\n","<svelte:options tag={null}/>\n\n<script>\n\texport let viewurl;\n\texport let context;\n\texport let label;\n\texport let webcomponent;\n\n\tlet iframeHandle = {};\n\tlet mainComponent;\n\t\n\timport { onMount, onDestroy } from 'svelte';\n\timport { get_current_component } from 'svelte/internal';\n\timport { ContainerService } from './services/container.service';\n\timport { WebComponentService } from './services/webcomponents.service';\n\n\tconst containerService = new ContainerService();\n\tconst webcomponentService = new WebComponentService();\n\twebcomponentService.createClientAPI = (eventBusElement, nodeId, wc_id) => {\n\t\treturn {\n\t\t\tlinkManager: () => {\n\t\t\t\treturn {\n\t\t\t\t\tnavigate: (route) => {\n\t\t\t\t\t\tdispatchLuigiEvent('navigation-request', { link: route });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tuxManager: () => { return {\n\t\t\t\tshowAlert: (alertSettings) => {\n\t\t\t\t\tdispatchLuigiEvent('alert-request', alertSettings);\n\t\t\t\t},\n\t\t\t\tshowConfirmationModal: async (settings) => {\n\t\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tdispatchLuigiEvent('confirmation-request', settings, (data) => {\n\t\t\t\t\t\tif(data) {\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\treject();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t};\n\t\t\t},//window.Luigi.ux,\n\t\t\tgetCurrentLocale: () => {},//() => window.Luigi.i18n().getCurrentLocale(),\n\t\t\tpublishEvent: ev => {\n\t\t\t\t// if (eventBusElement.eventBus) {\n\t\t\t\t// eventBusElement.eventBus.onPublishEvent(ev, nodeId, wc_id);\n\t\t\t\t// }\n\t\t\t}\n\t\t};\n\t};\n\n \tconst thisComponent = get_current_component();\n\tthisComponent.iframeHandle = iframeHandle;\n\tlet deferInit = !!thisComponent.attributes['defer-init'];\n\t\n\tthisComponent.init = () => {\n\t\tdeferInit = false;\n\t};\n\t\t\n\tcontainerService.registerContainer(thisComponent);\n\n\tfunction dispatchLuigiEvent(msg, data, callback) {\n\t\tcontainerService.dispatch(msg, thisComponent, data, callback);\n\t}\n\n\tfunction isWebComponent() {\n\t\treturn !!webcomponent;\n\t}\n\n\tonMount(async () => {\n\t\tconst ctx = context ? JSON.parse(context) : undefined;\n\t\tconsole.log(ctx);\n\t\tif(isWebComponent()) {\n\t\t\tmainComponent.innerHTML = '';\n\t\t\twebcomponentService.renderWebComponent(viewurl, mainComponent, ctx, {});\n\t\t}\n\t});\n\n\tonDestroy(async () => {\n\n\t});\n</script>\n\n<main bind:this={mainComponent} class={isWebComponent() ? undefined : 'lui-isolated'}>\n\t{#if !deferInit}\n\t\t{#if !isWebComponent()}\n\t\t\t<iframe bind:this={iframeHandle.iframe} src=\"{viewurl}\" title=\"{label}\"></iframe>\n\t\t{/if}\n\t{/if}\n</main>\n\n<style>\n\tmain, iframe {\n\t\twidth:100%;\n\t\theight: 100%;\n\t\tborder: none;\n\t}\n\n\tmain.lui-isolated {\n\t\tline-height: 0;\n\t}\n</style>","<svelte:options tag={null} accessors={true}/>\n\n<script>\n\t// export let viewurl;\n\texport let context;\n\t// export let label;\n\tlet compoundConfig;\n\n\tlet initialized = false;\n\tlet mainComponent;\n\tlet eventBusElement;\n\t\n\timport { onMount } from 'svelte';\n\timport { get_current_component } from 'svelte/internal';\n\timport { ContainerService } from './services/container.service';\n\timport { WebComponentService } from './services/webcomponents.service'\n\n\tconst containerService = new ContainerService();\n\tconst webcomponentService = new WebComponentService();\n\twebcomponentService.createClientAPI = (eventBusElement, nodeId, wc_id) => {\n\t\treturn {\n\t\t\tlinkManager: () => {},//window.Luigi.navigation,\n\t\t\tuxManager: () => { return {\n\t\t\t\tshowAlert: (alertSettings) => {\n\t\t\t\t\tdispatchLuigiEvent('alert-request', alertSettings);\n\t\t\t\t},\n\t\t\t\tshowConfirmationModal: async (settings) => {\n\t\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tdispatchLuigiEvent('confirmation-request', settings, (data) => {\n\t\t\t\t\t\tif(data) {\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\treject();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t};\n\t\t\t},//window.Luigi.ux,\n\t\t\tgetCurrentLocale: () => {},//() => window.Luigi.i18n().getCurrentLocale(),\n\t\t\tpublishEvent: ev => {\n\t\t\t\tconsole.log('pub', ev)\n\t\t\t\tif (eventBusElement && eventBusElement.eventBus) {\n\t\t\t\t\teventBusElement.eventBus.onPublishEvent(ev, nodeId, wc_id);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t};\n\n \tconst thisComponent = get_current_component();\n\tlet deferInit = !!thisComponent.attributes['defer-init'];\n\t\n\tthisComponent.init = () => {\n\t\tif(!thisComponent.compoundConfig || initialized) return;\n\t\tdeferInit = false;\n\t\tconsole.log('init compound');\n\t\tconst node = {\n\t\t\tcompound: thisComponent.compoundConfig \n\t\t}; // TODO: fill with sth\n\t\twebcomponentService.renderWebComponentCompound(node, mainComponent, context).then((compCnt) => {\n\t\t\teventBusElement = compCnt;\n\t\t});\n\t\tinitialized = true;\n\t};\n\t\t\n\tcontainerService.registerContainer(thisComponent);\n\t\n\tfunction dispatchLuigiEvent(msg, data, callback) {\n\t\tcontainerService.dispatch(msg, thisComponent, data, callback);\n\t}\n\n\tonMount(async () => {\n\t\tconst ctx = context ? JSON.parse(context) : undefined;\n\t\tconsole.log(ctx);\n\t});\n</script>\n\n<main bind:this={mainComponent}>\n\t\n</main>\n\n<style>\n\tmain {\n\t\twidth:100%;\n\t\theight: 100%;\n\t\tborder: none;\n\t}\n</style>"],"names":[],"mappings":"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"}