@telia-ace/widget-conversation-flamingo 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index-d8edc7b3.js","sources":["../../../node_modules/.pnpm/@webprovisions+bootstrapping@1.0.13/node_modules/@webprovisions/bootstrapping/dist/index.js","../../../node_modules/.pnpm/@webprovisions+platform@1.1.4/node_modules/@webprovisions/platform/dist/index.js","../../../node_modules/.pnpm/@telia-ace+widget-utilities@1.0.16/node_modules/@telia-ace/widget-utilities/dist/index.js","../../../node_modules/.pnpm/@telia-ace+widget-core@1.0.27/node_modules/@telia-ace/widget-core/dist/index.js","../../../node_modules/.pnpm/@telia-ace+widget-services@1.0.27/node_modules/@telia-ace/widget-services/dist/index.js","../src/conversation-history.ts","../src/agent.ts","../src/conversation-provider.ts","../src/store.ts","../src/user.ts","../src/utils/swap-provider.ts","../src/conversation-controller.ts","../src/utils/open-chat-widget.ts","../src/conversation-platform.ts","../../runtime/dist/index-d589d5e4.js","../src/components/conversation/plugin.ts","../src/types.ts","../src/utils/custom-message.ts"],"sourcesContent":["const f = (n, t, e, ...r) => {\n const o = `[${n.get(\"$environment\").name || \"webprovisions\"}] ${e}`;\n switch (t) {\n case \"info\":\n console.info(o, ...r);\n break;\n case \"warning\":\n console.warn(o, ...r);\n break;\n case \"error\":\n console.error(o, ...r);\n break;\n }\n}, E = (n) => {\n const t = n.container || n;\n return {\n info: (e, ...r) => f(t, \"info\", e, ...r),\n warn: (e, ...r) => f(t, \"warning\", e, ...r),\n error: (e, ...r) => f(t, \"error\", e, ...r)\n };\n}, b = (n, t) => {\n if (!t)\n return !0;\n if (typeof t == \"string\") {\n const e = t.split(\",\");\n for (let r = 0, o = e.length; r < o; r++) {\n const i = e[r].trim();\n if (i === n || i === \"*\")\n return !0;\n }\n }\n return t instanceof Array ? t.indexOf(n) > -1 : !1;\n}, x = (n, t) => {\n if (typeof t == \"function\")\n return t(n);\n const e = typeof t == \"string\" ? q(t) : t;\n return !(!b(n.tenant || \"\", e.tenant || \"\") || !b(n.name, e.implementation || \"\"));\n}, I = (n) => (t) => x(t, n), h = (n) => n instanceof Array && n.length === 1 ? n[0] : n, q = (n) => {\n const t = {}, e = n.split(\":\");\n return e.length === 1 ? t.implementation = h(e[0].split(\",\")) : (t.tenant = h(e[0].split(\",\")), t.implementation = h(e[1].split(\",\"))), t;\n};\nvar m = /* @__PURE__ */ ((n) => (n.Implementation = \"implementation\", n.Widget = \"widget\", n))(m || {}), g = /* @__PURE__ */ ((n) => (n.Pre = \"pre\", n.Post = \"post\", n))(g || {});\nconst L = (n, t, e, r) => {\n try {\n const o = new t(e, r);\n return {\n name: n,\n invoke: (i, s) => {\n let a;\n return o[i] && (a = o[i].call(o, s)), Promise.resolve(a);\n },\n getInstance: () => o\n };\n } catch (o) {\n if (o.message && o.message.indexOf(\"is not a constructor\") >= 0)\n return {\n name: n,\n invoke: (i) => {\n let s;\n return i === \"initialize\" && (s = t(e, r)), Promise.resolve(s);\n },\n getInstance: () => t\n };\n throw o;\n }\n};\nfunction y(n, t) {\n return typeof n == \"undefined\" ? t : n;\n}\nclass O {\n constructor(t = {}) {\n this.part = t;\n }\n createCommand(t, e, r) {\n let o;\n typeof e == \"function\" ? o = {\n scope: m.Widget,\n stage: g.Post,\n defaultArgs: void 0,\n handlerResolver: e\n } : o = {\n scope: y(e.scope, m.Widget),\n stage: y(e.stage, g.Post),\n defaultArgs: e.defaultArgs,\n handlerResolver: r\n };\n let i = this.part;\n const s = t.split(\".\");\n return s.forEach((a, c) => {\n c === s.length - 1 ? i[a] || (i[a] = () => o) : i = this.part[a] = this.part[a] || {};\n }), this;\n }\n get() {\n return this.part;\n }\n}\nconst A = (n) => {\n const t = new O({});\n return n(t), t.get();\n};\nA((n) => {\n n.createCommand(\n \"types.register\",\n { scope: m.Implementation, stage: g.Pre },\n (t) => (e, r) => {\n t.container.get(\"$types\")[e] = r;\n }\n ).createCommand(\n \"type\",\n { stage: g.Pre },\n (t) => (e) => {\n t.container.register(\"$type\", e);\n }\n ).createCommand(\n \"settings\",\n { stage: g.Pre, defaultArgs: [null] },\n (t) => (e) => {\n t.events.dispatch(\n \"settings:change\",\n e,\n { bubbles: !0 }\n ), t.container.register(\"$settings\", e);\n }\n ).createCommand(\n \"plugin\",\n { stage: g.Pre },\n (t) => (e, r, o) => {\n const { container: i } = t;\n let s = null, a = e, c = r;\n typeof e == \"string\" && (s = e, a = r, c = o);\n const u = (l) => {\n const { transformPluginSettings: p } = t.container.get(\"$environmentOptions\"), k = p ? p(\n c || {},\n s,\n t.container,\n a\n ) : r;\n try {\n const d = L(\n s,\n a,\n i,\n k\n );\n i.get(\"$plugins\").push(d), l && d.invoke(\"initialize\", null);\n } catch (d) {\n E(t).warn(\"Error when initializing plugin\", d);\n }\n };\n t.container.get(\"$instance\") ? u(!0) : t.events.subscribeOnce(\"widget:instance-created\", () => u(!1));\n }\n ).createCommand(\n \"container.register\",\n (t) => (e, r) => {\n t.container.register(e, r);\n }\n ).createCommand(\n \"container.registerAsync\",\n (t) => (e, r) => {\n t.container.registerAsync(e, r);\n }\n ).createCommand(\n \"container.registerFactory\",\n (t) => (e, r) => {\n t.container.registerFactory(e, r);\n }\n ).createCommand(\n \"container.touch\",\n (t) => (e, r) => {\n t.container.touch(e, r);\n }\n ).createCommand(\n \"csp\",\n {},\n (t) => (e) => {\n t.container.register(\"csp\", e);\n }\n );\n});\nfunction S(n, t, e) {\n return Array.from(n.querySelectorAll(\n `div[id^=\"${t}_\"], div[id^=\"${t}:\"]`\n )).map((o) => {\n if (o.id.substr(0, 7) === `${t}_`)\n return { widgetName: o.id.substr(7), element: o };\n const { 3: i } = o.id.split(\":\");\n return { widgetName: i, element: o };\n });\n}\nconst W = (n) => {\n const t = n.map((e) => e.replace(/\\./g, \"\\\\.\")).join(\"|\");\n return new RegExp(\"^((http[s]?:)?//)?(\" + t + \")/([^\\\\s]+)\");\n}, R = (n) => n.href;\nfunction M(n, t) {\n const e = W(t), r = (i) => {\n const s = e.exec(R(i));\n return s ? {\n element: i,\n widget: s[4]\n } : null;\n };\n return Array.from(n.querySelectorAll(\"a\")).map((i) => r(i)).filter((i) => !!i).map((i) => ({\n element: i.element,\n widgetName: i.widget\n }));\n}\nfunction P(n) {\n return n.filter((t, e, r) => r.indexOf(t) === e);\n}\nclass N {\n constructor(t) {\n this.container = t.container, this.events = t.events;\n }\n watch(t) {\n const e = this.container.get(\"triggerElements\") || [], r = P(e.concat(t));\n this.container.register(\"triggerElements\", r), this.events.dispatch(\n \"bootstrap:trigger-elements-updated\",\n { triggerElements: r },\n { bubbles: !0 }\n );\n }\n}\nfunction C(n, ...t) {\n return n.implementation.events.subscribe(\"widget:create-instance\", (e, r) => {\n if (e.target === n) {\n let o = n.container.get(\"bootstrapping.monitor\");\n o || (o = new N(n), n.container.register(\"bootstrapping.monitor\", o)), o.watch(t);\n }\n }), n.load();\n}\nfunction $(n, t = document) {\n var s;\n const e = n.bindings, r = [].concat(\n M(t, e),\n S(t, ((s = n.environment) == null ? void 0 : s.name) || \"\")\n ), i = P(r.map(({ widgetName: a }) => a)).reduce((a, c) => {\n const u = n.widgets.get(c);\n if (!u)\n return process.env.NODE_ENV !== \"production\" && E(n).warn(`A trigger element for \"${c}\" was found but no widget with that name is available on the implementation (\"${n.name}\"). Make sure this is not a mistake.`), a;\n const l = r.filter((p) => p.widgetName === c).map((p) => p.element);\n return a.push(C(u, ...l)), a;\n }, []);\n return Promise.all(i);\n}\nfunction z() {\n return new Promise((n) => {\n document.readyState === \"loading\" ? document.addEventListener(\"DOMContentLoaded\", () => n()) : n();\n });\n}\nconst D = (n, t) => {\n const e = n;\n e.scan = (o) => $(e, o), e.bindings = t, e.attach = (o, ...i) => C(o, ...i);\n const { environment: r } = e;\n return typeof r.configure == \"undefined\" && (r.configure = (o, i) => {\n let s, a;\n i ? (s = o, a = i) : (s = \"*\", a = o), r.implementations.query(s).forEach((c) => c.configure(a)), r.events.subscribe(\"implementation:created\", (c, u) => {\n const { implementation: l } = u;\n I(s)(l) && l.configure(a);\n });\n }), e;\n};\nfunction B(n, t, e = () => [], r) {\n const o = { ready: !1 };\n n.container.register(\"bootstrapping\", o);\n const i = D(n, t);\n return z().then(() => {\n n.configure((...s) => {\n e().forEach((a) => a(...s));\n });\n }).then(() => $(i, r())).then(() => (o.ready = !0, n.events.dispatch(\"bootstrap:ready\", {}), i));\n}\nfunction _(n) {\n const t = {};\n return [].filter.call(n.attributes, (e) => /^data-/.test(e.name)).map((e) => e.name).forEach((e) => t[e.substr(5)] = n.getAttribute(e)), t;\n}\nconst v = (n, t, e) => {\n const r = _(n);\n e({\n sourceDOMElement: n,\n eventType: t,\n data: r\n });\n};\nfunction w(n, t, e) {\n n.forEach((r) => {\n r.dataset.attached !== \"true\" && (t === \"load\" ? v(r, t, e) : r.addEventListener(t, (o) => {\n o.preventDefault(), v(r, t, e);\n }), r.dataset.monitored = \"true\");\n });\n}\nfunction U(n, t, e) {\n const r = n.container.get(\"bootstrapping.monitor\");\n r && r.events.subscribe(\"bootstrap:trigger-elements-updated\", (i, s) => {\n w(\n s.triggerElements,\n t,\n e\n );\n });\n const o = n.container.get(\"triggerElements\");\n o && w(\n o,\n t,\n e\n );\n}\nconst j = (n, t, e) => {\n const r = n.split(\":\"), o = r[0], i = r.length > 1 ? r[1] : \"*\";\n return (t === \"*\" || o === t) && (e === \"*\" || i === e);\n};\nfunction V(n, t = \"*\", e = \"*\") {\n return n.filter((r) => {\n const o = r[0], i = r[1];\n return typeof o == \"string\" && typeof i == \"function\" ? j(o, t, e) : !1;\n }).map((r) => r[1]);\n}\nconst F = A((n) => {\n n.createCommand(\n \"ready\",\n { scope: m.Implementation, stage: g.Pre },\n (t) => (e) => {\n const { container: r } = t, o = r.owner;\n r.get(\"bootstrapping\").ready ? e(o) : o.events.subscribeOnce(\"bootstrap:ready\", () => {\n e(o);\n });\n }\n );\n});\nexport {\n F as ConfigurationApi,\n B as bootstrapImplementation,\n V as parseConfigurationHandlers,\n U as supportBootstrapping\n};\n//# sourceMappingURL=index.js.map\n","const z = /* @__PURE__ */ new WeakMap();\nfunction b() {\n return (s) => (z.has(s) || z.set(s, {}), z.get(s));\n}\nconst I = (s, t, e, ...n) => {\n const o = `[${s.get(\"$environment\").name || \"webprovisions\"}] ${e}`;\n switch (t) {\n case \"info\":\n console.info(o, ...n);\n break;\n case \"warning\":\n console.warn(o, ...n);\n break;\n case \"error\":\n console.error(o, ...n);\n break;\n }\n}, u = (s) => {\n const t = s.container || s;\n return {\n info: (e, ...n) => I(t, \"info\", e, ...n),\n warn: (e, ...n) => I(t, \"warning\", e, ...n),\n error: (e, ...n) => I(t, \"error\", e, ...n)\n };\n}, c = b(), M = (() => {\n let s = 0;\n return () => ++s;\n})(), _ = (s, t, e) => {\n const n = c(s).touchQueue.get(t);\n n && n.forEach((i) => {\n i(e, s);\n });\n};\nclass G {\n constructor(t, e, n, i) {\n this.key = t, this.factory = e, this.parent = n, this.container = i, this.id = M(), this.resolved = !1, this.constructed = !1, this.async = !0;\n }\n resolve() {\n if (!this.constructed) {\n const t = this.factory(this.parent, this.container);\n return this.constructed = !0, this.value = Promise.resolve(t).then((e) => (this.resolved = !0, _(this.container, this.key, e), e));\n }\n return this.value;\n }\n}\nclass J {\n constructor(t, e, n, i) {\n this.key = t, this.value = e, this.parent = n, this.container = i, this.id = M(), this.async = !1, this.resolved = !1, this.constructed = !0, this.resolve = () => (this.resolved = !0, _(this.container, this.key, this.value), this.value);\n }\n}\nclass X {\n constructor(t, e, n, i) {\n this.key = t, this.value = e, this.parent = n, this.container = i, this.id = M(), this.async = !1, this.resolved = !1, this.constructed = !1, this.resolve = () => {\n this.resolved = !0, this.constructed = !0;\n const r = this.value(this.parent, this.container);\n return _(this.container, this.key, this.value), r;\n };\n }\n}\nclass W {\n /**\n * Creates a new instance of `Container`.\n * @param owner The object owning this inctance.\n * @param name Optional name for the container.\n * @param parent Parent container this should be a child of.\n */\n constructor(t, e, n) {\n this.owner = t, this.name = e, this.parent = n, c(this).resolvers = /* @__PURE__ */ new Map(), c(this).touchQueue = /* @__PURE__ */ new Map(), c(this).children = [];\n }\n /**\n * Deletes an existing resolver by its unique id.\n * @param id Resolver id.\n */\n delete(t) {\n const e = c(this).resolvers, i = Array.from(e.values()).find((r) => r.id === t);\n return i ? (c(this).touchQueue.delete(i.key), Promise.resolve(e.delete(i.key))) : this.parent ? this.parent.delete(t) : Promise.resolve(!1);\n }\n /**\n * Clears the `Container` and any child containers by deleteing all registered resolvers.\n */\n clear() {\n const t = c(this).resolvers, e = Array.from(t.values());\n return Promise.all(e.map((n) => {\n if (n.constructed)\n return Promise.resolve(n.resolve()).then((i) => {\n if (i !== null && typeof i == \"object\" && typeof i.dispose == \"function\")\n return i.dispose.call(i, this, n);\n });\n })).then(() => {\n e.forEach((n) => this.delete(n.id)), c(this).children.forEach((n) => n.clear());\n });\n }\n /**\n * Detaches this `Container` instance from its parent, allowing it to be garbage-collected.\n */\n detach() {\n if (this.parent) {\n const t = c(this.parent).children, e = t.indexOf(this);\n e > -1 && (t.splice(e, 1), delete this.parent);\n }\n }\n /**\n * Provides a way of touching a value in the `Container` without forcing it to be resolved.\n * @param key Key of the resolved value to touch.\n * @param handler Handler function for touching the resolved value.\n */\n touch(t, e) {\n const i = c(this).resolvers.get(t);\n if (i && i.constructed)\n Promise.resolve(i.resolve()).then((o) => {\n e(o, this);\n });\n else {\n const o = c(this).touchQueue;\n let a = o.get(t);\n a || (a = [], o.set(t, a)), a.push(e);\n }\n return this.parent && !i ? this.parent.touch(t, e) : Promise.resolve();\n }\n /**\n * Registers an asynchronous resolver.\n * @param key Key of the resolver.\n * @param factory Value factory.\n */\n registerAsync(t, e) {\n const n = c(this).resolvers.get(t);\n n && !n.async && process.env.NODE_ENV !== \"production\" && u(this).warn(`Mismatching resolver type. You are registering an async resolver with a key ('${t}') previously used by a non-async resolver.`);\n const i = new G(t, e, n, this);\n return c(this).resolvers.set(t, i), i.id;\n }\n /**\n * Registers a factory resolver for constructing the value to be resolved.\n * @param key Key of the resolver.\n * @param factory Value factory.\n */\n registerFactory(t, e) {\n const n = c(this).resolvers.get(t);\n n && n.async && process.env.NODE_ENV !== \"production\" && u(this).warn(`Mismatching resolver type. You are registering a non-async resolver with a key ('${t}') previously used by an async resolver.`);\n const i = new X(t, e, n, this);\n return c(this).resolvers.set(t, i), i.id;\n }\n /**\n * Registers an synchronous resolver.\n * @param key Key of the resolver.\n * @param value Value.\n */\n register(t, e) {\n const n = c(this).resolvers.get(t);\n n && n.async && process.env.NODE_ENV !== \"production\" && u(this).warn(`Mismatching resolver type. You are registering a non-async resolver with a key ('${t}') previously used by an async resolver.`);\n const i = new J(t, e, n, this);\n return c(this).resolvers.set(t, i), i.id;\n }\n /**\n * Gets the value for a synchronous resolver.\n * @param key Key of resolver to get.\n */\n get(t) {\n const e = c(this).resolvers.get(t);\n if (e)\n return e.async && process.env.NODE_ENV !== \"production\" && u(this).warn(`You are retrieving an async value (with key '${t}') by the non-async function 'container.get(key)'. This will not be supported in future versions. Use 'container.getAsync(key) instead.'`), e.resolve();\n if (this.parent)\n return this.parent.get(t);\n }\n /**\n * Gets the value for a asynchronous resolver.\n * @param key Key of resolver to get.\n */\n getAsync(t) {\n const e = c(this).resolvers.get(t);\n if (e) {\n if (!e.async)\n throw process.env.NODE_ENV !== \"production\" && u(this).warn(`You are retrieving a non-async value (with key '${t}') by the async function 'container.getAsync(key)'.Use 'container.get(key) instead.'`), \"Mismatching resolver type\";\n return e.resolve();\n }\n return this.parent ? this.parent.getAsync(t) : Promise.resolve(void 0);\n }\n getMany(...t) {\n const e = {};\n return t.forEach((n) => e[n] = this.get(n)), e;\n }\n getManyAsync(...t) {\n const e = {};\n return Promise.all(t.map((n) => this.getAsync(n).then((i) => e[n] = i))).then(() => e);\n }\n createChild(t, e) {\n const n = new W(t, e, this);\n return c(this).children.push(n), n;\n }\n}\nclass L {\n /**\n * \n * @param type Type of event.\n * @param target The target of the event, which will handle the default behavour.\n * @param cancelable Whether the event is cancelable by calling preventDefault().\n * @param bubbles Whether the event will bubble up the parent hierarchy.\n */\n constructor(t, e, n = !1, i = !1) {\n this.type = t, this.target = e, this.cancelable = !!n, this.bubbles = !!i, this.defaultPrevented = !1;\n }\n /**\n * Cancels the default behaviour (if the event is cancelable).\n */\n preventDefault() {\n this.cancelable && (this.defaultPrevented = !0);\n }\n}\nconst p = b(), q = (s, t) => [].concat(\n p(s).listenerLookup.get(t.toLowerCase()) || [],\n p(s).listenerLookup.get(\"*\") || []\n), F = (s, t, e, n) => {\n let i, r;\n return t instanceof L ? (i = t, r = t.type) : (i = new L(t, s.target, !!e.cancelable, !!e.bubbles), r = t), { event: i, type: r, async: n };\n};\nclass D {\n /**\n * Creates a new Event Manager instance.\n * @param target The target of events dispatched from this Event Manager instance.\n * @param parent Parent Event Manager instance.\n */\n constructor(t, e) {\n this.target = t, this.parent = e, p(this).listenerLookup = /* @__PURE__ */ new Map(), p(this).children = [];\n }\n /**\n * Clears registered event listeners in this `EventManager` as well as in any children.\n */\n clear() {\n p(this).listenerLookup.clear(), p(this).children.forEach((t) => t.clear());\n }\n /**\n * Detaches this `EventManager` instance from its parent, allowing it to be garbage-collected.\n */\n detach() {\n if (this.parent) {\n const t = p(this.parent).children, e = t.indexOf(this);\n e > -1 && t.splice(e, 1);\n }\n }\n /**\n * Creates an event subscription by registering an listener for an event type.\n * @param type Event type to subscribe to.\n * @param listener Listener for the event.\n */\n subscribe(t, e, n) {\n const i = p(this).listenerLookup, r = t.toLowerCase();\n return i.has(r) || i.set(r, []), i.get(r).push(e), () => this.unsubscribe(t, e);\n }\n /**\n * Similar to `subscribe()` but immediately removes the subscription after the first call.\n * @param type Event type to subscribe to.\n * @param listener Listener for the event.\n */\n subscribeOnce(t, e) {\n const n = this.subscribe(t, (i, r) => (n(), e(i, r)));\n }\n /**\n * Removes a listener for the specified event type.\n * @param type Event type to remove subscription for.\n * @param listener Event listener to remove.\n */\n unsubscribe(t, e) {\n const n = p(this).listenerLookup.get(t.toLowerCase());\n if (n) {\n const i = n.indexOf(e);\n i > -1 && n.splice(i, 1);\n }\n }\n /**\n * Dispatches an asynchonous event to registered event listeners.\n * @param eventOrType Event type or Event object to dispatch.\n * @param data Optional data to be passed to event listeners.\n * @param options Optional event options used if first parameter is an event type.\n */\n dispatchAsync(t, e, n = {}) {\n const { event: i, type: r } = F(this, t, n, !0), o = q(this, r);\n let a = 0;\n const l = o.length;\n let h = Promise.resolve();\n for (a = 0; a < l; a++)\n ((m) => {\n h = h.then((y) => y ? Promise.resolve(!0) : Promise.resolve(m(i, e)).then(() => i.defaultPrevented));\n })(o[a]);\n return h.then((m) => !m && i.bubbles && this.parent ? this.parent.dispatchAsync(i, e) : m);\n }\n /**\n * Dispatches an event to registered event listeners.\n * @param eventOrType Event type or Event object to dispatch.\n * @param data Optional data to be passed to event listeners.\n * @param options Optional event options used if first parameter is an event type.\n */\n dispatch(t, e, n = {}) {\n const { event: i, type: r } = F(this, t, n, !1), o = q(this, r);\n let a = 0;\n const l = o.length;\n let h = !1;\n for (a = 0; a < l; a++)\n if (o[a](i, e), i.defaultPrevented) {\n h = !0;\n break;\n }\n return !h && i.bubbles && this.parent && (h = this.parent.dispatch(i, e)), h;\n }\n /**\n * Creates a child instance to the current Event manager.\n */\n createChild(t) {\n const e = new D(t, this);\n return p(this).children.push(e), e;\n }\n}\nconst P = (s, t, e) => {\n const i = s.get(\"$plugins\").map((r) => {\n try {\n return r.invoke(t, e);\n } catch (o) {\n u(s).error(\"An error occured when invoking a plugin.\", r, o);\n }\n });\n return Promise.all(i);\n};\nclass Z {\n constructor(t) {\n this.widget = t.get(\"$widget\"), this.events = this.widget.events, this.container = this.widget.container, this.initialized = null, this.activated = null, this.initialize = this.initialize.bind(this), this.activate = this.activate.bind(this), this.deactivate = this.deactivate.bind(this), this.invoke = this.invoke.bind(this), this.createInstance();\n }\n createInstance() {\n if (!this.widget.container.get(\"$instance\")) {\n const t = this.widget.container.get(\"$types\"), e = this.widget.container.get(\"$type\");\n !e && u(this).error(\"Unable to create widget. No type is specified.\");\n const n = t[e];\n !n && u(this).error(`Unable to create widget. Type '${e}' is not registered.`), this.widget.events.dispatch(\"widget:create-instance\", {}, { bubbles: !0 });\n try {\n this.widget.container.register(\n \"$instance\",\n new n(this.container)\n );\n } catch (i) {\n u(this).error(\"Unable to create widget type.\", i);\n }\n this.widget.events.dispatch(\"widget:instance-created\", {}, { bubbles: !0 });\n }\n }\n /**\n * The initialization is performed before the widget is activated but after it's configured\n * and thus all required services are available. This hook is a good place to bind events that\n * should trigger activation (e.g. click on \"trigger links\" or routing events)\n * @param {object} data Custom initialization data passed to the widget.\n */\n initialize(t) {\n return this.initialized = this.initialized || (() => {\n const e = this.container.get(\"$instance\"), n = e.initialize || (() => {\n });\n return this.initialized = Promise.resolve(n.call(e, t)).then(() => P(this.container, \"initialize\", t)).then(() => {\n });\n })();\n }\n /**\n * The activation is where the widget is actually created and rendered.\n * Activation can be initialized from the outside or from an event originated\n * in the \"initialize\" hook.\n * @param {object} data Custom activation data passed to the widget.\n */\n activate(t) {\n return (this.initialized || this.initialize()).then(() => {\n this.activated = this.activated || (() => P(this.container, \"activate\").then(() => {\n const n = this.container.get(\"$instance\");\n return this.activated = n.activate(t);\n }))();\n });\n }\n deactivate() {\n const t = this.container.get(\"$instance\"), e = t.deactivate || (() => {\n });\n return P(this.container, \"deactivate\").then(() => Promise.resolve(e.call(t))).then(() => {\n this.initialized = null, this.activated = null;\n }).then(() => {\n });\n }\n /**\n * Invokes a command on the widget component.\n * @param command Name of command\n * @param args Command arguments\n */\n invoke(t, ...e) {\n return P(this.container, \"invoke\", { command: t, args: e }).then(() => {\n const n = this.container.get(\"$instance\");\n if (n[t])\n return n[t].apply(n, e);\n const i = n.invoke;\n if (i)\n return i.call(n, t, ...e);\n });\n }\n}\nconst w = (s, t) => {\n if (!t)\n return !0;\n if (typeof t == \"string\") {\n const e = t.split(\",\");\n for (let n = 0, i = e.length; n < i; n++) {\n const r = e[n].trim();\n if (r === s || r === \"*\")\n return !0;\n }\n }\n return t instanceof Array ? t.indexOf(s) > -1 : !1;\n}, K = (s, t) => {\n if (typeof t == \"function\")\n return t(s);\n const e = typeof t == \"string\" ? nt(t) : t;\n return !(!w(s.implementation.tenant || \"\", e.tenant || \"\") || !w(s.implementation.name, e.implementation || \"\") || !w(s.name, e.widget || \"\") || !w(s.container.get(\"$type\"), e.type || \"\"));\n}, tt = (s, t) => {\n if (typeof t == \"function\")\n return t(s);\n const e = typeof t == \"string\" ? st(t) : t;\n return !(!w(s.tenant || \"\", e.tenant || \"\") || !w(s.name, e.implementation || \"\"));\n}, Q = (s) => (t) => K(t, s), et = (s) => (t) => tt(t, s), f = (s) => s instanceof Array && s.length === 1 ? s[0] : s, nt = (s) => {\n const t = {}, e = s.split(\":\");\n return e.length === 1 ? t.widget = f(e[0].split(\",\")) : e.length === 2 ? (t.implementation = f(e[0].split(\",\")), t.widget = f(e[1].split(\",\"))) : (t.tenant = f(e[0].split(\",\")), t.implementation = f(e[1].split(\",\")), t.widget = f(e[2].split(\",\"))), t;\n}, st = (s) => {\n const t = {}, e = s.split(\":\");\n return e.length === 1 ? t.implementation = f(e[0].split(\",\")) : (t.tenant = f(e[0].split(\",\")), t.implementation = f(e[1].split(\",\"))), t;\n}, E = b(), V = (s, t, e) => s.filter((n) => n.stage === t && Q(n.selector)(e));\nfunction it(s) {\n const t = s.container.get(\"$environment\");\n let e = E(t).configurationCache;\n e && (e = e.filter((n) => n[0] !== s), E(t).configurationCache = e);\n}\nvar k = /* @__PURE__ */ ((s) => (s.Implementation = \"implementation\", s.Widget = \"widget\", s))(k || {}), g = /* @__PURE__ */ ((s) => (s.Pre = \"pre\", s.Post = \"post\", s))(g || {});\nconst T = (s, t, e) => (Object.keys(t).forEach((n) => {\n const i = t[n];\n if (typeof i == \"function\") {\n const r = i();\n typeof r.defaultArgs != \"undefined\" && e(r, ...r.defaultArgs), s[n] = (...o) => {\n const a = Object.assign(\n {},\n r,\n { handlerResolver: r.handlerResolver.bind({}) }\n );\n return e(a, ...o), s;\n };\n } else\n s[n] = T(\n {},\n i,\n e\n );\n}), s), rt = (s, t) => {\n switch (t) {\n case \"implementation\":\n return s.implementation;\n case \"widget\":\n return s;\n }\n}, O = (s, t, e, n) => (n.forEach((i) => {\n T(\n s,\n i,\n (r, ...o) => {\n const a = {\n selector: t,\n stage: r.stage,\n handler: (l) => {\n const h = rt(l, r.scope), m = { container: h.container, events: h.events }, y = r.handlerResolver, x = y(m);\n let v = E(e.environment).configurationCache;\n return v || (v = E(e.environment).configurationCache = []), v.find((R) => R.indexOf(h) > -1 && R.indexOf(y) > -1) ? Promise.resolve() : (v.push([h, y]), Promise.resolve(x(...o)));\n }\n };\n e.instructions.push(a);\n }\n );\n}), s);\nfunction ot(s, t) {\n function e(n) {\n return O(\n {},\n n,\n s,\n t\n );\n }\n return O(\n e,\n \"*\",\n s,\n t\n );\n}\nclass $t {\n constructor(t, e) {\n this.container = t, this.settings = e, this.widget = t.get(\"$widget\"), this.events = this.widget.events;\n }\n}\nconst at = (s, t, e, n) => {\n try {\n const i = new t(e, n);\n return {\n name: s,\n invoke: (r, o) => {\n let a;\n return i[r] && (a = i[r].call(i, o)), Promise.resolve(a);\n },\n getInstance: () => i\n };\n } catch (i) {\n if (i.message && i.message.indexOf(\"is not a constructor\") >= 0)\n return {\n name: s,\n invoke: (r) => {\n let o;\n return r === \"initialize\" && (o = t(e, n)), Promise.resolve(o);\n },\n getInstance: () => t\n };\n throw i;\n }\n};\nfunction j(s, t) {\n return typeof s == \"undefined\" ? t : s;\n}\nclass ct {\n constructor(t = {}) {\n this.part = t;\n }\n createCommand(t, e, n) {\n let i;\n typeof e == \"function\" ? i = {\n scope: k.Widget,\n stage: g.Post,\n defaultArgs: void 0,\n handlerResolver: e\n } : i = {\n scope: j(e.scope, k.Widget),\n stage: j(e.stage, g.Post),\n defaultArgs: e.defaultArgs,\n handlerResolver: n\n };\n let r = this.part;\n const o = t.split(\".\");\n return o.forEach((a, l) => {\n l === o.length - 1 ? r[a] || (r[a] = () => i) : r = this.part[a] = this.part[a] || {};\n }), this;\n }\n get() {\n return this.part;\n }\n}\nconst ht = (s) => {\n const t = new ct({});\n return s(t), t.get();\n}, lt = ht((s) => {\n s.createCommand(\n \"types.register\",\n { scope: k.Implementation, stage: g.Pre },\n (t) => (e, n) => {\n t.container.get(\"$types\")[e] = n;\n }\n ).createCommand(\n \"type\",\n { stage: g.Pre },\n (t) => (e) => {\n t.container.register(\"$type\", e);\n }\n ).createCommand(\n \"settings\",\n { stage: g.Pre, defaultArgs: [null] },\n (t) => (e) => {\n t.events.dispatch(\n \"settings:change\",\n e,\n { bubbles: !0 }\n ), t.container.register(\"$settings\", e);\n }\n ).createCommand(\n \"plugin\",\n { stage: g.Pre },\n (t) => (e, n, i) => {\n const { container: r } = t;\n let o = null, a = e, l = n;\n typeof e == \"string\" && (o = e, a = n, l = i);\n const h = (m) => {\n const { transformPluginSettings: y } = t.container.get(\"$environmentOptions\"), x = y ? y(\n l || {},\n o,\n t.container,\n a\n ) : n;\n try {\n const v = at(\n o,\n a,\n r,\n x\n );\n r.get(\"$plugins\").push(v), m && v.invoke(\"initialize\", null);\n } catch (v) {\n u(t).warn(\"Error when initializing plugin\", v);\n }\n };\n t.container.get(\"$instance\") ? h(!0) : t.events.subscribeOnce(\"widget:instance-created\", () => h(!1));\n }\n ).createCommand(\n \"container.register\",\n (t) => (e, n) => {\n t.container.register(e, n);\n }\n ).createCommand(\n \"container.registerAsync\",\n (t) => (e, n) => {\n t.container.registerAsync(e, n);\n }\n ).createCommand(\n \"container.registerFactory\",\n (t) => (e, n) => {\n t.container.registerFactory(e, n);\n }\n ).createCommand(\n \"container.touch\",\n (t) => (e, n) => {\n t.container.touch(e, n);\n }\n ).createCommand(\n \"csp\",\n {},\n (t) => (e) => {\n t.container.register(\"csp\", e);\n }\n );\n}), ut = lt;\nfunction dt(s, t, e = []) {\n const n = [ut].concat(e), i = ot(\n t,\n n\n );\n s(i, t);\n}\nclass pt {\n constructor() {\n this.tasks = [], this.current = Promise.resolve(), this.next = this.next.bind(this);\n }\n add(t, e, n, i) {\n this.tasks.push({ task: t, resolve: e, reject: n, done: i }), this.next();\n }\n next() {\n this.current = this.current.then(() => {\n const t = this.tasks.shift();\n if (t) {\n const e = Promise.resolve(t.task());\n return Promise.resolve(e).then(this.next).then(() => e.then((n) => {\n t.done(), t.resolve(n);\n })).catch((n) => (t.done(), t.reject(n), this.next()));\n }\n return Promise.resolve();\n });\n }\n}\nconst A = /* @__PURE__ */ new WeakMap();\nfunction vt(s) {\n return A.has(s) || A.set(s, new pt()), (t) => new Promise((e, n) => {\n const i = A.get(s);\n i.add(t, e, n, () => {\n i.tasks.length || A.delete(s);\n });\n });\n}\nconst U = (s) => typeof s != \"undefined\";\nvar ft = /* @__PURE__ */ ((s) => (s.Activating = \"activating\", s.Loading = \"loading\", s.Activated = \"activated\", s.Deactivating = \"deactivating\", s.Deactivated = \"deactivated\", s))(ft || {});\nconst $ = (s, t) => {\n s.events.dispatch(\"widget:state-change\", { state: t }, { bubbles: !0 }), s.state = t, s.events.dispatch(\"widget:state-changed\", {}, { bubbles: !0 });\n}, d = b(), gt = (s) => {\n const { container: t, events: e } = s;\n t.get(\"$controller\") || (t.register(\"$controller\", new Z(t)), e.dispatch(\"widget:controller-created\", {}, { bubbles: !0 }));\n};\nclass mt {\n /**\n * Creates a new `Widget` instance.\n * @param name Name of widget.\n * @param implementation The implementation this instance belongs to.\n * @param configuration Configuration for the widget.\n */\n constructor(t, e, n) {\n this.state = \"deactivated\", this.name = t, this.implementation = e, this.container = e.container.createChild(this, t), this.events = e.events.createChild(this), d(this).subscriptions = [], n && e.configure((i) => {\n const r = i(t);\n U(n.type) && r.type(n.type), U(n.settings) && r.settings(n.settings), n.plugins && Object.keys(n.plugins).forEach((o) => {\n var l;\n const a = (l = n.plugins) == null ? void 0 : l[o];\n r.plugin(o, a);\n });\n }), this.load = this.load.bind(this), this.activate = this.activate.bind(this), this.invoke = this.invoke.bind(this), this.deactivate = this.deactivate.bind(this);\n }\n /**\n * Initializes the widget, if not already initialized, and applies any\n * pending configuration.\n */\n load() {\n return vt(this)(() => {\n d(this).deactivatedPromise = null;\n const t = this.state === \"deactivated\";\n t && ($(\n this,\n \"activating\"\n /* Activating */\n ), this.container.register(\"$widget\", this), this.container.register(\"$controller\", null), this.container.register(\"$plugins\", []), this.container.register(\"$type\", null), this.container.register(\"$instance\", null)), $(\n this,\n \"loading\"\n /* Loading */\n );\n const e = this.implementation.instructions, n = V(e, g.Pre, this);\n return Promise.all(n.map((i) => i.handler(this))).then(() => {\n gt(this);\n const i = V(e, g.Post, this);\n return Promise.all(i.map((r) => r.handler(this))).then(() => {\n t && this.container.get(\"$controller\").initialize();\n });\n }).then(() => ($(\n this,\n \"activated\"\n /* Activated */\n ), this));\n });\n }\n /**\n * Activates the widget and makes it ready for receiving commands.\n * @param data Activation data\n */\n activate(t) {\n d(this).subscriptions.push(\n this.implementation.events.subscribe(\"implementation:configured\", () => {\n [\n \"activated\",\n \"activating\",\n \"loading\"\n /* Loading */\n ].indexOf(this.state) > -1 && this.load();\n })\n );\n const e = d(this).activatedPromise;\n return e ? (process.env.NODE_ENV !== \"production\" && u(this).warn(`Widget '${this.name}' has already been activated. The passed arguments for this activation will be discarded.`, t), e) : d(this).activatedPromise = this.load().then(() => this.container.get(\"$controller\").activate(t));\n }\n /**\n * Invokes a command on a widget. If the widget isn't activate the invocation \n * will be suspended until activation.\n * @param command Command to invoke.\n * @param args Command arguments.\n */\n invoke(t, ...e) {\n const n = d(this).activatedPromise, i = (r, ...o) => n.then(this.load).then(() => this.container.get(\"$controller\").invoke(r, ...o));\n return n ? i(t, ...e) : (process.env.NODE_ENV !== \"production\" && u(this).warn(\"You are invoking a command on a deactivated widget. The invocation will be queued until the widget is activated.\", this), new Promise((r) => {\n const o = this.events.subscribe(\"widget:state-changed\", () => {\n this.state === \"activated\" && (o(), r(i(t, ...e)));\n });\n }));\n }\n /**\n * Deactivates the widget by clearing the `Container` and removing any event subscriptions in the\n * `EventManager`.\n */\n deactivate() {\n const t = d(this).deactivatedPromise;\n return t || (this.state === \"deactivated\" ? Promise.resolve() : ($(\n this,\n \"deactivating\"\n /* Deactivating */\n ), d(this).deactivatedPromise = this.container.get(\"$controller\").deactivate().then(() => (d(this).activatedPromise = null, d(this).subscriptions.forEach((e) => e()), d(this).subscriptions = [], this.container.clear().then(() => {\n this.events.clear(), it(this), $(\n this,\n \"deactivated\"\n /* Deactivated */\n );\n })))));\n }\n}\nconst Pt = (s) => s.deactivate().then(() => {\n s.events.detach(), s.container.detach(), s.implementation.widgets.delete(s.name);\n});\nclass At {\n /**\n * Creates a new `Widget` instance.\n * @param container The `Container` instance to base the widget upon.\n */\n constructor(t) {\n this.container = t, this.widget = t.get(\"$widget\"), this.settings = t.get(\"$settings\"), this.events = this.widget.events, this.widget.events.subscribe(\"settings:change\", (e, n) => {\n this.settings = n;\n });\n }\n}\nconst Y = b();\nclass yt {\n /**\n * Creates a new Implementation instance.\n * @param configuration Configuration for the implementation.\n * @param environment The parent environment.\n * @param configurationApiExtensions Optional configuration API extensions.\n */\n constructor(t, e, n = []) {\n this.instructions = [], this.widgets = /* @__PURE__ */ new Map(), this.name = t.name, this.tenant = t.tenant, this.environment = e, this.container = e.container.createChild(this, this.name), this.events = e.events.createChild(this), this.container.register(\"$types\", {}), Y(this).configurationApiExtensions = n;\n }\n /**\n * Loads all widgets in the implementation.\n */\n load() {\n const t = Array.from(this.widgets.values());\n return Promise.all(t.map((e) => e.load())).then(() => t);\n }\n /**\n * Configures the implementation by adding a configuration callback.\n * @param configFn Callback function for configuration.\n */\n configure(t) {\n return dt(t, this, Y(this).configurationApiExtensions), this.events.dispatch(\n \"implementation:configured\",\n { implementation: this },\n { bubbles: !0 }\n ), this;\n }\n /**\n * Creates a widget on the implementation and returns its `WidgetData`.\n * @param name Widget name.\n * @param configuration Widget configuration.\n */\n createWidget(t, e) {\n const n = new mt(t, this, e);\n return this.widgets.set(n.name, n), n;\n }\n}\nfunction wt(s, t, e) {\n const n = new yt(s, t, e);\n return s.widgets && Object.keys(s.widgets).forEach((i) => {\n var o;\n const r = (o = s.widgets) == null ? void 0 : o[i];\n n.createWidget(i, r);\n }), n;\n}\nclass C {\n constructor(t, e) {\n this.selectorFactory = e, typeof t == \"function\" ? this.resolver = t : this.resolver = () => t;\n }\n append(t) {\n const e = typeof t == \"function\" ? t : () => t;\n return new C(\n () => this.all().concat(e()),\n this.selectorFactory\n );\n }\n all() {\n return this.resolver().concat([]);\n }\n query(t) {\n return this.all().filter(this.selectorFactory(t));\n }\n find(t) {\n const e = this.query(t);\n if (e.length)\n return e[0];\n }\n}\nconst S = \"#____version____#\";\nfunction Et(s, t) {\n const e = B.create(s);\n return Promise.all(\n (t || []).map((n) => Promise.resolve(n(e)))\n ).then(() => e);\n}\nconst N = b(), bt = (s) => s.tenant ? `${s.name}:${s.tenant}` : s.name, H = class {\n constructor(s, t = [], e = {}) {\n this.widgets = new C(\n () => {\n let n = [];\n return this.implementations.all().forEach((i) => {\n n = n.concat(Array.from(i.widgets.values()));\n }), n;\n },\n Q\n ), this.implementations = new C([], et), this.name = s, this.container = new W(this, s), this.events = new D(this), this.container.register(\"$version\", S), this.container.register(\"$environment\", this), this.container.register(\"$environmentOptions\", e), N(this).configurationApiExtensions = t;\n }\n /**\n * Creates an implementation based on the provided configuration.\n * @param config Implementation configuration.\n */\n createImplementation(s) {\n const t = bt(s);\n let e = this.implementations.find(t);\n if (e)\n return process.env.NODE_ENV !== \"production\" && u(e).warn(`Implementation \"${t}\" already exist on current environment.`), e;\n const n = N(this).configurationApiExtensions;\n return e = wt(\n s,\n this,\n n\n ), this.implementations = this.implementations.append([e]), this.events.dispatch(\"implementation:created\", { implementation: e }), e;\n }\n /**\n * Patches the Environment instance configuration.\n * @param configuration Environment configuration.\n */\n patch(s = {}) {\n const { name: t, configurationApiExtensions: e } = s;\n typeof t != \"undefined\" && t !== null && (this.name = t), e && e.forEach(\n (n) => {\n N(this).configurationApiExtensions.push(n);\n }\n );\n }\n /**\n * Creates a new Environment instance based on the provided configuration.\n * @param configuration Environment configuration.\n */\n static create(s = {}) {\n return new H(\n s.name || \"\",\n s.configurationApiExtensions,\n s.options\n );\n }\n};\nlet B = H;\nB.version = S;\nexport {\n k as ConfigurationScope,\n g as ConfigurationStage,\n W as Container,\n B as Environment,\n D as EventManager,\n L as EventObject,\n yt as Implementation,\n $t as Plugin,\n mt as Widget,\n Z as WidgetController,\n ft as WidgetState,\n At as WidgetType,\n ht as createConfigurationApi,\n Et as createEnvironment,\n Pt as destroy,\n Pt as destroyWidget,\n u as logger,\n et as selectImplementations,\n Q as selectWidgets,\n S as version\n};\n//# sourceMappingURL=index.js.map\n","var O = Object.getOwnPropertySymbols;\nvar L = Object.prototype.hasOwnProperty, B = Object.prototype.propertyIsEnumerable;\nvar x = (e, t) => {\n var o = {};\n for (var r in e)\n L.call(e, r) && t.indexOf(r) < 0 && (o[r] = e[r]);\n if (e != null && O)\n for (var r of O(e))\n t.indexOf(r) < 0 && B.call(e, r) && (o[r] = e[r]);\n return o;\n};\nfunction I(e) {\n const t = [];\n return e.forEach((o) => {\n t.indexOf(o) === -1 && t.push(o);\n }), t;\n}\nfunction k(e = \"\", t = \"\") {\n const o = e.split(\" \").concat(t.split(\" \"));\n return I(o).join(\" \").trim();\n}\nfunction U(e, t) {\n if (e) {\n if (typeof t == \"string\")\n return t;\n if (Array.isArray(t)) {\n let o = \"\";\n return t.forEach((r) => o = k(o, r)), o;\n }\n }\n}\nfunction X(...e) {\n let t = \"\";\n return e.length && e.forEach((o) => {\n typeof o == \"string\" ? t = k(t, o) : Array.isArray(o) ? t = k(t, U(...o)) : typeof o != \"undefined\" && o !== null && process.env.NODE_ENV !== \"production\" && p.warn(\n \"appendClassNames: arguments either haveto be a string or [boolean, ...string[]]. Passed args:\",\n ...e\n );\n }), t;\n}\nconst z = (e, t) => {\n let o, r = [];\n return (i) => (clearTimeout(o), new Promise((n, a) => {\n r.push([i, n, a]), o = setTimeout(() => {\n let f = t();\n r.forEach(([c, g, m]) => {\n f = c(f);\n }), r = [], n(f);\n }, e);\n }));\n}, tt = z;\nfunction T(e) {\n const t = {};\n if (typeof e == \"number\" || typeof e == \"string\")\n return e;\n for (const o in e)\n if (e.hasOwnProperty(o)) {\n const r = e[o], i = o.substring(0, 1).toLowerCase() + o.substring(1);\n if (Object.prototype.toString.call(r) === \"[object Array]\") {\n t[i] = [];\n for (let n = 0, a = r.length; n < a; n++)\n t[i].push(T(r[n]));\n } else\n r !== null && typeof r == \"object\" ? t[i] = T(r) : t[i] = r;\n }\n return t;\n}\nfunction N(e = {}) {\n const $ = e, {\n phrase: t = \"\",\n category: o,\n guideCategory: r,\n contactCategory: i,\n take: n,\n connectionKey: a,\n accordion: f,\n id: c,\n uriName: g,\n sorting: m,\n tag: u,\n tagId: l,\n tagTitle: h\n } = $, P = x($, [\n \"phrase\",\n \"category\",\n \"guideCategory\",\n \"contactCategory\",\n \"take\",\n \"connectionKey\",\n \"accordion\",\n \"id\",\n \"uriName\",\n \"sorting\",\n \"tag\",\n \"tagId\",\n \"tagTitle\"\n ]), s = {};\n return Object.keys(P).forEach((A) => {\n typeof e[A] == \"string\" && (s[A] = e[A]);\n }), typeof t == \"string\" && t.length && (s.phrase = t), t === null && (s.phrase = t), typeof r == \"string\" && r !== \"0\" && (s.guideCategory = r), typeof r == \"number\" && r !== 0 && (s.guideCategory = r), typeof r == \"object\" && r !== null && (typeof r.id == \"string\" && r.id !== \"0\" && (s.guideCategory = r.id), typeof r.id == \"number\" && r.id !== 0 && (s.guideCategory = r.id)), typeof i == \"string\" && i !== \"0\" && (s.contactCategory = i), typeof i == \"number\" && i !== 0 && (s.contactCategory = i), typeof i == \"object\" && i !== null && (typeof i.id == \"string\" && i.id !== \"0\" && (s.contactCategory = i.id), typeof i.id == \"number\" && i.id !== 0 && (s.contactCategory = i.id)), typeof o == \"string\" && o !== \"0\" && (s.category = o), typeof o == \"number\" && o !== 0 && (s.category = o), typeof o == \"object\" && o !== null && (typeof o.id == \"string\" && o.id !== \"0\" && (s.category = o.id), typeof o.id == \"number\" && o.id !== 0 && (s.category = o.id)), c && (s.id = c), g && (+s.category || +s.guideCategory || +s.guide || +s.contactCategory || +s.contactMethod) && (s.uriName = g), a && (s.connectionKey = a), n && (s.take = n), m && (s.sorting = m), typeof f == \"string\" && f.length > 0 && (s.accordion = f), typeof u == \"string\" && u !== \"0\" && (s.tag = u), typeof u == \"number\" && u !== 0 && (s.tag = u), Array.isArray(u) && u.length && (s.tag = u), (typeof l == \"string\" || typeof l == \"number\") && (s.tagId = l), typeof h == \"string\" && (s.tagTitle = h), typeof s.tag == \"string\" && (s.tag = s.tag.split(\",\")), s;\n}\nfunction* q(e) {\n if (e)\n for (let t = 0; t < e.length; t++) {\n const o = e[t];\n yield o, o.items && (yield* q(o.items));\n }\n}\nconst V = (e, t) => {\n const o = q(t);\n let r = o.next(), i = null;\n for (; !r.done; )\n r.value.id === e && (i = r.value), r = o.next();\n return i;\n}, W = V, M = (e) => {\n if (!e)\n return \"\";\n const t = [\n { from: /[äæǽ]+/gi, to: \"ae\" },\n { from: /[öœ]+/gi, to: \"oe\" },\n { from: /[ü]+/gi, to: \"ue\" },\n { from: /[Ä]+/gi, to: \"Ae\" },\n { from: /[Ü]+/gi, to: \"Ue\" },\n { from: /[Ö]+/gi, to: \"Oe\" },\n { from: /[ÀÁÂÃÄÅǺĀĂĄǍΑΆẢẠẦẪẨẬẰẮẴẲẶА]+/gi, to: \"A\" },\n { from: /[àáâãåǻāăąǎªαάảạầấẫẩậằắẵẳặа]+/gi, to: \"a\" },\n { from: /[Б]+/gi, to: \"B\" },\n { from: /[б]+/gi, to: \"b\" },\n { from: /[ÇĆĈĊČ]+/gi, to: \"C\" },\n { from: /[çćĉċč]+/gi, to: \"c\" },\n { from: /[Д]+/gi, to: \"D\" },\n { from: /[д]+/gi, to: \"d\" },\n { from: /[ÐĎĐΔ]+/gi, to: \"Dj\" },\n { from: /[ðďđδ]+/gi, to: \"dj\" },\n { from: /[ÈÉÊËĒĔĖĘĚΕΈẼẺẸỀẾỄỂỆЕЭ]+/gi, to: \"E\" },\n { from: /[èéêëēĕėęěέεẽẻẹềếễểệеэ]+/gi, to: \"e\" },\n { from: /[Ф]+/gi, to: \"F\" },\n { from: /[ф]+/gi, to: \"f\" },\n { from: /[ĜĞĠĢΓГҐ]+/gi, to: \"G\" },\n { from: /[ĝğġģγгґ]+/gi, to: \"g\" },\n { from: /[ĤĦ]+/gi, to: \"H\" },\n { from: /[ĥħ]+/gi, to: \"h\" },\n { from: /[ÌÍÎÏĨĪĬǏĮİΗΉΊΙΪỈỊИЫ]+/gi, to: \"I\" },\n { from: /[ìíîïĩīĭǐįıηήίιϊỉịиыї]+/gi, to: \"i\" },\n { from: /[Ĵ]+/gi, to: \"J\" },\n { from: /[ĵ]+/gi, to: \"j\" },\n { from: /[ĶΚК]+/gi, to: \"K\" },\n { from: /[ķκк]+/gi, to: \"k\" },\n { from: /[ĹĻĽĿŁΛЛ]+/gi, to: \"L\" },\n { from: /[ĺļľŀłλл]+/gi, to: \"l\" },\n { from: /[М]+/gi, to: \"M\" },\n { from: /[м]+/gi, to: \"m\" },\n { from: /[ÑŃŅŇΝН]+/gi, to: \"N\" },\n { from: /[ñńņňʼnνн]+/gi, to: \"n\" },\n { from: /[ÒÓÔÕŌŎǑŐƠØǾΟΌΩΏỎỌỒỐỖỔỘỜỚỠỞỢО]+/gi, to: \"O\" },\n { from: /[òóôõōŏǒőơøǿºοόωώỏọồốỗổộờớỡởợо]+/gi, to: \"o\" },\n { from: /[П]+/gi, to: \"P\" },\n { from: /[п]+/gi, to: \"p\" },\n { from: /[ŔŖŘΡР]+/gi, to: \"R\" },\n { from: /[ŕŗřρр]+/gi, to: \"r\" },\n { from: /[ŚŜŞȘŠΣС]+/gi, to: \"S\" },\n { from: /[śŝşșšſσςс]+/gi, to: \"s\" },\n { from: /[ȚŢŤŦτТ]+/gi, to: \"T\" },\n { from: /[țţťŧт]+/gi, to: \"t\" },\n { from: /[ÙÚÛŨŪŬŮŰŲƯǓǕǗǙǛŨỦỤỪỨỮỬỰУ]+/gi, to: \"U\" },\n { from: /[ùúûũūŭůűųưǔǖǘǚǜυύϋủụừứữửựу]+/gi, to: \"u\" },\n { from: /[ÝŸŶΥΎΫỲỸỶỴЙ]+/gi, to: \"Y\" },\n { from: /[ýÿŷỳỹỷỵй]+/gi, to: \"y\" },\n { from: /[В]+/gi, to: \"V\" },\n { from: /[в]+/gi, to: \"v\" },\n { from: /[Ŵ]+/gi, to: \"W\" },\n { from: /[ŵ]+/gi, to: \"w\" },\n { from: /[ŹŻŽΖЗ]+/gi, to: \"Z\" },\n { from: /[źżžζз]+/gi, to: \"z\" },\n { from: /[ÆǼ]+/gi, to: \"AE\" },\n { from: /[ß]+/gi, to: \"ss\" },\n { from: /[IJ]+/gi, to: \"IJ\" },\n { from: /[ij]+/gi, to: \"ij\" },\n { from: /[Œ]+/gi, to: \"OE\" },\n { from: /[ƒ]+/gi, to: \"f\" },\n { from: /[ξ]+/gi, to: \"ks\" },\n { from: /[π]+/gi, to: \"p\" },\n { from: /[β]+/gi, to: \"v\" },\n { from: /[μ]+/gi, to: \"m\" },\n { from: /[ψ]+/gi, to: \"ps\" },\n { from: /[Ё]+/gi, to: \"Yo\" },\n { from: /[ё]+/gi, to: \"yo\" },\n { from: /[Є]+/gi, to: \"Ye\" },\n { from: /[є]+/gi, to: \"ye\" },\n { from: /[Ї]+/gi, to: \"Yi\" },\n { from: /[Ж]+/gi, to: \"Zh\" },\n { from: /[ж]+/gi, to: \"zh\" },\n { from: /[Х]+/gi, to: \"Kh\" },\n { from: /[х]+/gi, to: \"kh\" },\n { from: /[Ц]+/gi, to: \"Ts\" },\n { from: /[ц]+/gi, to: \"ts\" },\n { from: /[Ч]+/gi, to: \"Ch\" },\n { from: /[ч]+/gi, to: \"ch\" },\n { from: /[Ш]+/gi, to: \"Sh\" },\n { from: /[ш]+/gi, to: \"sh\" },\n { from: /[Щ]+/gi, to: \"Shch\" },\n { from: /[щ]+/gi, to: \"shch\" },\n { from: /[ЪъЬь]+/gi, to: \"\" },\n { from: /[Ю]+/gi, to: \"Yu\" },\n { from: /[ю]+/gi, to: \"yu\" },\n { from: /[Я]+/gi, to: \"Ya\" },\n { from: /[я]+/gi, to: \"ya\" }\n ], o = /[^a-zA-Z0-9]+/g, r = /[-]$/;\n let i = e;\n for (const n in t)\n t.hasOwnProperty(n) && t[n].from.test(e) && (i = i.replace(t[n].from, t[n].to));\n return i = i.replace(o, \"-\"), i = i.replace(r, \"\"), i = i.toLowerCase(), i || \"humany\";\n}, E = M;\nfunction S(e, t = {}, o) {\n return e.forEach((r) => {\n o && (t[+r.id] = o), r.items && S(r.items, t, r.id);\n }), t;\n}\nfunction Y(e, t, o = [e], r = S(t)) {\n const i = (a) => {\n const f = r[+a];\n f && (o.unshift(f), i(f));\n }, n = r[+e];\n return n && (o.unshift(n), i(n)), o;\n}\nconst F = (e, t) => typeof e == \"undefined\" || typeof t == \"undefined\" ? /* @__PURE__ */ new Map() : new Map(\n e.map((o) => {\n const r = W(o, t);\n return [o, r];\n })\n), et = (e, t, o, r = \"guide-categories\") => o.getAsync(\"dataClient\").then((i) => i.fetch(r, { expandCategories: \"descendants\" }).then(({ categories: n }) => {\n const a = (f) => {\n const c = Y(f, n), g = F(c, n), m = [];\n return c.forEach((u) => {\n const l = g.get(u);\n l && m.push({\n routeName: e,\n title: l.title,\n symbol: l.symbol,\n id: l.id,\n routeParams: N(r === \"contact-method-categories\" ? {\n contactCategory: l.id,\n uriName: E(l.title)\n } : {\n guideCategory: l.id,\n uriName: E(l.title)\n })\n });\n }), m;\n };\n return Array.isArray(t) ? t.reduce((f, c) => {\n const g = a(c);\n return g.length > 0 && f.push(g), f;\n }, []) : a(t);\n})), K = (e) => {\n let t, o;\n e.split(\",\")[0].indexOf(\"base64\") !== -1 ? t = atob(e.split(\",\")[1]) : t = decodeURI(e.split(\",\")[1]), o = e.split(\",\")[0].split(\":\")[1].split(\";\")[0];\n const r = [];\n for (let i = 0; i < t.length; i++)\n r[i] = t.charCodeAt(i);\n return new Blob([new Uint8Array(r)], { type: o });\n}, ot = K;\nfunction rt(...e) {\n return process.env.NODE_ENV !== \"production\" && console && console.warn(...e);\n}\nconst C = (e, t, ...o) => typeof t == \"string\" ? e(`[humany] ${t}`, ...o) : e(t, ...o), y = class {\n constructor() {\n this.keys = [], this.log = (e, ...t) => this.lookup(e, () => y.log(...t)), this.warn = (e, ...t) => this.lookup(e, () => y.warn(...t)), this.error = (e, ...t) => this.lookup(e, () => y.error(...t)), this.info = (e, ...t) => this.lookup(e, () => y.info(...t));\n }\n lookup(e, t) {\n this.keys.indexOf(e) === -1 && (this.keys.push(e), t());\n }\n};\nlet p = y;\np.log = (...e) => C(console.log, ...e);\np.warn = (...e) => C(console.warn, ...e);\np.error = (...e) => C(console.error, ...e);\np.info = (...e) => C(console.info, ...e);\nconst D = (e) => {\n let t = {}, o, r;\n if (typeof e != \"object\" || e === null)\n return e;\n t = Array.isArray(e) ? [] : {};\n for (r in e)\n o = e[r], t[r] = typeof o == \"object\" && o !== null ? D(o) : o;\n return t;\n}, j = D, it = (e) => {\n if (!e)\n return null;\n const t = localStorage.getItem(\n `humany_${_(e.tenant + e.name)}`\n );\n if (t) {\n const { activeStickyWidget: o } = JSON.parse(t);\n if (o && o.value && e.widgets.get(o.value)) {\n const i = document.createElement(\"a\");\n i.setAttribute(\n \"href\",\n `//${e.bindings[0]}/${o.value}`\n ), document.body.appendChild(i);\n }\n }\n}, nt = (e, t = !1) => {\n const o = new Date(e);\n let r = `${o.getMonth() + 1}`, i = `${o.getDate()}`;\n const n = o.getFullYear();\n if (r.length < 2 && (r = `0${r}`), i.length < 2 && (i = `0${i}`), t) {\n let a = `${o.getHours()}`, f = `${o.getMinutes()}`;\n return a.length < 2 && (a = `0${a}`), f.length < 2 && (f = `0${f}`), `${[n, r, i].join(\"-\")} ${[a, f].join(\":\")}`;\n }\n return [n, r, i].join(\"-\");\n};\nfunction st(e) {\n const t = document.cookie;\n if (t.length > 0) {\n let o = t.indexOf(`${e}=`);\n if (o !== -1) {\n o = o + e.length + 1;\n let r = t.indexOf(\";\", o);\n return r === -1 && (r = t.length), unescape(t.substring(o, r));\n }\n }\n return null;\n}\nfunction _(e) {\n let t = 0;\n if (e.length === 0)\n return t.toString();\n for (let o = 0; o < e.length; o++) {\n const r = e.charCodeAt(o);\n t = (t << 5) - t + r, t = t & t;\n }\n return t.toString();\n}\nconst ft = (e, t) => {\n if (!e || !t)\n return !0;\n let o = t.parentNode, r = !1;\n for (; o !== null; )\n o === e && (r = !0), o = o.parentNode;\n return r;\n};\nfunction at(e) {\n return e.replace(/([a-z])([A-Z])/g, \"$1-$2\").replace(/\\s+/g, \"-\").toLowerCase();\n}\nclass Z {\n constructor(t, o) {\n this.lockWarningTime = t, this.lockErrorTime = o, this.tasks = [], this.current = Promise.resolve(), this.next = this.next.bind(this);\n }\n add(t, o, r, i) {\n this.tasks.push({ task: t, resolve: o, reject: r, done: i }), this.next();\n }\n next() {\n this.current = this.current.then(() => {\n const t = this.tasks.shift();\n if (t) {\n let o;\n const r = setTimeout(() => {\n process.env.NODE_ENV !== \"production\" && p.warn(\n `A lock has exceeded ${this.lockWarningTime} ms. Waiting additional ${this.lockErrorTime} ms before rejecting the task.`,\n t\n ), o = setTimeout(() => {\n t.reject(\"lock timeout exceeded\");\n }, this.lockErrorTime);\n }, this.lockWarningTime), i = Promise.resolve(t.task()).then((n) => (clearTimeout(r), clearTimeout(o), n));\n return Promise.resolve(i).then(this.next).then(\n () => i.then((n) => {\n t.done(), t.resolve(n);\n })\n ).catch((n) => (t.done(), t.reject(n), this.next()));\n }\n return Promise.resolve();\n });\n }\n}\nconst b = /* @__PURE__ */ new WeakMap();\nfunction ct(e, t = 5e3, o = 1e3) {\n return b.has(e) || b.set(e, new Z(t, o)), (r) => new Promise((i, n) => {\n const a = b.get(e);\n a.add(r, i, n, () => {\n a.tasks.length || b.delete(e);\n });\n });\n}\nconst v = (e) => !!e && typeof e == \"object\" && !Array.isArray(e), J = (e, ...t) => {\n const o = j(e), r = j(t);\n return w(o, ...r);\n}, w = (e, ...t) => {\n if (!t.length)\n return e;\n const o = t.shift();\n if (v(e) && v(o))\n for (const r in o)\n v(o[r]) ? (e[r] || Object.assign(e, { [r]: {} }), w(e[r], o[r])) : Object.assign(e, { [r]: o[r] });\n return w(e, ...t);\n}, ut = J, Q = (e, t) => {\n const o = () => t.querySelectorAll(\"[data-loading=true]\").length > 0, i = (() => {\n let a = !1;\n return () => {\n if (a)\n return;\n e.get(\"$widget\").events.dispatch(\"widget:data-loaded\", {\n element: t\n }), a = !0;\n };\n })();\n if (!o())\n return i();\n new MutationObserver((a, f) => {\n a.find(\n (g) => g.type === \"attributes\" && g.attributeName === \"data-loading\"\n ) && !o() && (f.disconnect(), i());\n }).observe(t, {\n attributes: !0,\n childList: !0,\n subtree: !0\n });\n}, R = (e, t) => {\n e.get(\"$widget\").container.getAsync(\"components\").then((r) => {\n r.events.subscribeOnce(\"components:component-model-initialized\", () => {\n let i = r.nodes.visible.reduce(\n (f, c) => (!c.name || !c.type || c.type === \"view\" || c.type === \"root\" || c.attributes.layout.size === \"none\" || t.querySelector(`[data-name=\"${c.name}\"]`) || f.push(c.name), f),\n []\n ), n = !1;\n new MutationObserver((f, c) => {\n f.forEach((g) => {\n if (g.addedNodes) {\n const m = Array.from(\n g.addedNodes\n ).reduce((u, l) => {\n const h = l.getAttribute && l.getAttribute(\"data-name\");\n return h && i.indexOf(h) > -1 && u.push(h), u;\n }, []);\n i = i.filter((u) => m.indexOf(u) === -1), !n && i.length === 0 && (n = !0, Q(e, t), c.disconnect());\n }\n });\n }).observe(t, {\n attributes: !1,\n characterData: !1,\n childList: !0,\n subtree: !0,\n attributeOldValue: !1,\n characterDataOldValue: !1\n });\n });\n });\n}, lt = R, H = (e = {}) => (Object.keys(e).forEach((t) => {\n (e[t] === null || typeof e[t] == \"undefined\") && delete e[t];\n}), e), gt = H;\nfunction mt(e, t, o) {\n let r = \"\";\n if (o) {\n const i = /* @__PURE__ */ new Date();\n i.setTime(i.getTime() + o * 24 * 60 * 60 * 1e3), r = `; expires=${i.toUTCString()}`;\n }\n document.cookie = `${e}=${t}${r}; path=/`;\n}\nconst dt = (e, t) => {\n let o = !0;\n return Object.keys(e).length !== Object.keys(t).length || Object.keys(e).some((i) => !Object.keys(t).some((a) => i === a)) ? !1 : (Object.keys(e).forEach((i) => {\n if (o) {\n const n = typeof e[i] == \"undefined\" ? \"\" : e[i], a = typeof t[i] == \"undefined\" ? \"\" : t[i];\n o = n.toString() === a.toString();\n }\n }), o);\n}, d = () => Math.floor((1 + Math.random()) * 65536).toString(16).substring(1);\nfunction ht() {\n return d() + d() + \"-\" + d() + \"-\" + d() + \"-\" + d() + \"-\" + d() + d() + d();\n}\nclass pt {\n constructor(t) {\n this.queue = [], this.queueAttemptCalls = 0, this.callCount = 5, this.add = (o) => {\n this.queue.push(o), this.queueAttempt = setInterval(this.processQueue, 1e3);\n }, this.processQueue = () => {\n if (this.queue.length > 0) {\n const o = [];\n this.queue.forEach((r, i) => {\n const n = r();\n typeof n == \"function\" && (n(), o.push(i));\n }), this.queue = this.queue.filter((r, i) => !(o.indexOf(i) > -1)), this.queueAttempt && clearInterval(this.queueAttempt);\n }\n this.queueAttemptCalls > this.callCount && (clearInterval(this.queueAttempt), this.queueAttemptCalls = 0), this.queueAttemptCalls = this.queueAttemptCalls + 1;\n }, t && t.callCount && (this.callCount = t.callCount);\n }\n}\nexport {\n p as Logger,\n pt as WaitFor,\n X as appendClassNames,\n et as buildCategoryTrail,\n T as camilize,\n Y as categoryTrail,\n tt as createBatch,\n N as createParams,\n ot as dataURItoBlob,\n rt as debugLog,\n j as deepClone,\n it as findAndActivateStoredWidgets,\n W as findCategoryById,\n nt as formatDate,\n E as formatUrl,\n F as getCategoryTrailAsObjects,\n st as getCookie,\n _ as hash,\n ft as htmlParentContains,\n at as kebabCase,\n ct as lock,\n ut as mergeDeep,\n lt as notifyDataLoaded,\n gt as removeNullAndUndefinedValues,\n mt as setCookie,\n dt as shallowCompare,\n ht as uuid\n};\n//# sourceMappingURL=index.js.map\n","var V = Object.defineProperty, j = Object.defineProperties;\nvar q = Object.getOwnPropertyDescriptors;\nvar D = Object.getOwnPropertySymbols;\nvar z = Object.prototype.hasOwnProperty, Q = Object.prototype.propertyIsEnumerable;\nvar S = (s, t, e) => t in s ? V(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e, y = (s, t) => {\n for (var e in t || (t = {}))\n z.call(t, e) && S(s, e, t[e]);\n if (D)\n for (var e of D(t))\n Q.call(t, e) && S(s, e, t[e]);\n return s;\n}, _ = (s, t) => j(s, q(t));\nimport { bootstrapImplementation as F, ConfigurationApi as G } from \"@webprovisions/bootstrapping\";\nimport { selectImplementations as K, createConfigurationApi as U, version as W, Environment as Y, Implementation as J, Plugin as X, WidgetType as Z } from \"@webprovisions/platform\";\nimport { uuid as O, Logger as N } from \"@telia-ace/widget-utilities\";\nclass yt {\n constructor(t) {\n const { events: e } = t.get(\"$widget\");\n this.events = e.createChild(this);\n }\n action(t, e, n) {\n this.events.dispatch(\"data:action\", { action: e, value: n, target: t }, { bubbles: !0 });\n }\n subscribe(t, e) {\n return this.events.subscribe(\n \"data:action\",\n (n, { action: i, value: r, target: c }) => t === c && e(t, i, r)\n );\n }\n}\nconst xt = (s, t, e = {}) => F(\n s,\n s.bindings,\n () => {\n const n = s.container.get(\"$runtimecfg\").map((i) => {\n const r = i[0];\n if (typeof r == \"function\")\n return r;\n if (K(r)(s))\n return i[1];\n }).filter((i) => !!i);\n return (t ? [t] : []).concat(n);\n },\n e.rootElementResolver || (() => document.body)\n), tt = (s) => {\n const t = [];\n return [\n (n, i) => {\n t.push(s.subscribe(n, i));\n },\n () => {\n t.forEach((n) => {\n n();\n });\n }\n ];\n};\nclass P {\n constructor(t, e = []) {\n this.platform = t, this.rules = e;\n }\n match(t) {\n return this.rules.every((e) => !(e.id && e.id !== t.id || e.type && e.type !== t.type));\n }\n ofType(t) {\n return this.rules.push({ type: t }), this;\n }\n withId(t) {\n return this.rules.push({ id: t }), this;\n }\n select() {\n return new et(this.platform, this);\n }\n}\nclass H {\n constructor(t, e, n) {\n this.platform = t, this.node = e, this.actions = new k(\n t,\n new P(t).withId(e.id),\n n\n );\n const [i, r] = tt(this.platform.events);\n this.subscribe = i, this.unsubscribe = r;\n }\n properties(t) {\n return t && this.node.touchProperties((e) => t(e)), this.node.attributes.properties;\n }\n context(t) {\n return t && this.subscribe(\"components:context-changed\", (e, { node: n }) => {\n n === this.node && t(this.node.attributes.context);\n }), this.node.attributes.context;\n }\n layout(t) {\n return t && this.subscribe(\"components:layout-changed\", (e, { node: n }) => {\n n === this.node && t(this.node.attributes.layout);\n }), this.node.attributes.layout;\n }\n writeProperties(t, e) {\n this.node.writeProperties(t, e);\n }\n writeContext(t, e) {\n this.node.writeProperties(t, e);\n }\n writeLayout(t, e) {\n this.node.writeLayout(t, e);\n }\n dispose() {\n this.unsubscribe(), this.actions.dispose();\n }\n}\nclass et {\n constructor(t, e, n = !0) {\n this.platform = t, this.target = e, this.clearOnDispose = n, this.removes = [], this.actions = new k(this.platform, this.target);\n }\n writeProperties(t, e) {\n this.removes.push(\n this.platform.write({\n options: e,\n attributes: { properties: t },\n target: this.target,\n removable: this.clearOnDispose\n })\n );\n }\n writeContext(t, e) {\n this.removes.push(\n this.platform.write({\n options: e,\n attributes: { context: t },\n target: this.target,\n removable: this.clearOnDispose\n })\n );\n }\n writeLayout(t, e) {\n this.removes.push(\n this.platform.write({\n options: e,\n attributes: { layout: t },\n target: this.target,\n removable: this.clearOnDispose\n })\n );\n }\n dispose() {\n this.removes.forEach((t) => {\n t();\n }), this.actions.dispose();\n }\n}\nconst st = (s, t, e) => {\n const n = s.concat(), i = (r, c, a) => {\n let u = !0;\n if (n.length) {\n const h = n.shift(), o = (p, l) => (u = !1, i(p, Object.assign({}, c, l), a));\n return Promise.resolve(h(r, o, a)).then((p) => _(y({}, p), {\n cancelled: u\n }));\n }\n return Promise.resolve({ data: r, cancelled: !1, options: c });\n };\n return i(t, {}, e);\n};\nclass k {\n constructor(t, e, n) {\n this.platform = t, this.target = e, this.ns = n, this.subscriptions = [], this.create = this.create.bind(this);\n }\n create(t, e = () => {\n }) {\n const n = {\n key: t,\n fn: e,\n target: this.target,\n ns: this.ns\n };\n this.platform.actionsState.handlers.push(n);\n const i = () => {\n const r = this.platform.actionsState.handlers.indexOf(n);\n r > -1 && this.platform.actionsState.handlers.splice(r, 1);\n };\n return this.subscriptions.push(i), i;\n }\n dispatch(t, e) {\n const n = this.platform.nodes.all.concat(\n this.platform.nodes.detached\n ), i = {}, r = this.platform.actionsState.handlers.filter(\n (c) => c.key === t && (!c.ns || !this.ns || c.ns === this.ns)\n );\n return Promise.all(\n r.map((c) => {\n const a = n.filter(\n (h) => c.target.match(h) && this.target.match(h)\n ), u = this.platform.actionsState.watchers.filter((h) => h.key === t && (!h.ns || !this.ns || h.ns === this.ns) && a.some((o) => h.target.match(o))).map((h) => h.fn);\n return Promise.all(\n a.map((h) => {\n const o = new H(\n this.platform,\n h,\n this.ns\n );\n return st(u, e, o).then((p) => {\n const { data: l = {}, options: d, cancelled: b } = p;\n return Promise.resolve(\n b ? {} : c.fn(l, d, o)\n ).then((g) => {\n i[h.id] = g;\n });\n });\n })\n );\n })\n ).then(() => i);\n }\n watch(t, e) {\n let n = t, i = this.ns;\n const r = t.split(\".\");\n r.length > 1 && (i = r[0], n = r.splice(1).join(\".\"));\n const c = {\n fn: e,\n target: this.target,\n key: n,\n ns: i\n };\n this.platform.actionsState.watchers.push(c);\n const a = () => {\n const u = this.platform.actionsState.watchers.indexOf(c);\n u > -1 && this.platform.actionsState.watchers.splice(u, 1);\n };\n return this.subscriptions.push(a), a;\n }\n dispose() {\n this.subscriptions.forEach((t) => t());\n }\n}\nconst wt = U((s) => {\n s.createCommand(\"components\", (t) => (e) => {\n t.events.subscribeOnce(\"components:platform-created\", (n, { platform: i }) => {\n e.handlers && e.handlers.forEach(([r, c]) => {\n i.addComponentHandler(r, c);\n });\n });\n });\n});\nclass L {\n constructor(t, e) {\n this.events = t, this.tags = [], this.children = {}, this.changesets = [], this.mountCount = 0, this.id = O(), this.type = e, this.attributes = {\n context: {},\n properties: {},\n layout: {},\n tags: []\n }, this.writeLayout({ size: \"full\", indent: 0 });\n }\n mount(t, e) {\n let n = t.get(\"mounted-nodes\");\n return n || (n = /* @__PURE__ */ new Map(), t.register(\"mounted-nodes\", n)), n.has(this) ? (process.env.NODE_ENV !== \"production\" && N.error(\"Trying to mount an already mounted component node.\", this), () => {\n }) : (this.events.dispatch(\"components:node-mounted\", { node: this }), this.mountCount === 0 && (this.mountCount = this.mountCount + 1, this.events.dispatch(\"components:node-enter\", { node: this })), () => {\n n.delete(this), this.events.dispatch(\"components:node-unmounted\", { node: this }), this.mountCount = this.mountCount - 1, this.mountCount === 0 && this.events.dispatch(\"components:node-exit\", { node: this });\n });\n }\n appendChild(t, e = \"default\") {\n if (t.parent) {\n if (t.parent === this)\n return;\n t.parent.removeChild(t);\n }\n t.parent = this, this.children[e] || (this.children[e] = []), this.children[e].push(t), this.events.dispatch(\"components:node-appended\", { node: t });\n }\n prependChild(t, e = \"default\") {\n if (t.parent) {\n if (t.parent === this)\n return;\n t.parent.removeChild(t);\n }\n t.parent = this, this.children[e] || (this.children[e] = []), this.children[e].unshift(t), this.events.dispatch(\"components:node-appended\", { node: t });\n }\n touchProperties(t, e = {}, n) {\n const r = [{ properties: t }, e];\n return this.changesets.push(r), this.events.dispatch(\"components:set-properties\", { node: this }), () => {\n if (n) {\n const c = this.changesets.indexOf(r);\n c > -1 && (this.changesets.splice(c, 1), this.events.dispatch(\"components:set-properties\", { node: this }));\n }\n };\n }\n writeProperties(t, e = {}, n) {\n const r = [{ properties: t }, e];\n return this.changesets.push(r), this.events.dispatch(\"components:set-properties\", { node: this }), () => {\n if (n) {\n const c = this.changesets.indexOf(r);\n c > -1 && (this.changesets.splice(c, 1), this.events.dispatch(\"components:set-properties\", { node: this }));\n }\n };\n }\n writeLayout(t, e = {}, n) {\n const r = [{ layout: t }, e];\n return this.changesets.push(r), this.events.dispatch(\"components:set-layout\", { node: this }), () => {\n if (!n)\n return;\n const c = this.changesets.indexOf(r);\n c > -1 && (this.changesets.splice(c, 1), this.events.dispatch(\"components:set-layout\", { node: this }));\n };\n }\n writeContext(t, e = {}, n) {\n const r = [{ context: t }, e];\n return this.changesets.push(r), this.events.dispatch(\"components:set-context\", { node: this }), () => {\n if (!n)\n return;\n const c = this.changesets.indexOf(r);\n c > -1 && (this.changesets.splice(c, 1), this.events.dispatch(\"components:set-context\", { node: this }));\n };\n }\n getChildren(t = \"default\") {\n const e = this.children[t] || [];\n return e.reduce((n, i, r) => {\n const { order: c = r } = i.attributes.layout;\n return n[c] ? n.splice(c, 0, i) : n[c] = i, n;\n }, Array(e.length));\n }\n remove() {\n this.parent && this.parent.removeChild(this);\n }\n removeChild(t) {\n Object.keys(this.children).forEach((e) => {\n const n = this.children[e], i = n.indexOf(t);\n i > -1 && (n.splice(i, 1), this.events.dispatch(\"components:node-removed\", { node: t, parentNode: this }));\n }), delete t.parent;\n }\n}\nconst B = (s, t, e) => {\n for (let n = 0, i = s.length; n < i && e(s[n]) !== !0; n++) {\n const r = t[s[n].id] || \"default\", c = s[n].getChildren(r);\n B(c, t, e);\n }\n}, $ = (s, t, e) => {\n if (e(s) !== !0) {\n const n = t[s.id] || \"default\", i = s.children[n];\n B(i, t, e);\n }\n}, w = (s, t) => {\n const e = [];\n return $(s, t, (n) => {\n e.push(n);\n }), e;\n}, nt = (s, t, e) => {\n let n;\n return $(s, t, (i) => {\n if (e(i))\n return n = i, !0;\n }), n;\n};\nclass it {\n constructor(t, e, n) {\n this.root = t, this.switches = e, this.all = [], this.visible = [], this.detached = [], n.subscribe(\"components:node-appended\", (i, r) => {\n this.all.push(r.node), this.visible = w(t, e);\n }), n.subscribe(\"components:node-removed\", (i, r) => {\n let c = this.all.indexOf(r.node);\n c > -1 && this.all.splice(c, 1), c = this.visible.indexOf(r.node), c > -1 && this.visible.splice(c, 1), this.visible = w(t, e);\n }), n.subscribe(\"components:node-switched\", (i, r) => {\n this.visible = w(t, e);\n });\n }\n query(t = {}) {\n const e = [];\n return $(this.root, this.switches, (n) => {\n Object.keys(t).every((r) => t[r] === n[r]) && e.push(n);\n }), e;\n }\n get(t) {\n return nt(this.root, this.switches, (e) => e.id === t) || this.detached.find((e) => e.id === t);\n }\n}\nclass ot {\n constructor() {\n this.handlers = /* @__PURE__ */ new Map();\n }\n add(t, e) {\n this.handlers.set(t, e);\n }\n get(t) {\n return this.handlers.get(t);\n }\n}\nconst rt = (s) => {\n let t = s, e = 0;\n for (; t.parent; )\n e = e + 1, t = t.parent;\n return e;\n}, ct = (s) => s.map(([e, n]) => [rt(e), e, n]).sort(([e], [n]) => e - n).map(([, e, n]) => [e, n]), C = (s) => s instanceof Date ? !1 : s && typeof s == \"object\" && !Array.isArray(s), v = (s, ...t) => {\n if (!t.length)\n return s;\n const e = t.shift();\n if (C(s) && C(e))\n for (const n in e)\n C(e[n]) ? (s[n] || Object.assign(s, { [n]: {} }), v(s[n], e[n])) : Object.assign(s, { [n]: e[n] });\n return v(s, ...t);\n}, ht = (s, t) => !s || s === \"all\" ? !0 : s.some((e) => t.indexOf(e) > -1), at = (s, t) => {\n let e = [], n = [], i;\n const r = () => {\n process.env.NODE_ENV !== \"production\" && console.time(\"state-processor.flush\");\n const a = /* @__PURE__ */ new Map(), u = ct(e.map((o, p) => [o, n[p]])), h = (o, p) => {\n var I;\n const l = a.get(o) || {}, d = p.context && !l.context, b = p.properties && !l.properties, g = p.layout && !l.layout;\n a.set(o, {\n context: l.context || d,\n properties: l.properties || b,\n layout: l.layout || g\n }), b && (o.attributes.properties = {}), g && (o.attributes.layout = {}), d && (o.attributes.context = v({}, (I = o.parent) == null ? void 0 : I.attributes.context));\n const R = [], A = [], T = [];\n if (o.changesets.forEach((f) => {\n const [m, x] = f;\n ht(x.breakpoints, s.breakpoints) && (b && (typeof m.properties == \"function\" ? R.push(\n m.properties\n ) : v(o.attributes.properties, m.properties)), g && (typeof m.layout == \"function\" ? A.push(m.layout) : v(o.attributes.layout, m.layout)), d && (typeof m.context == \"function\" ? T.push(m.context) : v(o.attributes.context, m.context)));\n }), R.forEach((f) => {\n v(o.attributes.properties, f(o.attributes.properties));\n }), A.forEach((f) => {\n v(o.attributes.layout, f(o.attributes.layout));\n }), T.forEach((f) => {\n v(o.attributes.context, f(o.attributes.context));\n }), d || p.recursive) {\n const f = s.getBranch(o), m = p.recursive ? p : {\n context: !!d\n };\n o.getChildren(f).forEach((x) => {\n h(x, m);\n });\n }\n };\n process.env.NODE_ENV !== \"production\" && console.timeEnd(\"state-processor.flush\"), u.forEach(([o, p]) => {\n h(o, p);\n }), e = [], n = [], t(a);\n }, c = () => {\n clearTimeout(i), i = setTimeout(r, 0);\n };\n return (a, u) => {\n const h = e.indexOf(a);\n if (h > -1) {\n const o = n[h];\n return u.context && (o.context = !0), u.properties && (o.properties = !0), u.layout && (o.layout = !0), u.recursive && (o.recursive = !0), c();\n }\n return e.push(a), n.push(u), c();\n };\n};\nclass pt {\n constructor(t, e = {}) {\n this.providers = e, this.breakpoints = [], this.actionsState = { handlers: [], watchers: [] }, this.switches = {}, this.changesets = [], this.subscriptions = [], this.customComponentHandler = new ot(), this.events = t.events.createChild(this);\n const n = new L(this.events, \"root\");\n n.name = `root-${t.name}`, this.nodes = new it(n, this.switches, this.events);\n const i = this.processNode = at(this, (r) => {\n const c = Array.from(r.keys());\n process.env.NODE_ENV !== \"production\" && console.info(`STATE PROCESSOR: ${c.length} node(s) processed:\n${c.map(\n (a) => `${a.name || \"<no name>\"} (${a.id})\n`\n )}`), c.forEach((a) => {\n const u = r.get(a);\n a.parent && a.parent.type === \"root\" && this.events.dispatch(\"components:root-children-changed\", { node: a }), u != null && u.context && this.events.dispatch(\"components:context-changed\", { node: a }), u != null && u.properties && this.events.dispatch(\"components:properties-changed\", { node: a }), u != null && u.layout && this.events.dispatch(\"components:layout-changed\", { node: a });\n }), this.events.dispatch(\"components:component-model-initialized\", {}, { bubbles: !0 });\n });\n Promise.all(\n Object.keys(e).map((r) => e[r].load(this))\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:node-appended\",\n (r, c) => {\n const { node: a } = c;\n this.changesets.forEach((u) => {\n const { changeset: h, target: o, removes: p } = u, [l, d] = h;\n o.match(c.node) && (l.properties && p.push(a.writeProperties(l.properties, d)), l.context && p.push(a.writeContext(l.context, d)), l.layout && p.push(a.writeLayout(l.layout, d)));\n });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:node-appended\",\n (r, c) => {\n i(c.node, { properties: !0, context: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:set-properties\",\n (r, c) => {\n i(c.node, { properties: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:set-context\",\n (r, c) => {\n i(c.node, { properties: !0, context: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:set-indent\",\n (r, c) => {\n i(c.node, { layout: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:set-layout\",\n (r, c) => {\n i(c.node, { layout: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\"components:node-switched\", (r, { node: c, branch: a }) => {\n i(c, {\n layout: !0,\n recursive: !0,\n properties: !0,\n context: !0\n });\n })\n ), this.subscriptions.push(\n this.events.subscribe(\"components:node-removed\", (r, { parentNode: c }) => {\n i(c, { properties: !0 });\n })\n ), this.events.parent && this.events.parent.dispatch(\"components:platform-created\", { platform: this });\n }\n static getInstance(t) {\n return t.getAsync(\"components\");\n }\n addBreakpoint(t) {\n this.breakpoints.indexOf(t) === -1 && (this.breakpoints.push(t), this.processNode(this.nodes.root, {\n context: !0,\n properties: !0,\n layout: !0,\n recursive: !0\n }));\n }\n removeBreakpoint(t) {\n const e = this.breakpoints.indexOf(t);\n e > -1 && (this.breakpoints.splice(e, 1), this.processNode(this.nodes.root, {\n context: !0,\n properties: !0,\n layout: !0,\n recursive: !0\n }));\n }\n setSwitch(t, e) {\n this.switches[t.id] = e, this.events.dispatch(\"components:node-switched\", { node: t, branch: e });\n }\n getBranch(t) {\n return this.switches[t.id];\n }\n /**\n * Creates a `ComponentNode` of the specified type.\n * @param type Type of node.\n */\n createNode(t, e = {}) {\n const n = new L(this.events, t);\n return e.detached && this.nodes.detached.push(n), n;\n }\n components() {\n return new P(this);\n }\n actions(t, e) {\n return new k(this, t, e);\n }\n write(t) {\n const { provider: e, target: n, attributes: i, options: r = {}, removable: c } = t, a = t.key || O(), h = { changeset: [i, r], target: n, removes: [] };\n if (e) {\n const o = this.providers[e];\n o.write(a, n, i, r), h.removes.push(() => {\n o.remove(a);\n });\n }\n return this.changesets.push(h), this.nodes.all.forEach((o) => {\n if (n.match(o)) {\n let p = () => {\n };\n i.properties && (p = o.writeProperties(i.properties, r, c)), i.context && (p = o.writeContext(i.context, r, c)), i.layout && (p = o.writeContext(i.layout, r, c)), h.removes.push(p);\n }\n }), () => {\n if (c) {\n h.removes.forEach((p) => p());\n const o = this.changesets.indexOf(h);\n o > -1 && this.changesets.splice(o, 1);\n }\n };\n }\n addComponentHandler(t, e) {\n this.customComponentHandler.add(t, e);\n }\n getComponentHandler(t) {\n return this.customComponentHandler.get(t);\n }\n dispose() {\n this.subscriptions.forEach((t) => t());\n }\n}\nconst ut = (s) => {\n if (Array.isArray(s)) {\n const [t, ...e] = s;\n return {\n definitionId: t,\n overrides: e\n };\n }\n return {\n definitionId: s,\n overrides: []\n };\n}, E = (s, t, e, n, i, r) => {\n e.forEach((c) => {\n const a = ut(c), u = n[a.definitionId];\n if (a.definitionId === \"view\") {\n const h = s.createNode(\"view\");\n h.name = \"view\", Object.keys(i).forEach((o) => {\n const p = i[o];\n E(s, h, [p.entry], n, i, o);\n }), t.appendChild(h), a.overrides.forEach((o) => {\n o.properties && h.writeProperties(o.properties, {\n breakpoints: o.breakpoints\n }), o.context && h.writeContext(o.context, { breakpoints: o.breakpoints }), o.layout && h.writeLayout(o.layout, { breakpoints: o.breakpoints });\n });\n } else if (s.getComponentHandler(u.type)) {\n const h = s.getComponentHandler(u.type);\n h && h(a, {\n platform: s,\n node: t,\n references: e,\n definitions: n,\n views: i,\n branch: r\n });\n } else {\n const h = n[a.definitionId];\n if (process.env.NODE_ENV !== \"production\" && !h) {\n N.error(\n `No definition found for component type '${a.definitionId}'.`\n );\n return;\n }\n const o = s.createNode(h.type);\n o.name = a.definitionId, o.tags = h.tags || [], h.properties && o.writeProperties(h.properties), h.context && o.writeContext(h.context), h.layout && o.writeLayout(h.layout), t.appendChild(o, r), a.overrides.forEach((p) => {\n const l = { breakpoints: p.breakpoints };\n p.properties && o.writeProperties(p.properties, l), p.context && o.writeContext(p.context, l), p.layout && o.writeLayout(p.layout, l);\n }), h.children && E(s, o, h.children, n, i);\n }\n });\n}, Ct = (s, t) => {\n const { entry: e, components: n, breakpoints: i, views: r } = t, c = [];\n return Object.keys(i).forEach((a) => {\n const u = i[a], h = window.matchMedia(u);\n h.matches && s.breakpoints.push(a);\n const o = (p) => {\n p.matches ? s.addBreakpoint(a) : s.removeBreakpoint(a);\n };\n h.addListener(o), c.push(() => h.removeListener(o));\n }), E(s, s.nodes.root, [e], n, r), () => c.forEach((a) => {\n a();\n });\n}, Et = (s, t) => ({\n id: s.id,\n type: s.type,\n name: s.name,\n branch: t || \"default\"\n}), Ot = (s, t, e, n = O(), i = {}) => s.getAsync(\"components\").then((r) => {\n let c;\n if (typeof t == \"string\") {\n const h = new P(r);\n h.ofType(t), c = h;\n } else\n c = t;\n const a = {}, u = (h) => {\n const o = a[h.id];\n return o ? Promise.resolve(o.controller) : pt.getInstance(s).then((p) => new H(p, h, n));\n };\n r.events.subscribe(\n \"components:node-enter\",\n (h, { node: o }) => {\n c.match(o) && u(o).then((p) => {\n Promise.resolve(e(p)).then((l) => {\n a[o.id] = {\n dispose: l,\n controller: p\n };\n });\n });\n }\n ), r.events.subscribe(\n \"components:node-exit\",\n (h, { node: o }) => {\n const p = a[o.id];\n p && (p.dispose && p.dispose(), i.reuseController || (p.controller.dispose(), delete a[o.id]));\n }\n );\n});\nclass Nt {\n constructor(t) {\n this.aliases = /* @__PURE__ */ new Map(), this.components = /* @__PURE__ */ new Map(), this.logger = new N();\n const { events: e } = t.get(\"$widget\");\n this.events = e;\n }\n getComponent(t) {\n const e = this.aliases.get(t), n = this.components.get(e || t) || null;\n return process.env.NODE_ENV !== \"production\" && (n || this.logger.warn(\n e || t,\n `Unable to resolve component: \"${e || t}\". You most likely forgot to register the required plugin for: ${e || t}.`\n )), n;\n }\n registerComponent(t, e) {\n return this.components.set(t, e), this.events.dispatch(\"component-resolver:resolve\", t), () => {\n this.components.delete(t);\n };\n }\n registerResolver(t, e) {\n return this.events.subscribe(\"component-resolver:resolve\", (n, i) => {\n if (i === t) {\n const r = this.getComponent(t);\n e(r);\n }\n });\n }\n registerAlias(t, e) {\n return this.aliases.set(t, e), this.events.dispatch(\"component-resolver:resolve\", t), () => {\n this.aliases.delete(t);\n };\n }\n}\nconst lt = \"#____version____#\", M = class extends Y {\n constructor(s, t = []) {\n super(s, t, {\n transformPluginSettings: (e, n, i) => {\n const r = i.get(\"$settings\"), c = r.plugins && n ? r.plugins[n] || {} : {};\n return y(y({}, c), e);\n }\n });\n }\n createImplementation(s) {\n const t = super.createImplementation(s);\n return t.bindings = s.bindings, t;\n }\n /**\n * Performs navigation for widgets matching the specified selector by invoking a\n * 'navigate' command.\n * @param selector Widget selector matching the widget(s) to perform navigation on.\n * @param route Route name.\n * @param params Route params.\n */\n navigate(s, t, e) {\n this.widgets.query(s).forEach((n) => n.invoke(\"navigate\", { route: t, params: e }));\n }\n /**\n * Creates a runtime based on provided configuration.\n * @param configuration Runtime configuration.\n */\n static create(s = {}) {\n const t = [G].concat(\n s.configurationApiExtensions || []\n );\n return new M(\"humany\", t);\n }\n /**\n * Creates a widget runtime based on provided configuration and retains configuration handlers\n * registered on global context. Use this factory to fully support the default embed script.\n * Will return any existing widget runtime if available.\n * @param configuration Runtime configuration.\n * @param global Object to read configuration handlers from (default: window).\n */\n static createFromGlobal(s, t = {}) {\n if (this.isRuntime(s))\n return s.patch(t), s;\n const e = [], n = s && s._c;\n n && n.forEach((r) => e.push(r));\n const i = this.create(t);\n return i.container.register(\"$runtimecfg\", e), i;\n }\n /**\n * Determines whether the specified object is a valid widget runtime.\n * @param obj Object to compare.\n */\n static isRuntime(s) {\n return !!(s && typeof s == \"object\" && s.container && typeof s.container.get == \"function\" && s.container.get(\"$environment\") === s && s.container.owner === s);\n }\n};\nlet dt = M;\ndt.version = `${lt} (${W})`;\nclass Pt extends J {\n constructor() {\n super(...arguments), this.bindings = [];\n }\n}\nclass kt extends X {\n constructor(t, e) {\n super(t, e);\n }\n}\nvar mt = /* @__PURE__ */ ((s) => (s.open = \"open\", s.closed = \"closed\", s.hidden = \"hidden\", s))(mt || {});\nclass $t extends Z {\n constructor(t) {\n super(t);\n }\n}\nexport {\n yt as ActionResolver,\n k as ActionsController,\n L as ComponentNode,\n H as ComponentNodeController,\n pt as ComponentPlatform,\n P as ComponentQuery,\n Nt as ComponentResolver,\n dt as Environment,\n Pt as Implementation,\n kt as Plugin,\n mt as WidgetRenderState,\n $t as WidgetType,\n Et as asDescriptor,\n xt as bootstrap,\n wt as componentConfigurationApi,\n E as createChildren,\n Ct as createComponentModel,\n tt as createEventSubscriber,\n Ot as extendComponent,\n nt as findComponent,\n w as findVisibleComponents,\n $ as traverseComponents,\n lt as version\n};\n//# sourceMappingURL=index.js.map\n","var q = Object.defineProperty;\nvar V = Object.getOwnPropertySymbols;\nvar B = Object.prototype.hasOwnProperty, G = Object.prototype.propertyIsEnumerable;\nvar W = (n, e, t) => e in n ? q(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t, p = (n, e) => {\n for (var t in e || (e = {}))\n B.call(e, t) && W(n, t, e[t]);\n if (V)\n for (var t of V(e))\n G.call(e, t) && W(n, t, e[t]);\n return n;\n};\nvar S = (n, e, t) => new Promise((r, s) => {\n var o = (a) => {\n try {\n c(t.next(a));\n } catch (g) {\n s(g);\n }\n }, i = (a) => {\n try {\n c(t.throw(a));\n } catch (g) {\n s(g);\n }\n }, c = (a) => a.done ? r(a.value) : Promise.resolve(a.value).then(o, i);\n c((t = t.apply(n, e)).next());\n});\nimport { Logger as l, lock as f, deepClone as H, hash as L } from \"@telia-ace/widget-utilities\";\nvar u = /* @__PURE__ */ ((n) => (n.Cookie = \"cookie\", n.Local = \"local\", n.Session = \"session\", n))(u || {}), C = /* @__PURE__ */ ((n) => (n.Tenant = \"tenant\", n.Implementation = \"implementation\", n.Widget = \"widget\", n))(C || {}), m = /* @__PURE__ */ ((n) => (n.Necessary = \"necessary\", n.Functional = \"functional\", n.Analytical = \"analytical\", n.Marketing = \"marketing\", n))(m || {});\nconst Q = (n, e, t, r = {}) => j(n, t).then((s) => (process.env.NODE_ENV !== \"production\" && s && l.warn(\n `createStorageWriter: Attempted to create storage writer using unallowed category.\n Key: ${e}\n Category: ${JSON.stringify(t)}\n Options: ${JSON.stringify(r)}`\n), (o) => (T(n), j(n, t).then((i) => {\n if (i) {\n process.env.NODE_ENV !== \"production\" && l.warn(\n `storageWriter: Attempted to write to storage using unallowed category.\n Key: ${e}\n Category: ${JSON.stringify(t)}\n Value: ${JSON.stringify(o)}\n Options: ${JSON.stringify(r)}`\n );\n return;\n }\n const {\n scope: c = C.Widget,\n medium: a = u.Session,\n duration: g\n } = r, d = Z();\n return d[c][e] = x(o, t, g), a === u.Cookie ? re(n, d) : se(n, a, d);\n})))), X = (n, e, t = u.Session) => (T(n), typeof e == \"undefined\" ? (process.env.NODE_ENV !== \"production\" && l.warn(\"readStorage: Undefined key passed when reading storage. \", e, t), Promise.resolve(void 0)) : t === u.Cookie ? ne(n).then((r) => $(r, e)) : oe(n, t).then((r) => $(r, e))), h = (n) => !!Object.entries(n).filter(([e, t]) => typeof t != \"undefined\").length, b = (n) => Object.entries(n).filter(([e, t]) => typeof t != \"undefined\").forEach(([e, { value: t }]) => {\n typeof t == \"undefined\" && delete n[e];\n}), z = (n, e) => {\n const t = {\n tenant: p(p({}, n.tenant), e.tenant),\n implementation: p(p({}, n.implementation), e.implementation),\n widget: p(p({}, n.widget), e.widget)\n };\n return b(t.tenant), b(t.implementation), b(t.widget), t;\n}, Y = (n) => Object.entries(n).reduce((t, r) => {\n const [s, o] = r;\n return Object.entries(o).forEach((i) => {\n const [c, { expiration: a }] = i;\n a && t.push(a);\n }), t;\n}, []).slice().sort((t, r) => new Date(r).valueOf() - new Date(t).valueOf()).shift() || P(), E = (n) => {\n const {\n name: e,\n implementation: { name: t, tenant: r }\n } = n.get(\"$widget\");\n return [\n `humany_${r}`,\n `humany_${L(r + t)}`,\n `humany_${L(r + t + e)}`\n ];\n}, I = (n) => {\n const e = new RegExp(`(?:^|;)\\\\s?${n}=(.*?)(?:;|$)`, \"i\"), t = document.cookie.match(e);\n return t && t[1] && JSON.parse(t[1]) || void 0;\n}, J = (n, e, t) => {\n const r = `${n}=${JSON.stringify(e).trim()}`, s = `expires=${new Date(t).toUTCString()}`, o = \"path=/\", i = \"SameSite=None;Secure\";\n return document.cookie = `${r}; ${s}; ${o}; ${i}`;\n}, _ = (n) => {\n const [e, t, r] = E(n), s = I(e) || {}, o = I(t) || {}, i = I(r) || {};\n return {\n tenant: s,\n implementation: o,\n widget: i\n };\n}, M = (n, e) => {\n const t = _(n), r = z(t, e), [s, o, i] = E(n), { tenant: c, implementation: a, widget: g } = r, d = Y(e), w = P({ days: -1 });\n J(s, c, h(c) ? d : w), J(\n o,\n a,\n h(a) ? d : w\n ), J(i, g, h(g) ? d : w);\n}, O = (n, e) => {\n const [t, r, s] = E(n), o = e.getItem(t) || \"{}\", i = e.getItem(r) || \"{}\", c = e.getItem(s) || \"{}\";\n return {\n tenant: JSON.parse(o),\n implementation: JSON.parse(i),\n widget: JSON.parse(c)\n };\n}, K = (n, e, t) => {\n const r = O(n, e), s = z(r, t), [o, i, c] = E(n), { tenant: a, implementation: g, widget: d } = s;\n h(a) ? e.setItem(o, JSON.stringify(a)) : e.removeItem(o), h(g) ? e.setItem(i, JSON.stringify(g)) : e.removeItem(i), h(d) ? e.setItem(c, JSON.stringify(d)) : e.removeItem(c);\n}, Z = () => ({ tenant: {}, implementation: {}, widget: {} }), ee = (n) => n ? !!n && /* @__PURE__ */ new Date() > new Date(n) : !1, $ = (n, e) => {\n const t = n.widget[e] || n.implementation[e] || n.tenant[e];\n return t == null ? void 0 : t.value;\n}, x = (n, e, t) => t ? {\n value: n,\n category: e,\n expiration: typeof t == \"object\" ? P(t) : t\n} : {\n value: n,\n category: e\n}, v = (n, e) => {\n const t = H(n);\n return Object.entries(t).forEach(([r, s]) => {\n Object.entries(s).forEach(([o, i]) => {\n const { expiration: c, category: a } = i;\n (ee(c) || te(e, a)) && (s[o] = x(void 0, a, c));\n });\n }), t;\n}, j = (n, e) => X(n, \"storagePolicy\", u.Cookie).then(\n (t = [m.Necessary]) => !!e && t.indexOf(e) === -1\n), te = (n = [m.Necessary], e) => !!e && n.indexOf(e) === -1, T = (n) => {\n const e = _(n), t = O(n, window.localStorage), r = O(n, sessionStorage), s = $(e, \"storagePolicy\"), [o, i, c] = [\n e,\n t,\n r\n ].map((a) => v(a, s));\n M(n, o), K(n, window.localStorage, i), K(n, window.sessionStorage, c);\n}, P = (n = { days: 30 }) => {\n const { days: e = 0, hours: t = 0, minutes: r = 0, seconds: s = 0 } = n, o = /* @__PURE__ */ new Date();\n return o.setTime(o.getTime() + t * 60 * 60 * 1e3), o.setTime(o.getTime() + e * 24 * 60 * 60 * 1e3), o.setTime(o.getTime() + r * 60 * 1e3), o.setTime(o.getTime() + s * 1e3), o.toISOString();\n}, ne = (n) => f(document)(() => _(n)), re = (n, e) => f(document)(() => M(n, e)), oe = (n, e) => {\n const t = e === u.Local ? window.localStorage : window.sessionStorage;\n return f(t)(() => O(n, t));\n}, se = (n, e, t) => {\n const r = e === u.Local ? window.localStorage : window.sessionStorage;\n return f(r)(() => K(n, r, t));\n};\nclass k {\n constructor() {\n this.memory = {\n tenant: {},\n implementation: {},\n widget: {}\n };\n }\n setItem(s, o) {\n return S(this, arguments, function* (e, t, r = {}) {\n return f(this)(() => {\n const i = v(this.memory, [m.Necessary]), { scope: c = C.Tenant, expiration: a } = r;\n i[c][e] = x(\n t,\n m.Necessary,\n (a == null ? void 0 : a.toISOString()) || P()\n ), this.memory = i, process.env.NODE_ENV !== \"production\" && l.warn(\n `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value stored temporarily in memory.\n Key: ${e}\n Value: ${JSON.stringify(t)}\n Options: ${JSON.stringify(r)}\n Memory: ${JSON.stringify(i)}`\n );\n });\n });\n }\n getItem(e) {\n return S(this, null, function* () {\n return f(this)(() => {\n const t = v(this.memory, [m.Necessary]);\n process.env.NODE_ENV !== \"production\" && l.warn(\n `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value fetched from legacy memory storage.\n Key: ${e}\n Memory: ${JSON.stringify(t)}`\n );\n const r = $(t, e);\n return this.memory = t, r;\n });\n });\n }\n removeItem(e) {\n return S(this, null, function* () {\n return f(this)(() => {\n const t = v(this.memory, [m.Necessary]);\n delete t.tenant[e], delete t.implementation[e], delete t.widget[e], this.memory = t, process.env.NODE_ENV !== \"production\" && l.warn(\n `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value removed from memory.\n Key: ${e}\n Memory: ${JSON.stringify(t)}`\n );\n });\n });\n }\n clear() {\n return S(this, null, function* () {\n return Promise.resolve();\n });\n }\n}\nclass de {\n constructor() {\n this.cookies = new k(), this.session = new k(), this.local = new k();\n }\n}\nconst D = (n, e, t, ...r) => {\n const s = `[${n.get(\"$environment\").name || \"webprovisions\"}] ${t}`;\n switch (e) {\n case \"info\":\n console.info(s, ...r);\n break;\n case \"warning\":\n console.warn(s, ...r);\n break;\n case \"error\":\n console.error(s, ...r);\n break;\n }\n}, ie = (n) => {\n const e = n.container || n;\n return {\n info: (t, ...r) => D(e, \"info\", t, ...r),\n warn: (t, ...r) => D(e, \"warning\", t, ...r),\n error: (t, ...r) => D(e, \"error\", t, ...r)\n };\n};\nvar A = /* @__PURE__ */ ((n) => (n.Implementation = \"implementation\", n.Widget = \"widget\", n))(A || {}), y = /* @__PURE__ */ ((n) => (n.Pre = \"pre\", n.Post = \"post\", n))(y || {});\nconst ae = (n, e, t, r) => {\n try {\n const s = new e(t, r);\n return {\n name: n,\n invoke: (o, i) => {\n let c;\n return s[o] && (c = s[o].call(s, i)), Promise.resolve(c);\n },\n getInstance: () => s\n };\n } catch (s) {\n if (s.message && s.message.indexOf(\"is not a constructor\") >= 0)\n return {\n name: n,\n invoke: (o) => {\n let i;\n return o === \"initialize\" && (i = e(t, r)), Promise.resolve(i);\n },\n getInstance: () => e\n };\n throw s;\n }\n};\nfunction F(n, e) {\n return typeof n == \"undefined\" ? e : n;\n}\nclass ce {\n constructor(e = {}) {\n this.part = e;\n }\n createCommand(e, t, r) {\n let s;\n typeof t == \"function\" ? s = {\n scope: A.Widget,\n stage: y.Post,\n defaultArgs: void 0,\n handlerResolver: t\n } : s = {\n scope: F(t.scope, A.Widget),\n stage: F(t.stage, y.Post),\n defaultArgs: t.defaultArgs,\n handlerResolver: r\n };\n let o = this.part;\n const i = e.split(\".\");\n return i.forEach((c, a) => {\n a === i.length - 1 ? o[c] || (o[c] = () => s) : o = this.part[c] = this.part[c] || {};\n }), this;\n }\n get() {\n return this.part;\n }\n}\nconst R = (n) => {\n const e = new ce({});\n return n(e), e.get();\n};\nR((n) => {\n n.createCommand(\n \"types.register\",\n { scope: A.Implementation, stage: y.Pre },\n (e) => (t, r) => {\n e.container.get(\"$types\")[t] = r;\n }\n ).createCommand(\n \"type\",\n { stage: y.Pre },\n (e) => (t) => {\n e.container.register(\"$type\", t);\n }\n ).createCommand(\n \"settings\",\n { stage: y.Pre, defaultArgs: [null] },\n (e) => (t) => {\n e.events.dispatch(\n \"settings:change\",\n t,\n { bubbles: !0 }\n ), e.container.register(\"$settings\", t);\n }\n ).createCommand(\n \"plugin\",\n { stage: y.Pre },\n (e) => (t, r, s) => {\n const { container: o } = e;\n let i = null, c = t, a = r;\n typeof t == \"string\" && (i = t, c = r, a = s);\n const g = (d) => {\n const { transformPluginSettings: w } = e.container.get(\"$environmentOptions\"), U = w ? w(\n a || {},\n i,\n e.container,\n c\n ) : r;\n try {\n const N = ae(\n i,\n c,\n o,\n U\n );\n o.get(\"$plugins\").push(N), d && N.invoke(\"initialize\", null);\n } catch (N) {\n ie(e).warn(\"Error when initializing plugin\", N);\n }\n };\n e.container.get(\"$instance\") ? g(!0) : e.events.subscribeOnce(\"widget:instance-created\", () => g(!1));\n }\n ).createCommand(\n \"container.register\",\n (e) => (t, r) => {\n e.container.register(t, r);\n }\n ).createCommand(\n \"container.registerAsync\",\n (e) => (t, r) => {\n e.container.registerAsync(t, r);\n }\n ).createCommand(\n \"container.registerFactory\",\n (e) => (t, r) => {\n e.container.registerFactory(t, r);\n }\n ).createCommand(\n \"container.touch\",\n (e) => (t, r) => {\n e.container.touch(t, r);\n }\n ).createCommand(\n \"csp\",\n {},\n (e) => (t) => {\n e.container.register(\"csp\", t);\n }\n );\n});\nconst le = R((n) => {\n n.createCommand(\"storage\", (e) => (t = {}) => {\n const { consent: r } = t;\n if (typeof r != \"undefined\") {\n if (typeof r != \"number\" && typeof r != \"string\" && !Array.isArray(r)) {\n process.env.NODE_ENV !== \"production\" && l.warn(\n `storagePolicyConfigurationApi: passed consent is not valid. Consent either has to be a number, a string, an array of strings or an array of numbers.\n Passed consent: ${JSON.stringify(r)}`\n );\n return;\n }\n if (Array.isArray(r) && !r.every(\n (o) => typeof o == \"number\" || typeof o == \"string\"\n )) {\n process.env.NODE_ENV !== \"production\" && l.warn(\n `storagePolicyConfigurationApi: passed consent is not valid. Consent either has to be a number, a string, an array of strings or an array of numbers.\n Passed consent: ${JSON.stringify(r)}`\n );\n return;\n }\n const s = [\n m.Necessary,\n m.Functional,\n m.Analytical,\n m.Marketing\n ].filter((o, i, c) => typeof r == \"number\" ? r > i : typeof r == \"string\" ? c.indexOf(r) + 1 > i : Array.isArray(r) ? r.findIndex((a) => a === i + 1 || a === o) > -1 : !0);\n return s.indexOf(m.Necessary) === -1 && (process.env.NODE_ENV !== \"production\" && l.warn(\n `storagePolicyConfigurationApi: passed consent does not include category: '${m.Necessary}'. Consent has to atleast include the '${m.Necessary}' category.\n Passed consent: ${JSON.stringify(r)}`\n ), s.unshift(m.Necessary)), Q(\n e.container,\n \"storagePolicy\",\n m.Necessary,\n {\n medium: u.Cookie,\n scope: C.Tenant,\n duration: { days: 365 }\n }\n ).then((o) => o(s)).then(() => {\n T(e.container), e.events.dispatch(\"storage:policy-changed\", s);\n });\n }\n });\n});\nexport {\n m as StorageCategory,\n u as StorageMedium,\n de as StorageProvider,\n C as StorageScope,\n k as StorageService,\n Q as createStorageWriter,\n X as readStorage,\n le as storagePolicyConfigurationApi\n};\n//# sourceMappingURL=index.js.map\n","import { EventSubscriptionCancellation, Widget } from '@webprovisions/platform';\r\nimport {\r\n ConversationController,\r\n ConversationMessageType,\r\n getNormalizedMessageSettings,\r\n} from './conversation-controller';\r\nimport { ConversationMessageContent, ConversationMessageSender } from './types';\r\n\r\ntype ConversationLogMessage = {\r\n message?: string;\r\n options?: string[];\r\n alias: string;\r\n source: string;\r\n timestamp: number | null;\r\n};\r\n\r\nexport class ConversationHistory {\r\n private cache: Map<string, any> = new Map();\r\n\r\n private subscriptions: EventSubscriptionCancellation[] = [];\r\n\r\n constructor(private controller: ConversationController) {\r\n const { events } = controller.container.get('$widget') as Widget;\r\n\r\n const unsubscribe = events.subscribe('data-client:fetched', (_e, data) => {\r\n if (data.type === 'contact-method') {\r\n this.cache.set(data.response.id, data.response);\r\n }\r\n });\r\n this.subscriptions.push(unsubscribe);\r\n }\r\n\r\n getConversationLogs(): ConversationLogMessage[] {\r\n const logs = this.controller.messages.reduce<ConversationLogMessage[]>(\r\n (acc, message) => {\r\n const normalized = getNormalizedMessageSettings(message as any);\r\n const { content, type, sender, timestamp } = normalized.content;\r\n\r\n const parsed = this.parseEntry(content, type, sender, timestamp);\r\n\r\n if (parsed) {\r\n acc.push(parsed);\r\n }\r\n\r\n return acc;\r\n },\r\n []\r\n );\r\n\r\n return logs;\r\n }\r\n\r\n parseEntry(\r\n content: ConversationMessageContent,\r\n type: ConversationMessageType,\r\n sender?: ConversationMessageSender,\r\n timestamp?: any | null\r\n ) {\r\n const handle = (body: any | any[]) => {\r\n let options: string[] = [];\r\n let messagesAsList: string[] = [];\r\n\r\n let messageData: any;\r\n\r\n // the actual content could also be an array,\r\n if (Array.isArray(body)) {\r\n const [_type, data] = body;\r\n messageData = data;\r\n } else {\r\n messageData = body;\r\n }\r\n\r\n const message = this.createMessageContent(messageData);\r\n if (message.length) {\r\n messagesAsList = [\r\n ...messagesAsList,\r\n this.createMessageContent(messageData),\r\n ];\r\n }\r\n options = [...options, ...this.createMessageOptions(messageData)];\r\n\r\n return {\r\n messagesAsList,\r\n options,\r\n };\r\n };\r\n\r\n let options: string[] = [];\r\n let messagesAsList: string[] = [];\r\n\r\n // a message could be either an array or just the content itself\r\n if (Array.isArray(content.items)) {\r\n const { items } = content;\r\n items.forEach((item) => {\r\n const res = handle(item);\r\n options = [...options, ...res.options];\r\n messagesAsList = [...messagesAsList, ...res.messagesAsList];\r\n });\r\n } else {\r\n const res = handle(content);\r\n options = [...options, ...res.options];\r\n messagesAsList = [...messagesAsList, ...res.messagesAsList];\r\n }\r\n\r\n const result: ConversationLogMessage = {\r\n options: options,\r\n message: messagesAsList.length ? messagesAsList.join('\\n') : undefined,\r\n source: this.createMessageSource(type),\r\n alias: this.createAlias(type, sender),\r\n timestamp,\r\n };\r\n\r\n return result;\r\n }\r\n\r\n private createMessageSource(type: ConversationMessageType) {\r\n return type;\r\n }\r\n\r\n private createAlias(\r\n type: ConversationMessageType,\r\n sender?: ConversationMessageSender\r\n ) {\r\n if (type === ConversationMessageType.System) {\r\n return 'system';\r\n }\r\n return sender?.name || 'Me';\r\n }\r\n\r\n private handleContactMethod(contactMethodId: string) {\r\n if (!this.cache.has(contactMethodId)) {\r\n return;\r\n }\r\n\r\n const method = this.cache.get(contactMethodId);\r\n\r\n let result = '';\r\n\r\n result = this.appendText(result, `${method.clientName}:`);\r\n result = this.appendText(result, method.title);\r\n if (method.description) {\r\n result = this.appendText(result, method.title);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private getDetails(item: any, linebreak = true) {\r\n if (!item) {\r\n return '';\r\n }\r\n\r\n const {\r\n header,\r\n title,\r\n label,\r\n description,\r\n text,\r\n html,\r\n body,\r\n contactMethodId,\r\n } = item;\r\n let result = '';\r\n\r\n if (contactMethodId) {\r\n const text = this.handleContactMethod(contactMethodId.toString());\r\n if (text) {\r\n result = this.appendText(result, text, linebreak);\r\n }\r\n }\r\n\r\n if (header) {\r\n result = this.appendText(result, header, linebreak);\r\n }\r\n if (title) {\r\n result = this.appendText(result, title, linebreak);\r\n }\r\n if (description) {\r\n result = this.appendText(result, description, linebreak);\r\n }\r\n if (text) {\r\n result = this.appendText(result, text, linebreak);\r\n }\r\n if (label) {\r\n result = this.appendText(result, label, linebreak);\r\n }\r\n if (html) {\r\n result = this.appendText(result, html, linebreak);\r\n }\r\n if (body) {\r\n if (typeof body === 'string') {\r\n result = this.appendText(result, body, linebreak);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n private createMessageContent(data: any) {\r\n let message = '';\r\n\r\n message = this.getDetails(data);\r\n\r\n return message;\r\n }\r\n\r\n private createMessageOptions(data: any): any[] {\r\n let options = [];\r\n let actions = [];\r\n\r\n if (Array.isArray(data?.actions)) {\r\n actions = data.actions;\r\n } else if (typeof data?.actions === 'object') {\r\n actions = Object.entries(data.actions).map(([key, value]) => {\r\n return {\r\n actionKey: key,\r\n label: value,\r\n };\r\n });\r\n }\r\n\r\n if (actions.length) {\r\n options = actions.map((option: any) => {\r\n return this.getDetails(option, false);\r\n });\r\n }\r\n return options;\r\n }\r\n\r\n private appendText(target: string, value: string, linebreak = true) {\r\n if (linebreak) {\r\n if (target.length) {\r\n return `${target}\\n${value}`;\r\n }\r\n }\r\n return target.length ? `${target} ${value}` : value;\r\n }\r\n\r\n dispose() {\r\n this.subscriptions.forEach((unsubscribe) => {\r\n unsubscribe();\r\n });\r\n }\r\n}\r\n","import { uuid } from '@telia-ace/widget-utilities';\r\nimport {\r\n ConversationEntry,\r\n ConversationMessageType,\r\n getNormalizedMessageSettings,\r\n} from './conversation-controller';\r\nimport { ConversationProvider } from './conversation-provider';\r\nimport {\r\n ConversationMessageSender,\r\n ConversationMessageSettings,\r\n ConverstationMessageItem,\r\n Symbol,\r\n} from './types';\r\n\r\nexport type AgentSettings = {\r\n id?: string;\r\n name?: string;\r\n avatar?: string | Symbol;\r\n};\r\n\r\nexport class Agent {\r\n id: string;\r\n name?: string;\r\n avatar?: string | Symbol;\r\n\r\n constructor(\r\n private provider: ConversationProvider,\r\n settings: AgentSettings\r\n ) {\r\n this.id = settings.id || uuid();\r\n this.name = settings.name;\r\n this.avatar = settings.avatar;\r\n }\r\n\r\n print = (\r\n settings:\r\n | string\r\n | ConversationMessageSettings\r\n | ConverstationMessageItem<any>\r\n | ConverstationMessageItem<any>[],\r\n options?: {\r\n key?: string;\r\n }\r\n ): ConversationEntry | undefined => {\r\n const sender: ConversationMessageSender = {\r\n name: this.name,\r\n avatar: this.avatar,\r\n id: this.id,\r\n };\r\n const normalized = getNormalizedMessageSettings(settings, options);\r\n\r\n return this.provider.createEntry(\r\n normalized.key,\r\n normalized.content,\r\n ConversationMessageType.Agent,\r\n sender,\r\n normalized.timestamp\r\n );\r\n };\r\n typing = () => {\r\n return this.provider.setTypingState({\r\n name: this.name,\r\n avatar: this.avatar,\r\n });\r\n };\r\n\r\n update(settings: AgentSettings): void {\r\n const { name, avatar } = settings;\r\n if (avatar === null) {\r\n this.avatar = undefined;\r\n } else if (avatar) {\r\n this.avatar = avatar;\r\n }\r\n\r\n if (name === null) {\r\n this.name = undefined;\r\n } else if (name) {\r\n this.name = name;\r\n }\r\n\r\n this.provider.controller?.events.dispatch('conversation:agent-updated', {\r\n agent: this,\r\n });\r\n }\r\n}\r\n","import {\r\n Container,\r\n EventListener,\r\n EventObject,\r\n EventSubscriptionCancellation,\r\n} from '@webprovisions/platform';\r\nimport { Agent, AgentSettings } from './agent';\r\nimport {\r\n CancelLoaderDelegate,\r\n ConversationController,\r\n ConversationEntry,\r\n ConversationMessageType,\r\n ConversationOptions,\r\n} from './conversation-controller';\r\nimport {\r\n ConversationMessageContent,\r\n ConversationMessageSender,\r\n ConversationMessageSettings,\r\n} from './types';\r\n\r\nexport class ConversationProvider {\r\n private subscriptions: EventSubscriptionCancellation[] = [];\r\n public options: ConversationOptions;\r\n public user: any;\r\n\r\n private constructor(\r\n public name: string,\r\n _container: Container,\r\n public controller: ConversationController | null\r\n ) {\r\n this.user = controller?.user;\r\n this.options = {\r\n silent: false,\r\n };\r\n }\r\n\r\n static create(\r\n name: string,\r\n container: Container,\r\n controller: ConversationController\r\n ) {\r\n return new ConversationProvider(name, container, controller);\r\n }\r\n\r\n createAgent(settings: AgentSettings = {}): Agent | undefined {\r\n if (this.controller) {\r\n const storedAgent = this.controller.getAgentById(settings.id);\r\n\r\n const agent = storedAgent\r\n ? new Agent(this, { ...storedAgent, ...settings })\r\n : new Agent(this, settings);\r\n if (!storedAgent) {\r\n this.controller?.events.dispatch('conversation:agent-created', {\r\n agent,\r\n });\r\n }\r\n return agent;\r\n }\r\n }\r\n\r\n print(\r\n settings: string | ConversationMessageSettings\r\n ): ConversationEntry | undefined {\r\n return this.controller?.print(settings);\r\n }\r\n\r\n setTypingState(\r\n sender: ConversationMessageSender,\r\n type?: ConversationMessageType\r\n ) {\r\n return this.controller?.setTypingState(sender, type);\r\n }\r\n\r\n loading(): CancelLoaderDelegate {\r\n if (!this.controller) {\r\n return () => () => {};\r\n }\r\n return this.controller.loader();\r\n }\r\n\r\n createEntry(\r\n key: string,\r\n content: ConversationMessageContent,\r\n type: ConversationMessageType,\r\n sender?: ConversationMessageSender,\r\n timestamp?: number | null\r\n ) {\r\n return this.controller?.createEntry(key, content, type, sender, timestamp);\r\n }\r\n\r\n dispose() {\r\n if (process.env.NODE_ENV !== 'production') {\r\n console.log(`conversation-provider: dispose (${this.name})`);\r\n }\r\n this.controller?.disposeProvider(this);\r\n this.controller = null;\r\n this.subscriptions.forEach((unsub) => unsub());\r\n }\r\n\r\n isRehydrated() {\r\n return this.controller?.isRehydrated() || Promise.resolve(false);\r\n }\r\n\r\n getHistory() {\r\n return this.controller?.getHistory() || [];\r\n }\r\n\r\n complete() {\r\n this.controller?.onCompleteProvider();\r\n }\r\n\r\n setOptions(options: ConversationOptions = { silent: false }) {\r\n this.options = options;\r\n }\r\n\r\n onUnreadMessage(fn: EventListener): EventSubscriptionCancellation | void {\r\n if (this.controller) {\r\n const unsubscribe = this.controller?.onUnreadMessage(fn);\r\n this.subscriptions.push(unsubscribe);\r\n return () => {\r\n unsubscribe();\r\n };\r\n }\r\n }\r\n\r\n onMounted(fn: EventListener): EventSubscriptionCancellation | void {\r\n if (this.controller) {\r\n const unsubscribe = this.controller?.events.subscribe(\r\n 'conversation:component-mount-changed',\r\n fn\r\n );\r\n this.subscriptions.push(unsubscribe);\r\n fn({} as EventObject, this.controller.getComponentMountedState());\r\n return () => {\r\n unsubscribe();\r\n };\r\n }\r\n }\r\n}\r\n\r\nexport default ConversationProvider;\r\n","import {\r\n createStorageWriter,\r\n readStorage,\r\n StorageCategory,\r\n} from '@telia-ace/widget-services';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { Agent, AgentSettings } from './agent';\r\nimport { ConversationController } from './conversation-controller';\r\n\r\ntype StoredConversationAgent = {\r\n id: string;\r\n name: string;\r\n avatar?: string;\r\n providerName: string;\r\n};\r\ntype StoredConversationMessage = any;\r\n\r\ntype StoredConversation = {\r\n agents: StoredConversationAgent[];\r\n messages: StoredConversationMessage[];\r\n};\r\n\r\nexport const createSessionStorageKey = (id: string) => {\r\n return `conversation-${id}`;\r\n};\r\n\r\nclass Locker {\r\n private _locking: Promise<void> = Promise.resolve();\r\n private _locks: number = 0;\r\n\r\n isLocked() {\r\n return this._locks > 0;\r\n }\r\n\r\n lock() {\r\n this._locks += 1;\r\n\r\n let unlockNext: () => void;\r\n\r\n let willLock = new Promise<void>(\r\n (resolve) =>\r\n (unlockNext = () => {\r\n this._locks -= 1;\r\n\r\n resolve();\r\n })\r\n );\r\n\r\n let willUnlock = this._locking.then(() => unlockNext);\r\n\r\n this._locking = this._locking.then(() => willLock);\r\n\r\n return willUnlock;\r\n }\r\n}\r\n\r\nclass Store {\r\n private sessionStorageKey: string;\r\n private locker = new Locker();\r\n private initialStoredAgents: StoredConversationAgent[] = [];\r\n\r\n constructor(\r\n private container: Container,\r\n conversation: ConversationController,\r\n private enabled: boolean // whether or not to store data\r\n ) {\r\n this.sessionStorageKey = createSessionStorageKey(conversation.id);\r\n\r\n conversation.onStarted(async () => {\r\n if (conversation.messages.length > 0) {\r\n // if the conversation already contains messages\r\n // for example when re-opening a minimized widget,\r\n // we do not want to do anything\r\n return;\r\n }\r\n const { agents: storedAgents } = await this.read();\r\n\r\n const agents: Agent[] = [];\r\n\r\n if (storedAgents) {\r\n storedAgents.forEach((a) => {\r\n const providerIndex = conversation.providerIndex(a.providerName);\r\n const provider =\r\n providerIndex > -1\r\n ? conversation.registeredProviders[providerIndex]\r\n : conversation.createProvider(a.providerName);\r\n\r\n const agent = new Agent(provider, {\r\n name: a.name,\r\n avatar: a.avatar,\r\n id: a.id,\r\n });\r\n agents.push(agent);\r\n });\r\n }\r\n\r\n const { messages: storedMessages } = await this.read();\r\n storedMessages.forEach((message) => {\r\n switch (message.type) {\r\n case 'agent': {\r\n const agent = agents.find((a) => a.id === message.sender?.id);\r\n if (agent) {\r\n agent.print(message.content.items || message.content, {\r\n key: message.key,\r\n });\r\n }\r\n return;\r\n }\r\n case 'user': {\r\n conversation.user.print(message.content.items || message.content, {\r\n key: message.key,\r\n });\r\n return;\r\n }\r\n case 'system':\r\n default: {\r\n conversation.print(message.content.items || message.content);\r\n }\r\n }\r\n });\r\n });\r\n conversation.onMessageCreated(async (_, data) => {\r\n this.write(data.message, 'messages');\r\n });\r\n\r\n conversation.events.subscribe(\r\n 'conversation:agent-created',\r\n async (_, data) => {\r\n const agent = {\r\n id: data.agent.id,\r\n name: data.agent.name,\r\n avatar: data.agent.avatar,\r\n providerName: data.agent.provider.name,\r\n };\r\n await this.write(agent, 'agents');\r\n }\r\n );\r\n\r\n conversation.events.subscribe(\r\n 'conversation:agent-updated',\r\n async (_, data) => {\r\n const { agents } = await this.read();\r\n\r\n await this.write(\r\n [\r\n ...agents.map((a) => {\r\n if (a.id === data.agent.id) {\r\n return {\r\n ...a,\r\n name: data.agent.name,\r\n avatar: data.agent.avatar,\r\n };\r\n }\r\n return a;\r\n }),\r\n ],\r\n 'agents',\r\n 'update'\r\n );\r\n }\r\n );\r\n }\r\n\r\n setInitialData(data: { agents: AgentSettings[] }) {\r\n this.initialStoredAgents = data.agents as StoredConversationAgent[];\r\n }\r\n\r\n async isRehydrated() {\r\n const { messages } = await this.read();\r\n return messages.length > 0;\r\n }\r\n\r\n getStoredAgent(agentId: string) {\r\n if (!this.enabled) {\r\n return;\r\n }\r\n return this.initialStoredAgents.find((a) => a.id === agentId);\r\n }\r\n\r\n async write(\r\n data: any,\r\n type: 'messages' | 'agents',\r\n action: 'add' | 'update' = 'add'\r\n ) {\r\n if (!this.enabled) {\r\n return;\r\n }\r\n\r\n const unlock = await this.locker.lock();\r\n return createStorageWriter(\r\n this.container,\r\n this.sessionStorageKey,\r\n StorageCategory.Necessary\r\n ).then(async (write) => {\r\n if (action === 'add') {\r\n const prev = await this.read();\r\n\r\n // ensure that we don't duplicate messages by looking at their unqiue keys\r\n if (\r\n type === 'messages' &&\r\n prev.messages.findIndex((m) => m.key === data.key) > -1\r\n ) {\r\n unlock();\r\n return;\r\n }\r\n\r\n let newData = {\r\n ...prev,\r\n };\r\n\r\n if (type === 'messages') {\r\n newData.messages = [...newData.messages, data];\r\n } else if (type === 'agents') {\r\n newData.agents = [...newData.agents, data];\r\n }\r\n\r\n return write({\r\n ...prev,\r\n ...newData,\r\n }).then(() => {\r\n unlock();\r\n });\r\n }\r\n\r\n if (action === 'update') {\r\n if (type === 'agents') {\r\n const prev = await this.read();\r\n\r\n return write({\r\n ...prev,\r\n agents: data,\r\n }).then(() => {\r\n unlock();\r\n });\r\n }\r\n }\r\n\r\n return write(data).then(() => {\r\n unlock();\r\n });\r\n });\r\n }\r\n\r\n async read() {\r\n return readStorage(this.container, this.sessionStorageKey).then((data) => {\r\n if (!data) {\r\n return {\r\n messages: [],\r\n agents: [],\r\n };\r\n }\r\n return data as StoredConversation;\r\n });\r\n }\r\n}\r\n\r\nexport default Store;\r\n","import {\r\n ConversationController,\r\n ConversationEntry,\r\n ConversationMessageType,\r\n getNormalizedMessageSettings,\r\n} from './conversation-controller';\r\nimport { ConversationMessageSettings } from './types';\r\n\r\nexport class User {\r\n constructor(private controller: ConversationController) {}\r\n\r\n print = (\r\n settings: string | ConversationMessageSettings,\r\n options?: {\r\n key?: string;\r\n }\r\n ): ConversationEntry => {\r\n const normalized = getNormalizedMessageSettings(settings, options);\r\n return this.controller.createEntry(\r\n normalized.key,\r\n normalized.content,\r\n ConversationMessageType.User,\r\n undefined,\r\n normalized.timestamp\r\n );\r\n };\r\n}\r\n","import { ComponentPlatform } from '@telia-ace/widget-core';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { ConversationPlatform } from '../conversation-platform';\r\n\r\n/**\r\n * This will put the current provider(s) in a queue and\r\n * swap current provider to another one based on the providerName.\r\n * When ConversationProvider.complete() is called, the provider(s) in the\r\n * queue will become active again\r\n */\r\nexport const swapProvider = async (\r\n container: Container,\r\n conversationId: string,\r\n providerName: string\r\n) => {\r\n const conversation: ConversationPlatform = await container.getAsync('conversation');\r\n const components: ComponentPlatform = await container.getAsync('components');\r\n const currentInstance = conversation.controllers.find((c) => {\r\n return c.conversation.id === conversationId;\r\n });\r\n\r\n if (currentInstance) {\r\n const toQueue = [...currentInstance.conversation.providers];\r\n toQueue.forEach((name) => {\r\n currentInstance.conversation.setProviderOptions(name, { silent: true });\r\n });\r\n currentInstance.conversation.queueProviders(toQueue);\r\n currentInstance.conversation.setProviders([providerName]);\r\n const conversationQuery = components.components().ofType('conversation');\r\n components.write({\r\n key: 'setConversationProvider',\r\n attributes: {\r\n properties: { providers: [providerName] },\r\n },\r\n target: conversationQuery,\r\n provider: 'localStorage',\r\n });\r\n }\r\n};\r\n","// import { FormBuilder } from '@telia-ace/widget-forms';\r\nimport { uuid } from '@telia-ace/widget-utilities';\r\nimport {\r\n Container,\r\n EventListener,\r\n EventManager,\r\n Widget,\r\n} from '@webprovisions/platform';\r\nimport { AgentSettings } from './agent';\r\nimport { ConversationHistory } from './conversation-history';\r\nimport { ConversationProvider } from './conversation-provider';\r\nimport Store from './store';\r\nimport {\r\n ConversationMessageContent,\r\n ConversationMessageSender,\r\n ConversationMessageSettings,\r\n ConversationMessageUpdateSettings,\r\n ConverstationMessageItem,\r\n NormalizedMessageSettings,\r\n} from './types';\r\nimport { User } from './user';\r\nimport { swapProvider } from './utils/swap-provider';\r\nexport type ValidateHandler = (formValues: {\r\n [key: string]: any;\r\n}) => Promise<any>;\r\n\r\nexport type SubmitHandler = (formValues: {\r\n [key: string]: any;\r\n}) => Promise<any>;\r\n\r\nexport type ConversationOptions = { silent: boolean };\r\n\r\nexport type Print = (\r\n content: string | ConversationMessageContent\r\n) => ConversationEntry;\r\n\r\nexport type FormHandlers = { [key: string]: FormHandler };\r\nexport type FormHandler = { validate?: ValidateHandler; submit: SubmitHandler };\r\n\r\nexport type CancelLoaderDelegate = () => void;\r\n\r\nexport class ConversationEntry {\r\n constructor(private writer: EntryWriter) {}\r\n\r\n update(\r\n content:\r\n | string\r\n | ConversationMessageUpdateSettings\r\n | ConverstationMessageItem<any>\r\n | ConverstationMessageItem<any>[]\r\n ) {\r\n const normalized = this.getNormalizedSettings(content);\r\n // const normalized = typeof content === 'string' ? { body: content } : content;\r\n this.writer(<ConversationMessageUpdateSettings>normalized);\r\n }\r\n\r\n remove() {\r\n this.writer(null);\r\n }\r\n\r\n private getNormalizedSettings(\r\n content:\r\n | string\r\n | ConversationMessageUpdateSettings\r\n | ConverstationMessageItem<any>\r\n | ConverstationMessageItem<any>[]\r\n ) {\r\n if (typeof content === 'string') return { body: content };\r\n else if (content.length > -1 && typeof content === 'object')\r\n return { items: content };\r\n else return content;\r\n }\r\n}\r\n\r\nexport enum ConversationMessageType {\r\n User = 'user',\r\n Agent = 'agent',\r\n System = 'system',\r\n}\r\n\r\nexport type ConversationMessage = {\r\n key: string;\r\n timestamp: number | null;\r\n content: ConversationMessageContent | null;\r\n sender: ConversationMessageSender | null;\r\n type: ConversationMessageType;\r\n};\r\n\r\nexport type EntryWriter = (\r\n content: ConversationMessageUpdateSettings | null\r\n) => void;\r\n\r\nexport const getNormalizedMessageSettings = (\r\n settings:\r\n | string\r\n | ConversationMessageSettings\r\n | ConverstationMessageItem<any>\r\n | ConverstationMessageItem<any>[],\r\n options?: {\r\n key?: string;\r\n }\r\n): NormalizedMessageSettings => {\r\n let content: ConversationMessageContent;\r\n let key = options?.key || uuid();\r\n let timestamp: number | null = Date.now();\r\n\r\n if (Array.isArray(settings) && settings.length > -1) {\r\n if (typeof settings[0] === 'string') {\r\n content = { items: [<ConverstationMessageItem<any>>settings] };\r\n } else {\r\n content = { items: <ConverstationMessageItem<any>[]>settings };\r\n }\r\n } else if (typeof settings === 'string') {\r\n content = { body: settings };\r\n } else {\r\n settings = <ConversationMessageSettings>settings || {};\r\n\r\n if (settings.type) {\r\n content = {\r\n ...(<any>settings),\r\n };\r\n } else {\r\n content = {\r\n body: settings.body,\r\n actions: settings.actions,\r\n title: settings.title,\r\n };\r\n if (settings.key) {\r\n key = settings.key;\r\n }\r\n if (settings.timestamp) {\r\n timestamp = settings.timestamp;\r\n }\r\n if (typeof settings.form === 'function') {\r\n // const builder = FormBuilder.create(key); // TODO:\r\n // settings.form(builder);\r\n // const builtForm = builder.get();\r\n // content.form = builtForm;\r\n }\r\n if (settings.timestamp === null) {\r\n timestamp = null;\r\n }\r\n }\r\n }\r\n return { content, key, timestamp };\r\n};\r\n\r\nconst removeTypingState = (\r\n typingActors: ConversationMessageSender[],\r\n sender?: ConversationMessageSender\r\n) => {\r\n if (!sender) {\r\n return;\r\n }\r\n const senderString = JSON.stringify(sender);\r\n const indexToRemove = typingActors.findIndex((item) => {\r\n return senderString === JSON.stringify(item);\r\n });\r\n if (indexToRemove > -1) {\r\n return typingActors.splice(indexToRemove, 1);\r\n }\r\n};\r\n\r\n/**\r\n * Manages the stream of messages inside a `ConversationComponent` and provides external read-write\r\n * access to it as well as exposing emitted actions.\r\n */\r\nexport class ConversationController {\r\n formHandlers: FormHandlers = {};\r\n\r\n /**\r\n * Represents the current end user.\r\n */\r\n user: User = new User(this);\r\n\r\n events: EventManager;\r\n\r\n providers: string[] = [];\r\n\r\n active: boolean = false;\r\n\r\n queuedProviders: string[] = [];\r\n\r\n registeredProviders: ConversationProvider[] = [];\r\n\r\n private loaders: number = 0;\r\n private componentMounted: boolean = false;\r\n\r\n private store: Store;\r\n\r\n messages: ConversationMessage[] = [];\r\n private typingActors: ConversationMessageSender[] = [];\r\n\r\n private conversationHistory: ConversationHistory;\r\n\r\n constructor(\r\n public container: Container,\r\n public id: string,\r\n options: { rehydrate: boolean }\r\n ) {\r\n const widget: Widget = container.get('$widget');\r\n this.events = widget.events.createChild(this);\r\n this.store = new Store(container, this, options.rehydrate);\r\n this.conversationHistory = new ConversationHistory(this);\r\n }\r\n\r\n setInitialStorage(data: { agents: AgentSettings[] }) {\r\n this.store.setInitialData(data);\r\n }\r\n\r\n setProviders(providers: string[]) {\r\n const removed: string[] = [];\r\n const added: string[] = [];\r\n\r\n // remove\r\n this.providers\r\n .reduce<string[]>((acc, provider) => {\r\n if (providers.indexOf(provider) === -1) {\r\n acc.push(provider);\r\n }\r\n return acc;\r\n }, [])\r\n .forEach((providerToRemove) => {\r\n const indexToRemove = this.providers.indexOf(providerToRemove);\r\n if (indexToRemove > -1) {\r\n removed.push(providerToRemove);\r\n this.providers.splice(indexToRemove, 1);\r\n }\r\n });\r\n\r\n // add\r\n providers.forEach((provider) => {\r\n if (this.providers.indexOf(provider) === -1) {\r\n added.push(provider);\r\n this.providers.push(provider);\r\n }\r\n });\r\n\r\n if (added.length || removed.length) {\r\n this.events.dispatch('conversation:providers-changed', {\r\n added,\r\n removed,\r\n });\r\n }\r\n }\r\n\r\n createProvider(name: string): ConversationProvider {\r\n const index = this.providerIndex(name);\r\n if (index > -1) {\r\n return this.registeredProviders[index];\r\n }\r\n const provider = ConversationProvider.create(name, this.container, this);\r\n this.registeredProviders.push(provider);\r\n return provider;\r\n }\r\n\r\n providerIndex(name: string) {\r\n return this.registeredProviders.findIndex((p) => p.name === name);\r\n }\r\n\r\n getAgentById(id?: string) {\r\n if (!id) {\r\n return;\r\n }\r\n return this.store.getStoredAgent(id);\r\n }\r\n\r\n dispose() {\r\n this.conversationHistory.dispose();\r\n this.registeredProviders.forEach((provider) => provider.dispose());\r\n this.messages = [];\r\n this.events.dispatch('conversation:controller-disposed', this);\r\n this.active = false;\r\n }\r\n\r\n onDispose(fn: EventListener) {\r\n return this.events.subscribe('conversation:controller-disposed', fn);\r\n }\r\n\r\n onStarted(fn: EventListener) {\r\n return this.events.subscribe('conversation:started', fn);\r\n }\r\n\r\n onMessageCreated(fn: EventListener) {\r\n return this.events.subscribe('conversation:message-created', fn);\r\n }\r\n\r\n isRehydrated() {\r\n return this.store.isRehydrated();\r\n }\r\n\r\n disposeProvider(target: ConversationProvider) {\r\n const index = this.providerIndex(target.name);\r\n index > -1 && this.registeredProviders.splice(index, 1);\r\n this.events.dispatch('conversation:providers-changed', {\r\n removed: [target.name],\r\n });\r\n if (!this.registeredProviders.length) {\r\n this.dispose();\r\n }\r\n }\r\n\r\n onProvidersChange(fn: EventListener) {\r\n return this.events.subscribe('conversation:providers-changed', fn);\r\n }\r\n\r\n setComponentMountedState(mounted: boolean) {\r\n if (this.componentMounted === mounted) {\r\n return;\r\n }\r\n this.componentMounted = mounted;\r\n if (mounted) {\r\n this.events.dispatch('conversation:unread-message', false);\r\n this.events.dispatch('conversation:started', true);\r\n this.active = true;\r\n }\r\n this.events.dispatch('conversation:component-mount-changed', mounted);\r\n }\r\n\r\n setProviderOptions(providerName: string, options: ConversationOptions) {\r\n const index = this.providerIndex(providerName);\r\n\r\n if (index > -1) {\r\n this.registeredProviders[index].setOptions(options);\r\n }\r\n }\r\n\r\n changeProvider(providerName: string) {\r\n const provider = this.registeredProviders.find(\r\n (p) => p.name === providerName\r\n );\r\n\r\n if (provider) {\r\n swapProvider(this.container, this.id, providerName);\r\n }\r\n }\r\n\r\n queueProviders(providers: string[]) {\r\n this.queuedProviders = providers;\r\n }\r\n\r\n onCompleteProvider() {\r\n const nextProvider = this.queuedProviders.pop();\r\n\r\n if (nextProvider) {\r\n swapProvider(this.container, this.id, nextProvider);\r\n }\r\n }\r\n\r\n getComponentMountedState() {\r\n return this.componentMounted;\r\n }\r\n\r\n onUnreadMessage(fn: EventListener) {\r\n return this.events.subscribe('conversation:unread-message', fn);\r\n }\r\n\r\n createEntry(\r\n key: string,\r\n content: ConversationMessageContent,\r\n type: ConversationMessageType,\r\n sender?: ConversationMessageSender,\r\n timestamp?: number | null\r\n ): ConversationEntry {\r\n const message: ConversationMessage = {\r\n key,\r\n content,\r\n type,\r\n sender: sender || null,\r\n timestamp: timestamp || timestamp === null ? timestamp : Date.now(),\r\n };\r\n this.messages.push(message);\r\n message.type === ConversationMessageType.Agent &&\r\n removeTypingState(this.typingActors, sender);\r\n const entry = new ConversationEntry((updated) => {\r\n if (updated !== null) {\r\n const { timestamp: updatedTimestamp = undefined, ...content } = updated;\r\n message.content = content;\r\n if (updatedTimestamp) {\r\n message.timestamp = updatedTimestamp;\r\n }\r\n } else {\r\n const indexToRemove = this.messages.indexOf(message);\r\n message.content = null;\r\n if (indexToRemove > -1) {\r\n this.messages.splice(indexToRemove, 1);\r\n }\r\n }\r\n this.events.dispatch('conversation:message-updated', { message });\r\n this.update();\r\n });\r\n this.events.dispatch('conversation:message-created', { message });\r\n this.update();\r\n if (!this.componentMounted) {\r\n this.events.dispatch('conversation:unread-message', true);\r\n }\r\n return entry;\r\n }\r\n\r\n print = (\r\n settings: string | ConversationMessageSettings\r\n ): ConversationEntry => {\r\n const normalized = getNormalizedMessageSettings(settings);\r\n\r\n return this.createEntry(\r\n normalized.key,\r\n normalized.content,\r\n ConversationMessageType.System,\r\n undefined,\r\n normalized.timestamp\r\n );\r\n };\r\n\r\n update() {\r\n this.events.dispatch('conversation:updated', {\r\n messages: this.messages,\r\n loading: this.loaders > 0,\r\n typingActors: this.typingActors,\r\n });\r\n }\r\n\r\n getMessageStream() {\r\n return {\r\n messages: this.messages,\r\n loading: this.loaders > 0,\r\n typingActors: this.typingActors,\r\n };\r\n }\r\n\r\n setTypingState(\r\n sender: ConversationMessageSender,\r\n _type?: ConversationMessageType\r\n ) {\r\n if (this.typingActors.indexOf(sender) === -1) {\r\n this.typingActors.push(sender);\r\n this.update();\r\n }\r\n\r\n return () => {\r\n removeTypingState(this.typingActors, sender);\r\n this.update();\r\n };\r\n }\r\n\r\n /**\r\n * Displays a loader in the conversation.\r\n */\r\n loader(): CancelLoaderDelegate {\r\n this.loaders = this.loaders + 1;\r\n let dismissed = false;\r\n if (this.loaders === 1) {\r\n this.update();\r\n }\r\n return () => {\r\n if (!dismissed) {\r\n dismissed = true;\r\n this.loaders = this.loaders - 1;\r\n if (this.loaders === 0) {\r\n this.update();\r\n }\r\n }\r\n };\r\n }\r\n\r\n submitForm(key: string, handler: SubmitHandler) {\r\n this.formHandlers[key] = { ...this.formHandlers[key], submit: handler };\r\n }\r\n\r\n validateForm(key: string, handler: ValidateHandler) {\r\n this.formHandlers[key] = { ...this.formHandlers[key], validate: handler };\r\n }\r\n\r\n getHistory() {\r\n return this.conversationHistory.getConversationLogs();\r\n }\r\n}\r\n","import { ComponentPlatform, WidgetSettings } from '@telia-ace/widget-core';\r\n// import { closeAllModals } from '@telia-ace/widget-plugins';\r\nimport {\r\n createStorageWriter,\r\n StorageCategory,\r\n StorageMedium,\r\n StorageScope,\r\n} from '@telia-ace/widget-services';\r\nimport { Container, Implementation, Widget } from '@webprovisions/platform';\r\nimport {\r\n ConversationEndedBehavior,\r\n ConversationPlatform,\r\n} from '../conversation-platform';\r\n\r\nconst getParentWidget = (\r\n widgetName: string,\r\n implementation: Implementation\r\n) => {\r\n const mainWidgetName = widgetName.split('_contact');\r\n return implementation.widgets.get(mainWidgetName[0]);\r\n};\r\n\r\nconst getSeparateWidget = (container: Container) => {\r\n const originWidget = container.get('$widget');\r\n const { name, implementation }: Widget = container.get('$widget');\r\n\r\n const mainWidget =\r\n name.indexOf('_contact') > -1\r\n ? getParentWidget(name, implementation)\r\n : originWidget;\r\n const { data }: WidgetSettings = container.get('$settings');\r\n const { trigger }: WidgetSettings = mainWidget.container.get('$settings');\r\n const chatWidgetName = `${name\r\n .replace('_contact-method', '')\r\n .replace('_contact', '')}_contact-method`;\r\n\r\n const chatWidget = implementation.widgets.get(chatWidgetName);\r\n if (chatWidget && !trigger) {\r\n return { chatWidget, mainWidget, data };\r\n }\r\n return { mainWidget, data };\r\n};\r\n\r\nexport const shouldPreventDefault = (container: Container) => {\r\n const { chatWidget } = getSeparateWidget(container);\r\n return !!chatWidget;\r\n};\r\n\r\nexport const openChatWidget = (\r\n container: Container,\r\n contactMethod: any /*ContactMethodType*/,\r\n triggerDOMTarget?: HTMLElement\r\n) => {\r\n const { mainWidget, data, chatWidget } = getSeparateWidget(container);\r\n\r\n if (chatWidget) {\r\n if (chatWidget.state === 'activated') {\r\n return chatWidget.invoke('open').then(() => {\r\n chatWidget.container.getAsync('conversation').then((conversation) => {\r\n conversation.navigateToConversationIfActive(contactMethod.id);\r\n // .then(() => closeAllModals(container)); // TODO:\r\n });\r\n });\r\n }\r\n return chatWidget\r\n .activate()\r\n .then(() => {\r\n const { trigger } = chatWidget.container.get('$settings');\r\n trigger.action = 'hide'; // could be default in configuration\r\n return chatWidget\r\n .invoke('setSettings', () => ({\r\n data,\r\n trigger,\r\n activate: true,\r\n }))\r\n .then(() => {\r\n return chatWidget.container\r\n .getAsync('components')\r\n .then((components: ComponentPlatform) => {\r\n /**\r\n * Could cause issues if target widget is no longer as specific for this use case\r\n */\r\n const contactMethodsQuery = components\r\n .components()\r\n .ofType('contact-method');\r\n components.write({\r\n key: 'setContactMethodId',\r\n attributes: {\r\n properties: {\r\n id: contactMethod.id,\r\n guideId: contactMethod.guideId,\r\n },\r\n },\r\n target: contactMethodsQuery,\r\n provider: 'localStorage',\r\n });\r\n const conversationsQuery = components\r\n .components()\r\n .ofType('conversation');\r\n components.write({\r\n key: 'setConversationProvider',\r\n attributes: {\r\n properties: { providers: [contactMethod.clientName] },\r\n },\r\n target: conversationsQuery,\r\n provider: 'localStorage',\r\n });\r\n });\r\n });\r\n })\r\n .then(() => {\r\n return chatWidget.invoke('attach', {\r\n key: 'contact-method',\r\n triggerDOMElement: triggerDOMTarget,\r\n withRenderState: 'open',\r\n });\r\n })\r\n .then(() => {\r\n createStorageWriter(\r\n chatWidget.container,\r\n 'activeStickyWidget',\r\n StorageCategory.Necessary,\r\n {\r\n medium: StorageMedium.Local,\r\n scope: StorageScope.Implementation,\r\n }\r\n ).then((write) => write(chatWidget.name));\r\n\r\n return (\r\n chatWidget.container\r\n .getAsync('conversation')\r\n .then((platform) => {\r\n platform.setConversationEndedBehavior(\r\n ConversationEndedBehavior.Deactivate\r\n );\r\n })\r\n // .then(() => closeAllModals(container)) // TODO:\r\n .then(() => false)\r\n );\r\n });\r\n }\r\n mainWidget.container\r\n .getAsync('conversation')\r\n .then((platform: ConversationPlatform) => {\r\n return platform\r\n .navigateToConversationIfActive(contactMethod.id)\r\n .then(() =>\r\n platform.setConversationEndedBehavior(\r\n ConversationEndedBehavior.Navigate\r\n )\r\n );\r\n });\r\n return chatWidget ? false : true;\r\n};\r\n\r\nexport const navigateToConversation = (\r\n container: Container,\r\n contactMethod: any /*ContactMethodType*/,\r\n routeName = 'conversation'\r\n) => {\r\n const { mainWidget, chatWidget } = getSeparateWidget(container);\r\n if (chatWidget) {\r\n return chatWidget.container.getAsync('router').then((router: any) => {\r\n router.navigate(routeName, { id: contactMethod.id });\r\n });\r\n }\r\n\r\n return mainWidget.container\r\n .getAsync('conversation')\r\n .then((platform: ConversationPlatform) => {\r\n platform\r\n .setConversationEndedBehavior(ConversationEndedBehavior.Navigate)\r\n ?.then(() => {\r\n mainWidget.container.getAsync('router').then((router: any) => {\r\n mainWidget.container\r\n .getAsync('components')\r\n .then((components: ComponentPlatform) => {\r\n const conversationQuery = components\r\n .components()\r\n .ofType('conversation');\r\n components.write({\r\n key: 'setConversationProvider',\r\n attributes: {\r\n properties: { providers: [contactMethod.clientName] },\r\n },\r\n target: conversationQuery,\r\n provider: 'localStorage',\r\n });\r\n })\r\n .then(() => {\r\n router.navigate(routeName, { id: contactMethod.id });\r\n });\r\n });\r\n });\r\n });\r\n};\r\n","import {\r\n ComponentNodeController,\r\n ComponentPlatform,\r\n ComponentQuery,\r\n} from '@telia-ace/widget-core';\r\nimport { RouteData, RoutingService } from '@telia-ace/widget-routing';\r\nimport {\r\n createStorageWriter,\r\n readStorage,\r\n StorageCategory,\r\n StorageMedium,\r\n StorageWriter,\r\n} from '@telia-ace/widget-services';\r\nimport { lock } from '@telia-ace/widget-utilities';\r\nimport {\r\n Container,\r\n EventManager,\r\n EventSubscriptionCancellation,\r\n Widget,\r\n} from '@webprovisions/platform';\r\nimport { AgentSettings } from './agent';\r\nimport { ConversationController } from './conversation-controller';\r\nimport { ConversationProvider } from './conversation-provider';\r\nimport { createSessionStorageKey } from './store';\r\nimport {\r\n navigateToConversation,\r\n openChatWidget,\r\n shouldPreventDefault,\r\n} from './utils';\r\nimport { swapProvider } from './utils/swap-provider';\r\n\r\nconst STORAGE_KEY = 'conversations';\r\n\r\nexport type ConversationHandler = (\r\n conversation: ConversationProvider,\r\n component: ComponentNodeController\r\n) => void | (() => void);\r\n\r\nexport type UnregisterControllerDelegate = () => void;\r\n\r\nexport type ConversationProviderRegistration = {\r\n name: string;\r\n handler: ConversationHandler;\r\n};\r\n\r\nexport enum ConversationEndedBehavior {\r\n Deactivate = 'deactivate',\r\n Navigate = 'navigate',\r\n None = 'none',\r\n}\r\n\r\nexport type SessionInfo = {\r\n id?: string;\r\n route?: RouteData;\r\n conversationEndedBehavior?: ConversationEndedBehavior;\r\n};\r\n\r\nexport class ConversationPlatform {\r\n events: EventManager;\r\n public controllers: {\r\n conversation: ConversationController;\r\n component: ComponentNodeController;\r\n }[] = [];\r\n private providers: ConversationProviderRegistration[] = [];\r\n private disposeProviders: { [providerKey: string]: (() => void)[] } = {};\r\n private subscriptions: EventSubscriptionCancellation[] = [];\r\n private storageWriter: StorageWriter | null = null;\r\n private router: RoutingService | null = null;\r\n private buttonQuery: ComponentQuery | null = null;\r\n private sessionInfo: SessionInfo | null = null;\r\n\r\n constructor(\r\n private container: Container,\r\n private components: ComponentPlatform\r\n ) {\r\n const widget: Widget = container.get('$widget');\r\n this.events = widget.events.createChild(this);\r\n }\r\n\r\n initialize() {\r\n createStorageWriter(\r\n this.container,\r\n STORAGE_KEY,\r\n StorageCategory.Necessary,\r\n {\r\n medium: StorageMedium.Local,\r\n }\r\n ).then((writer) => (this.storageWriter = writer));\r\n\r\n readStorage<SessionInfo>(\r\n this.container,\r\n STORAGE_KEY,\r\n StorageMedium.Local\r\n ).then((storedSession) => {\r\n this.buttonQuery = this.components\r\n .components()\r\n .ofType('conversation-return-button');\r\n if (storedSession) {\r\n this.sessionInfo = storedSession;\r\n if (storedSession.id && storedSession.route) {\r\n this.writeToComponents({ active: true, alert: { show: false } });\r\n }\r\n }\r\n });\r\n this.container.getAsync('router').then((router) => (this.router = router));\r\n this.events.subscribe('conversation:ended', (_event, _data) => {\r\n switch (this.sessionInfo?.conversationEndedBehavior) {\r\n case ConversationEndedBehavior.Deactivate:\r\n const widget: Widget = this.container.get('$widget');\r\n widget.deactivate();\r\n break;\r\n case ConversationEndedBehavior.Navigate:\r\n const initialRoute = this.router?.getInitialRoute();\r\n if (initialRoute) {\r\n this.router?.navigate(initialRoute.name);\r\n }\r\n break;\r\n case ConversationEndedBehavior.None:\r\n default:\r\n break;\r\n }\r\n this.writeToComponents({ active: false });\r\n this.sessionInfo = null;\r\n this.storageWriter && this.storageWriter();\r\n });\r\n }\r\n\r\n addSubscription(sub: EventSubscriptionCancellation) {\r\n this.subscriptions.push(sub);\r\n }\r\n\r\n static getInstance(\r\n container: Container,\r\n key: string = 'conversation'\r\n ): Promise<ConversationPlatform> {\r\n return lock(container)(() => {\r\n return container.getAsync(key).then((value: ConversationPlatform) => {\r\n let conversation = value;\r\n\r\n if (!conversation) {\r\n return ComponentPlatform.getInstance(container).then((components) => {\r\n conversation = new ConversationPlatform(container, components);\r\n conversation.initialize();\r\n container.registerAsync(key, () => conversation);\r\n return conversation;\r\n });\r\n }\r\n return conversation;\r\n });\r\n });\r\n }\r\n\r\n navigateToConversationIfActive(id: string): Promise<void> {\r\n return readStorage<SessionInfo>(\r\n this.container,\r\n STORAGE_KEY,\r\n StorageMedium.Local\r\n ).then((storedSession) => {\r\n if (storedSession && storedSession.id === id) {\r\n if (storedSession.route) {\r\n const { name, params } = storedSession.route;\r\n this.router?.navigate(name, params);\r\n }\r\n }\r\n });\r\n }\r\n\r\n setConversationEndedBehavior(behavior: ConversationEndedBehavior) {\r\n return readStorage<SessionInfo>(\r\n this.container,\r\n STORAGE_KEY,\r\n StorageMedium.Local\r\n ).then((stored) => {\r\n let storedSession = stored;\r\n if (storedSession) {\r\n storedSession.conversationEndedBehavior = behavior;\r\n } else {\r\n storedSession = { conversationEndedBehavior: behavior };\r\n }\r\n this.sessionInfo = storedSession;\r\n return (\r\n (this.storageWriter && this.storageWriter(this.sessionInfo)) ||\r\n Promise.resolve()\r\n );\r\n });\r\n }\r\n\r\n async createController(id: string, options: { rehydrate: boolean }) {\r\n const storageKey = createSessionStorageKey(id);\r\n const { agents: storedAgents } = (await readStorage<{\r\n agents: AgentSettings[];\r\n }>(this.container, storageKey)) || { agents: [] };\r\n\r\n const index = this.controllers.findIndex((c) => c.conversation.id === id);\r\n let controller;\r\n if (index > -1) {\r\n controller = this.controllers[index].conversation;\r\n } else {\r\n controller = new ConversationController(this.container, id, options);\r\n }\r\n\r\n controller.setInitialStorage({ agents: storedAgents || [] });\r\n return controller;\r\n }\r\n\r\n registerProvider(name: string, handler: ConversationHandler): void {\r\n const provider = {\r\n name,\r\n handler,\r\n };\r\n this.providers.push(provider);\r\n // execute provider for all matching controllers\r\n this.controllers\r\n .filter(\r\n (controller) => controller.conversation.providers.indexOf(name) > -1\r\n )\r\n .forEach((controller) => {\r\n this.invokeHandler(provider, controller);\r\n });\r\n }\r\n\r\n registerController(\r\n conversation: ConversationController,\r\n component: ComponentNodeController\r\n ): boolean {\r\n const index = this.controllers.findIndex(\r\n (c) => c.conversation.id === conversation.id\r\n );\r\n let controller: any;\r\n if (index < 0) {\r\n controller = { conversation, component };\r\n this.controllers.push(controller);\r\n const invokeHandlers = (providers: string[]) => {\r\n if (providers) {\r\n this.providers\r\n .filter((provider) => providers.indexOf(provider.name) > -1)\r\n .forEach((provider) => {\r\n this.invokeHandler(provider, controller);\r\n });\r\n }\r\n };\r\n\r\n this.subscriptions.push(\r\n conversation.onDispose((_event, data) => {\r\n const index = this.controllers.findIndex(\r\n (c) => c.conversation === data\r\n );\r\n index > -1 && this.controllers.splice(index, 1);\r\n this.components\r\n .components()\r\n .ofType('conversation-return-button')\r\n .select()\r\n .writeProperties({ active: false });\r\n\r\n this.events.dispatch('conversation:ended', {}, { bubbles: true });\r\n })\r\n );\r\n this.subscriptions.push(\r\n conversation.onProvidersChange((_event, data) => {\r\n const {\r\n added,\r\n removed = [],\r\n }: { added: string[]; removed: string[] } = data;\r\n removed.forEach((removedProvider) => {\r\n (this.disposeProviders[removedProvider] || []).forEach(\r\n (dispose) => {\r\n dispose();\r\n }\r\n );\r\n });\r\n invokeHandlers(added);\r\n })\r\n );\r\n\r\n this.subscriptions.push(\r\n conversation.onStarted((_event, isActive) => {\r\n const session: SessionInfo = {\r\n id: conversation.id,\r\n route: this.router?.getRouteData(),\r\n conversationEndedBehavior:\r\n this.sessionInfo?.conversationEndedBehavior,\r\n };\r\n this.sessionInfo = session;\r\n this.storageWriter && this.storageWriter(session);\r\n\r\n this.writeToComponents({ active: isActive });\r\n })\r\n );\r\n\r\n this.subscriptions.push(\r\n conversation.onUnreadMessage((_event, data) => {\r\n this.events.dispatch('conversation:unread-message', data);\r\n this.writeToComponents({ alert: { show: data } });\r\n })\r\n );\r\n\r\n invokeHandlers(conversation.providers);\r\n return true;\r\n }\r\n controller = this.controllers[index];\r\n return false;\r\n }\r\n\r\n private writeToComponents(\r\n properties: any,\r\n _key: string = 'conversationReturnButtonState'\r\n ) {\r\n if (this.buttonQuery) {\r\n this.components.write({\r\n key: 'conversationReturnButtonState',\r\n attributes: { properties },\r\n target: this.buttonQuery,\r\n provider: 'localStorage',\r\n });\r\n }\r\n }\r\n\r\n private invokeHandler(\r\n provider: ConversationProviderRegistration,\r\n controller: any\r\n ) {\r\n const dispose = provider.handler(\r\n controller.conversation.createProvider(provider.name),\r\n controller.component\r\n );\r\n if (dispose) {\r\n if (!this.disposeProviders[provider.name]) {\r\n this.disposeProviders[provider.name] = [];\r\n }\r\n this.disposeProviders[provider.name].push(dispose);\r\n }\r\n }\r\n\r\n getComponentRoute() {\r\n return readStorage<SessionInfo>(\r\n this.container,\r\n STORAGE_KEY,\r\n StorageMedium.Local\r\n ).then((stored) => stored?.route);\r\n }\r\n\r\n dispose() {\r\n Object.keys(this.disposeProviders).forEach((key) => {\r\n this.disposeProviders[key].forEach((dispose) => {\r\n dispose();\r\n });\r\n });\r\n this.subscriptions.forEach((unsubscribe) => {\r\n unsubscribe();\r\n });\r\n this.controllers = [];\r\n this.providers = [];\r\n }\r\n\r\n public static async handleContactMethodClick(\r\n event: any,\r\n container: Container,\r\n contactMethod: any,\r\n _callback?: Function\r\n ) {\r\n if (shouldPreventDefault(container)) {\r\n event.preventDefault();\r\n let triggerEl = document.getElementById('humany-dynamic-anchor');\r\n if (!triggerEl) {\r\n triggerEl = document.createElement('a');\r\n triggerEl.setAttribute('href', '#');\r\n triggerEl.id = 'humany-dynamic-anchor';\r\n document.body.appendChild(triggerEl);\r\n }\r\n openChatWidget(container, contactMethod, triggerEl);\r\n }\r\n openChatWidget(container, contactMethod);\r\n }\r\n\r\n public static async handleContactMethodSubmit(\r\n container: Container,\r\n contactMethod: any\r\n ) {\r\n if (contactMethod?.body.form.meta?.conversation?.id) {\r\n // if we already are in a conversational context, we always want to swap\r\n // the current provider instead of a route navigation\r\n return swapProvider(\r\n container,\r\n contactMethod.body.form.meta.conversation.id,\r\n contactMethod.clientName\r\n );\r\n }\r\n\r\n return navigateToConversation(container, contactMethod);\r\n }\r\n}\r\n","var Wn = Object.defineProperty, Bn = Object.defineProperties;\nvar Un = Object.getOwnPropertyDescriptors;\nvar Pe = Object.getOwnPropertySymbols;\nvar zn = Object.prototype.hasOwnProperty, Fn = Object.prototype.propertyIsEnumerable;\nvar ke = (n, t, e) => t in n ? Wn(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e, dt = (n, t) => {\n for (var e in t || (t = {}))\n zn.call(t, e) && ke(n, e, t[e]);\n if (Pe)\n for (var e of Pe(t))\n Fn.call(t, e) && ke(n, e, t[e]);\n return n;\n}, Ce = (n, t) => Bn(n, Un(t));\nvar Xt = (n, t, e) => new Promise((r, s) => {\n var i = (c) => {\n try {\n a(e.next(c));\n } catch (h) {\n s(h);\n }\n }, o = (c) => {\n try {\n a(e.throw(c));\n } catch (h) {\n s(h);\n }\n }, a = (c) => c.done ? r(c.value) : Promise.resolve(c.value).then(i, o);\n a((e = e.apply(n, t)).next());\n});\nconst te = (n, t, e, ...r) => {\n const s = `[${n.get(\"$environment\").name || \"webprovisions\"}] ${e}`;\n switch (t) {\n case \"info\":\n console.info(s, ...r);\n break;\n case \"warning\":\n console.warn(s, ...r);\n break;\n case \"error\":\n console.error(s, ...r);\n break;\n }\n}, Jn = (n) => {\n const t = n.container || n;\n return {\n info: (e, ...r) => te(t, \"info\", e, ...r),\n warn: (e, ...r) => te(t, \"warning\", e, ...r),\n error: (e, ...r) => te(t, \"error\", e, ...r)\n };\n};\nvar Ht = /* @__PURE__ */ ((n) => (n.Implementation = \"implementation\", n.Widget = \"widget\", n))(Ht || {}), at = /* @__PURE__ */ ((n) => (n.Pre = \"pre\", n.Post = \"post\", n))(at || {});\nconst qn = (n, t, e, r) => {\n try {\n const s = new t(e, r);\n return {\n name: n,\n invoke: (i, o) => {\n let a;\n return s[i] && (a = s[i].call(s, o)), Promise.resolve(a);\n },\n getInstance: () => s\n };\n } catch (s) {\n if (s.message && s.message.indexOf(\"is not a constructor\") >= 0)\n return {\n name: n,\n invoke: (i) => {\n let o;\n return i === \"initialize\" && (o = t(e, r)), Promise.resolve(o);\n },\n getInstance: () => t\n };\n throw s;\n }\n};\nfunction Se(n, t) {\n return typeof n == \"undefined\" ? t : n;\n}\nlet Kn = class {\n constructor(t = {}) {\n this.part = t;\n }\n createCommand(t, e, r) {\n let s;\n typeof e == \"function\" ? s = {\n scope: Ht.Widget,\n stage: at.Post,\n defaultArgs: void 0,\n handlerResolver: e\n } : s = {\n scope: Se(e.scope, Ht.Widget),\n stage: Se(e.stage, at.Post),\n defaultArgs: e.defaultArgs,\n handlerResolver: r\n };\n let i = this.part;\n const o = t.split(\".\");\n return o.forEach((a, c) => {\n c === o.length - 1 ? i[a] || (i[a] = () => s) : i = this.part[a] = this.part[a] || {};\n }), this;\n }\n get() {\n return this.part;\n }\n};\nconst ge = (n) => {\n const t = new Kn({});\n return n(t), t.get();\n};\nge((n) => {\n n.createCommand(\n \"types.register\",\n { scope: Ht.Implementation, stage: at.Pre },\n (t) => (e, r) => {\n t.container.get(\"$types\")[e] = r;\n }\n ).createCommand(\n \"type\",\n { stage: at.Pre },\n (t) => (e) => {\n t.container.register(\"$type\", e);\n }\n ).createCommand(\n \"settings\",\n { stage: at.Pre, defaultArgs: [null] },\n (t) => (e) => {\n t.events.dispatch(\n \"settings:change\",\n e,\n { bubbles: !0 }\n ), t.container.register(\"$settings\", e);\n }\n ).createCommand(\n \"plugin\",\n { stage: at.Pre },\n (t) => (e, r, s) => {\n const { container: i } = t;\n let o = null, a = e, c = r;\n typeof e == \"string\" && (o = e, a = r, c = s);\n const h = (u) => {\n const { transformPluginSettings: l } = t.container.get(\"$environmentOptions\"), d = l ? l(\n c || {},\n o,\n t.container,\n a\n ) : r;\n try {\n const f = qn(\n o,\n a,\n i,\n d\n );\n i.get(\"$plugins\").push(f), u && f.invoke(\"initialize\", null);\n } catch (f) {\n Jn(t).warn(\"Error when initializing plugin\", f);\n }\n };\n t.container.get(\"$instance\") ? h(!0) : t.events.subscribeOnce(\"widget:instance-created\", () => h(!1));\n }\n ).createCommand(\n \"container.register\",\n (t) => (e, r) => {\n t.container.register(e, r);\n }\n ).createCommand(\n \"container.registerAsync\",\n (t) => (e, r) => {\n t.container.registerAsync(e, r);\n }\n ).createCommand(\n \"container.registerFactory\",\n (t) => (e, r) => {\n t.container.registerFactory(e, r);\n }\n ).createCommand(\n \"container.touch\",\n (t) => (e, r) => {\n t.container.touch(e, r);\n }\n ).createCommand(\n \"csp\",\n {},\n (t) => (e) => {\n t.container.register(\"csp\", e);\n }\n );\n});\nvar sn = /* @__PURE__ */ ((n) => (n.Activating = \"activating\", n.Loading = \"loading\", n.Activated = \"activated\", n.Deactivating = \"deactivating\", n.Deactivated = \"deactivated\", n))(sn || {});\nlet Yn = class {\n /**\n * Creates a new `Widget` instance.\n * @param container The `Container` instance to base the widget upon.\n */\n constructor(t) {\n this.container = t, this.widget = t.get(\"$widget\"), this.settings = t.get(\"$settings\"), this.events = this.widget.events, this.widget.events.subscribe(\"settings:change\", (e, r) => {\n this.settings = r;\n });\n }\n};\nvar Ae = Object.getOwnPropertySymbols, Gn = Object.prototype.hasOwnProperty, Qn = Object.prototype.propertyIsEnumerable, Zn = (n, t) => {\n var e = {};\n for (var r in n)\n Gn.call(n, r) && t.indexOf(r) < 0 && (e[r] = n[r]);\n if (n != null && Ae)\n for (var r of Ae(n))\n t.indexOf(r) < 0 && Qn.call(n, r) && (e[r] = n[r]);\n return e;\n};\nfunction Xn(n = {}) {\n const t = n, {\n phrase: e = \"\",\n category: r,\n guideCategory: s,\n contactCategory: i,\n take: o,\n connectionKey: a,\n accordion: c,\n id: h,\n uriName: u,\n sorting: l,\n tag: d,\n tagId: f,\n tagTitle: g\n } = t, E = Zn(t, [\n \"phrase\",\n \"category\",\n \"guideCategory\",\n \"contactCategory\",\n \"take\",\n \"connectionKey\",\n \"accordion\",\n \"id\",\n \"uriName\",\n \"sorting\",\n \"tag\",\n \"tagId\",\n \"tagTitle\"\n ]), p = {};\n return Object.keys(E).forEach((C) => {\n typeof n[C] == \"string\" && (p[C] = n[C]);\n }), typeof e == \"string\" && e.length && (p.phrase = e), e === null && (p.phrase = e), typeof s == \"string\" && s !== \"0\" && (p.guideCategory = s), typeof s == \"number\" && s !== 0 && (p.guideCategory = s), typeof s == \"object\" && s !== null && (typeof s.id == \"string\" && s.id !== \"0\" && (p.guideCategory = s.id), typeof s.id == \"number\" && s.id !== 0 && (p.guideCategory = s.id)), typeof i == \"string\" && i !== \"0\" && (p.contactCategory = i), typeof i == \"number\" && i !== 0 && (p.contactCategory = i), typeof i == \"object\" && i !== null && (typeof i.id == \"string\" && i.id !== \"0\" && (p.contactCategory = i.id), typeof i.id == \"number\" && i.id !== 0 && (p.contactCategory = i.id)), typeof r == \"string\" && r !== \"0\" && (p.category = r), typeof r == \"number\" && r !== 0 && (p.category = r), typeof r == \"object\" && r !== null && (typeof r.id == \"string\" && r.id !== \"0\" && (p.category = r.id), typeof r.id == \"number\" && r.id !== 0 && (p.category = r.id)), h && (p.id = h), u && (+p.category || +p.guideCategory || +p.guide || +p.contactCategory || +p.contactMethod) && (p.uriName = u), a && (p.connectionKey = a), o && (p.take = o), l && (p.sorting = l), typeof c == \"string\" && c.length > 0 && (p.accordion = c), typeof d == \"string\" && d !== \"0\" && (p.tag = d), typeof d == \"number\" && d !== 0 && (p.tag = d), Array.isArray(d) && d.length && (p.tag = d), (typeof f == \"string\" || typeof f == \"number\") && (p.tagId = f), typeof g == \"string\" && (p.tagTitle = g), typeof p.tag == \"string\" && (p.tag = p.tag.split(\",\")), p;\n}\nconst Jt = (n, t, ...e) => typeof t == \"string\" ? n(`[humany] ${t}`, ...e) : n(t, ...e), bt = class {\n constructor() {\n this.keys = [], this.log = (t, ...e) => this.lookup(t, () => bt.log(...e)), this.warn = (t, ...e) => this.lookup(t, () => bt.warn(...e)), this.error = (t, ...e) => this.lookup(t, () => bt.error(...e)), this.info = (t, ...e) => this.lookup(t, () => bt.info(...e));\n }\n lookup(t, e) {\n this.keys.indexOf(t) === -1 && (this.keys.push(t), e());\n }\n};\nlet I = bt;\nI.log = (...n) => Jt(console.log, ...n);\nI.warn = (...n) => Jt(console.warn, ...n);\nI.error = (...n) => Jt(console.error, ...n);\nI.info = (...n) => Jt(console.info, ...n);\nconst on = (n) => {\n let t = {}, e, r;\n if (typeof n != \"object\" || n === null)\n return n;\n t = Array.isArray(n) ? [] : {};\n for (r in n)\n e = n[r], t[r] = typeof e == \"object\" && e !== null ? on(e) : e;\n return t;\n}, tr = on;\nfunction Ne(n) {\n let t = 0;\n if (n.length === 0)\n return t.toString();\n for (let e = 0; e < n.length; e++) {\n const r = n.charCodeAt(e);\n t = (t << 5) - t + r, t = t & t;\n }\n return t.toString();\n}\nlet er = class {\n constructor(t, e) {\n this.lockWarningTime = t, this.lockErrorTime = e, this.tasks = [], this.current = Promise.resolve(), this.next = this.next.bind(this);\n }\n add(t, e, r, s) {\n this.tasks.push({ task: t, resolve: e, reject: r, done: s }), this.next();\n }\n next() {\n this.current = this.current.then(() => {\n const t = this.tasks.shift();\n if (t) {\n let e;\n const r = setTimeout(() => {\n process.env.NODE_ENV !== \"production\" && I.warn(\n `A lock has exceeded ${this.lockWarningTime} ms. Waiting additional ${this.lockErrorTime} ms before rejecting the task.`,\n t\n ), e = setTimeout(() => {\n t.reject(\"lock timeout exceeded\");\n }, this.lockErrorTime);\n }, this.lockWarningTime), s = Promise.resolve(t.task()).then((i) => (clearTimeout(r), clearTimeout(e), i));\n return Promise.resolve(s).then(this.next).then(\n () => s.then((i) => {\n t.done(), t.resolve(i);\n })\n ).catch((i) => (t.done(), t.reject(i), this.next()));\n }\n return Promise.resolve();\n });\n }\n};\nconst kt = /* @__PURE__ */ new WeakMap();\nfunction G(n, t = 5e3, e = 1e3) {\n return kt.has(n) || kt.set(n, new er(t, e)), (r) => new Promise((s, i) => {\n const o = kt.get(n);\n o.add(r, s, i, () => {\n o.tasks.length || kt.delete(n);\n });\n });\n}\nconst nr = (n, t) => {\n const e = () => t.querySelectorAll(\"[data-loading=true]\").length > 0, r = (() => {\n let s = !1;\n return () => {\n s || (n.get(\"$widget\").events.dispatch(\"widget:data-loaded\", {\n element: t\n }), s = !0);\n };\n })();\n if (!e())\n return r();\n new MutationObserver((s, i) => {\n s.find(\n (o) => o.type === \"attributes\" && o.attributeName === \"data-loading\"\n ) && !e() && (i.disconnect(), r());\n }).observe(t, {\n attributes: !0,\n childList: !0,\n subtree: !0\n });\n}, rr = (n, t) => {\n n.get(\"$widget\").container.getAsync(\"components\").then((e) => {\n e.events.subscribeOnce(\"components:component-model-initialized\", () => {\n let r = e.nodes.visible.reduce(\n (i, o) => (!o.name || !o.type || o.type === \"view\" || o.type === \"root\" || o.attributes.layout.size === \"none\" || t.querySelector(`[data-name=\"${o.name}\"]`) || i.push(o.name), i),\n []\n ), s = !1;\n new MutationObserver((i, o) => {\n i.forEach((a) => {\n if (a.addedNodes) {\n const c = Array.from(\n a.addedNodes\n ).reduce((h, u) => {\n const l = u.getAttribute && u.getAttribute(\"data-name\");\n return l && r.indexOf(l) > -1 && h.push(l), h;\n }, []);\n r = r.filter((h) => c.indexOf(h) === -1), !s && r.length === 0 && (s = !0, nr(n, t), o.disconnect());\n }\n });\n }).observe(t, {\n attributes: !1,\n characterData: !1,\n childList: !0,\n subtree: !0,\n attributeOldValue: !1,\n characterDataOldValue: !1\n });\n });\n });\n}, sr = rr, ir = (n = {}) => (Object.keys(n).forEach((t) => {\n (n[t] === null || typeof n[t] == \"undefined\") && delete n[t];\n}), n), lt = ir, Le = (n, t) => {\n let e = !0;\n return Object.keys(n).length !== Object.keys(t).length || Object.keys(n).some((r) => !Object.keys(t).some((s) => r === s)) ? !1 : (Object.keys(n).forEach((r) => {\n if (e) {\n const s = typeof n[r] == \"undefined\" ? \"\" : n[r], i = typeof t[r] == \"undefined\" ? \"\" : t[r];\n e = s.toString() === i.toString();\n }\n }), e);\n}, nt = () => Math.floor((1 + Math.random()) * 65536).toString(16).substring(1);\nfunction Pt() {\n return nt() + nt() + \"-\" + nt() + \"-\" + nt() + \"-\" + nt() + \"-\" + nt() + nt() + nt();\n}\nvar or = Object.defineProperty, ar = Object.defineProperties, cr = Object.getOwnPropertyDescriptors, Me = Object.getOwnPropertySymbols, hr = Object.prototype.hasOwnProperty, ur = Object.prototype.propertyIsEnumerable, De = (n, t, e) => t in n ? or(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e, lr = (n, t) => {\n for (var e in t || (t = {}))\n hr.call(t, e) && De(n, e, t[e]);\n if (Me)\n for (var e of Me(t))\n ur.call(t, e) && De(n, e, t[e]);\n return n;\n}, dr = (n, t) => ar(n, cr(t));\nclass pr {\n constructor(t) {\n const { events: e } = t.get(\"$widget\");\n this.events = e.createChild(this);\n }\n action(t, e, r) {\n this.events.dispatch(\"data:action\", { action: e, value: r, target: t }, { bubbles: !0 });\n }\n subscribe(t, e) {\n return this.events.subscribe(\n \"data:action\",\n (r, { action: s, value: i, target: o }) => t === o && e(t, s, i)\n );\n }\n}\nconst an = (n) => {\n const t = [];\n return [\n (e, r) => {\n t.push(n.subscribe(e, r));\n },\n () => {\n t.forEach((e) => {\n e();\n });\n }\n ];\n};\nlet yt = class {\n constructor(t, e = []) {\n this.platform = t, this.rules = e;\n }\n match(t) {\n return this.rules.every((e) => !(e.id && e.id !== t.id || e.type && e.type !== t.type));\n }\n ofType(t) {\n return this.rules.push({ type: t }), this;\n }\n withId(t) {\n return this.rules.push({ id: t }), this;\n }\n select() {\n return new fr(this.platform, this);\n }\n};\nclass me {\n constructor(t, e, r) {\n this.platform = t, this.node = e, this.actions = new qt(\n t,\n new yt(t).withId(e.id),\n r\n );\n const [s, i] = an(this.platform.events);\n this.subscribe = s, this.unsubscribe = i;\n }\n properties(t) {\n return t && this.node.touchProperties((e) => t(e)), this.node.attributes.properties;\n }\n context(t) {\n return t && this.subscribe(\"components:context-changed\", (e, { node: r }) => {\n r === this.node && t(this.node.attributes.context);\n }), this.node.attributes.context;\n }\n layout(t) {\n return t && this.subscribe(\"components:layout-changed\", (e, { node: r }) => {\n r === this.node && t(this.node.attributes.layout);\n }), this.node.attributes.layout;\n }\n writeProperties(t, e) {\n this.node.writeProperties(t, e);\n }\n writeContext(t, e) {\n this.node.writeProperties(t, e);\n }\n writeLayout(t, e) {\n this.node.writeLayout(t, e);\n }\n dispose() {\n this.unsubscribe(), this.actions.dispose();\n }\n}\nclass fr {\n constructor(t, e, r = !0) {\n this.platform = t, this.target = e, this.clearOnDispose = r, this.removes = [], this.actions = new qt(this.platform, this.target);\n }\n writeProperties(t, e) {\n this.removes.push(\n this.platform.write({\n options: e,\n attributes: { properties: t },\n target: this.target,\n removable: this.clearOnDispose\n })\n );\n }\n writeContext(t, e) {\n this.removes.push(\n this.platform.write({\n options: e,\n attributes: { context: t },\n target: this.target,\n removable: this.clearOnDispose\n })\n );\n }\n writeLayout(t, e) {\n this.removes.push(\n this.platform.write({\n options: e,\n attributes: { layout: t },\n target: this.target,\n removable: this.clearOnDispose\n })\n );\n }\n dispose() {\n this.removes.forEach((t) => {\n t();\n }), this.actions.dispose();\n }\n}\nconst gr = (n, t, e) => {\n const r = n.concat(), s = (i, o, a) => {\n let c = !0;\n if (r.length) {\n const h = r.shift(), u = (l, d) => (c = !1, s(l, Object.assign({}, o, d), a));\n return Promise.resolve(h(i, u, a)).then((l) => dr(lr({}, l), {\n cancelled: c\n }));\n }\n return Promise.resolve({ data: i, cancelled: !1, options: o });\n };\n return s(t, {}, e);\n};\nlet qt = class {\n constructor(t, e, r) {\n this.platform = t, this.target = e, this.ns = r, this.subscriptions = [], this.create = this.create.bind(this);\n }\n create(t, e = () => {\n }) {\n const r = {\n key: t,\n fn: e,\n target: this.target,\n ns: this.ns\n };\n this.platform.actionsState.handlers.push(r);\n const s = () => {\n const i = this.platform.actionsState.handlers.indexOf(r);\n i > -1 && this.platform.actionsState.handlers.splice(i, 1);\n };\n return this.subscriptions.push(s), s;\n }\n dispatch(t, e) {\n const r = this.platform.nodes.all.concat(\n this.platform.nodes.detached\n ), s = {}, i = this.platform.actionsState.handlers.filter(\n (o) => o.key === t && (!o.ns || !this.ns || o.ns === this.ns)\n );\n return Promise.all(\n i.map((o) => {\n const a = r.filter(\n (h) => o.target.match(h) && this.target.match(h)\n ), c = this.platform.actionsState.watchers.filter((h) => h.key === t && (!h.ns || !this.ns || h.ns === this.ns) && a.some((u) => h.target.match(u))).map((h) => h.fn);\n return Promise.all(\n a.map((h) => {\n const u = new me(\n this.platform,\n h,\n this.ns\n );\n return gr(c, e, u).then((l) => {\n const { data: d = {}, options: f, cancelled: g } = l;\n return Promise.resolve(\n g ? {} : o.fn(d, f, u)\n ).then((E) => {\n s[h.id] = E;\n });\n });\n })\n );\n })\n ).then(() => s);\n }\n watch(t, e) {\n let r = t, s = this.ns;\n const i = t.split(\".\");\n i.length > 1 && (s = i[0], r = i.splice(1).join(\".\"));\n const o = {\n fn: e,\n target: this.target,\n key: r,\n ns: s\n };\n this.platform.actionsState.watchers.push(o);\n const a = () => {\n const c = this.platform.actionsState.watchers.indexOf(o);\n c > -1 && this.platform.actionsState.watchers.splice(c, 1);\n };\n return this.subscriptions.push(a), a;\n }\n dispose() {\n this.subscriptions.forEach((t) => t());\n }\n};\nge((n) => {\n n.createCommand(\"components\", (t) => (e) => {\n t.events.subscribeOnce(\"components:platform-created\", (r, { platform: s }) => {\n e.handlers && e.handlers.forEach(([i, o]) => {\n s.addComponentHandler(i, o);\n });\n });\n });\n});\nlet de = class {\n constructor(t, e) {\n this.events = t, this.tags = [], this.children = {}, this.changesets = [], this.mountCount = 0, this.id = Pt(), this.type = e, this.attributes = {\n context: {},\n properties: {},\n layout: {},\n tags: []\n }, this.writeLayout({ size: \"full\", indent: 0 });\n }\n mount(t, e) {\n let r = t.get(\"mounted-nodes\");\n return r || (r = /* @__PURE__ */ new Map(), t.register(\"mounted-nodes\", r)), r.has(this) ? (process.env.NODE_ENV !== \"production\" && I.error(\"Trying to mount an already mounted component node.\", this), () => {\n }) : (this.events.dispatch(\"components:node-mounted\", { node: this }), this.mountCount === 0 && (this.mountCount = this.mountCount + 1, this.events.dispatch(\"components:node-enter\", { node: this })), () => {\n r.delete(this), this.events.dispatch(\"components:node-unmounted\", { node: this }), this.mountCount = this.mountCount - 1, this.mountCount === 0 && this.events.dispatch(\"components:node-exit\", { node: this });\n });\n }\n appendChild(t, e = \"default\") {\n if (t.parent) {\n if (t.parent === this)\n return;\n t.parent.removeChild(t);\n }\n t.parent = this, this.children[e] || (this.children[e] = []), this.children[e].push(t), this.events.dispatch(\"components:node-appended\", { node: t });\n }\n prependChild(t, e = \"default\") {\n if (t.parent) {\n if (t.parent === this)\n return;\n t.parent.removeChild(t);\n }\n t.parent = this, this.children[e] || (this.children[e] = []), this.children[e].unshift(t), this.events.dispatch(\"components:node-appended\", { node: t });\n }\n touchProperties(t, e = {}, r) {\n const s = [{ properties: t }, e];\n return this.changesets.push(s), this.events.dispatch(\"components:set-properties\", { node: this }), () => {\n if (r) {\n const i = this.changesets.indexOf(s);\n i > -1 && (this.changesets.splice(i, 1), this.events.dispatch(\"components:set-properties\", { node: this }));\n }\n };\n }\n writeProperties(t, e = {}, r) {\n const s = [{ properties: t }, e];\n return this.changesets.push(s), this.events.dispatch(\"components:set-properties\", { node: this }), () => {\n if (r) {\n const i = this.changesets.indexOf(s);\n i > -1 && (this.changesets.splice(i, 1), this.events.dispatch(\"components:set-properties\", { node: this }));\n }\n };\n }\n writeLayout(t, e = {}, r) {\n const s = [{ layout: t }, e];\n return this.changesets.push(s), this.events.dispatch(\"components:set-layout\", { node: this }), () => {\n if (!r)\n return;\n const i = this.changesets.indexOf(s);\n i > -1 && (this.changesets.splice(i, 1), this.events.dispatch(\"components:set-layout\", { node: this }));\n };\n }\n writeContext(t, e = {}, r) {\n const s = [{ context: t }, e];\n return this.changesets.push(s), this.events.dispatch(\"components:set-context\", { node: this }), () => {\n if (!r)\n return;\n const i = this.changesets.indexOf(s);\n i > -1 && (this.changesets.splice(i, 1), this.events.dispatch(\"components:set-context\", { node: this }));\n };\n }\n getChildren(t = \"default\") {\n const e = this.children[t] || [];\n return e.reduce((r, s, i) => {\n const { order: o = i } = s.attributes.layout;\n return r[o] ? r.splice(o, 0, s) : r[o] = s, r;\n }, Array(e.length));\n }\n remove() {\n this.parent && this.parent.removeChild(this);\n }\n removeChild(t) {\n Object.keys(this.children).forEach((e) => {\n const r = this.children[e], s = r.indexOf(t);\n s > -1 && (r.splice(s, 1), this.events.dispatch(\"components:node-removed\", { node: t, parentNode: this }));\n }), delete t.parent;\n }\n};\nconst cn = (n, t, e) => {\n for (let r = 0, s = n.length; r < s && e(n[r]) !== !0; r++) {\n const i = t[n[r].id] || \"default\", o = n[r].getChildren(i);\n cn(o, t, e);\n }\n}, Kt = (n, t, e) => {\n if (e(n) !== !0) {\n const r = t[n.id] || \"default\", s = n.children[r];\n cn(s, t, e);\n }\n}, Dt = (n, t) => {\n const e = [];\n return Kt(n, t, (r) => {\n e.push(r);\n }), e;\n}, hn = (n, t, e) => {\n let r;\n return Kt(n, t, (s) => {\n if (e(s))\n return r = s, !0;\n }), r;\n};\nlet mr = class {\n constructor(t, e, r) {\n this.root = t, this.switches = e, this.all = [], this.visible = [], this.detached = [], r.subscribe(\"components:node-appended\", (s, i) => {\n this.all.push(i.node), this.visible = Dt(t, e);\n }), r.subscribe(\"components:node-removed\", (s, i) => {\n let o = this.all.indexOf(i.node);\n o > -1 && this.all.splice(o, 1), o = this.visible.indexOf(i.node), o > -1 && this.visible.splice(o, 1), this.visible = Dt(t, e);\n }), r.subscribe(\"components:node-switched\", (s, i) => {\n this.visible = Dt(t, e);\n });\n }\n query(t = {}) {\n const e = [];\n return Kt(this.root, this.switches, (r) => {\n Object.keys(t).every((s) => t[s] === r[s]) && e.push(r);\n }), e;\n }\n get(t) {\n return hn(this.root, this.switches, (e) => e.id === t) || this.detached.find((e) => e.id === t);\n }\n}, yr = class {\n constructor() {\n this.handlers = /* @__PURE__ */ new Map();\n }\n add(t, e) {\n this.handlers.set(t, e);\n }\n get(t) {\n return this.handlers.get(t);\n }\n};\nconst vr = (n) => {\n let t = n, e = 0;\n for (; t.parent; )\n e = e + 1, t = t.parent;\n return e;\n}, br = (n) => n.map(([t, e]) => [vr(t), t, e]).sort(([t], [e]) => t - e).map(([, t, e]) => [t, e]), ee = (n) => n instanceof Date ? !1 : n && typeof n == \"object\" && !Array.isArray(n), Q = (n, ...t) => {\n if (!t.length)\n return n;\n const e = t.shift();\n if (ee(n) && ee(e))\n for (const r in e)\n ee(e[r]) ? (n[r] || Object.assign(n, { [r]: {} }), Q(n[r], e[r])) : Object.assign(n, { [r]: e[r] });\n return Q(n, ...t);\n}, wr = (n, t) => !n || n === \"all\" ? !0 : n.some((e) => t.indexOf(e) > -1), Or = (n, t) => {\n let e = [], r = [], s;\n const i = () => {\n process.env.NODE_ENV !== \"production\" && console.time(\"state-processor.flush\");\n const a = /* @__PURE__ */ new Map(), c = br(e.map((u, l) => [u, r[l]])), h = (u, l) => {\n var d;\n const f = a.get(u) || {}, g = l.context && !f.context, E = l.properties && !f.properties, p = l.layout && !f.layout;\n a.set(u, {\n context: f.context || g,\n properties: f.properties || E,\n layout: f.layout || p\n }), E && (u.attributes.properties = {}), p && (u.attributes.layout = {}), g && (u.attributes.context = Q({}, (d = u.parent) == null ? void 0 : d.attributes.context));\n const C = [], R = [], B = [];\n if (u.changesets.forEach((_) => {\n const [D, H] = _;\n wr(H.breakpoints, n.breakpoints) && (E && (typeof D.properties == \"function\" ? C.push(\n D.properties\n ) : Q(u.attributes.properties, D.properties)), p && (typeof D.layout == \"function\" ? R.push(D.layout) : Q(u.attributes.layout, D.layout)), g && (typeof D.context == \"function\" ? B.push(D.context) : Q(u.attributes.context, D.context)));\n }), C.forEach((_) => {\n Q(u.attributes.properties, _(u.attributes.properties));\n }), R.forEach((_) => {\n Q(u.attributes.layout, _(u.attributes.layout));\n }), B.forEach((_) => {\n Q(u.attributes.context, _(u.attributes.context));\n }), g || l.recursive) {\n const _ = n.getBranch(u), D = l.recursive ? l : {\n context: !!g\n };\n u.getChildren(_).forEach((H) => {\n h(H, D);\n });\n }\n };\n process.env.NODE_ENV !== \"production\" && console.timeEnd(\"state-processor.flush\"), c.forEach(([u, l]) => {\n h(u, l);\n }), e = [], r = [], t(a);\n }, o = () => {\n clearTimeout(s), s = setTimeout(i, 0);\n };\n return (a, c) => {\n const h = e.indexOf(a);\n if (h > -1) {\n const u = r[h];\n return c.context && (u.context = !0), c.properties && (u.properties = !0), c.layout && (u.layout = !0), c.recursive && (u.recursive = !0), o();\n }\n return e.push(a), r.push(c), o();\n };\n};\nlet Yt = class {\n constructor(t, e = {}) {\n this.providers = e, this.breakpoints = [], this.actionsState = { handlers: [], watchers: [] }, this.switches = {}, this.changesets = [], this.subscriptions = [], this.customComponentHandler = new yr(), this.events = t.events.createChild(this);\n const r = new de(this.events, \"root\");\n r.name = `root-${t.name}`, this.nodes = new mr(r, this.switches, this.events);\n const s = this.processNode = Or(this, (i) => {\n const o = Array.from(i.keys());\n process.env.NODE_ENV !== \"production\" && console.info(`STATE PROCESSOR: ${o.length} node(s) processed:\n${o.map(\n (a) => `${a.name || \"<no name>\"} (${a.id})\n`\n )}`), o.forEach((a) => {\n const c = i.get(a);\n a.parent && a.parent.type === \"root\" && this.events.dispatch(\"components:root-children-changed\", { node: a }), c != null && c.context && this.events.dispatch(\"components:context-changed\", { node: a }), c != null && c.properties && this.events.dispatch(\"components:properties-changed\", { node: a }), c != null && c.layout && this.events.dispatch(\"components:layout-changed\", { node: a });\n }), this.events.dispatch(\"components:component-model-initialized\", {}, { bubbles: !0 });\n });\n Promise.all(\n Object.keys(e).map((i) => e[i].load(this))\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:node-appended\",\n (i, o) => {\n const { node: a } = o;\n this.changesets.forEach((c) => {\n const { changeset: h, target: u, removes: l } = c, [d, f] = h;\n u.match(o.node) && (d.properties && l.push(a.writeProperties(d.properties, f)), d.context && l.push(a.writeContext(d.context, f)), d.layout && l.push(a.writeLayout(d.layout, f)));\n });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:node-appended\",\n (i, o) => {\n s(o.node, { properties: !0, context: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:set-properties\",\n (i, o) => {\n s(o.node, { properties: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:set-context\",\n (i, o) => {\n s(o.node, { properties: !0, context: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:set-indent\",\n (i, o) => {\n s(o.node, { layout: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:set-layout\",\n (i, o) => {\n s(o.node, { layout: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\"components:node-switched\", (i, { node: o, branch: a }) => {\n s(o, {\n layout: !0,\n recursive: !0,\n properties: !0,\n context: !0\n });\n })\n ), this.subscriptions.push(\n this.events.subscribe(\"components:node-removed\", (i, { parentNode: o }) => {\n s(o, { properties: !0 });\n })\n ), this.events.parent && this.events.parent.dispatch(\"components:platform-created\", { platform: this });\n }\n static getInstance(t) {\n return t.getAsync(\"components\");\n }\n addBreakpoint(t) {\n this.breakpoints.indexOf(t) === -1 && (this.breakpoints.push(t), this.processNode(this.nodes.root, {\n context: !0,\n properties: !0,\n layout: !0,\n recursive: !0\n }));\n }\n removeBreakpoint(t) {\n const e = this.breakpoints.indexOf(t);\n e > -1 && (this.breakpoints.splice(e, 1), this.processNode(this.nodes.root, {\n context: !0,\n properties: !0,\n layout: !0,\n recursive: !0\n }));\n }\n setSwitch(t, e) {\n this.switches[t.id] = e, this.events.dispatch(\"components:node-switched\", { node: t, branch: e });\n }\n getBranch(t) {\n return this.switches[t.id];\n }\n /**\n * Creates a `ComponentNode` of the specified type.\n * @param type Type of node.\n */\n createNode(t, e = {}) {\n const r = new de(this.events, t);\n return e.detached && this.nodes.detached.push(r), r;\n }\n components() {\n return new yt(this);\n }\n actions(t, e) {\n return new qt(this, t, e);\n }\n write(t) {\n const { provider: e, target: r, attributes: s, options: i = {}, removable: o } = t, a = t.key || Pt(), c = { changeset: [s, i], target: r, removes: [] };\n if (e) {\n const h = this.providers[e];\n h.write(a, r, s, i), c.removes.push(() => {\n h.remove(a);\n });\n }\n return this.changesets.push(c), this.nodes.all.forEach((h) => {\n if (r.match(h)) {\n let u = () => {\n };\n s.properties && (u = h.writeProperties(s.properties, i, o)), s.context && (u = h.writeContext(s.context, i, o)), s.layout && (u = h.writeContext(s.layout, i, o)), c.removes.push(u);\n }\n }), () => {\n if (o) {\n c.removes.forEach((u) => u());\n const h = this.changesets.indexOf(c);\n h > -1 && this.changesets.splice(h, 1);\n }\n };\n }\n addComponentHandler(t, e) {\n this.customComponentHandler.add(t, e);\n }\n getComponentHandler(t) {\n return this.customComponentHandler.get(t);\n }\n dispose() {\n this.subscriptions.forEach((t) => t());\n }\n};\nconst Er = (n) => {\n if (Array.isArray(n)) {\n const [t, ...e] = n;\n return {\n definitionId: t,\n overrides: e\n };\n }\n return {\n definitionId: n,\n overrides: []\n };\n}, Vt = (n, t, e, r, s, i) => {\n e.forEach((o) => {\n const a = Er(o), c = r[a.definitionId];\n if (a.definitionId === \"view\") {\n const h = n.createNode(\"view\");\n h.name = \"view\", Object.keys(s).forEach((u) => {\n const l = s[u];\n Vt(n, h, [l.entry], r, s, u);\n }), t.appendChild(h), a.overrides.forEach((u) => {\n u.properties && h.writeProperties(u.properties, {\n breakpoints: u.breakpoints\n }), u.context && h.writeContext(u.context, { breakpoints: u.breakpoints }), u.layout && h.writeLayout(u.layout, { breakpoints: u.breakpoints });\n });\n } else if (n.getComponentHandler(c.type)) {\n const h = n.getComponentHandler(c.type);\n h && h(a, {\n platform: n,\n node: t,\n references: e,\n definitions: r,\n views: s,\n branch: i\n });\n } else {\n const h = r[a.definitionId];\n if (process.env.NODE_ENV !== \"production\" && !h) {\n I.error(\n `No definition found for component type '${a.definitionId}'.`\n );\n return;\n }\n const u = n.createNode(h.type);\n u.name = a.definitionId, u.tags = h.tags || [], h.properties && u.writeProperties(h.properties), h.context && u.writeContext(h.context), h.layout && u.writeLayout(h.layout), t.appendChild(u, i), a.overrides.forEach((l) => {\n const d = { breakpoints: l.breakpoints };\n l.properties && u.writeProperties(l.properties, d), l.context && u.writeContext(l.context, d), l.layout && u.writeLayout(l.layout, d);\n }), h.children && Vt(n, u, h.children, r, s);\n }\n });\n}, un = (n, t) => {\n const { entry: e, components: r, breakpoints: s, views: i } = t, o = [];\n return Object.keys(s).forEach((a) => {\n const c = s[a], h = window.matchMedia(c);\n h.matches && n.breakpoints.push(a);\n const u = (l) => {\n l.matches ? n.addBreakpoint(a) : n.removeBreakpoint(a);\n };\n h.addListener(u), o.push(() => h.removeListener(u));\n }), Vt(n, n.nodes.root, [e], r, i), () => o.forEach((a) => {\n a();\n });\n}, xr = (n, t) => ({\n id: n.id,\n type: n.type,\n name: n.name,\n branch: t || \"default\"\n}), ln = (n, t, e, r = Pt(), s = {}) => n.getAsync(\"components\").then((i) => {\n let o;\n if (typeof t == \"string\") {\n const h = new yt(i);\n h.ofType(t), o = h;\n } else\n o = t;\n const a = {}, c = (h) => {\n const u = a[h.id];\n return u ? Promise.resolve(u.controller) : Yt.getInstance(n).then((l) => new me(l, h, r));\n };\n i.events.subscribe(\n \"components:node-enter\",\n (h, { node: u }) => {\n o.match(u) && c(u).then((l) => {\n Promise.resolve(e(l)).then((d) => {\n a[u.id] = {\n dispose: d,\n controller: l\n };\n });\n });\n }\n ), i.events.subscribe(\n \"components:node-exit\",\n (h, { node: u }) => {\n const l = a[u.id];\n l && (l.dispose && l.dispose(), s.reuseController || (l.controller.dispose(), delete a[u.id]));\n }\n );\n});\nclass $r {\n constructor(t) {\n this.aliases = /* @__PURE__ */ new Map(), this.components = /* @__PURE__ */ new Map(), this.logger = new I();\n const { events: e } = t.get(\"$widget\");\n this.events = e;\n }\n getComponent(t) {\n const e = this.aliases.get(t), r = this.components.get(e || t) || null;\n return process.env.NODE_ENV !== \"production\" && (r || this.logger.warn(\n e || t,\n `Unable to resolve component: \"${e || t}\". You most likely forgot to register the required plugin for: ${e || t}.`\n )), r;\n }\n registerComponent(t, e) {\n return this.components.set(t, e), this.events.dispatch(\"component-resolver:resolve\", t), () => {\n this.components.delete(t);\n };\n }\n registerResolver(t, e) {\n return this.events.subscribe(\"component-resolver:resolve\", (r, s) => {\n if (s === t) {\n const i = this.getComponent(t);\n e(i);\n }\n });\n }\n registerAlias(t, e) {\n return this.aliases.set(t, e), this.events.dispatch(\"component-resolver:resolve\", t), () => {\n this.aliases.delete(t);\n };\n }\n}\nvar z = /* @__PURE__ */ ((n) => (n.open = \"open\", n.closed = \"closed\", n.hidden = \"hidden\", n))(z || {});\nconst ye = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n ActionResolver: pr,\n ActionsController: qt,\n ComponentNode: de,\n ComponentNodeController: me,\n ComponentPlatform: Yt,\n ComponentQuery: yt,\n ComponentResolver: $r,\n WidgetRenderState: z,\n asDescriptor: xr,\n createChildren: Vt,\n createComponentModel: un,\n createEventSubscriber: an,\n extendComponent: ln,\n findComponent: hn,\n findVisibleComponents: Dt,\n traverseComponents: Kt\n}, Symbol.toStringTag, { value: \"Module\" }));\nfunction dn(n) {\n return n && n.__esModule && Object.prototype.hasOwnProperty.call(n, \"default\") ? n.default : n;\n}\nvar pn = function() {\n};\nprocess.env.NODE_ENV !== \"production\" && (pn = function(n, t, e) {\n var r = arguments.length;\n e = new Array(r > 2 ? r - 2 : 0);\n for (var s = 2; s < r; s++)\n e[s - 2] = arguments[s];\n if (t === void 0)\n throw new Error(\n \"`warning(condition, format, ...args)` requires a warning message argument\"\n );\n if (t.length < 10 || /^[s\\W]*$/.test(t))\n throw new Error(\n \"The warning format should be able to uniquely identify this warning. Please, use a more descriptive format than: \" + t\n );\n if (!n) {\n var i = 0, o = \"Warning: \" + t.replace(/%s/g, function() {\n return e[i++];\n });\n typeof console != \"undefined\" && console.error(o);\n try {\n throw new Error(o);\n } catch (a) {\n }\n }\n});\nvar Pr = pn;\nconst Z = /* @__PURE__ */ dn(Pr);\nvar kr = function(n, t, e, r, s, i, o, a) {\n if (process.env.NODE_ENV !== \"production\" && t === void 0)\n throw new Error(\"invariant requires an error message argument\");\n if (!n) {\n var c;\n if (t === void 0)\n c = new Error(\n \"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\"\n );\n else {\n var h = [e, r, s, i, o, a], u = 0;\n c = new Error(\n t.replace(/%s/g, function() {\n return h[u++];\n })\n ), c.name = \"Invariant Violation\";\n }\n throw c.framesToPop = 1, c;\n }\n}, Cr = kr;\nconst Sr = /* @__PURE__ */ dn(Cr);\nfunction Ct(n) {\n return n.charAt(0) === \"/\";\n}\nfunction ne(n, t) {\n for (var e = t, r = e + 1, s = n.length; r < s; e += 1, r += 1)\n n[e] = n[r];\n n.pop();\n}\nfunction Ar(n) {\n var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : \"\", e = n && n.split(\"/\") || [], r = t && t.split(\"/\") || [], s = n && Ct(n), i = t && Ct(t), o = s || i;\n if (n && Ct(n) ? r = e : e.length && (r.pop(), r = r.concat(e)), !r.length)\n return \"/\";\n var a = void 0;\n if (r.length) {\n var c = r[r.length - 1];\n a = c === \".\" || c === \"..\" || c === \"\";\n } else\n a = !1;\n for (var h = 0, u = r.length; u >= 0; u--) {\n var l = r[u];\n l === \".\" ? ne(r, u) : l === \"..\" ? (ne(r, u), h++) : h && (ne(r, u), h--);\n }\n if (!o)\n for (; h--; h)\n r.unshift(\"..\");\n o && r[0] !== \"\" && (!r[0] || !Ct(r[0])) && r.unshift(\"\");\n var d = r.join(\"/\");\n return a && d.substr(-1) !== \"/\" && (d += \"/\"), d;\n}\nvar Nr = function(t) {\n return t.charAt(0) === \"/\" ? t : \"/\" + t;\n}, fn = function(t, e) {\n return new RegExp(\"^\" + e + \"(\\\\/|\\\\?|#|$)\", \"i\").test(t);\n}, Lr = function(t, e) {\n return fn(t, e) ? t.substr(e.length) : t;\n}, Mr = function(t) {\n return t.charAt(t.length - 1) === \"/\" ? t.slice(0, -1) : t;\n}, Dr = function(t) {\n var e = t || \"/\", r = \"\", s = \"\", i = e.indexOf(\"#\");\n i !== -1 && (s = e.substr(i), e = e.substr(0, i));\n var o = e.indexOf(\"?\");\n return o !== -1 && (r = e.substr(o), e = e.substr(0, o)), {\n pathname: e,\n search: r === \"?\" ? \"\" : r,\n hash: s === \"#\" ? \"\" : s\n };\n}, gn = function(t) {\n var e = t.pathname, r = t.search, s = t.hash, i = e || \"/\";\n return r && r !== \"?\" && (i += r.charAt(0) === \"?\" ? r : \"?\" + r), s && s !== \"#\" && (i += s.charAt(0) === \"#\" ? s : \"#\" + s), i;\n}, jr = Object.assign || function(n) {\n for (var t = 1; t < arguments.length; t++) {\n var e = arguments[t];\n for (var r in e)\n Object.prototype.hasOwnProperty.call(e, r) && (n[r] = e[r]);\n }\n return n;\n}, ct = function(t, e, r, s) {\n var i = void 0;\n typeof t == \"string\" ? (i = Dr(t), i.state = e) : (i = jr({}, t), i.pathname === void 0 && (i.pathname = \"\"), i.search ? i.search.charAt(0) !== \"?\" && (i.search = \"?\" + i.search) : i.search = \"\", i.hash ? i.hash.charAt(0) !== \"#\" && (i.hash = \"#\" + i.hash) : i.hash = \"\", e !== void 0 && i.state === void 0 && (i.state = e));\n try {\n i.pathname = decodeURI(i.pathname);\n } catch (o) {\n throw o instanceof URIError ? new URIError('Pathname \"' + i.pathname + '\" could not be decoded. This is likely caused by an invalid percent-encoding.') : o;\n }\n return r && (i.key = r), s ? i.pathname ? i.pathname.charAt(0) !== \"/\" && (i.pathname = Ar(i.pathname, s.pathname)) : i.pathname = s.pathname : i.pathname || (i.pathname = \"/\"), i;\n}, mn = function() {\n var t = null, e = function(c) {\n return Z(t == null, \"A history supports only one prompt at a time\"), t = c, function() {\n t === c && (t = null);\n };\n }, r = function(c, h, u, l) {\n if (t != null) {\n var d = typeof t == \"function\" ? t(c, h) : t;\n typeof d == \"string\" ? typeof u == \"function\" ? u(d, l) : (Z(!1, \"A history needs a getUserConfirmation function in order to use a prompt message\"), l(!0)) : l(d !== !1);\n } else\n l(!0);\n }, s = [], i = function(c) {\n var h = !0, u = function() {\n h && c.apply(void 0, arguments);\n };\n return s.push(u), function() {\n h = !1, s = s.filter(function(l) {\n return l !== u;\n });\n };\n }, o = function() {\n for (var c = arguments.length, h = Array(c), u = 0; u < c; u++)\n h[u] = arguments[u];\n s.forEach(function(l) {\n return l.apply(void 0, h);\n });\n };\n return {\n setPrompt: e,\n confirmTransitionTo: r,\n appendListener: i,\n notifyListeners: o\n };\n}, _r = !!(typeof window != \"undefined\" && window.document && window.document.createElement), je = function(t, e, r) {\n return t.addEventListener ? t.addEventListener(e, r, !1) : t.attachEvent(\"on\" + e, r);\n}, _e = function(t, e, r) {\n return t.removeEventListener ? t.removeEventListener(e, r, !1) : t.detachEvent(\"on\" + e, r);\n}, Tr = function(t, e) {\n return e(window.confirm(t));\n}, Ir = function() {\n var t = window.navigator.userAgent;\n return (t.indexOf(\"Android 2.\") !== -1 || t.indexOf(\"Android 4.0\") !== -1) && t.indexOf(\"Mobile Safari\") !== -1 && t.indexOf(\"Chrome\") === -1 && t.indexOf(\"Windows Phone\") === -1 ? !1 : window.history && \"pushState\" in window.history;\n}, Rr = function() {\n return window.navigator.userAgent.indexOf(\"Trident\") === -1;\n}, Hr = function(t) {\n return t.state === void 0 && navigator.userAgent.indexOf(\"CriOS\") === -1;\n}, Te = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(n) {\n return typeof n;\n} : function(n) {\n return n && typeof Symbol == \"function\" && n.constructor === Symbol && n !== Symbol.prototype ? \"symbol\" : typeof n;\n}, Vr = Object.assign || function(n) {\n for (var t = 1; t < arguments.length; t++) {\n var e = arguments[t];\n for (var r in e)\n Object.prototype.hasOwnProperty.call(e, r) && (n[r] = e[r]);\n }\n return n;\n}, Ie = \"popstate\", Re = \"hashchange\", He = function() {\n try {\n return window.history.state || {};\n } catch (t) {\n return {};\n }\n}, Wr = function() {\n var t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n Sr(_r, \"Browser history needs a DOM\");\n var e = window.history, r = Ir(), s = !Rr(), i = t.forceRefresh, o = i === void 0 ? !1 : i, a = t.getUserConfirmation, c = a === void 0 ? Tr : a, h = t.keyLength, u = h === void 0 ? 6 : h, l = t.basename ? Mr(Nr(t.basename)) : \"\", d = function(y) {\n var O = y || {}, L = O.key, M = O.state, F = window.location, J = F.pathname, et = F.search, Y = F.hash, U = J + et + Y;\n return Z(!l || fn(U, l), 'You are attempting to use a basename on a page whose URL path does not begin with the basename. Expected path \"' + U + '\" to begin with \"' + l + '\".'), l && (U = Lr(U, l)), ct(U, M, L);\n }, f = function() {\n return Math.random().toString(36).substr(2, u);\n }, g = mn(), E = function(y) {\n Vr(P, y), P.length = e.length, g.notifyListeners(P.location, P.action);\n }, p = function(y) {\n Hr(y) || B(d(y.state));\n }, C = function() {\n B(d(He()));\n }, R = !1, B = function(y) {\n if (R)\n R = !1, E();\n else {\n var O = \"POP\";\n g.confirmTransitionTo(y, O, c, function(L) {\n L ? E({ action: O, location: y }) : _(y);\n });\n }\n }, _ = function(y) {\n var O = P.location, L = H.indexOf(O.key);\n L === -1 && (L = 0);\n var M = H.indexOf(y.key);\n M === -1 && (M = 0);\n var F = L - M;\n F && (R = !0, j(F));\n }, D = d(He()), H = [D.key], x = function(y) {\n return l + gn(y);\n }, N = function(y, O) {\n Z(!((typeof y == \"undefined\" ? \"undefined\" : Te(y)) === \"object\" && y.state !== void 0 && O !== void 0), \"You should avoid providing a 2nd state argument to push when the 1st argument is a location-like object that already has state; it is ignored\");\n var L = \"PUSH\", M = ct(y, O, f(), P.location);\n g.confirmTransitionTo(M, L, c, function(F) {\n if (F) {\n var J = x(M), et = M.key, Y = M.state;\n if (r)\n if (e.pushState({ key: et, state: Y }, null, J), o)\n window.location.href = J;\n else {\n var U = H.indexOf(P.location.key), $e = H.slice(0, U === -1 ? 0 : U + 1);\n $e.push(M.key), H = $e, E({ action: L, location: M });\n }\n else\n Z(Y === void 0, \"Browser history cannot push state in browsers that do not support HTML5 history\"), window.location.href = J;\n }\n });\n }, A = function(y, O) {\n Z(!((typeof y == \"undefined\" ? \"undefined\" : Te(y)) === \"object\" && y.state !== void 0 && O !== void 0), \"You should avoid providing a 2nd state argument to replace when the 1st argument is a location-like object that already has state; it is ignored\");\n var L = \"REPLACE\", M = ct(y, O, f(), P.location);\n g.confirmTransitionTo(M, L, c, function(F) {\n if (F) {\n var J = x(M), et = M.key, Y = M.state;\n if (r)\n if (e.replaceState({ key: et, state: Y }, null, J), o)\n window.location.replace(J);\n else {\n var U = H.indexOf(P.location.key);\n U !== -1 && (H[U] = M.key), E({ action: L, location: M });\n }\n else\n Z(Y === void 0, \"Browser history cannot replace state in browsers that do not support HTML5 history\"), window.location.replace(J);\n }\n });\n }, j = function(y) {\n e.go(y);\n }, W = function() {\n return j(-1);\n }, V = function() {\n return j(1);\n }, T = 0, m = function(y) {\n T += y, T === 1 ? (je(window, Ie, p), s && je(window, Re, C)) : T === 0 && (_e(window, Ie, p), s && _e(window, Re, C));\n }, b = !1, v = function() {\n var y = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !1, O = g.setPrompt(y);\n return b || (m(1), b = !0), function() {\n return b && (b = !1, m(-1)), O();\n };\n }, w = function(y) {\n var O = g.appendListener(y);\n return m(1), function() {\n m(-1), O();\n };\n }, P = {\n length: e.length,\n action: \"POP\",\n location: D,\n createHref: x,\n push: N,\n replace: A,\n go: j,\n goBack: W,\n goForward: V,\n block: v,\n listen: w\n };\n return P;\n}, Ve = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(n) {\n return typeof n;\n} : function(n) {\n return n && typeof Symbol == \"function\" && n.constructor === Symbol && n !== Symbol.prototype ? \"symbol\" : typeof n;\n}, Br = Object.assign || function(n) {\n for (var t = 1; t < arguments.length; t++) {\n var e = arguments[t];\n for (var r in e)\n Object.prototype.hasOwnProperty.call(e, r) && (n[r] = e[r]);\n }\n return n;\n}, We = function(t, e, r) {\n return Math.min(Math.max(t, e), r);\n}, Ur = function() {\n var t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, e = t.getUserConfirmation, r = t.initialEntries, s = r === void 0 ? [\"/\"] : r, i = t.initialIndex, o = i === void 0 ? 0 : i, a = t.keyLength, c = a === void 0 ? 6 : a, h = mn(), u = function(A) {\n Br(x, A), x.length = x.entries.length, h.notifyListeners(x.location, x.action);\n }, l = function() {\n return Math.random().toString(36).substr(2, c);\n }, d = We(o, 0, s.length - 1), f = s.map(function(N) {\n return typeof N == \"string\" ? ct(N, void 0, l()) : ct(N, void 0, N.key || l());\n }), g = gn, E = function(A, j) {\n Z(!((typeof A == \"undefined\" ? \"undefined\" : Ve(A)) === \"object\" && A.state !== void 0 && j !== void 0), \"You should avoid providing a 2nd state argument to push when the 1st argument is a location-like object that already has state; it is ignored\");\n var W = \"PUSH\", V = ct(A, j, l(), x.location);\n h.confirmTransitionTo(V, W, e, function(T) {\n if (T) {\n var m = x.index, b = m + 1, v = x.entries.slice(0);\n v.length > b ? v.splice(b, v.length - b, V) : v.push(V), u({\n action: W,\n location: V,\n index: b,\n entries: v\n });\n }\n });\n }, p = function(A, j) {\n Z(!((typeof A == \"undefined\" ? \"undefined\" : Ve(A)) === \"object\" && A.state !== void 0 && j !== void 0), \"You should avoid providing a 2nd state argument to replace when the 1st argument is a location-like object that already has state; it is ignored\");\n var W = \"REPLACE\", V = ct(A, j, l(), x.location);\n h.confirmTransitionTo(V, W, e, function(T) {\n T && (x.entries[x.index] = V, u({ action: W, location: V }));\n });\n }, C = function(A) {\n var j = We(x.index + A, 0, x.entries.length - 1), W = \"POP\", V = x.entries[j];\n h.confirmTransitionTo(V, W, e, function(T) {\n T ? u({\n action: W,\n location: V,\n index: j\n }) : u();\n });\n }, R = function() {\n return C(-1);\n }, B = function() {\n return C(1);\n }, _ = function(A) {\n var j = x.index + A;\n return j >= 0 && j < x.entries.length;\n }, D = function() {\n var A = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !1;\n return h.setPrompt(A);\n }, H = function(A) {\n return h.appendListener(A);\n }, x = {\n length: f.length,\n action: \"POP\",\n location: f[d],\n index: d,\n entries: f,\n createHref: g,\n push: E,\n replace: p,\n go: C,\n goBack: R,\n goForward: B,\n canGo: _,\n block: D,\n listen: H\n };\n return x;\n}, zr = Object.defineProperty, Be = Object.getOwnPropertySymbols, Fr = Object.prototype.hasOwnProperty, Jr = Object.prototype.propertyIsEnumerable, Ue = (n, t, e) => t in n ? zr(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e, pt = (n, t) => {\n for (var e in t || (t = {}))\n Fr.call(t, e) && Ue(n, e, t[e]);\n if (Be)\n for (var e of Be(t))\n Jr.call(t, e) && Ue(n, e, t[e]);\n return n;\n}, St = (n, t, e) => new Promise((r, s) => {\n var i = (c) => {\n try {\n a(e.next(c));\n } catch (h) {\n s(h);\n }\n }, o = (c) => {\n try {\n a(e.throw(c));\n } catch (h) {\n s(h);\n }\n }, a = (c) => c.done ? r(c.value) : Promise.resolve(c.value).then(i, o);\n a((e = e.apply(n, t)).next());\n}), k = /* @__PURE__ */ ((n) => (n.Cookie = \"cookie\", n.Local = \"local\", n.Session = \"session\", n))(k || {}), vt = /* @__PURE__ */ ((n) => (n.Tenant = \"tenant\", n.Implementation = \"implementation\", n.Widget = \"widget\", n))(vt || {}), S = /* @__PURE__ */ ((n) => (n.Necessary = \"necessary\", n.Functional = \"functional\", n.Analytical = \"analytical\", n.Marketing = \"marketing\", n))(S || {});\nconst X = (n, t, e, r = {}) => ze(n, e).then((s) => (process.env.NODE_ENV !== \"production\" && s && I.warn(\n `createStorageWriter: Attempted to create storage writer using unallowed category.\n Key: ${t}\n Category: ${JSON.stringify(e)}\n Options: ${JSON.stringify(r)}`\n), (i) => (we(n), ze(n, e).then((o) => {\n if (o) {\n process.env.NODE_ENV !== \"production\" && I.warn(\n `storageWriter: Attempted to write to storage using unallowed category.\n Key: ${t}\n Category: ${JSON.stringify(e)}\n Value: ${JSON.stringify(i)}\n Options: ${JSON.stringify(r)}`\n );\n return;\n }\n const {\n scope: a = vt.Widget,\n medium: c = k.Session,\n duration: h\n } = r, u = Kr();\n return u[a][t] = be(i, e, h), c === k.Cookie ? Zr(n, u) : ts(n, c, u);\n})))), K = (n, t, e = k.Session) => (we(n), typeof t == \"undefined\" ? (process.env.NODE_ENV !== \"production\" && I.warn(\"readStorage: Undefined key passed when reading storage. \", t, e), Promise.resolve(void 0)) : e === k.Cookie ? Qr(n).then((r) => Bt(r, t)) : Xr(n, e).then((r) => Bt(r, t))), mt = (n) => !!Object.entries(n).filter(([t, e]) => typeof e != \"undefined\").length, re = (n) => Object.entries(n).filter(([t, e]) => typeof e != \"undefined\").forEach(([t, { value: e }]) => {\n typeof e == \"undefined\" && delete n[t];\n}), yn = (n, t) => {\n const e = {\n tenant: pt(pt({}, n.tenant), t.tenant),\n implementation: pt(pt({}, n.implementation), t.implementation),\n widget: pt(pt({}, n.widget), t.widget)\n };\n return re(e.tenant), re(e.implementation), re(e.widget), e;\n}, qr = (n) => Object.entries(n).reduce((t, e) => {\n const [r, s] = e;\n return Object.entries(s).forEach((i) => {\n const [o, { expiration: a }] = i;\n a && t.push(a);\n }), t;\n}, []).slice().sort((t, e) => new Date(e).valueOf() - new Date(t).valueOf()).shift() || Qt(), Gt = (n) => {\n const {\n name: t,\n implementation: { name: e, tenant: r }\n } = n.get(\"$widget\");\n return [\n `humany_${r}`,\n `humany_${Ne(r + e)}`,\n `humany_${Ne(r + e + t)}`\n ];\n}, se = (n) => {\n const t = new RegExp(`(?:^|;)\\\\s?${n}=(.*?)(?:;|$)`, \"i\"), e = document.cookie.match(t);\n return e && e[1] && JSON.parse(e[1]) || void 0;\n}, ie = (n, t, e) => {\n const r = `${n}=${JSON.stringify(t).trim()}`, s = `expires=${new Date(e).toUTCString()}`, i = \"path=/\", o = \"SameSite=None;Secure\";\n return document.cookie = `${r}; ${s}; ${i}; ${o}`;\n}, ve = (n) => {\n const [t, e, r] = Gt(n), s = se(t) || {}, i = se(e) || {}, o = se(r) || {};\n return {\n tenant: s,\n implementation: i,\n widget: o\n };\n}, vn = (n, t) => {\n const e = ve(n), r = yn(e, t), [s, i, o] = Gt(n), { tenant: a, implementation: c, widget: h } = r, u = qr(t), l = Qt({ days: -1 });\n ie(s, a, mt(a) ? u : l), ie(\n i,\n c,\n mt(c) ? u : l\n ), ie(o, h, mt(h) ? u : l);\n}, Wt = (n, t) => {\n const [e, r, s] = Gt(n), i = t.getItem(e) || \"{}\", o = t.getItem(r) || \"{}\", a = t.getItem(s) || \"{}\";\n return {\n tenant: JSON.parse(i),\n implementation: JSON.parse(o),\n widget: JSON.parse(a)\n };\n}, pe = (n, t, e) => {\n const r = Wt(n, t), s = yn(r, e), [i, o, a] = Gt(n), { tenant: c, implementation: h, widget: u } = s;\n mt(c) ? t.setItem(i, JSON.stringify(c)) : t.removeItem(i), mt(h) ? t.setItem(o, JSON.stringify(h)) : t.removeItem(o), mt(u) ? t.setItem(a, JSON.stringify(u)) : t.removeItem(a);\n}, Kr = () => ({ tenant: {}, implementation: {}, widget: {} }), Yr = (n) => n ? !!n && /* @__PURE__ */ new Date() > new Date(n) : !1, Bt = (n, t) => {\n const e = n.widget[t] || n.implementation[t] || n.tenant[t];\n return e == null ? void 0 : e.value;\n}, be = (n, t, e) => e ? {\n value: n,\n category: t,\n expiration: typeof e == \"object\" ? Qt(e) : e\n} : {\n value: n,\n category: t\n}, jt = (n, t) => {\n const e = tr(n);\n return Object.entries(e).forEach(([r, s]) => {\n Object.entries(s).forEach(([i, o]) => {\n const { expiration: a, category: c } = o;\n (Yr(a) || Gr(t, c)) && (s[i] = be(void 0, c, a));\n });\n }), e;\n}, ze = (n, t) => K(n, \"storagePolicy\", k.Cookie).then(\n (e = [S.Necessary]) => !!t && e.indexOf(t) === -1\n), Gr = (n = [S.Necessary], t) => !!t && n.indexOf(t) === -1, we = (n) => {\n const t = ve(n), e = Wt(n, window.localStorage), r = Wt(n, sessionStorage), s = Bt(t, \"storagePolicy\"), [i, o, a] = [\n t,\n e,\n r\n ].map((c) => jt(c, s));\n vn(n, i), pe(n, window.localStorage, o), pe(n, window.sessionStorage, a);\n}, Qt = (n = { days: 30 }) => {\n const { days: t = 0, hours: e = 0, minutes: r = 0, seconds: s = 0 } = n, i = /* @__PURE__ */ new Date();\n return i.setTime(i.getTime() + e * 60 * 60 * 1e3), i.setTime(i.getTime() + t * 24 * 60 * 60 * 1e3), i.setTime(i.getTime() + r * 60 * 1e3), i.setTime(i.getTime() + s * 1e3), i.toISOString();\n}, Qr = (n) => G(document)(() => ve(n)), Zr = (n, t) => G(document)(() => vn(n, t)), Xr = (n, t) => {\n const e = t === k.Local ? window.localStorage : window.sessionStorage;\n return G(e)(() => Wt(n, e));\n}, ts = (n, t, e) => {\n const r = t === k.Local ? window.localStorage : window.sessionStorage;\n return G(r)(() => pe(n, r, e));\n};\nclass _t {\n constructor() {\n this.memory = {\n tenant: {},\n implementation: {},\n widget: {}\n };\n }\n setItem(t, e) {\n return St(this, arguments, function* (r, s, i = {}) {\n return G(this)(() => {\n const o = jt(this.memory, [S.Necessary]), { scope: a = vt.Tenant, expiration: c } = i;\n o[a][r] = be(\n s,\n S.Necessary,\n (c == null ? void 0 : c.toISOString()) || Qt()\n ), this.memory = o, process.env.NODE_ENV !== \"production\" && I.warn(\n `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value stored temporarily in memory.\n Key: ${r}\n Value: ${JSON.stringify(s)}\n Options: ${JSON.stringify(i)}\n Memory: ${JSON.stringify(o)}`\n );\n });\n });\n }\n getItem(t) {\n return St(this, null, function* () {\n return G(this)(() => {\n const e = jt(this.memory, [S.Necessary]);\n process.env.NODE_ENV !== \"production\" && I.warn(\n `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value fetched from legacy memory storage.\n Key: ${t}\n Memory: ${JSON.stringify(e)}`\n );\n const r = Bt(e, t);\n return this.memory = e, r;\n });\n });\n }\n removeItem(t) {\n return St(this, null, function* () {\n return G(this)(() => {\n const e = jt(this.memory, [S.Necessary]);\n delete e.tenant[t], delete e.implementation[t], delete e.widget[t], this.memory = e, process.env.NODE_ENV !== \"production\" && I.warn(\n `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value removed from memory.\n Key: ${t}\n Memory: ${JSON.stringify(e)}`\n );\n });\n });\n }\n clear() {\n return St(this, null, function* () {\n return Promise.resolve();\n });\n }\n}\nlet es = class {\n constructor() {\n this.cookies = new _t(), this.session = new _t(), this.local = new _t();\n }\n};\nconst oe = (n, t, e, ...r) => {\n const s = `[${n.get(\"$environment\").name || \"webprovisions\"}] ${e}`;\n switch (t) {\n case \"info\":\n console.info(s, ...r);\n break;\n case \"warning\":\n console.warn(s, ...r);\n break;\n case \"error\":\n console.error(s, ...r);\n break;\n }\n}, ns = (n) => {\n const t = n.container || n;\n return {\n info: (e, ...r) => oe(t, \"info\", e, ...r),\n warn: (e, ...r) => oe(t, \"warning\", e, ...r),\n error: (e, ...r) => oe(t, \"error\", e, ...r)\n };\n};\nvar Ut = /* @__PURE__ */ ((n) => (n.Implementation = \"implementation\", n.Widget = \"widget\", n))(Ut || {}), ht = /* @__PURE__ */ ((n) => (n.Pre = \"pre\", n.Post = \"post\", n))(ht || {});\nconst rs = (n, t, e, r) => {\n try {\n const s = new t(e, r);\n return {\n name: n,\n invoke: (i, o) => {\n let a;\n return s[i] && (a = s[i].call(s, o)), Promise.resolve(a);\n },\n getInstance: () => s\n };\n } catch (s) {\n if (s.message && s.message.indexOf(\"is not a constructor\") >= 0)\n return {\n name: n,\n invoke: (i) => {\n let o;\n return i === \"initialize\" && (o = t(e, r)), Promise.resolve(o);\n },\n getInstance: () => t\n };\n throw s;\n }\n};\nfunction Fe(n, t) {\n return typeof n == \"undefined\" ? t : n;\n}\nlet ss = class {\n constructor(t = {}) {\n this.part = t;\n }\n createCommand(t, e, r) {\n let s;\n typeof e == \"function\" ? s = {\n scope: Ut.Widget,\n stage: ht.Post,\n defaultArgs: void 0,\n handlerResolver: e\n } : s = {\n scope: Fe(e.scope, Ut.Widget),\n stage: Fe(e.stage, ht.Post),\n defaultArgs: e.defaultArgs,\n handlerResolver: r\n };\n let i = this.part;\n const o = t.split(\".\");\n return o.forEach((a, c) => {\n c === o.length - 1 ? i[a] || (i[a] = () => s) : i = this.part[a] = this.part[a] || {};\n }), this;\n }\n get() {\n return this.part;\n }\n};\nconst bn = (n) => {\n const t = new ss({});\n return n(t), t.get();\n};\nbn((n) => {\n n.createCommand(\n \"types.register\",\n { scope: Ut.Implementation, stage: ht.Pre },\n (t) => (e, r) => {\n t.container.get(\"$types\")[e] = r;\n }\n ).createCommand(\n \"type\",\n { stage: ht.Pre },\n (t) => (e) => {\n t.container.register(\"$type\", e);\n }\n ).createCommand(\n \"settings\",\n { stage: ht.Pre, defaultArgs: [null] },\n (t) => (e) => {\n t.events.dispatch(\n \"settings:change\",\n e,\n { bubbles: !0 }\n ), t.container.register(\"$settings\", e);\n }\n ).createCommand(\n \"plugin\",\n { stage: ht.Pre },\n (t) => (e, r, s) => {\n const { container: i } = t;\n let o = null, a = e, c = r;\n typeof e == \"string\" && (o = e, a = r, c = s);\n const h = (u) => {\n const { transformPluginSettings: l } = t.container.get(\"$environmentOptions\"), d = l ? l(\n c || {},\n o,\n t.container,\n a\n ) : r;\n try {\n const f = rs(\n o,\n a,\n i,\n d\n );\n i.get(\"$plugins\").push(f), u && f.invoke(\"initialize\", null);\n } catch (f) {\n ns(t).warn(\"Error when initializing plugin\", f);\n }\n };\n t.container.get(\"$instance\") ? h(!0) : t.events.subscribeOnce(\"widget:instance-created\", () => h(!1));\n }\n ).createCommand(\n \"container.register\",\n (t) => (e, r) => {\n t.container.register(e, r);\n }\n ).createCommand(\n \"container.registerAsync\",\n (t) => (e, r) => {\n t.container.registerAsync(e, r);\n }\n ).createCommand(\n \"container.registerFactory\",\n (t) => (e, r) => {\n t.container.registerFactory(e, r);\n }\n ).createCommand(\n \"container.touch\",\n (t) => (e, r) => {\n t.container.touch(e, r);\n }\n ).createCommand(\n \"csp\",\n {},\n (t) => (e) => {\n t.container.register(\"csp\", e);\n }\n );\n});\nbn((n) => {\n n.createCommand(\"storage\", (t) => (e = {}) => {\n const { consent: r } = e;\n if (typeof r != \"undefined\") {\n if (typeof r != \"number\" && typeof r != \"string\" && !Array.isArray(r)) {\n process.env.NODE_ENV !== \"production\" && I.warn(\n `storagePolicyConfigurationApi: passed consent is not valid. Consent either has to be a number, a string, an array of strings or an array of numbers.\n Passed consent: ${JSON.stringify(r)}`\n );\n return;\n }\n if (Array.isArray(r) && !r.every(\n (i) => typeof i == \"number\" || typeof i == \"string\"\n )) {\n process.env.NODE_ENV !== \"production\" && I.warn(\n `storagePolicyConfigurationApi: passed consent is not valid. Consent either has to be a number, a string, an array of strings or an array of numbers.\n Passed consent: ${JSON.stringify(r)}`\n );\n return;\n }\n const s = [\n S.Necessary,\n S.Functional,\n S.Analytical,\n S.Marketing\n ].filter((i, o, a) => typeof r == \"number\" ? r > o : typeof r == \"string\" ? a.indexOf(r) + 1 > o : Array.isArray(r) ? r.findIndex((c) => c === o + 1 || c === i) > -1 : !0);\n return s.indexOf(S.Necessary) === -1 && (process.env.NODE_ENV !== \"production\" && I.warn(\n `storagePolicyConfigurationApi: passed consent does not include category: '${S.Necessary}'. Consent has to atleast include the '${S.Necessary}' category.\n Passed consent: ${JSON.stringify(r)}`\n ), s.unshift(S.Necessary)), X(\n t.container,\n \"storagePolicy\",\n S.Necessary,\n {\n medium: k.Cookie,\n scope: vt.Tenant,\n duration: { days: 365 }\n }\n ).then((i) => i(s)).then(() => {\n we(t.container), t.events.dispatch(\"storage:policy-changed\", s);\n });\n }\n });\n});\nconst is = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n StorageCategory: S,\n StorageMedium: k,\n StorageProvider: es,\n StorageScope: vt,\n StorageService: _t,\n createStorageWriter: X,\n readStorage: K\n}, Symbol.toStringTag, { value: \"Module\" }));\nvar os = Object.defineProperty, as = Object.defineProperties, cs = Object.getOwnPropertyDescriptors, zt = Object.getOwnPropertySymbols, wn = Object.prototype.hasOwnProperty, On = Object.prototype.propertyIsEnumerable, Je = (n, t, e) => t in n ? os(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e, gt = (n, t) => {\n for (var e in t || (t = {}))\n wn.call(t, e) && Je(n, e, t[e]);\n if (zt)\n for (var e of zt(t))\n On.call(t, e) && Je(n, e, t[e]);\n return n;\n}, En = (n, t) => as(n, cs(t)), hs = (n, t) => {\n var e = {};\n for (var r in n)\n wn.call(n, r) && t.indexOf(r) < 0 && (e[r] = n[r]);\n if (n != null && zt)\n for (var r of zt(n))\n t.indexOf(r) < 0 && On.call(n, r) && (e[r] = n[r]);\n return e;\n};\nfunction xn(n) {\n if (n.__esModule)\n return n;\n var t = n.default;\n if (typeof t == \"function\") {\n var e = function r() {\n if (this instanceof r) {\n var s = [null];\n s.push.apply(s, arguments);\n var i = Function.bind.apply(t, s);\n return new i();\n }\n return t.apply(this, arguments);\n };\n e.prototype = t.prototype;\n } else\n e = {};\n return Object.defineProperty(e, \"__esModule\", { value: !0 }), Object.keys(n).forEach(function(r) {\n var s = Object.getOwnPropertyDescriptor(n, r);\n Object.defineProperty(e, r, s.get ? s : {\n enumerable: !0,\n get: function() {\n return n[r];\n }\n });\n }), e;\n}\nvar $n = function() {\n};\nprocess.env.NODE_ENV !== \"production\" && ($n = function(n, t, e) {\n var r = arguments.length;\n e = new Array(r > 2 ? r - 2 : 0);\n for (var s = 2; s < r; s++)\n e[s - 2] = arguments[s];\n if (t === void 0)\n throw new Error(\n \"`warning(condition, format, ...args)` requires a warning message argument\"\n );\n if (t.length < 10 || /^[s\\W]*$/.test(t))\n throw new Error(\n \"The warning format should be able to uniquely identify this warning. Please, use a more descriptive format than: \" + t\n );\n if (!n) {\n var i = 0, o = \"Warning: \" + t.replace(/%s/g, function() {\n return e[i++];\n });\n typeof console != \"undefined\" && console.error(o);\n try {\n throw new Error(o);\n } catch (a) {\n }\n }\n});\nvar us = $n, ls = us, qe = ds(ls);\nfunction ds(n) {\n return n && n.__esModule ? n : { default: n };\n}\nvar ps = function() {\n var n = null, t = function(o) {\n return (0, qe.default)(n == null, \"A history supports only one prompt at a time\"), n = o, function() {\n n === o && (n = null);\n };\n }, e = function(o, a, c, h) {\n if (n != null) {\n var u = typeof n == \"function\" ? n(o, a) : n;\n typeof u == \"string\" ? typeof c == \"function\" ? c(u, h) : ((0, qe.default)(!1, \"A history needs a getUserConfirmation function in order to use a prompt message\"), h(!0)) : h(u !== !1);\n } else\n h(!0);\n }, r = [], s = function(o) {\n var a = !0, c = function() {\n a && o.apply(void 0, arguments);\n };\n return r.push(c), function() {\n a = !1, r = r.filter(function(h) {\n return h !== c;\n });\n };\n }, i = function() {\n for (var o = arguments.length, a = Array(o), c = 0; c < o; c++)\n a[c] = arguments[c];\n r.forEach(function(h) {\n return h.apply(void 0, a);\n });\n };\n return {\n setPrompt: t,\n confirmTransitionTo: e,\n appendListener: s,\n notifyListeners: i\n };\n}, Pn = ps, kn;\nkn = function(n, t) {\n return t(window.confirm(n));\n};\nfunction At(n) {\n return n.charAt(0) === \"/\";\n}\nfunction ae(n, t) {\n for (var e = t, r = e + 1, s = n.length; r < s; e += 1, r += 1)\n n[e] = n[r];\n n.pop();\n}\nfunction fs(n) {\n var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : \"\", e = n && n.split(\"/\") || [], r = t && t.split(\"/\") || [], s = n && At(n), i = t && At(t), o = s || i;\n if (n && At(n) ? r = e : e.length && (r.pop(), r = r.concat(e)), !r.length)\n return \"/\";\n var a = void 0;\n if (r.length) {\n var c = r[r.length - 1];\n a = c === \".\" || c === \"..\" || c === \"\";\n } else\n a = !1;\n for (var h = 0, u = r.length; u >= 0; u--) {\n var l = r[u];\n l === \".\" ? ae(r, u) : l === \"..\" ? (ae(r, u), h++) : h && (ae(r, u), h--);\n }\n if (!o)\n for (; h--; h)\n r.unshift(\"..\");\n o && r[0] !== \"\" && (!r[0] || !At(r[0])) && r.unshift(\"\");\n var d = r.join(\"/\");\n return a && d.substr(-1) !== \"/\" && (d += \"/\"), d;\n}\nconst gs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: fs\n}, Symbol.toStringTag, { value: \"Module\" })), ms = /* @__PURE__ */ xn(gs);\nvar Ke = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(n) {\n return typeof n;\n} : function(n) {\n return n && typeof Symbol == \"function\" && n.constructor === Symbol && n !== Symbol.prototype ? \"symbol\" : typeof n;\n};\nfunction Tt(n, t) {\n if (n === t)\n return !0;\n if (n == null || t == null)\n return !1;\n if (Array.isArray(n))\n return Array.isArray(t) && n.length === t.length && n.every(function(c, h) {\n return Tt(c, t[h]);\n });\n var e = typeof n == \"undefined\" ? \"undefined\" : Ke(n), r = typeof t == \"undefined\" ? \"undefined\" : Ke(t);\n if (e !== r)\n return !1;\n if (e === \"object\") {\n var s = n.valueOf(), i = t.valueOf();\n if (s !== n || i !== t)\n return Tt(s, i);\n var o = Object.keys(n), a = Object.keys(t);\n return o.length !== a.length ? !1 : o.every(function(c) {\n return Tt(n[c], t[c]);\n });\n }\n return !1;\n}\nconst ys = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: Tt\n}, Symbol.toStringTag, { value: \"Module\" })), vs = /* @__PURE__ */ xn(ys);\nvar tt = {}, rt, Cn, fe, xt;\ntt.__esModule = !0;\nxt = tt.addLeadingSlash = function(n) {\n return n.charAt(0) === \"/\" ? n : \"/\" + n;\n};\nfe = tt.stripLeadingSlash = function(n) {\n return n.charAt(0) === \"/\" ? n.substr(1) : n;\n};\nvar bs = tt.hasBasename = function(n, t) {\n return new RegExp(\"^\" + t + \"(\\\\/|\\\\?|#|$)\", \"i\").test(n);\n};\ntt.stripBasename = function(n, t) {\n return bs(n, t) ? n.substr(t.length) : n;\n};\nCn = tt.stripTrailingSlash = function(n) {\n return n.charAt(n.length - 1) === \"/\" ? n.slice(0, -1) : n;\n};\ntt.parsePath = function(n) {\n var t = n || \"/\", e = \"\", r = \"\", s = t.indexOf(\"#\");\n s !== -1 && (r = t.substr(s), t = t.substr(0, s));\n var i = t.indexOf(\"?\");\n return i !== -1 && (e = t.substr(i), t = t.substr(0, i)), {\n pathname: t,\n search: e === \"?\" ? \"\" : e,\n hash: r === \"#\" ? \"\" : r\n };\n};\nrt = tt.createPath = function(n) {\n var t = n.pathname, e = n.search, r = n.hash, s = t || \"/\";\n return e && e !== \"?\" && (s += e.charAt(0) === \"?\" ? e : \"?\" + e), r && r !== \"#\" && (s += r.charAt(0) === \"#\" ? r : \"#\" + r), s;\n};\nvar Zt, Sn = Zt = void 0, ws = Object.assign || function(n) {\n for (var t = 1; t < arguments.length; t++) {\n var e = arguments[t];\n for (var r in e)\n Object.prototype.hasOwnProperty.call(e, r) && (n[r] = e[r]);\n }\n return n;\n}, Os = ms, Es = An(Os), xs = vs, $s = An(xs), Ps = tt;\nfunction An(n) {\n return n && n.__esModule ? n : { default: n };\n}\nZt = function(n, t, e, r) {\n var s = void 0;\n typeof n == \"string\" ? (s = (0, Ps.parsePath)(n), s.state = t) : (s = ws({}, n), s.pathname === void 0 && (s.pathname = \"\"), s.search ? s.search.charAt(0) !== \"?\" && (s.search = \"?\" + s.search) : s.search = \"\", s.hash ? s.hash.charAt(0) !== \"#\" && (s.hash = \"#\" + s.hash) : s.hash = \"\", t !== void 0 && s.state === void 0 && (s.state = t));\n try {\n s.pathname = decodeURI(s.pathname);\n } catch (i) {\n throw i instanceof URIError ? new URIError('Pathname \"' + s.pathname + '\" could not be decoded. This is likely caused by an invalid percent-encoding.') : i;\n }\n return e && (s.key = e), r ? s.pathname ? s.pathname.charAt(0) !== \"/\" && (s.pathname = (0, Es.default)(s.pathname, r.pathname)) : s.pathname = r.pathname : s.pathname || (s.pathname = \"/\"), s;\n};\nSn = function(n, t) {\n return n.pathname === t.pathname && n.search === t.search && n.hash === t.hash && n.key === t.key && (0, $s.default)(n.state, t.state);\n};\nconst Nn = \"/\", Ln = \"./\", ks = new RegExp(\n [\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n \"(\\\\\\\\.)\",\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\"]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined]\n \"(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?\"\n ].join(\"|\"),\n \"g\"\n), Mn = (n, t) => {\n const e = [];\n let r = 0, s = 0, i = \"\";\n const o = t && t.delimiter || Nn, a = t && t.delimiters || Ln;\n let c = !1, h;\n for (; (h = ks.exec(n)) !== null; ) {\n const u = h[0], l = h[1], d = h.index;\n if (i += n.slice(s, d), s = d + u.length, l) {\n i += l[1], c = !0;\n continue;\n }\n let f = \"\";\n const g = n[s], E = h[2], p = h[3], C = h[4], R = h[5];\n if (!c && i.length) {\n const N = i.length - 1;\n a.indexOf(i[N]) > -1 && (f = i[N], i = i.slice(0, N));\n }\n i && (e.push(i), i = \"\", c = !1);\n const B = f !== \"\" && g !== void 0 && g !== f, _ = R === \"+\" || R === \"*\", D = R === \"?\" || R === \"*\", H = f || o, x = p || C;\n e.push({\n delimiter: H,\n optional: D,\n repeat: _,\n partial: B,\n name: E || r++,\n // tslint:disable-line:no-increment-decrement\n prefix: f,\n pattern: x ? As(x) : \"[^\" + wt(H) + \"]+?\"\n });\n }\n return (i || s < n.length) && e.push(i + n.substr(s)), e;\n}, Cs = (n, t) => Ss(Mn(n, t)), Ss = (n) => {\n const t = new Array(n.length);\n for (let e = 0; e < n.length; e++)\n typeof n[e] == \"object\" && (t[e] = new RegExp(\"^(?:\" + n[e].pattern + \")$\"));\n return function(e, r) {\n let s = \"\";\n const i = r && r.encode || encodeURIComponent;\n for (let o = 0; o < n.length; o++) {\n const a = n[o];\n if (typeof a == \"string\") {\n s += a;\n continue;\n }\n const c = e ? e[a.name] : void 0;\n let h;\n if (Array.isArray(c)) {\n if (!a.repeat)\n throw new TypeError(\n 'Expected \"' + a.name + '\" to not repeat, but got array'\n );\n if (c.length === 0) {\n if (a.optional)\n continue;\n throw new TypeError('Expected \"' + a.name + '\" to not be empty');\n }\n for (let u = 0; u < c.length; u++) {\n if (h = i(c[u], a), !t[o].test(h))\n throw new TypeError(\n 'Expected all \"' + a.name + '\" to match \"' + a.pattern + '\"'\n );\n s += (u === 0 ? a.prefix : a.delimiter) + h;\n }\n continue;\n }\n if (typeof c == \"string\" || typeof c == \"number\" || typeof c == \"boolean\") {\n if (h = i(String(c), a), !t[o].test(h))\n throw new TypeError(\n 'Expected \"' + a.name + '\" to match \"' + a.pattern + '\", but got \"' + h + '\"'\n );\n s += a.prefix + h;\n continue;\n }\n if (a.optional) {\n a.partial && (s += a.prefix);\n continue;\n }\n throw new TypeError(\n 'Expected \"' + a.name + '\" to be ' + (a.repeat ? \"an array\" : \"a string\")\n );\n }\n return s;\n };\n}, wt = (n) => n.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\"), As = (n) => n.replace(/([=!:$/()])/g, \"\\\\$1\"), Dn = (n) => n && n.sensitive ? \"\" : \"i\", Ns = (n, t) => {\n if (!t)\n return n;\n const e = n.source.match(/\\((?!\\?)/g);\n if (e)\n for (let r = 0; r < e.length; r++)\n t.push({\n name: r,\n prefix: \"\",\n delimiter: \"\",\n optional: !1,\n repeat: !1,\n partial: !1,\n pattern: \"\"\n });\n return n;\n}, Ls = (n, t, e) => {\n const r = [];\n for (let s = 0; s < n.length; s++)\n r.push(jn(n[s], t, e).source);\n return new RegExp(\"(?:\" + r.join(\"|\") + \")\", Dn(e));\n}, Ms = (n, t, e) => Ds(Mn(n, e), t, e), Ds = (n, t, e) => {\n e = e || {};\n const r = e.strict, s = e.end !== !1, i = wt(e.delimiter || Nn), o = e.delimiters || Ln, a = [].concat(e.endsWith || []).map(wt).concat(\"$\").join(\"|\");\n let c = \"\", h = !1;\n for (let u = 0; u < n.length; u++) {\n const l = n[u];\n if (typeof l == \"string\")\n c += wt(l), h = u === n.length - 1 && o.indexOf(l[l.length - 1]) > -1;\n else {\n const d = wt(l.prefix), f = l.repeat ? \"(?:\" + l.pattern + \")(?:\" + d + \"(?:\" + l.pattern + \"))*\" : l.pattern;\n t && t.push(l), l.optional ? l.partial ? c += d + \"(\" + f + \")?\" : c += \"(?:\" + d + \"(\" + f + \"))?\" : c += d + \"(\" + f + \")\";\n }\n }\n return s ? (r || (c += \"(?:\" + i + \")?\"), c += a === \"$\" ? \"$\" : \"(?=\" + a + \")\") : (r || (c += \"(?:\" + i + \"(?=\" + a + \"))?\"), h || (c += \"(?=\" + i + \"|\" + a + \")\")), new RegExp(\"^\" + c, Dn(e));\n}, jn = (n, t, e) => n instanceof RegExp ? Ns(n, t || []) : Array.isArray(n) ? Ls(n, t, e) : Ms(n, t, e), Ft = jn;\nvar q = /* @__PURE__ */ ((n) => (n.scopedHash = \"scopedHash\", n.hash = \"hash\", n.browser = \"browser\", n.memory = \"memory\", n))(q || {}), ot = /* @__PURE__ */ ((n) => (n.storage = \"storage\", n.path = \"path\", n.initialPath = \"initial\", n))(ot || {});\nconst Ot = (n, t) => {\n const e = [], r = Ft(t, e).exec(n);\n if (!r)\n return {};\n const [s, ...i] = r;\n return e.reduce((o, a, c) => (o[a.name] = i[c], o), {});\n}, js = (n) => Object.keys(n).reduce((t, e) => {\n const r = typeof n[e] == \"string\" ? n[e].replace(\"&\", \"%20\") : n[e];\n let s = `${e}=${r}`;\n return t.length > 1 && (s = \"&\".concat(s)), t.concat(s);\n}, \"?\"), ce = (n, t) => {\n const e = t.find((r) => r.name === n);\n if (!e) {\n process.env.NODE_ENV !== \"production\" && I.warn(`Unable to find route with specified name: ${n}`);\n return;\n }\n return e;\n}, _n = (n) => n.length ? n.slice(1).split(\"&\").map((t) => t.split(\"=\")).reduce((t, e) => {\n const [r, s] = e.map(encodeURI).map(decodeURIComponent);\n return En(gt({}, t), { [r]: decodeURIComponent(s).replace(\"%20\", \"&\") });\n}, {}) : {}, _s = (n, t) => {\n const e = t.map((r) => It(n, r)).reduce(\n (r, s) => {\n if (s === null)\n return r;\n const i = s.split(\"?\")[1];\n let o = 0;\n if (i) {\n const a = _n(`?${i}`);\n o = Object.keys(a).length;\n }\n return !r.path || r.count && o < r.count ? {\n count: o,\n path: s\n } : r;\n },\n { count: void 0, path: void 0 }\n );\n return e ? e.path : t[0];\n}, It = (n, t) => {\n const e = lt(n);\n if (Array.isArray(t)) {\n const c = _s(e, t);\n if (!c)\n throw new Error(\"Unable to match path.\");\n return c;\n }\n const r = Cs(t);\n let s = t;\n try {\n s = r(e);\n } catch (c) {\n return null;\n }\n const i = [];\n Ft(t, i);\n const o = Object.keys(e).reduce((c, h) => (i.find((u) => u.name === h) || c.push(h), c), []), a = {};\n return o.forEach((c) => a[c] = e[c]), Object.keys(a).forEach((c) => a[c] === null && delete a[c]), Object.keys(a).length > 0 ? `${s}${js(a)}` : s;\n}, ft = (n, t) => {\n let e = n;\n return e.indexOf(\"?\") > -1 && (e = e.substring(0, e.indexOf(\"?\"))), e.indexOf(\";\") > -1 && (e = e.substring(0, e.indexOf(\";\"))), e === \"\" && (e = \"/\"), t.reduce((r, s) => {\n if (Array.isArray(s.path))\n return s.path.reduce((o, a) => Ft(a, []).exec(e || \"\") && !o ? e : o, void 0) && !r ? s : r;\n if (!s.path)\n return r;\n const i = [];\n return Ft(s.path, i).exec(e || \"\") && !r ? s : r;\n }, void 0);\n}, Ts = (n) => {\n let t = n.get(\"historyTransitionManager\");\n return t || (t = Pn(), n.parent && n.parent.register(\"historyTransitionManager\", t)), t;\n}, Et = (n, t = null) => n ? Zt(t ? t(n) : n) : {\n pathname: \"\",\n search: \"\",\n hash: \"\"\n}, Is = (n, t) => {\n if (lt(n), lt(t), Object.keys(n).length !== Object.keys(t).length)\n return !1;\n if (Object.keys(n).length === 0 && Object.keys(t).length === 0)\n return !0;\n let e = !0;\n return Object.keys(t).forEach((r) => {\n t[r] !== n[r] && (e = !1);\n }), e;\n}, Rs = (n) => {\n if (typeof n.mode == \"string\") {\n if (n.mode === q.memory)\n return !0;\n } else if (n.mode[1]) {\n const [t, { sticky: e }] = n.mode;\n if (t === q.memory)\n return typeof e == \"undefined\" ? !0 : e;\n }\n return !1;\n}, he = (n) => {\n const { views: t } = n.get(\"$settings\"), e = Object.keys(t).reduce((r, s) => typeof t[s].path == \"undefined\" ? s : r, void 0);\n return e ? {\n name: e,\n params: {}\n } : null;\n}, Ye = \"hashchange\", Hs = {\n hashbang: {\n encodePath: (n) => n.charAt(0) === \"!\" ? n : \"!/\" + fe(n),\n decodePath: (n) => n.charAt(0) === \"!\" ? n.substr(1) : n\n },\n noslash: {\n encodePath: fe,\n decodePath: xt\n },\n slash: {\n encodePath: xt,\n decodePath: xt\n }\n}, st = () => {\n const n = window.location.href, t = n.indexOf(\"#\");\n return t === -1 ? \"\" : n.substring(t + 1);\n}, Ge = (n) => window.location.hash = n, Qe = (n) => {\n const t = window.location.href.indexOf(\"#\");\n window.location.replace(\n window.location.href.slice(0, t >= 0 ? t : 0) + \"#\" + n\n );\n}, Rt = (n = \"\") => {\n const t = n.replace(\";\", \"?\"), e = [\n { from: /\\;+/gi, to: \"&\" },\n { from: /:+/gi, to: \"=\" }\n ];\n let r = t;\n return e.forEach(({ to: s, from: i }) => {\n r = r.replace(i, s);\n }), r;\n}, Vs = (n = {}) => {\n const t = window.history, { getUserConfirmation: e = kn, hashType: r = \"slash\" } = n, s = n.basename ? Cn(xt(n.basename)) : \"\", { encodePath: i } = Hs[r], o = () => {\n const m = st(), b = u(m);\n return Et(b, Rt);\n }, a = n.transitionManager || Pn(), c = (m) => {\n Object.assign(T, m), T.length = t.length, a.notifyListeners(T.location, T.action, n.widgetName);\n };\n let h = !1;\n const u = (m) => {\n const b = (w) => {\n function P($, y) {\n const O = {};\n let L;\n for (; L = y.exec($); )\n O[L[1]] = L[2];\n return O;\n }\n return P(w, /([^#?&=]+)=([^&#]*)(?!.*?\\#)/gi) || null;\n }, v = \"humany-\" + n.widgetName;\n return b(m)[v];\n }, l = () => {\n const m = o(), b = T.location;\n !h && Sn(b, m) || d(m);\n }, d = (m) => {\n if (h)\n h = !1, c();\n else {\n const b = \"POP\";\n a.confirmTransitionTo(\n m,\n b,\n e,\n (v) => {\n v ? c({ action: b, location: m }) : f(m);\n }\n );\n }\n }, f = (m) => {\n const b = T.location;\n let v = p.lastIndexOf(rt(b));\n v === -1 && (v = 0);\n let w = p.lastIndexOf(rt(m));\n w === -1 && (w = 0);\n const P = v - w;\n P && (h = !0, x(P));\n }, g = st(), E = i(g);\n g !== E && Qe(E);\n let p = [];\n const C = o();\n C.pathname !== null && p.push(rt(C));\n const R = (m = \"\") => {\n const b = [\n { from: /\\?+/gi, to: \";\" },\n { from: /\\&amp;+/gi, to: \";\" },\n { from: /\\&+/gi, to: \";\" },\n { from: /=+/gi, to: \":\" }\n ];\n let v = m;\n return b.forEach(({ to: w, from: P }) => {\n v = v.replace(P, w);\n }), v;\n }, B = (m, b, v) => {\n let w = \"\", P = !1;\n return m.split(\"&\").forEach(($) => {\n const y = $.split(\"=\"), O = y[0], L = y[1];\n if (O === b) {\n if (P = !0, v === null)\n return;\n w.length > 0 && (w += \"&\"), typeof v != \"undefined\" ? w += O + \"=\" + v : w += O;\n } else\n O && (w.length > 0 && (w += \"&\"), w += O + \"=\" + L);\n }), !P && v !== null && (w.length > 0 && (w += \"&\"), typeof v != \"undefined\" ? w += b + \"=\" + v : w += b), w;\n }, _ = (m) => {\n const b = m.pathname, v = R(m.search), w = b + (v ? `;${v}` : \"\"), P = `humany-${n.widgetName}`, $ = st();\n return `#${B($, P, w).replace(\";;\", \";\")}`;\n }, D = (m, b) => {\n const v = \"PUSH\", w = Et(m, Rt), P = w.pathname, $ = R(w.search), y = P + ($ ? `${$}` : \"\"), O = `humany-${n.widgetName}`, L = st(), M = B(L, O, y);\n a.confirmTransitionTo(w, v, e, (F) => {\n if (!F)\n return;\n const J = rt(w), et = i(M);\n if (st() !== et) {\n Ge(et);\n const Y = p.lastIndexOf(rt(T.location)), U = p.slice(0, Y === -1 ? 0 : Y + 1);\n U.push(J), p = U, c({ action: v, location: w });\n } else\n c();\n });\n }, H = (m, b) => {\n const v = \"REPLACE\", w = Et(m, Rt);\n a.confirmTransitionTo(w, v, e, (P) => {\n if (!P)\n return;\n const $ = rt(w), y = i(s + $);\n st() !== y && Qe(y);\n const O = p.indexOf(rt(T.location));\n O !== -1 && (p[O] = $), c({ action: v, location: w });\n });\n }, x = (m) => {\n t.go(m);\n }, N = () => x(-1), A = () => x(1);\n let j = 0;\n const W = (m) => {\n j += m, j === 1 ? window.addEventListener(Ye, l) : j === 0 && window.removeEventListener(Ye, l);\n };\n let V = !1;\n const T = {\n createHref: _,\n createLocation: Et,\n push: D,\n replace: H,\n go: x,\n goBack: N,\n goForward: A,\n block: (m = !1) => {\n const b = a.setPrompt(m);\n return V || (W(1), V = !0), () => (V && (V = !1, W(-1)), b());\n },\n listen: (m) => {\n const b = a.appendListener(m);\n return W(1), () => {\n W(-1), b();\n };\n },\n stop: () => {\n const m = st(), b = B(m, `humany-${n.widgetName}`, null), v = i(b);\n Ge(v);\n },\n length: t.length,\n action: \"POP\",\n location: C\n };\n return T;\n}, Tn = Vs, Ws = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n decodeSearch: Rt,\n default: Tn,\n getHashPath: st\n}, Symbol.toStringTag, { value: \"Module\" })), Bs = (n, t) => {\n const e = (s) => {\n function i(o, a) {\n const c = {};\n let h;\n for (; h = a.exec(o); )\n c[h[1]] = h[2];\n return c;\n }\n return i(s, /([^#?&=]+)=([^&#]*)(?!.*?\\#)/gi) || null;\n }, r = `humany-${t}`;\n return e(n)[r];\n}, Us = () => {\n const n = window.location.href, t = n.indexOf(\"#\");\n return t === -1 ? \"\" : n.substring(t + 1);\n}, zs = (n = \"\") => {\n const t = n.replace(\";\", \"?\"), e = [\n { from: /\\;+/gi, to: \"&\" },\n { from: /:+/gi, to: \"=\" }\n ];\n let r = t;\n return e.forEach(({ to: s, from: i }) => {\n r = r.replace(i, s);\n }), r;\n}, Fs = (n, t = null) => n ? Zt(t ? t(n) : n) : {\n pathname: \"\",\n search: \"\",\n hash: \"\"\n}, In = (n) => {\n const t = Us(), e = Bs(t, n);\n return Fs(e, zs);\n}, Oe = (n) => {\n const { name: t } = n.get(\"$widget\");\n return !!In(t).pathname;\n};\nge((n) => {\n n.createCommand(\"routing\", (t) => (e) => {\n const r = {\n mode: e.mode\n };\n e.basePath && (r.basePath = e.basePath), t.container.register(\"routingSettings\", r);\n });\n});\nconst Ze = \"routeData\";\nclass Js {\n constructor(t, e) {\n this.container = t, this.steps = [], this.historyListenSubscription = () => {\n }, this.sticky = !1, this.storageWriter = null, this.widget = t.get(\"$widget\");\n const r = e, { routes: s } = r, i = hs(r, [\"routes\"]);\n this.settings = gt(gt({}, i), t.get(\"routingSettings\")), this.sticky = Rs(this.settings), this.storageMedium = this.sticky ? k.Local : k.Session, X(t, Ze, S.Necessary, {\n medium: this.storageMedium\n }).then((o) => this.storageWriter = o), this.routes = s;\n }\n initialize() {\n return this.initialized = this.initialized || this.createHistory().then((t) => {\n this.history = t, this.location = t.location, this.historyListenSubscription = t.listen(\n (e, r, s) => this.handleLocationChange(e, s)\n );\n });\n }\n setMatch(t) {\n if (this.match = t, this.location) {\n const e = this.getRouteData(), r = {\n routeData: e,\n location: this.location\n }, s = this.steps[0], i = e.name === (s == null ? void 0 : s.routeData.name), o = Le(\n e.params,\n (s == null ? void 0 : s.routeData.params) || {}\n );\n (!i || !o) && (this.widget.events.dispatch(\"router:change\", { next: r, previous: s }), this.steps.unshift(r), this.storageWriter && this.storageWriter(r.routeData), this.widget.events.dispatch(\"router:changed\", { previous: s, current: r }));\n }\n }\n onRouteChange(t) {\n return this.widget.events.subscribe(\"router:change\", t);\n }\n isSticky() {\n return this.sticky;\n }\n /**\n * Generate a formatted path from string\n * @param routeName Name of route to generate path for\n * @param params Optional: route params\n */\n generate(t, e = {}) {\n const r = ce(t, this.routes);\n if (!r || !this.history)\n throw `No route found for ${t}`;\n const s = It(e, r.path);\n if (!s)\n throw `Unable to generate path for \"${t}\".`;\n const i = Et(s, this.settings.decodeSearch);\n let o = this.history.createHref(i);\n const { mode: a, basePath: c } = this.settings;\n return a === \"browser\" && c && (o = o.replace(c, \"\")), o.charAt(0) !== \"/\" && (o = `/${o}`), o;\n }\n /**\n * Navigate to path\n * @param routeName Route to navigate to\n * @param params Optional: route params\n */\n navigate(t, e = {}) {\n const r = ce(t, this.routes);\n if (!r || !this.history)\n return;\n const s = It(e, r.path);\n if (!s)\n return;\n const i = this.getRouteData(), o = i && i.name === t && Is(i.params, e);\n if (this.steps[0] && o)\n return;\n const { decodeSearch: a } = this.settings, c = a ? a(s) : s;\n this.widget.events.dispatch(\"router:navigate\", {\n decodedPath: c\n }), c.charAt(0) !== \"/\" ? this.history.push(`/${c}`) : this.history.push(c);\n }\n /**\n * Return true or false depending\n * on whether it is possible to navigate backwards\n */\n hasBack() {\n if (this.steps.length > 1)\n return !0;\n const t = this.getRouteData(this.settings.initialPath), e = this.getRouteData(), r = e.name === t.name, s = Le(e.params, t.params);\n return !r || !s;\n }\n /**\n * Navigate to previous route\n */\n goBack(t = 1) {\n if (this.steps.length < 2) {\n const e = this.getRouteData(this.settings.initialPath);\n e && e.name && (this.navigate(e.name, e.params), this.steps = []);\n } else {\n const e = t >= this.steps.length ? this.steps.length - 1 : t, { routeData: r } = this.steps[e];\n this.steps = [...this.steps.slice(e + 1)], this.navigate(r.name, Xn(r.params));\n }\n }\n /**\n * Navigate to next route\n */\n goForward() {\n this.history && this.history.goForward();\n }\n /**\n * Get the current location\n */\n current() {\n return this.location;\n }\n /**\n * Get the initial route. If the defined initial route does not exist,\n * return the first defined route\n */\n getInitialRoute() {\n const { name: t } = this.getRouteData(this.settings.initialPath);\n return this.routes.find((r) => r.name === t) || (this.routes.length > 0 ? this.routes[0] : (process.env.NODE_ENV !== \"production\" && I.warn(\"Unable to get initial route as no routes are defined.\"), null));\n }\n getRouteData(t) {\n const e = he(this.container);\n if (t) {\n const r = ft(t, this.routes);\n return r ? {\n params: lt(Ot(t, r.path)),\n name: r.name\n } : e || {\n name: \"\",\n params: {}\n };\n }\n if (this.location) {\n const { pathname: r, search: s } = this.location;\n if (this.currentRoute = this.currentRoute || ft(r, this.routes), this.currentRoute) {\n const { path: i, name: o } = this.currentRoute;\n this.match || (this.match = {\n params: Ot(r, i),\n isExact: !0,\n path: i,\n url: r\n });\n const a = lt(gt(gt({}, this.match.params), s.length > 0 && _n(s)));\n return {\n name: o,\n params: a\n };\n }\n }\n return e || {\n name: \"\",\n params: {}\n };\n }\n dispose() {\n return this.historyListenSubscription(), this.stop();\n }\n /**\n * Setup and load the initial route based on router configuration\n */\n setupInitialRoute() {\n return K(this.container, Ze, this.storageMedium).then(\n (t) => {\n if (!this.location || !this.history)\n return;\n const { initialPath: e, mode: r } = this.settings;\n switch ((() => {\n const s = Oe(this.container);\n return r === q.browser || s ? ot.path : r === q.memory && t ? ot.storage : ot.initialPath;\n })()) {\n case ot.initialPath: {\n const s = this.getRouteData(e);\n return s && s.name ? this.navigate(s.name, s.params) : void 0;\n }\n case ot.path: {\n const { pathname: s } = this.location;\n if (this.currentRoute = ft(s, this.routes), this.currentRoute) {\n const { path: o } = this.currentRoute;\n return this.setMatch({\n params: Ot(s, o),\n isExact: !0,\n path: o,\n url: s\n });\n }\n const i = he(this.container);\n return i ? this.setMatch({\n params: {},\n isExact: !0,\n path: i.name,\n url: s\n }) : void 0;\n }\n case ot.storage: {\n const { pathname: s } = this.location;\n this.currentRoute = ft(s, this.routes);\n const { name: i = \"\", params: o = {} } = t || {}, a = ce(i, this.routes);\n if (a) {\n const c = It(o, a.path);\n if (c)\n return this.history.push(c), this.location = En(gt({}, this.location), { pathname: c }), this.currentRoute = ft(c, this.routes), this.setMatch({\n params: o,\n isExact: !0,\n path: a.path,\n url: c\n });\n }\n return;\n }\n }\n }\n );\n }\n start() {\n return this.setupInitialRoute();\n }\n stop() {\n return this.history && (this.settings.mode === q.scopedHash && this.history.stop(), this.steps = [], this.storageWriter) ? this.storageWriter() : Promise.resolve();\n }\n handleLocationChange(t, e) {\n const { pathname: r } = t, { mode: s } = this.settings;\n if (r.indexOf(\"?\") > -1 || r.indexOf(\";\") > -1 || s === q.scopedHash && e !== this.widget.name)\n return;\n this.location = t, this.currentRoute = ft(r, this.routes);\n const i = he(this.container);\n if (this.currentRoute) {\n const { path: o } = this.currentRoute;\n this.setMatch({\n params: Ot(r, o),\n isExact: !0,\n path: o,\n url: r\n });\n } else\n i && this.setMatch({\n params: {},\n isExact: !0,\n path: i.name,\n url: r\n });\n }\n createHistory() {\n return new Promise((t) => {\n const { mode: e, basePath: r } = this.settings;\n if (e === q.scopedHash) {\n const s = this.widget.name, i = Ts(this.container);\n return Promise.resolve().then(() => Ws).then((o) => {\n const a = o.default({\n widgetName: s,\n transitionManager: i,\n hashType: \"noslash\"\n });\n return t(a);\n });\n }\n if (e === q.memory)\n return t(Ur());\n if (e === q.browser)\n return t(Wr({ basename: r }));\n throw \"RoutingService: History could not be created.\";\n });\n }\n}\nconst qs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n HistoryMode: q,\n RoutingService: Js,\n createHashHistory: Tn,\n getScopedHashDOMLocation: In,\n matchParams: Ot,\n onWidgetUrl: Oe\n}, Symbol.toStringTag, { value: \"Module\" })), ue = (n, t, e, ...r) => {\n const s = `[${n.get(\"$environment\").name || \"webprovisions\"}] ${e}`;\n switch (t) {\n case \"info\":\n console.info(s, ...r);\n break;\n case \"warning\":\n console.warn(s, ...r);\n break;\n case \"error\":\n console.error(s, ...r);\n break;\n }\n}, Ks = (n) => {\n const t = n.container || n;\n return {\n info: (e, ...r) => ue(t, \"info\", e, ...r),\n warn: (e, ...r) => ue(t, \"warning\", e, ...r),\n error: (e, ...r) => ue(t, \"error\", e, ...r)\n };\n};\nvar $t = /* @__PURE__ */ ((n) => (n.Implementation = \"implementation\", n.Widget = \"widget\", n))($t || {}), it = /* @__PURE__ */ ((n) => (n.Pre = \"pre\", n.Post = \"post\", n))(it || {});\nconst Ys = (n, t, e, r) => {\n try {\n const s = new t(e, r);\n return {\n name: n,\n invoke: (i, o) => {\n let a;\n return s[i] && (a = s[i].call(s, o)), Promise.resolve(a);\n },\n getInstance: () => s\n };\n } catch (s) {\n if (s.message && s.message.indexOf(\"is not a constructor\") >= 0)\n return {\n name: n,\n invoke: (i) => {\n let o;\n return i === \"initialize\" && (o = t(e, r)), Promise.resolve(o);\n },\n getInstance: () => t\n };\n throw s;\n }\n};\nfunction Xe(n, t) {\n return typeof n == \"undefined\" ? t : n;\n}\nclass Gs {\n constructor(t = {}) {\n this.part = t;\n }\n createCommand(t, e, r) {\n let s;\n typeof e == \"function\" ? s = {\n scope: $t.Widget,\n stage: it.Post,\n defaultArgs: void 0,\n handlerResolver: e\n } : s = {\n scope: Xe(e.scope, $t.Widget),\n stage: Xe(e.stage, it.Post),\n defaultArgs: e.defaultArgs,\n handlerResolver: r\n };\n let i = this.part;\n const o = t.split(\".\");\n return o.forEach((a, c) => {\n c === o.length - 1 ? i[a] || (i[a] = () => s) : i = this.part[a] = this.part[a] || {};\n }), this;\n }\n get() {\n return this.part;\n }\n}\nconst Rn = (n) => {\n const t = new Gs({});\n return n(t), t.get();\n};\nRn((n) => {\n n.createCommand(\n \"types.register\",\n { scope: $t.Implementation, stage: it.Pre },\n (t) => (e, r) => {\n t.container.get(\"$types\")[e] = r;\n }\n ).createCommand(\n \"type\",\n { stage: it.Pre },\n (t) => (e) => {\n t.container.register(\"$type\", e);\n }\n ).createCommand(\n \"settings\",\n { stage: it.Pre, defaultArgs: [null] },\n (t) => (e) => {\n t.events.dispatch(\n \"settings:change\",\n e,\n { bubbles: !0 }\n ), t.container.register(\"$settings\", e);\n }\n ).createCommand(\n \"plugin\",\n { stage: it.Pre },\n (t) => (e, r, s) => {\n const { container: i } = t;\n let o = null, a = e, c = r;\n typeof e == \"string\" && (o = e, a = r, c = s);\n const h = (u) => {\n const { transformPluginSettings: l } = t.container.get(\"$environmentOptions\"), d = l ? l(\n c || {},\n o,\n t.container,\n a\n ) : r;\n try {\n const f = Ys(\n o,\n a,\n i,\n d\n );\n i.get(\"$plugins\").push(f), u && f.invoke(\"initialize\", null);\n } catch (f) {\n Ks(t).warn(\"Error when initializing plugin\", f);\n }\n };\n t.container.get(\"$instance\") ? h(!0) : t.events.subscribeOnce(\"widget:instance-created\", () => h(!1));\n }\n ).createCommand(\n \"container.register\",\n (t) => (e, r) => {\n t.container.register(e, r);\n }\n ).createCommand(\n \"container.registerAsync\",\n (t) => (e, r) => {\n t.container.registerAsync(e, r);\n }\n ).createCommand(\n \"container.registerFactory\",\n (t) => (e, r) => {\n t.container.registerFactory(e, r);\n }\n ).createCommand(\n \"container.touch\",\n (t) => (e, r) => {\n t.container.touch(e, r);\n }\n ).createCommand(\n \"csp\",\n {},\n (t) => (e) => {\n t.container.register(\"csp\", e);\n }\n );\n});\nfunction Qs(n) {\n const t = {};\n return [].filter.call(n.attributes, (e) => /^data-/.test(e.name)).map((e) => e.name).forEach((e) => t[e.substr(5)] = n.getAttribute(e)), t;\n}\nconst tn = (n, t, e) => {\n const r = Qs(n);\n e({\n sourceDOMElement: n,\n eventType: t,\n data: r\n });\n};\nfunction en(n, t, e) {\n n.forEach((r) => {\n r.dataset.attached !== \"true\" && (t === \"load\" ? tn(r, t, e) : r.addEventListener(t, (s) => {\n s.preventDefault(), tn(r, t, e);\n }), r.dataset.monitored = \"true\");\n });\n}\nfunction Zs(n, t, e) {\n const r = n.container.get(\"bootstrapping.monitor\");\n r && r.events.subscribe(\"bootstrap:trigger-elements-updated\", (i, o) => {\n en(\n o.triggerElements,\n t,\n e\n );\n });\n const s = n.container.get(\"triggerElements\");\n s && en(\n s,\n t,\n e\n );\n}\nRn((n) => {\n n.createCommand(\n \"ready\",\n { scope: $t.Implementation, stage: it.Pre },\n (t) => (e) => {\n const { container: r } = t, s = r.owner;\n r.get(\"bootstrapping\").ready ? e(s) : s.events.subscribeOnce(\"bootstrap:ready\", () => {\n e(s);\n });\n }\n );\n});\nconst Xs = (n) => {\n if (n) {\n const { type: t, content: e } = n;\n switch (t) {\n case \"FontAwesome\":\n return `<i class=\"humany-icon fa fa-${e}\"></i>`;\n case \"Uri\":\n return `<i class=\"humany-icon humany-custom-icon\" style=\"background: url(${e}) no-repeat center center;background-size: contain;\"></i>`;\n default:\n return \"\";\n }\n }\n}, ti = (n) => {\n const t = (s, i) => {\n s && (i ? s.classList.add(\"humany-tabbing\") : s.classList.remove(\"humany-tabbing\"));\n }, e = (s) => {\n s.key === \"Tab\" ? t(n, !0) : s.key === \"Enter\" && document.activeElement && document.activeElement.classList.contains(\"humany-trigger\") || t(n, !1);\n }, r = (s) => {\n document.activeElement && document.activeElement.classList.contains(\"humany-trigger\") && document.activeElement.classList.contains(\"humany-tabbing\") || t(n, !1);\n };\n return document.addEventListener(\"keydown\", e), document.addEventListener(\"click\", r), () => {\n document.removeEventListener(\"keydown\", e), document.removeEventListener(\"click\", r);\n };\n};\nfunction ei(n, t) {\n const {\n symbol: e,\n widgetName: r,\n label: s = \"\",\n ariaLabel: i = \"\",\n tooltip: o = \"\"\n } = t;\n n.classList.add(\"humany-trigger\"), n.classList.add(`humany_${r}`), s.length && n.classList.add(\"humany-has-text\"), i.length && !n.getAttribute(\"aria-label\") && n.setAttribute(\"aria-label\", i), i.length && !n.getAttribute(\"tabindex\") && n.setAttribute(\"tabindex\", \"0\"), o.length && !n.getAttribute(\"title\") && n.setAttribute(\"title\", o);\n const a = Xs(e) || \"\";\n return n.innerHTML = `${a}\n <span class=\"humany-close\">\n <svg width=\"18\" height=\"9\" viewBox=\"0 0 18 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 9C8.81794 9.00045 8.63759 8.96634 8.46939 8.89965C8.3012 8.83295 8.14851 8.735 8.02015 8.61145L0.194523 1.12367C0.068294 0.99862 -0.00155266 0.831133 2.61958e-05 0.657285C0.00160506 0.483436 0.0744832 0.317136 0.202964 0.194202C0.331445 0.0712675 0.505249 0.00153576 0.686941 2.50649e-05C0.868634 -0.00148563 1.04368 0.0653456 1.17437 0.186125L9 7.6739L16.8256 0.186125C16.9563 0.0653456 17.1314 -0.00148563 17.3131 2.50649e-05C17.4948 0.00153576 17.6686 0.0712675 17.797 0.194202C17.9255 0.317136 17.9984 0.483436 18 0.657285C18.0016 0.831133 17.9317 0.99862 17.8055 1.12367L9.97985 8.61145C9.85149 8.735 9.6988 8.83295 9.53061 8.89965C9.36241 8.96634 9.18206 9.00045 9 9Z\" fill=\"white\"/>\n </svg>\n </span>\n <span class=\"humany-loader\">\n <svg viewBox=\"25 25 50 50\">\n <circle\n cx=\"50\"\n cy=\"50\"\n r=\"20\"\n fill=\"none\"\n stroke=\"#000\"\n stroke-width=\"2\"\n stroke-miterlimit=\"10\" />\n </svg>\n </span>\n ${s.length ? `<span>${s}</span>` : \"\"}`, setTimeout(\n () => n && n.classList.add(\"humany-rendered\")\n ), ti(n);\n}\nfunction ni(n, t) {\n n instanceof HTMLElement ? (t && n.setAttribute(\"title\", t), n.classList.remove(\"humany-active\"), n.classList.remove(\"humany-loading\")) : n instanceof Array && n.forEach((e) => {\n t && e.setAttribute(\"title\", t), e.classList.remove(\"humany-active\"), e.classList.remove(\"humany-loading\");\n });\n}\nfunction ri(n) {\n n instanceof HTMLElement ? (n.classList.remove(\"humany-active\"), n.classList.add(\"humany-loading\")) : n instanceof Array && n.forEach((t) => {\n t.classList.remove(\"humany-active\"), t.classList.add(\"humany-loading\");\n });\n}\nfunction Hn(n, t) {\n n instanceof HTMLElement ? (t && n.setAttribute(\"title\", t), n.classList.add(\"humany-active\"), n.classList.remove(\"humany-loading\")) : n instanceof Array && n.forEach((e) => {\n t && e.setAttribute(\"title\", t), e.classList.add(\"humany-active\"), e.classList.remove(\"humany-loading\");\n });\n}\nvar ut = /* @__PURE__ */ ((n) => (n.Inline = \"inline\", n.Link = \"link\", n.Badge = \"badge\", n.Unsupported = \"unsupported\", n))(ut || {});\nconst si = (n, t) => n && t ? \"both\" : n ? \"widgetDOM\" : t ? \"triggerDOM\" : \"none\", Vn = (n) => n ? typeof n == \"boolean\" && n ? \"link\" : typeof n == \"object\" && !Array.isArray(n) ? \"badge\" : \"unsupported\" : \"inline\", ii = (n, t, e, r, s = !1) => {\n var h, u;\n const i = si(\n t,\n e\n ), o = Vn(r), a = {\n widgetDOMElement: t ? t.cloneNode(!0) : void 0,\n triggerDOMElement: e ? e.cloneNode(!0) : void 0\n }, c = {\n triggerType: o,\n cachedOriginals: a,\n widgetDOMElement: document.createElement(\"div\")\n };\n switch (i) {\n case \"both\": {\n c.widgetDOMElement = t || document.createElement(\"div\"), o !== \"inline\" && (c.triggerDOMElement = e);\n break;\n }\n case \"widgetDOM\": {\n if (c.widgetDOMElement = t || document.createElement(\"div\"), o !== \"inline\") {\n const l = document.body.appendChild(document.createElement(\"a\"));\n o === \"link\" && (l.innerText = n), c.triggerDOMElement = l;\n }\n break;\n }\n case \"triggerDOM\": {\n const l = document.createElement(\"div\");\n c.widgetDOMElement = l, o === \"inline\" ? (l.id = (e == null ? void 0 : e.id) || \"\", s ? (l.style.display = \"none\", (h = e == null ? void 0 : e.parentNode) == null || h.appendChild(l), c.callback = () => {\n var d;\n (d = e == null ? void 0 : e.parentNode) == null || d.replaceChild(\n l,\n e\n ), l.style.display = (e == null ? void 0 : e.style.display) || \"block\";\n }) : (u = e == null ? void 0 : e.parentNode) == null || u.replaceChild(\n l,\n e\n ), c.cachedOriginals.widgetDOMElement = e, c.cachedOriginals.triggerDOMElement = void 0) : (c.widgetDOMElement = document.body.appendChild(l), c.triggerDOMElement = e);\n break;\n }\n case \"none\": {\n const l = document.body.appendChild(document.createElement(\"div\"));\n if (c.widgetDOMElement = l, o !== \"inline\") {\n const d = document.body.appendChild(document.createElement(\"a\"));\n o === \"link\" && (d.innerText = n), c.triggerDOMElement = d;\n }\n break;\n }\n }\n return c;\n}, oi = \"modals\";\nclass ai {\n constructor(t, e) {\n this.options = e, this.unsubscribe = [], this.container = t.createChild(this), this.container.register(\"widgetDOMElement\", this.options.widgetDOMElement), this.container.register(\n \"triggerDOMElement\",\n this.options.triggerDOMElement\n );\n const r = this.container.get(\"$widget\");\n this.options.widgetDOMElement.classList.add(\"humany-widget\"), this.options.widgetDOMElement.classList.add(`humany_${r.name}`);\n const s = t.get(\"widgetDOMElements\") || [];\n t.register(\"widgetDOMElements\", [\n ...s,\n this.options.widgetDOMElement\n ]);\n }\n /**\n * Renders the view outlet to the DOM.\n */\n render() {\n const { widgetDOMElement: t, triggerDOMElement: e } = this.options, r = this.container.get(\"$widget\");\n return t.getAttribute(\"data-rendered\") === \"true\" ? Promise.resolve() : (e && this.options.triggerType === ut.Badge && ri(e), import(\"./render-8726e104.js\").then((s) => s.default(this.container, t)).then(() => {\n if (t.setAttribute(\"data-rendered\", \"true\"), e && this.options.triggerType === ut.Badge) {\n const i = this.options.triggerOptions.openTooltip;\n Hn(e, i);\n }\n sr(this.container, t);\n const s = this.container.get(\"$environment\").widgets.all();\n K(\n this.container,\n oi,\n k.Session\n ).then((i) => {\n i && i.forEach((o) => {\n s.find(\n (a) => a.name === o.name && a.state === \"activated\"\n ) && r.events.dispatch(\"widget:modal-opened\", o);\n });\n });\n }));\n }\n renderBadge(t) {\n const { triggerDOMElement: e } = this.options;\n if (!e)\n return;\n e.getAttribute(\"role\") || e.setAttribute(\"role\", \"button\");\n const { name: r } = this.container.get(\"$widget\"), { label: s, symbol: i, ariaLabel: o, closedTooltip: a, openTooltip: c } = t, h = { closedTooltip: a, openTooltip: c };\n this.options.triggerOptions = h;\n const u = ei(e, {\n label: s,\n symbol: i,\n ariaLabel: o,\n widgetName: r,\n tooltip: a\n });\n this.unsubscribe.push(u);\n }\n dispose() {\n return Xt(this, null, function* () {\n var r, s, i, o;\n const { triggerDOMElement: t, widgetDOMElement: e } = this.options;\n this.options.cachedOriginals.widgetDOMElement && e && ((r = e.parentNode) == null || r.replaceChild(\n this.options.cachedOriginals.widgetDOMElement,\n e\n )), this.options.cachedOriginals.triggerDOMElement && t && ((s = t.parentNode) == null || s.replaceChild(\n this.options.cachedOriginals.triggerDOMElement,\n t\n )), this.unsubscribe.forEach((a) => {\n a();\n }), (i = e.parentNode) == null || i.removeChild(e), (o = t == null ? void 0 : t.parentNode) == null || o.removeChild(t);\n });\n }\n}\nconst Nt = \"changesets\", ci = (n) => {\n const t = { tags: n.tags };\n return n.context && typeof n.context != \"function\" && (t.context = n.context), n.properties && typeof n.properties != \"function\" && (t.properties = n.properties), n.layout && typeof n.layout != \"function\" && (t.layout = n.layout), t;\n};\nclass Ee {\n constructor(t, e) {\n this.container = t, this.storageWriter = e;\n }\n static create(t) {\n return X(\n t,\n Nt,\n S.Necessary,\n {\n medium: k.Local\n }\n ).then(\n (e) => new Ee(t, e)\n );\n }\n write(t, e, r, s) {\n return G(this)(() => K(\n this.container,\n Nt,\n k.Local\n ).then((i = {}) => {\n const { keys: o = [], items: a = {} } = i, c = o.indexOf(t);\n return c > -1 && o.splice(c, 1), o.push(t), a[t] = {\n options: s,\n attributes: ci(r),\n rules: e.rules\n }, this.storageWriter({ keys: o, items: a });\n }));\n }\n remove(t) {\n return G(this)(() => K(\n this.container,\n Nt,\n k.Local\n ).then((e = {}) => {\n const { keys: r = [], items: s = {} } = e, i = r.indexOf(t);\n if (i > -1)\n return r.splice(i, 1), delete s[t], this.storageWriter(e);\n }));\n }\n load(t) {\n return G(this)(() => K(\n this.container,\n Nt,\n k.Local\n ).then((e = {}) => {\n const { keys: r = [], items: s = {} } = e;\n r.forEach((i) => {\n const o = s[i];\n if (o) {\n const { rules: a, attributes: c, options: h } = o;\n t.write({\n attributes: c,\n options: h,\n target: new yt(t, a)\n });\n }\n });\n }));\n }\n}\nconst hi = (n) => {\n const { container: t } = n;\n return Ee.create(t).then(\n (e) => {\n const r = t.get(\"$settings\"), s = { localStorage: e }, i = new Yt(n, s), o = un(i, r);\n return n.events.subscribe(\n \"widget:state-change\",\n (a, c) => {\n c.state === sn.Deactivating && o();\n }\n ), i;\n }\n );\n}, ui = (n) => Promise.resolve().then(() => qs).then(\n ({ RoutingService: t, HistoryMode: e }) => n.get(\"settings\").then((r) => {\n const {\n routing: {\n initialPath: s = \"/\",\n mode: i = e.scopedHash,\n basePath: o\n },\n views: a\n } = r;\n return new t(n, {\n initialPath: s,\n mode: i,\n routes: Object.keys(a).map((h) => ({\n name: h,\n path: a[h].path\n })),\n basePath: o\n });\n })\n), li = (n) => Promise.resolve().then(() => is).then(({ StorageProvider: t }) => new t()), di = (n) => Promise.resolve().then(() => ye).then(({ ActionResolver: t }) => new t(n)), pi = (n) => Promise.resolve().then(() => ye).then(({ ComponentResolver: t }) => new t(n)), fi = (n) => Promise.resolve().then(() => ye).then(() => hi(n.get(\"$widget\"))), le = \"$settings\", Lt = \"open\", nn = \"activeStickyWidget\";\nclass Mi extends Yn {\n constructor(t) {\n super(t), this.outlets = /* @__PURE__ */ new Map(), this.activated = void 0, this.subs = [], this.handleBootstrapping = (e) => {\n const r = {\n triggerDOMElement: e.sourceDOMElement,\n withRenderState: \"storage\"\n /* Storage */\n };\n this.container.get(\"settings\").then((s) => {\n const { activate: i } = s;\n (typeof i == \"undefined\" || i === null || i === !0) && (this.activated = (this.activated || this.widget.activate()).then(\n () => this.attach(r)\n ));\n });\n }, this.container.registerAsync(\n \"storage\",\n () => li(this.container)\n ), this.container.registerFactory(\"settings\", () => K(\n this.container,\n le,\n k.Local\n ).then((e = {}) => dt(dt({}, this.container.get(\"$settings\")), e))), Zs(this, \"load\", this.handleBootstrapping), this.container.registerAsync(\n \"componentResolver\",\n () => pi(this.container)\n ), this.container.registerAsync(\n \"router\",\n () => ui(this.container)\n ), this.container.registerAsync(\n \"actionResolver\",\n () => di(this.container)\n ), this.container.register(\"matchMedia\", window.matchMedia), this.container.registerAsync(\n \"components\",\n () => fi(this.container)\n );\n }\n initialize() {\n const t = this.container.getManyAsync(\n \"actionResolver\",\n \"router\",\n \"components\"\n ), e = this.container.get(\"csp\");\n return e && (window.webprovisionsEnvironmentVariables || (window.webprovisionsEnvironmentVariables = {}), window.webprovisionsEnvironmentVariables.cspNonce = e.nonce), Promise.all([t, this.container.get(\"settings\")]).then(\n ([{ actionResolver: r, router: s, components: i }, o]) => {\n var h;\n r.subscribe(\n this.widget.name,\n (u, l, d) => this.onAction(l, d)\n );\n const a = (u) => {\n i.nodes.query({ type: \"view\" }).forEach((l) => {\n i.setSwitch(l, u);\n });\n }, c = ((h = s.getInitialRoute()) == null ? void 0 : h.name) || \"index\";\n return a(c), this.events.subscribe(\"widget:data-loaded\", (u, { element: l }) => {\n this.widget.container.get(\"seoConfiguration\") && this.events.dispatch(\"widget:preloaded-replaced\", {\n element: l\n });\n }), this.events.subscribe(\n \"router:change\",\n (u, { previous: l = { routeData: {} }, next: d = { routeData: {} } }) => {\n const { routeData: f } = l, { routeData: g } = d, E = Object.keys(o.views).reduce(\n (p, C) => typeof o.views[C].path == \"undefined\" ? C : p,\n \"\"\n );\n !g.name && E ? a(E) : a(g.name), lt(f && f.params), lt(g && g.params), this.container.getAsync(\"actionResolver\").then((p) => {\n p.action(this.widget.name, \"routeChange\", {\n next: g,\n previous: f\n });\n });\n }\n ), s.initialize();\n }\n );\n }\n attach(t = {}) {\n return this.container.get(\"settings\").then(({ trigger: e }) => {\n var d, f;\n const {\n widgetDOMElement: r,\n key: s = Pt(),\n triggerDOMElement: i,\n withRenderState: o\n } = t, c = Vn(e) === ut.Inline && ((i == null ? void 0 : i.childElementCount) || 0) > 0, h = ii(\n this.widget.name,\n r,\n i,\n e,\n c\n );\n this.outlets.size < 1 && !o && this.setRenderState(\"unset\");\n const u = () => {\n const g = () => E.querySelectorAll(\"[data-loading=true]\").length === 0, [E] = this.widget.container.get(\"widgetDOMElements\"), p = (B, _) => {\n g() && (h.callback && h.callback(), _.disconnect());\n }, C = {\n attributes: !0,\n subtree: !0,\n childList: !0\n };\n g() && h.callback && h.callback(), new MutationObserver(p).observe(E, C);\n };\n c && this.widget.container.getAsync(\"dataClient\").then(({ events: g }) => {\n g.subscribe(\n \"data-client:fetched\",\n (E, p) => {\n p.unresolvedQueries === 0 && u();\n }\n );\n });\n const l = this.getOrCreateViewOutlet(s, h);\n if (this.outlets.set(s, l), this.widget.events.dispatch(\"widget:attached\", {}, { bubbles: !0 }), h.triggerType === ut.Badge && e && ((d = h.triggerDOMElement) == null || d.setAttribute(\n \"aria-expanded\",\n \"false\"\n ), l == null || l.renderBadge(e)), h.triggerType !== ut.Inline && ((f = h.triggerDOMElement) == null || f.addEventListener(\n \"click\",\n (g) => {\n g.preventDefault(), this.container.get(\"settings\").then(({ trigger: E }) => {\n l.render().then(() => this.renderState()).then((p) => E && E.action && E.action === \"hide\" ? p === z.open ? this.hide() : this.open() : p === z.open ? this.close() : this.open());\n });\n }\n )), this.outlets.size > 1)\n return this.renderState().then((g) => {\n this.triggerStateIfApplicable(g);\n });\n if (o)\n return o === \"storage\" ? this.renderState().then((g) => {\n if (h.triggerType === ut.Inline) {\n this.triggerStateIfApplicable(\"open\");\n return;\n }\n this.triggerStateIfApplicable(g);\n }) : this.triggerStateIfApplicable(o);\n });\n }\n detach(t) {\n if (t) {\n if (this.outlets.has(t)) {\n const e = this.outlets.get(t);\n e == null || e.dispose(), this.outlets.delete(t);\n return;\n }\n process.env.NODE_ENV !== \"production\" && console.warn(`detach(): Could not find View Outlet with key ${t}`);\n return;\n }\n this.outlets.forEach((e) => {\n e.dispose();\n }), this.outlets.clear();\n }\n triggerStateIfApplicable(t) {\n return this.container.getAsync(\"router\").then((e) => {\n switch (t) {\n case \"closed\":\n this.close();\n break;\n case \"open\":\n this.open();\n break;\n case \"hidden\":\n this.hide(), e.start();\n break;\n default:\n return;\n }\n });\n }\n getOrCreateViewOutlet(t, e) {\n return this.outlets.has(t) ? this.outlets.get(t) : new ai(this.container, e);\n }\n render(t = {}) {\n if (process.env.NODE_ENV !== \"production\" && console.warn(\n \"widget.render() is deprecated. Use widget.attach() instead.\"\n ), t.open) {\n const e = Ce(dt({}, t), {\n withRenderState: \"open\"\n /* Open */\n });\n return this.attach(e);\n }\n return this.attach(t);\n }\n activate(t) {\n t != null && t.override && this.setSettings(() => t.override), t != null && t.apiNotificationPriorityBy && this.container.register(\n \"apiNotificationPriorityBy\",\n t.apiNotificationPriorityBy\n );\n }\n setSettings(t) {\n return Promise.all([\n this.container.get(\"settings\"),\n X(\n this.container,\n le,\n S.Necessary,\n {\n medium: k.Local\n }\n )\n ]).then(([e, r]) => Promise.resolve(t(e)).then((s) => r(s).then(() => {\n const i = dt(dt({}, e), s);\n return this.widget.events.dispatch(\"widget:settings-updated\", i), i;\n })));\n }\n clearSettings() {\n return X(\n this.container,\n le,\n S.Necessary,\n { medium: k.Local }\n ).then((t) => t()).then(() => this.container.get(\"settings\")).then((t) => {\n this.widget.events.dispatch(\"widget:settings-updated\", t);\n });\n }\n action({ action: t, value: e }) {\n return this.container.getAsync(\"actionResolver\").then((r) => {\n r.action(this.widget.name, t, e);\n });\n }\n renderState() {\n if (Oe(this.container))\n return Promise.resolve(z.open);\n const t = () => K(\n this.container,\n Lt,\n k.Session\n ).then((r = z.closed) => r), e = () => K(\n this.container,\n Lt,\n k.Session\n ).then((r = z.closed) => r);\n return this.container.getAsync(\"router\").then((r) => r.isSticky() ? e().then((s) => s === z.open ? s : t()) : t());\n }\n hide() {\n return this.outlets.size < 1 ? (process.env.NODE_ENV !== \"production\" && console.warn(\n \"hide(): No-op as no view outlets are registered. Invoke the attach() command first.\"\n ), Promise.resolve()) : (this.outlets.forEach((t) => t.render()), this.action({ action: \"hide\" }).then(() => {\n this.setTriggerState(!1);\n }));\n }\n open() {\n return this.outlets.size < 1 ? (process.env.NODE_ENV !== \"production\" && console.warn(\n \"open(): No-op as no view outlets are registered. Invoke the attach() command first.\"\n ), Promise.resolve()) : (this.outlets.forEach((t) => t.render()), this.action({ action: \"open\" }).then(() => (this.widget.events.dispatch(\"tracking:widget-rendered\", {}), this.onOpen())));\n }\n close() {\n return this.outlets.size < 1 ? (process.env.NODE_ENV !== \"production\" && console.warn(\n \"close(): No-op as no view outlets are registered. Invoke the attach() command first.\"\n ), Promise.resolve()) : this.action({ action: \"close\" }).then(() => this.onClose());\n }\n show() {\n return process.env.NODE_ENV !== \"production\" && console.warn(\n \"show(): Command is deprecated and will be removed in the future. Use open() instead.\"\n ), this.open();\n }\n onAction(t, e) {\n switch (t) {\n case \"close\":\n case \"open\":\n case \"hide\":\n const r = t === \"open\" ? z.open : t === \"close\" ? z.closed : z.hidden;\n return this.setRenderState(r).then(() => {\n this.setTriggerState(r === z.open), r !== z.hidden ? r === z.open ? this.onOpen() : this.onClose() : this.outlets.forEach(\n (s) => {\n var i;\n return (i = s.options.triggerDOMElement) == null ? void 0 : i.setAttribute(\n \"aria-expanded\",\n \"false\"\n );\n }\n );\n });\n }\n }\n setRenderState(t) {\n const { invoke: e, events: r } = this.container.get(\"$widget\");\n return Promise.all([\n X(\n this.container,\n Lt,\n S.Necessary,\n {\n medium: k.Session\n }\n ),\n X(\n this.container,\n Lt,\n S.Necessary,\n {\n medium: k.Local,\n duration: { minutes: 5 }\n }\n ),\n this.container.getAsync(\"router\"),\n e(\"renderState\")\n ]).then(\n ([s, i, o, a]) => {\n t === \"unset\" || !t ? (i(), s()) : (o.isSticky() && i(t), s(t)), r.dispatch(\"widget:render-state-changed\", {\n previous: a,\n next: t\n });\n }\n );\n }\n onOpen() {\n return this.container.getAsync(\"router\").then((t) => (this.outlets.forEach(\n (e) => {\n var r;\n return (r = e.options.triggerDOMElement) == null ? void 0 : r.setAttribute(\n \"aria-expanded\",\n \"true\"\n );\n }\n ), t.start()));\n }\n onClose() {\n const t = this.container.getManyAsync(\n \"router\",\n \"components\"\n );\n return (() => this.container.get(\"settings\").then((r) => {\n const { activate: s } = this.container.get(\"$settings\");\n return r.activate !== s ? this.setSettings(() => Promise.resolve({ activate: s })) : Promise.resolve();\n }))().then(() => t).then(\n ({\n router: r,\n components: s\n }) => {\n const i = s.nodes.visible;\n return this.outlets.forEach(\n (o) => {\n var a;\n return (a = o.options.triggerDOMElement) == null ? void 0 : a.setAttribute(\n \"aria-expanded\",\n \"false\"\n );\n }\n ), i.filter(\n (o) => o.attributes.properties.animation && o.attributes.properties.animation !== \"none\"\n ).length ? new Promise((o) => {\n setTimeout(() => {\n o(r);\n }, 200);\n }) : Promise.resolve(r);\n }\n ).then((r) => r.stop());\n }\n setTriggerState(t) {\n this.outlets.forEach((e) => {\n const {\n options: { triggerDOMElement: r, triggerOptions: s }\n } = e, { openTooltip: i, closedTooltip: o } = s || {};\n r && (t ? Hn(r, i) : ni(r, o));\n });\n }\n deactivate() {\n this.subs.forEach((e) => e());\n const t = [];\n return this.outlets.forEach((e) => t.push(e.dispose())), K(\n this.container,\n nn,\n k.Local\n ).then((e) => e === this.widget.name ? X(\n this.container,\n nn,\n S.Necessary,\n {\n medium: k.Local,\n scope: vt.Implementation\n }\n ).then((r) => r()).then(() => Promise.all(t)) : Promise.all(t));\n }\n}\nconst xe = (n, t, e, r, s) => n.getAsync(\"componentResolver\").then((i) => (i.registerComponent(t, e), ln(n, t, r || (() => {\n}), t, s))), Di = (n) => xe(\n n,\n \"area\",\n import(\"./area-65adc6a5.js\"),\n (t) => {\n }\n), ji = (n) => xe(\n n,\n \"widget-header\",\n import(\"./widget-header-f222904a.js\"),\n (t) => {\n }\n), _i = (n) => xe(\n n,\n \"copyright\",\n import(\"./copyright-ef48bb60.js\"),\n (t) => {\n }\n);\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nlet gi = class extends Event {\n constructor(t, e, r) {\n super(\"context-request\", { bubbles: !0, composed: !0 }), this.context = t, this.callback = e, this.subscribe = r != null && r;\n }\n};\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nclass rn {\n constructor(t, e, r, s) {\n var i;\n if (this.subscribe = !1, this.provided = !1, this.value = void 0, this.t = (o, a) => {\n this.unsubscribe && (this.unsubscribe !== a && (this.provided = !1, this.unsubscribe()), this.subscribe || this.unsubscribe()), this.value = o, this.host.requestUpdate(), this.provided && !this.subscribe || (this.provided = !0, this.callback && this.callback(o, a)), this.unsubscribe = a;\n }, this.host = t, e.context !== void 0) {\n const o = e;\n this.context = o.context, this.callback = o.callback, this.subscribe = (i = o.subscribe) !== null && i !== void 0 && i;\n } else\n this.context = e, this.callback = r, this.subscribe = s != null && s;\n this.host.addController(this);\n }\n hostConnected() {\n this.dispatchRequest();\n }\n hostDisconnected() {\n this.unsubscribe && (this.unsubscribe(), this.unsubscribe = void 0);\n }\n dispatchRequest() {\n this.host.dispatchEvent(new gi(this.context, this.t, this.subscribe));\n }\n}\nconst Ii = \"children\", mi = \"descriptor\", yi = \"container\", Ri = \"context\", Hi = \"layout\", Vi = \"properties\";\nclass Wi {\n constructor(t) {\n (this.host = t).addController(this), new rn(\n t,\n yi,\n (e) => {\n this._container = e, this.host.requestUpdate();\n },\n !0\n ), new rn(\n t,\n mi,\n (e) => {\n this._descriptor = e, this.host.requestUpdate();\n },\n !0\n );\n }\n hostConnected() {\n }\n hostDisconnected() {\n }\n dispatch(t, e) {\n return Xt(this, null, function* () {\n if (!this._container || !this._descriptor)\n return;\n const r = yield Yt.getInstance(\n this._container\n ), s = new yt(r).withId(\n this._descriptor.id\n );\n yield r.actions(\n s,\n this._descriptor.type || Pt()\n ).dispatch(t, e);\n });\n }\n}\nclass vi {\n constructor(t, e) {\n this.lockWarningTime = t, this.lockErrorTime = e, this.tasks = [], this.current = Promise.resolve(), this.next = this.next.bind(this);\n }\n add(t, e, r, s) {\n this.tasks.push({ task: t, resolve: e, reject: r, done: s }), this.next();\n }\n next() {\n this.current = this.current.then(() => {\n const t = this.tasks.shift();\n if (t) {\n let e;\n const r = setTimeout(() => {\n process.env.NODE_ENV, e = setTimeout(() => {\n t.reject(\"lock timeout exceeded\");\n }, this.lockErrorTime);\n }, this.lockWarningTime), s = Promise.resolve(t.task()).then((i) => (clearTimeout(r), clearTimeout(e), i));\n return Promise.resolve(s).then(this.next).then(\n () => s.then((i) => {\n t.done(), t.resolve(i);\n })\n ).catch((i) => (t.done(), t.reject(i), this.next()));\n }\n return Promise.resolve();\n });\n }\n}\nconst Mt = /* @__PURE__ */ new WeakMap();\nfunction Bi(n, t = 5e3, e = 1e3) {\n return Mt.has(n) || Mt.set(n, new vi(t, e)), (r) => new Promise((s, i) => {\n const o = Mt.get(n);\n o.add(r, s, i, () => {\n o.tasks.length || Mt.delete(n);\n });\n });\n}\nexport {\n Di as A,\n _i as C,\n xr as E,\n Mi as W,\n Ri as a,\n Yt as b,\n Ii as c,\n mi as d,\n yi as e,\n rn as f,\n ji as g,\n Wi as h,\n xe as i,\n Bi as j,\n Hi as l,\n Vi as p,\n gi as s\n};\n//# sourceMappingURL=index-d589d5e4.js.map\n","import { Container } from '@webprovisions/platform';\r\n\r\nimport {\r\n ConversationMessageContent,\r\n ConversationMessageSender,\r\n} from '../../types';\r\nimport {\r\n ConversationMessage,\r\n ConversationMessageType,\r\n} from '../../conversation-controller';\r\nimport { ConversationPlatform } from '../../conversation-platform';\r\nimport { createWebComponent } from 'widget-runtime-flamingo';\r\n\r\nexport type BundledConversationMessage = {\r\n timestamp: number;\r\n content: [BundledMessageContent];\r\n sender: ConversationMessageSender;\r\n type: ConversationMessageType;\r\n};\r\n\r\ntype BundledMessageContent = {\r\n key: string;\r\n} & ConversationMessageContent;\r\n\r\nexport type ConversationContent = {\r\n loading: boolean;\r\n typingActors: ConversationMessageSender[];\r\n messages: ConversationMessage[];\r\n};\r\n\r\n/**\r\n * Group items by sender, type and time. Current grouping threshold is 2000 ms.\r\n * Put this as a property on either the component or on the provider?\r\n * Could possibly be implemented directly in the createEntry method\r\n * of the conversation controller to avoid iterating over the entire array on\r\n * each update.\r\n */\r\nconst groupedMessages = (\r\n messages: ConversationMessage[],\r\n timeout?: number\r\n): BundledConversationMessage[] => {\r\n return messages.reduce((acc: any[], current: any, _index: number) => {\r\n const newItem = {\r\n ...current,\r\n content: [{ ...current.content, key: current.key }],\r\n };\r\n if (acc.length > 0 && current.type !== ConversationMessageType.System) {\r\n const previous = acc[acc.length - 1];\r\n if (\r\n (!timeout && timeout !== 0) ||\r\n Math.abs(previous.timestamp - current.timestamp) < timeout\r\n ) {\r\n if (\r\n previous.sender?.name === current.sender?.name &&\r\n previous.type === current.type\r\n ) {\r\n previous.timestamp = current.timestamp;\r\n previous.content.push({ ...current.content, key: current.key });\r\n return acc;\r\n }\r\n }\r\n }\r\n acc.push(newItem);\r\n return acc;\r\n }, []);\r\n};\r\n\r\nexport type ConversationComponentProperties = {\r\n providers: string[];\r\n messages: BundledConversationMessage[]; // internal\r\n overlay?: { conversation: boolean; secondary: boolean }; // internal\r\n overlayConversationHeader?: string;\r\n overlayConversationCloseLabel?: string;\r\n loading: boolean;\r\n inputPlaceholder: string;\r\n inputDisabled: boolean;\r\n inputHidden: boolean;\r\n inputMultiline: boolean;\r\n rehydrate?: boolean;\r\n userLabel: string;\r\n avatarSize: string;\r\n typingActors: any[]; // internal\r\n conversationControllerId?: string; // internal\r\n sendButtonLabel: string;\r\n secondaryAction?: { icon?: string; action: string; label: string };\r\n};\r\n\r\nexport const ConversationComponent = async (container: Container) => {\r\n const router = await container.getAsync('router');\r\n const platform = await ConversationPlatform.getInstance(container);\r\n\r\n return createWebComponent(\r\n container,\r\n 'conversation',\r\n import('./conversation'),\r\n async (component) => {\r\n const { rehydrate = false } =\r\n component.properties<ConversationComponentProperties>();\r\n const routeData = router.getRouteData();\r\n const name = routeData.params.id || component.node.name || 'component';\r\n const conversation = await platform.createController(name, { rehydrate });\r\n const isNewController = platform.registerController(\r\n conversation,\r\n component\r\n );\r\n\r\n const messageGroupingTimeout = 3 * 60 * 1000;\r\n\r\n const setProperties = (properties: ConversationComponentProperties) => {\r\n const { providers = [] } = properties;\r\n if (providers) {\r\n const providerKeys = Array.isArray(providers)\r\n ? providers\r\n : [providers];\r\n conversation.setProviders(providerKeys);\r\n return providerKeys;\r\n }\r\n };\r\n setProperties(\r\n component.properties<ConversationComponentProperties>(setProperties)\r\n );\r\n\r\n conversation.setComponentMountedState(true);\r\n\r\n const writeMessages = (messageStream: any) => {\r\n const { loading, typingActors, messages } = messageStream;\r\n component.writeProperties({\r\n loading,\r\n typingActors,\r\n messages: groupedMessages(messages, messageGroupingTimeout),\r\n });\r\n };\r\n\r\n writeMessages(conversation.getMessageStream());\r\n\r\n if (isNewController) {\r\n component.writeProperties({\r\n conversationControllerId: conversation.id,\r\n });\r\n // todo: dont create actions here, there will be duplicates due to reuseController = true\r\n component.actions.create('user-submit', (data, options) => {\r\n if (options) {\r\n const { preventDefault, validationPromise } = options;\r\n if (preventDefault) {\r\n if (validationPromise) {\r\n validationPromise().then((text: string) => {\r\n if (text) {\r\n conversation.user.print(text);\r\n }\r\n });\r\n }\r\n return;\r\n }\r\n }\r\n conversation.user.print(data.text);\r\n });\r\n\r\n component.actions.create('user-typing', (_data, _options) => {});\r\n\r\n component.actions.create('form', (_data, _options) => {});\r\n\r\n component.actions.create('action', (_data, _options) => {});\r\n\r\n component.actions.create('overlay-mounted', (_data, _options) => {});\r\n\r\n component.actions.create('show-overlay', (_data, _options) => {\r\n component.writeProperties({\r\n overlay: { conversation: false, secondary: false },\r\n });\r\n });\r\n\r\n component.actions.create('hide-overlay', (_data, _options) => {\r\n component.writeProperties({\r\n overlay: null,\r\n });\r\n });\r\n\r\n component.actions.create(\r\n 'show-overlay-conversation',\r\n (_data, _options) => {\r\n component.writeProperties({\r\n overlay: { conversation: true, secondary: false },\r\n });\r\n }\r\n );\r\n\r\n component.actions.create(\r\n 'hide-overlay-conversation',\r\n (_data, _options) => {\r\n component.writeProperties({\r\n overlay: { conversation: false, secondary: false },\r\n });\r\n }\r\n );\r\n }\r\n\r\n const unsubscribe = conversation.events.subscribe(\r\n 'conversation:updated',\r\n (_e: any, conversationData: ConversationContent) => {\r\n writeMessages(conversationData);\r\n }\r\n );\r\n\r\n return () => {\r\n conversation.setComponentMountedState(false);\r\n unsubscribe();\r\n if (!conversation.active) {\r\n // unregisterController();\r\n // todo: add possibility to dispose this through extendComponent()\r\n // component.dispose();\r\n writeMessages({ messages: [], typingActors: [], loading: false });\r\n }\r\n };\r\n }\r\n );\r\n};\r\n\r\nexport default ConversationComponent;\r\n","// import { Form, FormBuilder } from '@telia-ace/widget-forms';\r\n\r\nexport type ConversationMessageSettings = {\r\n key?: string;\r\n timestamp?: number;\r\n title?: string;\r\n body?: string;\r\n actions?: { [actionKey: string]: any };\r\n form?: (builder: any /*FormBuilder*/) => void;\r\n type?: string;\r\n items?: ConversationMessageList[];\r\n [key: string]: any;\r\n};\r\n\r\nexport type NormalizedMessageSettings = {\r\n content: ConversationMessageContent;\r\n key: string;\r\n timestamp: number | null;\r\n};\r\n\r\nexport type ConversationMessageList = {\r\n header?: string;\r\n itemKey: string;\r\n type?: ConversationMessageListType;\r\n items: ConversationMessageListItem[];\r\n};\r\n\r\nexport type ConversationMessageListItem = {\r\n icon?: string;\r\n type?: ConversationMessageListItemType;\r\n actions?: { [actionKey: string]: any };\r\n form?: any /*Form*/;\r\n body?: string;\r\n key: string;\r\n [key: string]: any;\r\n};\r\n\r\nexport type ConversationMessageContent = {\r\n title?: string;\r\n body?: string;\r\n actions?: { [actionKey: string]: any };\r\n items?: ConverstationMessageItem<any>[];\r\n form?: any /*Form*/;\r\n [key: string]: any;\r\n};\r\n\r\nexport type ConverstationMessageItem<T, R = ItemPayload> = R extends [T, any]\r\n ? R\r\n : never;\r\n\r\nexport type ConversationMessageUpdateSettings = ConversationMessageContent & {\r\n timestamp?: number;\r\n};\r\n\r\nexport type ConversationMessageSender = {\r\n name?: string;\r\n avatar?: string | Symbol;\r\n id?: string;\r\n};\r\n\r\nexport enum ConversationMessageListType {\r\n Ordinary = 'ordinary',\r\n Seperator = 'seperator',\r\n}\r\n\r\nexport enum ConversationMessageListItemType {\r\n LinkList = 'link-list',\r\n Separator = 'separator',\r\n ButtonList = 'button-list',\r\n ItemList = 'item-list',\r\n Text = 'text',\r\n HTML = 'html',\r\n VideoRequest = 'video-request',\r\n}\r\n\r\nexport type LinkListProperties = {\r\n header?: string;\r\n actions:\r\n | { [key: string]: string }\r\n | { label: string; actionKey: string; data: any }[];\r\n};\r\n\r\ntype LinkListItem = [\r\n ConversationMessageListItemType.LinkList,\r\n LinkListProperties,\r\n];\r\n\r\ntype TextItem = [ConversationMessageListItemType.Text, string];\r\ntype SeparatorItem = [ConversationMessageListItemType.Separator, undefined];\r\n\r\nexport type ButtonListProperties = {\r\n header?: string;\r\n actions:\r\n | { [key: string]: string }\r\n | { label: string; actionKey: string; data: any }[];\r\n};\r\n\r\ntype ButtonListItem = [\r\n ConversationMessageListItemType.ButtonList,\r\n ButtonListProperties,\r\n];\r\n\r\nexport type ItemListProperties = {\r\n header?: string;\r\n actions:\r\n | { [key: string]: string }\r\n | { label: string; actionKey: string; data: any }[];\r\n};\r\n\r\ntype ItemListItem = [\r\n ConversationMessageListItemType.ItemList,\r\n ItemListProperties,\r\n];\r\n\r\nexport type VideoRequestProperties = {\r\n header?: string;\r\n acceptLabel: string;\r\n declineLabel: string;\r\n};\r\n\r\ntype VideoRequestItem = [\r\n ConversationMessageListItemType.VideoRequest,\r\n VideoRequestProperties,\r\n];\r\n\r\nexport type HtmlProperties = {\r\n body: string;\r\n};\r\n\r\ntype HtmlItem = [ConversationMessageListItemType.HTML, HtmlProperties];\r\n\r\ntype ItemPayload =\r\n | LinkListItem\r\n | TextItem\r\n | SeparatorItem\r\n | ButtonListItem\r\n | HtmlItem\r\n | VideoRequestItem\r\n | ItemListItem;\r\n\r\nexport type Symbol = {\r\n type: 'Uri' | 'Svg' | 'FontAwesome' | 'Text' | string;\r\n content: string;\r\n};\r\n","import { Container } from '@webprovisions/platform';\r\n\r\nexport const registerCustomMessageComponent = async (\r\n _container: Container,\r\n _type: string,\r\n componentImport: any\r\n) => {\r\n await componentImport;\r\n // return container\r\n // .getAsync('componentResolver')\r\n // .then(async (o: ComponentResolver) => {\r\n // const platform = await ConversationPlatform.getInstance(container);\r\n // platform.addSubscription(\r\n // o.registerComponent(\r\n // type,\r\n // lazy(() => component)\r\n // )\r\n // );\r\n // });\r\n};\r\n"],"names":["f","n","t","e","r","o","E","m","g","L","i","s","y","O$2","A","O","u","l","p","k","d","F","z","b","I","c","M","_","G$2","J$1","X$2","W$1","W","a","G","X","J","L$1","q","D$3","D","h","P","Z$2","w","K","nt","tt","st","Q","et","V","it","T","rt","x","v","R","ot","at","j","ct$2","ht","ct","lt","ut","dt","pt$2","vt","pt","U","$","gt","Z","mt$1","Y","yt$1","mt","wt","yt","C$3","C","S","N","bt","H","B","Z$1","P$1","k$1","it$1","pt$1","re","se","ne","oe","ee","te","ie","ae","ce","ConversationHistory","controller","events","unsubscribe","_e","data","acc","message","normalized","getNormalizedMessageSettings","content","type","sender","timestamp","parsed","handle","body","options","messagesAsList","messageData","_type","items","item","res","ConversationMessageType","contactMethodId","method","result","linebreak","header","title","label","description","text","html","actions","key","value","option","target","Agent","provider","settings","uuid","_a","name","avatar","ConversationProvider","_container","container","storedAgent","agent","__spreadValues","unsub","fn","createSessionStorageKey","id","Locker","unlockNext","willLock","resolve","willUnlock","Store","conversation","enabled","__async","storedAgents","agents","providerIndex","storedMessages","__spreadProps","messages","agentId","action","unlock","createStorageWriter","StorageCategory","write","prev","newData","readStorage","User","swapProvider","conversationId","providerName","components","currentInstance","toQueue","conversationQuery","ConversationEntry","writer","removeTypingState","typingActors","senderString","indexToRemove","ConversationController","widget","providers","removed","added","providerToRemove","index","mounted","nextProvider","entry","updated","updatedTimestamp","dismissed","handler","getParentWidget","widgetName","implementation","mainWidgetName","getSeparateWidget","originWidget","mainWidget","trigger","chatWidgetName","chatWidget","shouldPreventDefault","openChatWidget","contactMethod","triggerDOMTarget","contactMethodsQuery","conversationsQuery","StorageMedium","StorageScope","platform","ConversationEndedBehavior","navigateToConversation","routeName","router","STORAGE_KEY","ConversationPlatform","storedSession","_event","_data","_b","_c","initialRoute","sub","lock","ComponentPlatform","params","behavior","stored","storageKey","component","invokeHandlers","removedProvider","dispose","isActive","session","properties","_key","event","_callback","triggerEl","Xt","Jn","Ht","qn","Se","Kn","ge","Jt","on","tr","Ne","er","kt","Pt","or","ar","cr","Me","hr","ur","De","lr","dr","an","fr","me","qt","gr","de","cn","Kt","Dt","hn","mr","yr","vr","br","wr","Or","Yt","ln","zr","Be","Fr","Jr","Ue","ze","we","Kr","be","Zr","ts","Qr","Bt","Xr","yn","qr","Qt","Gt","ve","vn","Wt","pe","Yr","jt","Gr","ns","Ut","rs","Fe","ss","bn","xn","$n","us","ls","ds","At","fs","gs","ms","Ke","Tt","ys","vs","Os","An","xs","ue","Ks","$t","Ys","Xe","Gs","Rn","xe","gi","rn","mi","yi","Vi","Wi","groupedMessages","timeout","current","_index","newItem","previous","ConversationComponent","createWebComponent","rehydrate","isNewController","messageGroupingTimeout","setProperties","providerKeys","writeMessages","messageStream","loading","preventDefault","validationPromise","_options","conversationData","ConversationMessageListItemType","registerCustomMessageComponent","componentImport"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}
1
+ {"version":3,"file":"index-1ee7f7b5.js","sources":["../../../node_modules/.pnpm/@webprovisions+bootstrapping@1.0.13/node_modules/@webprovisions/bootstrapping/dist/index.js","../../../node_modules/.pnpm/@webprovisions+platform@1.1.4/node_modules/@webprovisions/platform/dist/index.js","../../../node_modules/.pnpm/@telia-ace+widget-utilities@1.0.16/node_modules/@telia-ace/widget-utilities/dist/index.js","../../../node_modules/.pnpm/@telia-ace+widget-core@1.0.27/node_modules/@telia-ace/widget-core/dist/index.js","../../../node_modules/.pnpm/@telia-ace+widget-services@1.0.27/node_modules/@telia-ace/widget-services/dist/index.js","../src/conversation-history.ts","../src/agent.ts","../src/conversation-provider.ts","../src/store.ts","../src/user.ts","../src/utils/swap-provider.ts","../src/conversation-controller.ts","../src/utils/open-chat-widget.ts","../src/conversation-platform.ts","../../runtime/dist/index-8c63c0e1.js","../src/components/conversation/plugin.ts","../src/types.ts","../src/utils/custom-message.ts"],"sourcesContent":["const f = (n, t, e, ...r) => {\n const o = `[${n.get(\"$environment\").name || \"webprovisions\"}] ${e}`;\n switch (t) {\n case \"info\":\n console.info(o, ...r);\n break;\n case \"warning\":\n console.warn(o, ...r);\n break;\n case \"error\":\n console.error(o, ...r);\n break;\n }\n}, E = (n) => {\n const t = n.container || n;\n return {\n info: (e, ...r) => f(t, \"info\", e, ...r),\n warn: (e, ...r) => f(t, \"warning\", e, ...r),\n error: (e, ...r) => f(t, \"error\", e, ...r)\n };\n}, b = (n, t) => {\n if (!t)\n return !0;\n if (typeof t == \"string\") {\n const e = t.split(\",\");\n for (let r = 0, o = e.length; r < o; r++) {\n const i = e[r].trim();\n if (i === n || i === \"*\")\n return !0;\n }\n }\n return t instanceof Array ? t.indexOf(n) > -1 : !1;\n}, x = (n, t) => {\n if (typeof t == \"function\")\n return t(n);\n const e = typeof t == \"string\" ? q(t) : t;\n return !(!b(n.tenant || \"\", e.tenant || \"\") || !b(n.name, e.implementation || \"\"));\n}, I = (n) => (t) => x(t, n), h = (n) => n instanceof Array && n.length === 1 ? n[0] : n, q = (n) => {\n const t = {}, e = n.split(\":\");\n return e.length === 1 ? t.implementation = h(e[0].split(\",\")) : (t.tenant = h(e[0].split(\",\")), t.implementation = h(e[1].split(\",\"))), t;\n};\nvar m = /* @__PURE__ */ ((n) => (n.Implementation = \"implementation\", n.Widget = \"widget\", n))(m || {}), g = /* @__PURE__ */ ((n) => (n.Pre = \"pre\", n.Post = \"post\", n))(g || {});\nconst L = (n, t, e, r) => {\n try {\n const o = new t(e, r);\n return {\n name: n,\n invoke: (i, s) => {\n let a;\n return o[i] && (a = o[i].call(o, s)), Promise.resolve(a);\n },\n getInstance: () => o\n };\n } catch (o) {\n if (o.message && o.message.indexOf(\"is not a constructor\") >= 0)\n return {\n name: n,\n invoke: (i) => {\n let s;\n return i === \"initialize\" && (s = t(e, r)), Promise.resolve(s);\n },\n getInstance: () => t\n };\n throw o;\n }\n};\nfunction y(n, t) {\n return typeof n == \"undefined\" ? t : n;\n}\nclass O {\n constructor(t = {}) {\n this.part = t;\n }\n createCommand(t, e, r) {\n let o;\n typeof e == \"function\" ? o = {\n scope: m.Widget,\n stage: g.Post,\n defaultArgs: void 0,\n handlerResolver: e\n } : o = {\n scope: y(e.scope, m.Widget),\n stage: y(e.stage, g.Post),\n defaultArgs: e.defaultArgs,\n handlerResolver: r\n };\n let i = this.part;\n const s = t.split(\".\");\n return s.forEach((a, c) => {\n c === s.length - 1 ? i[a] || (i[a] = () => o) : i = this.part[a] = this.part[a] || {};\n }), this;\n }\n get() {\n return this.part;\n }\n}\nconst A = (n) => {\n const t = new O({});\n return n(t), t.get();\n};\nA((n) => {\n n.createCommand(\n \"types.register\",\n { scope: m.Implementation, stage: g.Pre },\n (t) => (e, r) => {\n t.container.get(\"$types\")[e] = r;\n }\n ).createCommand(\n \"type\",\n { stage: g.Pre },\n (t) => (e) => {\n t.container.register(\"$type\", e);\n }\n ).createCommand(\n \"settings\",\n { stage: g.Pre, defaultArgs: [null] },\n (t) => (e) => {\n t.events.dispatch(\n \"settings:change\",\n e,\n { bubbles: !0 }\n ), t.container.register(\"$settings\", e);\n }\n ).createCommand(\n \"plugin\",\n { stage: g.Pre },\n (t) => (e, r, o) => {\n const { container: i } = t;\n let s = null, a = e, c = r;\n typeof e == \"string\" && (s = e, a = r, c = o);\n const u = (l) => {\n const { transformPluginSettings: p } = t.container.get(\"$environmentOptions\"), k = p ? p(\n c || {},\n s,\n t.container,\n a\n ) : r;\n try {\n const d = L(\n s,\n a,\n i,\n k\n );\n i.get(\"$plugins\").push(d), l && d.invoke(\"initialize\", null);\n } catch (d) {\n E(t).warn(\"Error when initializing plugin\", d);\n }\n };\n t.container.get(\"$instance\") ? u(!0) : t.events.subscribeOnce(\"widget:instance-created\", () => u(!1));\n }\n ).createCommand(\n \"container.register\",\n (t) => (e, r) => {\n t.container.register(e, r);\n }\n ).createCommand(\n \"container.registerAsync\",\n (t) => (e, r) => {\n t.container.registerAsync(e, r);\n }\n ).createCommand(\n \"container.registerFactory\",\n (t) => (e, r) => {\n t.container.registerFactory(e, r);\n }\n ).createCommand(\n \"container.touch\",\n (t) => (e, r) => {\n t.container.touch(e, r);\n }\n ).createCommand(\n \"csp\",\n {},\n (t) => (e) => {\n t.container.register(\"csp\", e);\n }\n );\n});\nfunction S(n, t, e) {\n return Array.from(n.querySelectorAll(\n `div[id^=\"${t}_\"], div[id^=\"${t}:\"]`\n )).map((o) => {\n if (o.id.substr(0, 7) === `${t}_`)\n return { widgetName: o.id.substr(7), element: o };\n const { 3: i } = o.id.split(\":\");\n return { widgetName: i, element: o };\n });\n}\nconst W = (n) => {\n const t = n.map((e) => e.replace(/\\./g, \"\\\\.\")).join(\"|\");\n return new RegExp(\"^((http[s]?:)?//)?(\" + t + \")/([^\\\\s]+)\");\n}, R = (n) => n.href;\nfunction M(n, t) {\n const e = W(t), r = (i) => {\n const s = e.exec(R(i));\n return s ? {\n element: i,\n widget: s[4]\n } : null;\n };\n return Array.from(n.querySelectorAll(\"a\")).map((i) => r(i)).filter((i) => !!i).map((i) => ({\n element: i.element,\n widgetName: i.widget\n }));\n}\nfunction P(n) {\n return n.filter((t, e, r) => r.indexOf(t) === e);\n}\nclass N {\n constructor(t) {\n this.container = t.container, this.events = t.events;\n }\n watch(t) {\n const e = this.container.get(\"triggerElements\") || [], r = P(e.concat(t));\n this.container.register(\"triggerElements\", r), this.events.dispatch(\n \"bootstrap:trigger-elements-updated\",\n { triggerElements: r },\n { bubbles: !0 }\n );\n }\n}\nfunction C(n, ...t) {\n return n.implementation.events.subscribe(\"widget:create-instance\", (e, r) => {\n if (e.target === n) {\n let o = n.container.get(\"bootstrapping.monitor\");\n o || (o = new N(n), n.container.register(\"bootstrapping.monitor\", o)), o.watch(t);\n }\n }), n.load();\n}\nfunction $(n, t = document) {\n var s;\n const e = n.bindings, r = [].concat(\n M(t, e),\n S(t, ((s = n.environment) == null ? void 0 : s.name) || \"\")\n ), i = P(r.map(({ widgetName: a }) => a)).reduce((a, c) => {\n const u = n.widgets.get(c);\n if (!u)\n return process.env.NODE_ENV !== \"production\" && E(n).warn(`A trigger element for \"${c}\" was found but no widget with that name is available on the implementation (\"${n.name}\"). Make sure this is not a mistake.`), a;\n const l = r.filter((p) => p.widgetName === c).map((p) => p.element);\n return a.push(C(u, ...l)), a;\n }, []);\n return Promise.all(i);\n}\nfunction z() {\n return new Promise((n) => {\n document.readyState === \"loading\" ? document.addEventListener(\"DOMContentLoaded\", () => n()) : n();\n });\n}\nconst D = (n, t) => {\n const e = n;\n e.scan = (o) => $(e, o), e.bindings = t, e.attach = (o, ...i) => C(o, ...i);\n const { environment: r } = e;\n return typeof r.configure == \"undefined\" && (r.configure = (o, i) => {\n let s, a;\n i ? (s = o, a = i) : (s = \"*\", a = o), r.implementations.query(s).forEach((c) => c.configure(a)), r.events.subscribe(\"implementation:created\", (c, u) => {\n const { implementation: l } = u;\n I(s)(l) && l.configure(a);\n });\n }), e;\n};\nfunction B(n, t, e = () => [], r) {\n const o = { ready: !1 };\n n.container.register(\"bootstrapping\", o);\n const i = D(n, t);\n return z().then(() => {\n n.configure((...s) => {\n e().forEach((a) => a(...s));\n });\n }).then(() => $(i, r())).then(() => (o.ready = !0, n.events.dispatch(\"bootstrap:ready\", {}), i));\n}\nfunction _(n) {\n const t = {};\n return [].filter.call(n.attributes, (e) => /^data-/.test(e.name)).map((e) => e.name).forEach((e) => t[e.substr(5)] = n.getAttribute(e)), t;\n}\nconst v = (n, t, e) => {\n const r = _(n);\n e({\n sourceDOMElement: n,\n eventType: t,\n data: r\n });\n};\nfunction w(n, t, e) {\n n.forEach((r) => {\n r.dataset.attached !== \"true\" && (t === \"load\" ? v(r, t, e) : r.addEventListener(t, (o) => {\n o.preventDefault(), v(r, t, e);\n }), r.dataset.monitored = \"true\");\n });\n}\nfunction U(n, t, e) {\n const r = n.container.get(\"bootstrapping.monitor\");\n r && r.events.subscribe(\"bootstrap:trigger-elements-updated\", (i, s) => {\n w(\n s.triggerElements,\n t,\n e\n );\n });\n const o = n.container.get(\"triggerElements\");\n o && w(\n o,\n t,\n e\n );\n}\nconst j = (n, t, e) => {\n const r = n.split(\":\"), o = r[0], i = r.length > 1 ? r[1] : \"*\";\n return (t === \"*\" || o === t) && (e === \"*\" || i === e);\n};\nfunction V(n, t = \"*\", e = \"*\") {\n return n.filter((r) => {\n const o = r[0], i = r[1];\n return typeof o == \"string\" && typeof i == \"function\" ? j(o, t, e) : !1;\n }).map((r) => r[1]);\n}\nconst F = A((n) => {\n n.createCommand(\n \"ready\",\n { scope: m.Implementation, stage: g.Pre },\n (t) => (e) => {\n const { container: r } = t, o = r.owner;\n r.get(\"bootstrapping\").ready ? e(o) : o.events.subscribeOnce(\"bootstrap:ready\", () => {\n e(o);\n });\n }\n );\n});\nexport {\n F as ConfigurationApi,\n B as bootstrapImplementation,\n V as parseConfigurationHandlers,\n U as supportBootstrapping\n};\n//# sourceMappingURL=index.js.map\n","const z = /* @__PURE__ */ new WeakMap();\nfunction b() {\n return (s) => (z.has(s) || z.set(s, {}), z.get(s));\n}\nconst I = (s, t, e, ...n) => {\n const o = `[${s.get(\"$environment\").name || \"webprovisions\"}] ${e}`;\n switch (t) {\n case \"info\":\n console.info(o, ...n);\n break;\n case \"warning\":\n console.warn(o, ...n);\n break;\n case \"error\":\n console.error(o, ...n);\n break;\n }\n}, u = (s) => {\n const t = s.container || s;\n return {\n info: (e, ...n) => I(t, \"info\", e, ...n),\n warn: (e, ...n) => I(t, \"warning\", e, ...n),\n error: (e, ...n) => I(t, \"error\", e, ...n)\n };\n}, c = b(), M = (() => {\n let s = 0;\n return () => ++s;\n})(), _ = (s, t, e) => {\n const n = c(s).touchQueue.get(t);\n n && n.forEach((i) => {\n i(e, s);\n });\n};\nclass G {\n constructor(t, e, n, i) {\n this.key = t, this.factory = e, this.parent = n, this.container = i, this.id = M(), this.resolved = !1, this.constructed = !1, this.async = !0;\n }\n resolve() {\n if (!this.constructed) {\n const t = this.factory(this.parent, this.container);\n return this.constructed = !0, this.value = Promise.resolve(t).then((e) => (this.resolved = !0, _(this.container, this.key, e), e));\n }\n return this.value;\n }\n}\nclass J {\n constructor(t, e, n, i) {\n this.key = t, this.value = e, this.parent = n, this.container = i, this.id = M(), this.async = !1, this.resolved = !1, this.constructed = !0, this.resolve = () => (this.resolved = !0, _(this.container, this.key, this.value), this.value);\n }\n}\nclass X {\n constructor(t, e, n, i) {\n this.key = t, this.value = e, this.parent = n, this.container = i, this.id = M(), this.async = !1, this.resolved = !1, this.constructed = !1, this.resolve = () => {\n this.resolved = !0, this.constructed = !0;\n const r = this.value(this.parent, this.container);\n return _(this.container, this.key, this.value), r;\n };\n }\n}\nclass W {\n /**\n * Creates a new instance of `Container`.\n * @param owner The object owning this inctance.\n * @param name Optional name for the container.\n * @param parent Parent container this should be a child of.\n */\n constructor(t, e, n) {\n this.owner = t, this.name = e, this.parent = n, c(this).resolvers = /* @__PURE__ */ new Map(), c(this).touchQueue = /* @__PURE__ */ new Map(), c(this).children = [];\n }\n /**\n * Deletes an existing resolver by its unique id.\n * @param id Resolver id.\n */\n delete(t) {\n const e = c(this).resolvers, i = Array.from(e.values()).find((r) => r.id === t);\n return i ? (c(this).touchQueue.delete(i.key), Promise.resolve(e.delete(i.key))) : this.parent ? this.parent.delete(t) : Promise.resolve(!1);\n }\n /**\n * Clears the `Container` and any child containers by deleteing all registered resolvers.\n */\n clear() {\n const t = c(this).resolvers, e = Array.from(t.values());\n return Promise.all(e.map((n) => {\n if (n.constructed)\n return Promise.resolve(n.resolve()).then((i) => {\n if (i !== null && typeof i == \"object\" && typeof i.dispose == \"function\")\n return i.dispose.call(i, this, n);\n });\n })).then(() => {\n e.forEach((n) => this.delete(n.id)), c(this).children.forEach((n) => n.clear());\n });\n }\n /**\n * Detaches this `Container` instance from its parent, allowing it to be garbage-collected.\n */\n detach() {\n if (this.parent) {\n const t = c(this.parent).children, e = t.indexOf(this);\n e > -1 && (t.splice(e, 1), delete this.parent);\n }\n }\n /**\n * Provides a way of touching a value in the `Container` without forcing it to be resolved.\n * @param key Key of the resolved value to touch.\n * @param handler Handler function for touching the resolved value.\n */\n touch(t, e) {\n const i = c(this).resolvers.get(t);\n if (i && i.constructed)\n Promise.resolve(i.resolve()).then((o) => {\n e(o, this);\n });\n else {\n const o = c(this).touchQueue;\n let a = o.get(t);\n a || (a = [], o.set(t, a)), a.push(e);\n }\n return this.parent && !i ? this.parent.touch(t, e) : Promise.resolve();\n }\n /**\n * Registers an asynchronous resolver.\n * @param key Key of the resolver.\n * @param factory Value factory.\n */\n registerAsync(t, e) {\n const n = c(this).resolvers.get(t);\n n && !n.async && process.env.NODE_ENV !== \"production\" && u(this).warn(`Mismatching resolver type. You are registering an async resolver with a key ('${t}') previously used by a non-async resolver.`);\n const i = new G(t, e, n, this);\n return c(this).resolvers.set(t, i), i.id;\n }\n /**\n * Registers a factory resolver for constructing the value to be resolved.\n * @param key Key of the resolver.\n * @param factory Value factory.\n */\n registerFactory(t, e) {\n const n = c(this).resolvers.get(t);\n n && n.async && process.env.NODE_ENV !== \"production\" && u(this).warn(`Mismatching resolver type. You are registering a non-async resolver with a key ('${t}') previously used by an async resolver.`);\n const i = new X(t, e, n, this);\n return c(this).resolvers.set(t, i), i.id;\n }\n /**\n * Registers an synchronous resolver.\n * @param key Key of the resolver.\n * @param value Value.\n */\n register(t, e) {\n const n = c(this).resolvers.get(t);\n n && n.async && process.env.NODE_ENV !== \"production\" && u(this).warn(`Mismatching resolver type. You are registering a non-async resolver with a key ('${t}') previously used by an async resolver.`);\n const i = new J(t, e, n, this);\n return c(this).resolvers.set(t, i), i.id;\n }\n /**\n * Gets the value for a synchronous resolver.\n * @param key Key of resolver to get.\n */\n get(t) {\n const e = c(this).resolvers.get(t);\n if (e)\n return e.async && process.env.NODE_ENV !== \"production\" && u(this).warn(`You are retrieving an async value (with key '${t}') by the non-async function 'container.get(key)'. This will not be supported in future versions. Use 'container.getAsync(key) instead.'`), e.resolve();\n if (this.parent)\n return this.parent.get(t);\n }\n /**\n * Gets the value for a asynchronous resolver.\n * @param key Key of resolver to get.\n */\n getAsync(t) {\n const e = c(this).resolvers.get(t);\n if (e) {\n if (!e.async)\n throw process.env.NODE_ENV !== \"production\" && u(this).warn(`You are retrieving a non-async value (with key '${t}') by the async function 'container.getAsync(key)'.Use 'container.get(key) instead.'`), \"Mismatching resolver type\";\n return e.resolve();\n }\n return this.parent ? this.parent.getAsync(t) : Promise.resolve(void 0);\n }\n getMany(...t) {\n const e = {};\n return t.forEach((n) => e[n] = this.get(n)), e;\n }\n getManyAsync(...t) {\n const e = {};\n return Promise.all(t.map((n) => this.getAsync(n).then((i) => e[n] = i))).then(() => e);\n }\n createChild(t, e) {\n const n = new W(t, e, this);\n return c(this).children.push(n), n;\n }\n}\nclass L {\n /**\n * \n * @param type Type of event.\n * @param target The target of the event, which will handle the default behavour.\n * @param cancelable Whether the event is cancelable by calling preventDefault().\n * @param bubbles Whether the event will bubble up the parent hierarchy.\n */\n constructor(t, e, n = !1, i = !1) {\n this.type = t, this.target = e, this.cancelable = !!n, this.bubbles = !!i, this.defaultPrevented = !1;\n }\n /**\n * Cancels the default behaviour (if the event is cancelable).\n */\n preventDefault() {\n this.cancelable && (this.defaultPrevented = !0);\n }\n}\nconst p = b(), q = (s, t) => [].concat(\n p(s).listenerLookup.get(t.toLowerCase()) || [],\n p(s).listenerLookup.get(\"*\") || []\n), F = (s, t, e, n) => {\n let i, r;\n return t instanceof L ? (i = t, r = t.type) : (i = new L(t, s.target, !!e.cancelable, !!e.bubbles), r = t), { event: i, type: r, async: n };\n};\nclass D {\n /**\n * Creates a new Event Manager instance.\n * @param target The target of events dispatched from this Event Manager instance.\n * @param parent Parent Event Manager instance.\n */\n constructor(t, e) {\n this.target = t, this.parent = e, p(this).listenerLookup = /* @__PURE__ */ new Map(), p(this).children = [];\n }\n /**\n * Clears registered event listeners in this `EventManager` as well as in any children.\n */\n clear() {\n p(this).listenerLookup.clear(), p(this).children.forEach((t) => t.clear());\n }\n /**\n * Detaches this `EventManager` instance from its parent, allowing it to be garbage-collected.\n */\n detach() {\n if (this.parent) {\n const t = p(this.parent).children, e = t.indexOf(this);\n e > -1 && t.splice(e, 1);\n }\n }\n /**\n * Creates an event subscription by registering an listener for an event type.\n * @param type Event type to subscribe to.\n * @param listener Listener for the event.\n */\n subscribe(t, e, n) {\n const i = p(this).listenerLookup, r = t.toLowerCase();\n return i.has(r) || i.set(r, []), i.get(r).push(e), () => this.unsubscribe(t, e);\n }\n /**\n * Similar to `subscribe()` but immediately removes the subscription after the first call.\n * @param type Event type to subscribe to.\n * @param listener Listener for the event.\n */\n subscribeOnce(t, e) {\n const n = this.subscribe(t, (i, r) => (n(), e(i, r)));\n }\n /**\n * Removes a listener for the specified event type.\n * @param type Event type to remove subscription for.\n * @param listener Event listener to remove.\n */\n unsubscribe(t, e) {\n const n = p(this).listenerLookup.get(t.toLowerCase());\n if (n) {\n const i = n.indexOf(e);\n i > -1 && n.splice(i, 1);\n }\n }\n /**\n * Dispatches an asynchonous event to registered event listeners.\n * @param eventOrType Event type or Event object to dispatch.\n * @param data Optional data to be passed to event listeners.\n * @param options Optional event options used if first parameter is an event type.\n */\n dispatchAsync(t, e, n = {}) {\n const { event: i, type: r } = F(this, t, n, !0), o = q(this, r);\n let a = 0;\n const l = o.length;\n let h = Promise.resolve();\n for (a = 0; a < l; a++)\n ((m) => {\n h = h.then((y) => y ? Promise.resolve(!0) : Promise.resolve(m(i, e)).then(() => i.defaultPrevented));\n })(o[a]);\n return h.then((m) => !m && i.bubbles && this.parent ? this.parent.dispatchAsync(i, e) : m);\n }\n /**\n * Dispatches an event to registered event listeners.\n * @param eventOrType Event type or Event object to dispatch.\n * @param data Optional data to be passed to event listeners.\n * @param options Optional event options used if first parameter is an event type.\n */\n dispatch(t, e, n = {}) {\n const { event: i, type: r } = F(this, t, n, !1), o = q(this, r);\n let a = 0;\n const l = o.length;\n let h = !1;\n for (a = 0; a < l; a++)\n if (o[a](i, e), i.defaultPrevented) {\n h = !0;\n break;\n }\n return !h && i.bubbles && this.parent && (h = this.parent.dispatch(i, e)), h;\n }\n /**\n * Creates a child instance to the current Event manager.\n */\n createChild(t) {\n const e = new D(t, this);\n return p(this).children.push(e), e;\n }\n}\nconst P = (s, t, e) => {\n const i = s.get(\"$plugins\").map((r) => {\n try {\n return r.invoke(t, e);\n } catch (o) {\n u(s).error(\"An error occured when invoking a plugin.\", r, o);\n }\n });\n return Promise.all(i);\n};\nclass Z {\n constructor(t) {\n this.widget = t.get(\"$widget\"), this.events = this.widget.events, this.container = this.widget.container, this.initialized = null, this.activated = null, this.initialize = this.initialize.bind(this), this.activate = this.activate.bind(this), this.deactivate = this.deactivate.bind(this), this.invoke = this.invoke.bind(this), this.createInstance();\n }\n createInstance() {\n if (!this.widget.container.get(\"$instance\")) {\n const t = this.widget.container.get(\"$types\"), e = this.widget.container.get(\"$type\");\n !e && u(this).error(\"Unable to create widget. No type is specified.\");\n const n = t[e];\n !n && u(this).error(`Unable to create widget. Type '${e}' is not registered.`), this.widget.events.dispatch(\"widget:create-instance\", {}, { bubbles: !0 });\n try {\n this.widget.container.register(\n \"$instance\",\n new n(this.container)\n );\n } catch (i) {\n u(this).error(\"Unable to create widget type.\", i);\n }\n this.widget.events.dispatch(\"widget:instance-created\", {}, { bubbles: !0 });\n }\n }\n /**\n * The initialization is performed before the widget is activated but after it's configured\n * and thus all required services are available. This hook is a good place to bind events that\n * should trigger activation (e.g. click on \"trigger links\" or routing events)\n * @param {object} data Custom initialization data passed to the widget.\n */\n initialize(t) {\n return this.initialized = this.initialized || (() => {\n const e = this.container.get(\"$instance\"), n = e.initialize || (() => {\n });\n return this.initialized = Promise.resolve(n.call(e, t)).then(() => P(this.container, \"initialize\", t)).then(() => {\n });\n })();\n }\n /**\n * The activation is where the widget is actually created and rendered.\n * Activation can be initialized from the outside or from an event originated\n * in the \"initialize\" hook.\n * @param {object} data Custom activation data passed to the widget.\n */\n activate(t) {\n return (this.initialized || this.initialize()).then(() => {\n this.activated = this.activated || (() => P(this.container, \"activate\").then(() => {\n const n = this.container.get(\"$instance\");\n return this.activated = n.activate(t);\n }))();\n });\n }\n deactivate() {\n const t = this.container.get(\"$instance\"), e = t.deactivate || (() => {\n });\n return P(this.container, \"deactivate\").then(() => Promise.resolve(e.call(t))).then(() => {\n this.initialized = null, this.activated = null;\n }).then(() => {\n });\n }\n /**\n * Invokes a command on the widget component.\n * @param command Name of command\n * @param args Command arguments\n */\n invoke(t, ...e) {\n return P(this.container, \"invoke\", { command: t, args: e }).then(() => {\n const n = this.container.get(\"$instance\");\n if (n[t])\n return n[t].apply(n, e);\n const i = n.invoke;\n if (i)\n return i.call(n, t, ...e);\n });\n }\n}\nconst w = (s, t) => {\n if (!t)\n return !0;\n if (typeof t == \"string\") {\n const e = t.split(\",\");\n for (let n = 0, i = e.length; n < i; n++) {\n const r = e[n].trim();\n if (r === s || r === \"*\")\n return !0;\n }\n }\n return t instanceof Array ? t.indexOf(s) > -1 : !1;\n}, K = (s, t) => {\n if (typeof t == \"function\")\n return t(s);\n const e = typeof t == \"string\" ? nt(t) : t;\n return !(!w(s.implementation.tenant || \"\", e.tenant || \"\") || !w(s.implementation.name, e.implementation || \"\") || !w(s.name, e.widget || \"\") || !w(s.container.get(\"$type\"), e.type || \"\"));\n}, tt = (s, t) => {\n if (typeof t == \"function\")\n return t(s);\n const e = typeof t == \"string\" ? st(t) : t;\n return !(!w(s.tenant || \"\", e.tenant || \"\") || !w(s.name, e.implementation || \"\"));\n}, Q = (s) => (t) => K(t, s), et = (s) => (t) => tt(t, s), f = (s) => s instanceof Array && s.length === 1 ? s[0] : s, nt = (s) => {\n const t = {}, e = s.split(\":\");\n return e.length === 1 ? t.widget = f(e[0].split(\",\")) : e.length === 2 ? (t.implementation = f(e[0].split(\",\")), t.widget = f(e[1].split(\",\"))) : (t.tenant = f(e[0].split(\",\")), t.implementation = f(e[1].split(\",\")), t.widget = f(e[2].split(\",\"))), t;\n}, st = (s) => {\n const t = {}, e = s.split(\":\");\n return e.length === 1 ? t.implementation = f(e[0].split(\",\")) : (t.tenant = f(e[0].split(\",\")), t.implementation = f(e[1].split(\",\"))), t;\n}, E = b(), V = (s, t, e) => s.filter((n) => n.stage === t && Q(n.selector)(e));\nfunction it(s) {\n const t = s.container.get(\"$environment\");\n let e = E(t).configurationCache;\n e && (e = e.filter((n) => n[0] !== s), E(t).configurationCache = e);\n}\nvar k = /* @__PURE__ */ ((s) => (s.Implementation = \"implementation\", s.Widget = \"widget\", s))(k || {}), g = /* @__PURE__ */ ((s) => (s.Pre = \"pre\", s.Post = \"post\", s))(g || {});\nconst T = (s, t, e) => (Object.keys(t).forEach((n) => {\n const i = t[n];\n if (typeof i == \"function\") {\n const r = i();\n typeof r.defaultArgs != \"undefined\" && e(r, ...r.defaultArgs), s[n] = (...o) => {\n const a = Object.assign(\n {},\n r,\n { handlerResolver: r.handlerResolver.bind({}) }\n );\n return e(a, ...o), s;\n };\n } else\n s[n] = T(\n {},\n i,\n e\n );\n}), s), rt = (s, t) => {\n switch (t) {\n case \"implementation\":\n return s.implementation;\n case \"widget\":\n return s;\n }\n}, O = (s, t, e, n) => (n.forEach((i) => {\n T(\n s,\n i,\n (r, ...o) => {\n const a = {\n selector: t,\n stage: r.stage,\n handler: (l) => {\n const h = rt(l, r.scope), m = { container: h.container, events: h.events }, y = r.handlerResolver, x = y(m);\n let v = E(e.environment).configurationCache;\n return v || (v = E(e.environment).configurationCache = []), v.find((R) => R.indexOf(h) > -1 && R.indexOf(y) > -1) ? Promise.resolve() : (v.push([h, y]), Promise.resolve(x(...o)));\n }\n };\n e.instructions.push(a);\n }\n );\n}), s);\nfunction ot(s, t) {\n function e(n) {\n return O(\n {},\n n,\n s,\n t\n );\n }\n return O(\n e,\n \"*\",\n s,\n t\n );\n}\nclass $t {\n constructor(t, e) {\n this.container = t, this.settings = e, this.widget = t.get(\"$widget\"), this.events = this.widget.events;\n }\n}\nconst at = (s, t, e, n) => {\n try {\n const i = new t(e, n);\n return {\n name: s,\n invoke: (r, o) => {\n let a;\n return i[r] && (a = i[r].call(i, o)), Promise.resolve(a);\n },\n getInstance: () => i\n };\n } catch (i) {\n if (i.message && i.message.indexOf(\"is not a constructor\") >= 0)\n return {\n name: s,\n invoke: (r) => {\n let o;\n return r === \"initialize\" && (o = t(e, n)), Promise.resolve(o);\n },\n getInstance: () => t\n };\n throw i;\n }\n};\nfunction j(s, t) {\n return typeof s == \"undefined\" ? t : s;\n}\nclass ct {\n constructor(t = {}) {\n this.part = t;\n }\n createCommand(t, e, n) {\n let i;\n typeof e == \"function\" ? i = {\n scope: k.Widget,\n stage: g.Post,\n defaultArgs: void 0,\n handlerResolver: e\n } : i = {\n scope: j(e.scope, k.Widget),\n stage: j(e.stage, g.Post),\n defaultArgs: e.defaultArgs,\n handlerResolver: n\n };\n let r = this.part;\n const o = t.split(\".\");\n return o.forEach((a, l) => {\n l === o.length - 1 ? r[a] || (r[a] = () => i) : r = this.part[a] = this.part[a] || {};\n }), this;\n }\n get() {\n return this.part;\n }\n}\nconst ht = (s) => {\n const t = new ct({});\n return s(t), t.get();\n}, lt = ht((s) => {\n s.createCommand(\n \"types.register\",\n { scope: k.Implementation, stage: g.Pre },\n (t) => (e, n) => {\n t.container.get(\"$types\")[e] = n;\n }\n ).createCommand(\n \"type\",\n { stage: g.Pre },\n (t) => (e) => {\n t.container.register(\"$type\", e);\n }\n ).createCommand(\n \"settings\",\n { stage: g.Pre, defaultArgs: [null] },\n (t) => (e) => {\n t.events.dispatch(\n \"settings:change\",\n e,\n { bubbles: !0 }\n ), t.container.register(\"$settings\", e);\n }\n ).createCommand(\n \"plugin\",\n { stage: g.Pre },\n (t) => (e, n, i) => {\n const { container: r } = t;\n let o = null, a = e, l = n;\n typeof e == \"string\" && (o = e, a = n, l = i);\n const h = (m) => {\n const { transformPluginSettings: y } = t.container.get(\"$environmentOptions\"), x = y ? y(\n l || {},\n o,\n t.container,\n a\n ) : n;\n try {\n const v = at(\n o,\n a,\n r,\n x\n );\n r.get(\"$plugins\").push(v), m && v.invoke(\"initialize\", null);\n } catch (v) {\n u(t).warn(\"Error when initializing plugin\", v);\n }\n };\n t.container.get(\"$instance\") ? h(!0) : t.events.subscribeOnce(\"widget:instance-created\", () => h(!1));\n }\n ).createCommand(\n \"container.register\",\n (t) => (e, n) => {\n t.container.register(e, n);\n }\n ).createCommand(\n \"container.registerAsync\",\n (t) => (e, n) => {\n t.container.registerAsync(e, n);\n }\n ).createCommand(\n \"container.registerFactory\",\n (t) => (e, n) => {\n t.container.registerFactory(e, n);\n }\n ).createCommand(\n \"container.touch\",\n (t) => (e, n) => {\n t.container.touch(e, n);\n }\n ).createCommand(\n \"csp\",\n {},\n (t) => (e) => {\n t.container.register(\"csp\", e);\n }\n );\n}), ut = lt;\nfunction dt(s, t, e = []) {\n const n = [ut].concat(e), i = ot(\n t,\n n\n );\n s(i, t);\n}\nclass pt {\n constructor() {\n this.tasks = [], this.current = Promise.resolve(), this.next = this.next.bind(this);\n }\n add(t, e, n, i) {\n this.tasks.push({ task: t, resolve: e, reject: n, done: i }), this.next();\n }\n next() {\n this.current = this.current.then(() => {\n const t = this.tasks.shift();\n if (t) {\n const e = Promise.resolve(t.task());\n return Promise.resolve(e).then(this.next).then(() => e.then((n) => {\n t.done(), t.resolve(n);\n })).catch((n) => (t.done(), t.reject(n), this.next()));\n }\n return Promise.resolve();\n });\n }\n}\nconst A = /* @__PURE__ */ new WeakMap();\nfunction vt(s) {\n return A.has(s) || A.set(s, new pt()), (t) => new Promise((e, n) => {\n const i = A.get(s);\n i.add(t, e, n, () => {\n i.tasks.length || A.delete(s);\n });\n });\n}\nconst U = (s) => typeof s != \"undefined\";\nvar ft = /* @__PURE__ */ ((s) => (s.Activating = \"activating\", s.Loading = \"loading\", s.Activated = \"activated\", s.Deactivating = \"deactivating\", s.Deactivated = \"deactivated\", s))(ft || {});\nconst $ = (s, t) => {\n s.events.dispatch(\"widget:state-change\", { state: t }, { bubbles: !0 }), s.state = t, s.events.dispatch(\"widget:state-changed\", {}, { bubbles: !0 });\n}, d = b(), gt = (s) => {\n const { container: t, events: e } = s;\n t.get(\"$controller\") || (t.register(\"$controller\", new Z(t)), e.dispatch(\"widget:controller-created\", {}, { bubbles: !0 }));\n};\nclass mt {\n /**\n * Creates a new `Widget` instance.\n * @param name Name of widget.\n * @param implementation The implementation this instance belongs to.\n * @param configuration Configuration for the widget.\n */\n constructor(t, e, n) {\n this.state = \"deactivated\", this.name = t, this.implementation = e, this.container = e.container.createChild(this, t), this.events = e.events.createChild(this), d(this).subscriptions = [], n && e.configure((i) => {\n const r = i(t);\n U(n.type) && r.type(n.type), U(n.settings) && r.settings(n.settings), n.plugins && Object.keys(n.plugins).forEach((o) => {\n var l;\n const a = (l = n.plugins) == null ? void 0 : l[o];\n r.plugin(o, a);\n });\n }), this.load = this.load.bind(this), this.activate = this.activate.bind(this), this.invoke = this.invoke.bind(this), this.deactivate = this.deactivate.bind(this);\n }\n /**\n * Initializes the widget, if not already initialized, and applies any\n * pending configuration.\n */\n load() {\n return vt(this)(() => {\n d(this).deactivatedPromise = null;\n const t = this.state === \"deactivated\";\n t && ($(\n this,\n \"activating\"\n /* Activating */\n ), this.container.register(\"$widget\", this), this.container.register(\"$controller\", null), this.container.register(\"$plugins\", []), this.container.register(\"$type\", null), this.container.register(\"$instance\", null)), $(\n this,\n \"loading\"\n /* Loading */\n );\n const e = this.implementation.instructions, n = V(e, g.Pre, this);\n return Promise.all(n.map((i) => i.handler(this))).then(() => {\n gt(this);\n const i = V(e, g.Post, this);\n return Promise.all(i.map((r) => r.handler(this))).then(() => {\n t && this.container.get(\"$controller\").initialize();\n });\n }).then(() => ($(\n this,\n \"activated\"\n /* Activated */\n ), this));\n });\n }\n /**\n * Activates the widget and makes it ready for receiving commands.\n * @param data Activation data\n */\n activate(t) {\n d(this).subscriptions.push(\n this.implementation.events.subscribe(\"implementation:configured\", () => {\n [\n \"activated\",\n \"activating\",\n \"loading\"\n /* Loading */\n ].indexOf(this.state) > -1 && this.load();\n })\n );\n const e = d(this).activatedPromise;\n return e ? (process.env.NODE_ENV !== \"production\" && u(this).warn(`Widget '${this.name}' has already been activated. The passed arguments for this activation will be discarded.`, t), e) : d(this).activatedPromise = this.load().then(() => this.container.get(\"$controller\").activate(t));\n }\n /**\n * Invokes a command on a widget. If the widget isn't activate the invocation \n * will be suspended until activation.\n * @param command Command to invoke.\n * @param args Command arguments.\n */\n invoke(t, ...e) {\n const n = d(this).activatedPromise, i = (r, ...o) => n.then(this.load).then(() => this.container.get(\"$controller\").invoke(r, ...o));\n return n ? i(t, ...e) : (process.env.NODE_ENV !== \"production\" && u(this).warn(\"You are invoking a command on a deactivated widget. The invocation will be queued until the widget is activated.\", this), new Promise((r) => {\n const o = this.events.subscribe(\"widget:state-changed\", () => {\n this.state === \"activated\" && (o(), r(i(t, ...e)));\n });\n }));\n }\n /**\n * Deactivates the widget by clearing the `Container` and removing any event subscriptions in the\n * `EventManager`.\n */\n deactivate() {\n const t = d(this).deactivatedPromise;\n return t || (this.state === \"deactivated\" ? Promise.resolve() : ($(\n this,\n \"deactivating\"\n /* Deactivating */\n ), d(this).deactivatedPromise = this.container.get(\"$controller\").deactivate().then(() => (d(this).activatedPromise = null, d(this).subscriptions.forEach((e) => e()), d(this).subscriptions = [], this.container.clear().then(() => {\n this.events.clear(), it(this), $(\n this,\n \"deactivated\"\n /* Deactivated */\n );\n })))));\n }\n}\nconst Pt = (s) => s.deactivate().then(() => {\n s.events.detach(), s.container.detach(), s.implementation.widgets.delete(s.name);\n});\nclass At {\n /**\n * Creates a new `Widget` instance.\n * @param container The `Container` instance to base the widget upon.\n */\n constructor(t) {\n this.container = t, this.widget = t.get(\"$widget\"), this.settings = t.get(\"$settings\"), this.events = this.widget.events, this.widget.events.subscribe(\"settings:change\", (e, n) => {\n this.settings = n;\n });\n }\n}\nconst Y = b();\nclass yt {\n /**\n * Creates a new Implementation instance.\n * @param configuration Configuration for the implementation.\n * @param environment The parent environment.\n * @param configurationApiExtensions Optional configuration API extensions.\n */\n constructor(t, e, n = []) {\n this.instructions = [], this.widgets = /* @__PURE__ */ new Map(), this.name = t.name, this.tenant = t.tenant, this.environment = e, this.container = e.container.createChild(this, this.name), this.events = e.events.createChild(this), this.container.register(\"$types\", {}), Y(this).configurationApiExtensions = n;\n }\n /**\n * Loads all widgets in the implementation.\n */\n load() {\n const t = Array.from(this.widgets.values());\n return Promise.all(t.map((e) => e.load())).then(() => t);\n }\n /**\n * Configures the implementation by adding a configuration callback.\n * @param configFn Callback function for configuration.\n */\n configure(t) {\n return dt(t, this, Y(this).configurationApiExtensions), this.events.dispatch(\n \"implementation:configured\",\n { implementation: this },\n { bubbles: !0 }\n ), this;\n }\n /**\n * Creates a widget on the implementation and returns its `WidgetData`.\n * @param name Widget name.\n * @param configuration Widget configuration.\n */\n createWidget(t, e) {\n const n = new mt(t, this, e);\n return this.widgets.set(n.name, n), n;\n }\n}\nfunction wt(s, t, e) {\n const n = new yt(s, t, e);\n return s.widgets && Object.keys(s.widgets).forEach((i) => {\n var o;\n const r = (o = s.widgets) == null ? void 0 : o[i];\n n.createWidget(i, r);\n }), n;\n}\nclass C {\n constructor(t, e) {\n this.selectorFactory = e, typeof t == \"function\" ? this.resolver = t : this.resolver = () => t;\n }\n append(t) {\n const e = typeof t == \"function\" ? t : () => t;\n return new C(\n () => this.all().concat(e()),\n this.selectorFactory\n );\n }\n all() {\n return this.resolver().concat([]);\n }\n query(t) {\n return this.all().filter(this.selectorFactory(t));\n }\n find(t) {\n const e = this.query(t);\n if (e.length)\n return e[0];\n }\n}\nconst S = \"#____version____#\";\nfunction Et(s, t) {\n const e = B.create(s);\n return Promise.all(\n (t || []).map((n) => Promise.resolve(n(e)))\n ).then(() => e);\n}\nconst N = b(), bt = (s) => s.tenant ? `${s.name}:${s.tenant}` : s.name, H = class {\n constructor(s, t = [], e = {}) {\n this.widgets = new C(\n () => {\n let n = [];\n return this.implementations.all().forEach((i) => {\n n = n.concat(Array.from(i.widgets.values()));\n }), n;\n },\n Q\n ), this.implementations = new C([], et), this.name = s, this.container = new W(this, s), this.events = new D(this), this.container.register(\"$version\", S), this.container.register(\"$environment\", this), this.container.register(\"$environmentOptions\", e), N(this).configurationApiExtensions = t;\n }\n /**\n * Creates an implementation based on the provided configuration.\n * @param config Implementation configuration.\n */\n createImplementation(s) {\n const t = bt(s);\n let e = this.implementations.find(t);\n if (e)\n return process.env.NODE_ENV !== \"production\" && u(e).warn(`Implementation \"${t}\" already exist on current environment.`), e;\n const n = N(this).configurationApiExtensions;\n return e = wt(\n s,\n this,\n n\n ), this.implementations = this.implementations.append([e]), this.events.dispatch(\"implementation:created\", { implementation: e }), e;\n }\n /**\n * Patches the Environment instance configuration.\n * @param configuration Environment configuration.\n */\n patch(s = {}) {\n const { name: t, configurationApiExtensions: e } = s;\n typeof t != \"undefined\" && t !== null && (this.name = t), e && e.forEach(\n (n) => {\n N(this).configurationApiExtensions.push(n);\n }\n );\n }\n /**\n * Creates a new Environment instance based on the provided configuration.\n * @param configuration Environment configuration.\n */\n static create(s = {}) {\n return new H(\n s.name || \"\",\n s.configurationApiExtensions,\n s.options\n );\n }\n};\nlet B = H;\nB.version = S;\nexport {\n k as ConfigurationScope,\n g as ConfigurationStage,\n W as Container,\n B as Environment,\n D as EventManager,\n L as EventObject,\n yt as Implementation,\n $t as Plugin,\n mt as Widget,\n Z as WidgetController,\n ft as WidgetState,\n At as WidgetType,\n ht as createConfigurationApi,\n Et as createEnvironment,\n Pt as destroy,\n Pt as destroyWidget,\n u as logger,\n et as selectImplementations,\n Q as selectWidgets,\n S as version\n};\n//# sourceMappingURL=index.js.map\n","var O = Object.getOwnPropertySymbols;\nvar L = Object.prototype.hasOwnProperty, B = Object.prototype.propertyIsEnumerable;\nvar x = (e, t) => {\n var o = {};\n for (var r in e)\n L.call(e, r) && t.indexOf(r) < 0 && (o[r] = e[r]);\n if (e != null && O)\n for (var r of O(e))\n t.indexOf(r) < 0 && B.call(e, r) && (o[r] = e[r]);\n return o;\n};\nfunction I(e) {\n const t = [];\n return e.forEach((o) => {\n t.indexOf(o) === -1 && t.push(o);\n }), t;\n}\nfunction k(e = \"\", t = \"\") {\n const o = e.split(\" \").concat(t.split(\" \"));\n return I(o).join(\" \").trim();\n}\nfunction U(e, t) {\n if (e) {\n if (typeof t == \"string\")\n return t;\n if (Array.isArray(t)) {\n let o = \"\";\n return t.forEach((r) => o = k(o, r)), o;\n }\n }\n}\nfunction X(...e) {\n let t = \"\";\n return e.length && e.forEach((o) => {\n typeof o == \"string\" ? t = k(t, o) : Array.isArray(o) ? t = k(t, U(...o)) : typeof o != \"undefined\" && o !== null && process.env.NODE_ENV !== \"production\" && p.warn(\n \"appendClassNames: arguments either haveto be a string or [boolean, ...string[]]. Passed args:\",\n ...e\n );\n }), t;\n}\nconst z = (e, t) => {\n let o, r = [];\n return (i) => (clearTimeout(o), new Promise((n, a) => {\n r.push([i, n, a]), o = setTimeout(() => {\n let f = t();\n r.forEach(([c, g, m]) => {\n f = c(f);\n }), r = [], n(f);\n }, e);\n }));\n}, tt = z;\nfunction T(e) {\n const t = {};\n if (typeof e == \"number\" || typeof e == \"string\")\n return e;\n for (const o in e)\n if (e.hasOwnProperty(o)) {\n const r = e[o], i = o.substring(0, 1).toLowerCase() + o.substring(1);\n if (Object.prototype.toString.call(r) === \"[object Array]\") {\n t[i] = [];\n for (let n = 0, a = r.length; n < a; n++)\n t[i].push(T(r[n]));\n } else\n r !== null && typeof r == \"object\" ? t[i] = T(r) : t[i] = r;\n }\n return t;\n}\nfunction N(e = {}) {\n const $ = e, {\n phrase: t = \"\",\n category: o,\n guideCategory: r,\n contactCategory: i,\n take: n,\n connectionKey: a,\n accordion: f,\n id: c,\n uriName: g,\n sorting: m,\n tag: u,\n tagId: l,\n tagTitle: h\n } = $, P = x($, [\n \"phrase\",\n \"category\",\n \"guideCategory\",\n \"contactCategory\",\n \"take\",\n \"connectionKey\",\n \"accordion\",\n \"id\",\n \"uriName\",\n \"sorting\",\n \"tag\",\n \"tagId\",\n \"tagTitle\"\n ]), s = {};\n return Object.keys(P).forEach((A) => {\n typeof e[A] == \"string\" && (s[A] = e[A]);\n }), typeof t == \"string\" && t.length && (s.phrase = t), t === null && (s.phrase = t), typeof r == \"string\" && r !== \"0\" && (s.guideCategory = r), typeof r == \"number\" && r !== 0 && (s.guideCategory = r), typeof r == \"object\" && r !== null && (typeof r.id == \"string\" && r.id !== \"0\" && (s.guideCategory = r.id), typeof r.id == \"number\" && r.id !== 0 && (s.guideCategory = r.id)), typeof i == \"string\" && i !== \"0\" && (s.contactCategory = i), typeof i == \"number\" && i !== 0 && (s.contactCategory = i), typeof i == \"object\" && i !== null && (typeof i.id == \"string\" && i.id !== \"0\" && (s.contactCategory = i.id), typeof i.id == \"number\" && i.id !== 0 && (s.contactCategory = i.id)), typeof o == \"string\" && o !== \"0\" && (s.category = o), typeof o == \"number\" && o !== 0 && (s.category = o), typeof o == \"object\" && o !== null && (typeof o.id == \"string\" && o.id !== \"0\" && (s.category = o.id), typeof o.id == \"number\" && o.id !== 0 && (s.category = o.id)), c && (s.id = c), g && (+s.category || +s.guideCategory || +s.guide || +s.contactCategory || +s.contactMethod) && (s.uriName = g), a && (s.connectionKey = a), n && (s.take = n), m && (s.sorting = m), typeof f == \"string\" && f.length > 0 && (s.accordion = f), typeof u == \"string\" && u !== \"0\" && (s.tag = u), typeof u == \"number\" && u !== 0 && (s.tag = u), Array.isArray(u) && u.length && (s.tag = u), (typeof l == \"string\" || typeof l == \"number\") && (s.tagId = l), typeof h == \"string\" && (s.tagTitle = h), typeof s.tag == \"string\" && (s.tag = s.tag.split(\",\")), s;\n}\nfunction* q(e) {\n if (e)\n for (let t = 0; t < e.length; t++) {\n const o = e[t];\n yield o, o.items && (yield* q(o.items));\n }\n}\nconst V = (e, t) => {\n const o = q(t);\n let r = o.next(), i = null;\n for (; !r.done; )\n r.value.id === e && (i = r.value), r = o.next();\n return i;\n}, W = V, M = (e) => {\n if (!e)\n return \"\";\n const t = [\n { from: /[äæǽ]+/gi, to: \"ae\" },\n { from: /[öœ]+/gi, to: \"oe\" },\n { from: /[ü]+/gi, to: \"ue\" },\n { from: /[Ä]+/gi, to: \"Ae\" },\n { from: /[Ü]+/gi, to: \"Ue\" },\n { from: /[Ö]+/gi, to: \"Oe\" },\n { from: /[ÀÁÂÃÄÅǺĀĂĄǍΑΆẢẠẦẪẨẬẰẮẴẲẶА]+/gi, to: \"A\" },\n { from: /[àáâãåǻāăąǎªαάảạầấẫẩậằắẵẳặа]+/gi, to: \"a\" },\n { from: /[Б]+/gi, to: \"B\" },\n { from: /[б]+/gi, to: \"b\" },\n { from: /[ÇĆĈĊČ]+/gi, to: \"C\" },\n { from: /[çćĉċč]+/gi, to: \"c\" },\n { from: /[Д]+/gi, to: \"D\" },\n { from: /[д]+/gi, to: \"d\" },\n { from: /[ÐĎĐΔ]+/gi, to: \"Dj\" },\n { from: /[ðďđδ]+/gi, to: \"dj\" },\n { from: /[ÈÉÊËĒĔĖĘĚΕΈẼẺẸỀẾỄỂỆЕЭ]+/gi, to: \"E\" },\n { from: /[èéêëēĕėęěέεẽẻẹềếễểệеэ]+/gi, to: \"e\" },\n { from: /[Ф]+/gi, to: \"F\" },\n { from: /[ф]+/gi, to: \"f\" },\n { from: /[ĜĞĠĢΓГҐ]+/gi, to: \"G\" },\n { from: /[ĝğġģγгґ]+/gi, to: \"g\" },\n { from: /[ĤĦ]+/gi, to: \"H\" },\n { from: /[ĥħ]+/gi, to: \"h\" },\n { from: /[ÌÍÎÏĨĪĬǏĮİΗΉΊΙΪỈỊИЫ]+/gi, to: \"I\" },\n { from: /[ìíîïĩīĭǐįıηήίιϊỉịиыї]+/gi, to: \"i\" },\n { from: /[Ĵ]+/gi, to: \"J\" },\n { from: /[ĵ]+/gi, to: \"j\" },\n { from: /[ĶΚК]+/gi, to: \"K\" },\n { from: /[ķκк]+/gi, to: \"k\" },\n { from: /[ĹĻĽĿŁΛЛ]+/gi, to: \"L\" },\n { from: /[ĺļľŀłλл]+/gi, to: \"l\" },\n { from: /[М]+/gi, to: \"M\" },\n { from: /[м]+/gi, to: \"m\" },\n { from: /[ÑŃŅŇΝН]+/gi, to: \"N\" },\n { from: /[ñńņňʼnνн]+/gi, to: \"n\" },\n { from: /[ÒÓÔÕŌŎǑŐƠØǾΟΌΩΏỎỌỒỐỖỔỘỜỚỠỞỢО]+/gi, to: \"O\" },\n { from: /[òóôõōŏǒőơøǿºοόωώỏọồốỗổộờớỡởợо]+/gi, to: \"o\" },\n { from: /[П]+/gi, to: \"P\" },\n { from: /[п]+/gi, to: \"p\" },\n { from: /[ŔŖŘΡР]+/gi, to: \"R\" },\n { from: /[ŕŗřρр]+/gi, to: \"r\" },\n { from: /[ŚŜŞȘŠΣС]+/gi, to: \"S\" },\n { from: /[śŝşșšſσςс]+/gi, to: \"s\" },\n { from: /[ȚŢŤŦτТ]+/gi, to: \"T\" },\n { from: /[țţťŧт]+/gi, to: \"t\" },\n { from: /[ÙÚÛŨŪŬŮŰŲƯǓǕǗǙǛŨỦỤỪỨỮỬỰУ]+/gi, to: \"U\" },\n { from: /[ùúûũūŭůűųưǔǖǘǚǜυύϋủụừứữửựу]+/gi, to: \"u\" },\n { from: /[ÝŸŶΥΎΫỲỸỶỴЙ]+/gi, to: \"Y\" },\n { from: /[ýÿŷỳỹỷỵй]+/gi, to: \"y\" },\n { from: /[В]+/gi, to: \"V\" },\n { from: /[в]+/gi, to: \"v\" },\n { from: /[Ŵ]+/gi, to: \"W\" },\n { from: /[ŵ]+/gi, to: \"w\" },\n { from: /[ŹŻŽΖЗ]+/gi, to: \"Z\" },\n { from: /[źżžζз]+/gi, to: \"z\" },\n { from: /[ÆǼ]+/gi, to: \"AE\" },\n { from: /[ß]+/gi, to: \"ss\" },\n { from: /[IJ]+/gi, to: \"IJ\" },\n { from: /[ij]+/gi, to: \"ij\" },\n { from: /[Œ]+/gi, to: \"OE\" },\n { from: /[ƒ]+/gi, to: \"f\" },\n { from: /[ξ]+/gi, to: \"ks\" },\n { from: /[π]+/gi, to: \"p\" },\n { from: /[β]+/gi, to: \"v\" },\n { from: /[μ]+/gi, to: \"m\" },\n { from: /[ψ]+/gi, to: \"ps\" },\n { from: /[Ё]+/gi, to: \"Yo\" },\n { from: /[ё]+/gi, to: \"yo\" },\n { from: /[Є]+/gi, to: \"Ye\" },\n { from: /[є]+/gi, to: \"ye\" },\n { from: /[Ї]+/gi, to: \"Yi\" },\n { from: /[Ж]+/gi, to: \"Zh\" },\n { from: /[ж]+/gi, to: \"zh\" },\n { from: /[Х]+/gi, to: \"Kh\" },\n { from: /[х]+/gi, to: \"kh\" },\n { from: /[Ц]+/gi, to: \"Ts\" },\n { from: /[ц]+/gi, to: \"ts\" },\n { from: /[Ч]+/gi, to: \"Ch\" },\n { from: /[ч]+/gi, to: \"ch\" },\n { from: /[Ш]+/gi, to: \"Sh\" },\n { from: /[ш]+/gi, to: \"sh\" },\n { from: /[Щ]+/gi, to: \"Shch\" },\n { from: /[щ]+/gi, to: \"shch\" },\n { from: /[ЪъЬь]+/gi, to: \"\" },\n { from: /[Ю]+/gi, to: \"Yu\" },\n { from: /[ю]+/gi, to: \"yu\" },\n { from: /[Я]+/gi, to: \"Ya\" },\n { from: /[я]+/gi, to: \"ya\" }\n ], o = /[^a-zA-Z0-9]+/g, r = /[-]$/;\n let i = e;\n for (const n in t)\n t.hasOwnProperty(n) && t[n].from.test(e) && (i = i.replace(t[n].from, t[n].to));\n return i = i.replace(o, \"-\"), i = i.replace(r, \"\"), i = i.toLowerCase(), i || \"humany\";\n}, E = M;\nfunction S(e, t = {}, o) {\n return e.forEach((r) => {\n o && (t[+r.id] = o), r.items && S(r.items, t, r.id);\n }), t;\n}\nfunction Y(e, t, o = [e], r = S(t)) {\n const i = (a) => {\n const f = r[+a];\n f && (o.unshift(f), i(f));\n }, n = r[+e];\n return n && (o.unshift(n), i(n)), o;\n}\nconst F = (e, t) => typeof e == \"undefined\" || typeof t == \"undefined\" ? /* @__PURE__ */ new Map() : new Map(\n e.map((o) => {\n const r = W(o, t);\n return [o, r];\n })\n), et = (e, t, o, r = \"guide-categories\") => o.getAsync(\"dataClient\").then((i) => i.fetch(r, { expandCategories: \"descendants\" }).then(({ categories: n }) => {\n const a = (f) => {\n const c = Y(f, n), g = F(c, n), m = [];\n return c.forEach((u) => {\n const l = g.get(u);\n l && m.push({\n routeName: e,\n title: l.title,\n symbol: l.symbol,\n id: l.id,\n routeParams: N(r === \"contact-method-categories\" ? {\n contactCategory: l.id,\n uriName: E(l.title)\n } : {\n guideCategory: l.id,\n uriName: E(l.title)\n })\n });\n }), m;\n };\n return Array.isArray(t) ? t.reduce((f, c) => {\n const g = a(c);\n return g.length > 0 && f.push(g), f;\n }, []) : a(t);\n})), K = (e) => {\n let t, o;\n e.split(\",\")[0].indexOf(\"base64\") !== -1 ? t = atob(e.split(\",\")[1]) : t = decodeURI(e.split(\",\")[1]), o = e.split(\",\")[0].split(\":\")[1].split(\";\")[0];\n const r = [];\n for (let i = 0; i < t.length; i++)\n r[i] = t.charCodeAt(i);\n return new Blob([new Uint8Array(r)], { type: o });\n}, ot = K;\nfunction rt(...e) {\n return process.env.NODE_ENV !== \"production\" && console && console.warn(...e);\n}\nconst C = (e, t, ...o) => typeof t == \"string\" ? e(`[humany] ${t}`, ...o) : e(t, ...o), y = class {\n constructor() {\n this.keys = [], this.log = (e, ...t) => this.lookup(e, () => y.log(...t)), this.warn = (e, ...t) => this.lookup(e, () => y.warn(...t)), this.error = (e, ...t) => this.lookup(e, () => y.error(...t)), this.info = (e, ...t) => this.lookup(e, () => y.info(...t));\n }\n lookup(e, t) {\n this.keys.indexOf(e) === -1 && (this.keys.push(e), t());\n }\n};\nlet p = y;\np.log = (...e) => C(console.log, ...e);\np.warn = (...e) => C(console.warn, ...e);\np.error = (...e) => C(console.error, ...e);\np.info = (...e) => C(console.info, ...e);\nconst D = (e) => {\n let t = {}, o, r;\n if (typeof e != \"object\" || e === null)\n return e;\n t = Array.isArray(e) ? [] : {};\n for (r in e)\n o = e[r], t[r] = typeof o == \"object\" && o !== null ? D(o) : o;\n return t;\n}, j = D, it = (e) => {\n if (!e)\n return null;\n const t = localStorage.getItem(\n `humany_${_(e.tenant + e.name)}`\n );\n if (t) {\n const { activeStickyWidget: o } = JSON.parse(t);\n if (o && o.value && e.widgets.get(o.value)) {\n const i = document.createElement(\"a\");\n i.setAttribute(\n \"href\",\n `//${e.bindings[0]}/${o.value}`\n ), document.body.appendChild(i);\n }\n }\n}, nt = (e, t = !1) => {\n const o = new Date(e);\n let r = `${o.getMonth() + 1}`, i = `${o.getDate()}`;\n const n = o.getFullYear();\n if (r.length < 2 && (r = `0${r}`), i.length < 2 && (i = `0${i}`), t) {\n let a = `${o.getHours()}`, f = `${o.getMinutes()}`;\n return a.length < 2 && (a = `0${a}`), f.length < 2 && (f = `0${f}`), `${[n, r, i].join(\"-\")} ${[a, f].join(\":\")}`;\n }\n return [n, r, i].join(\"-\");\n};\nfunction st(e) {\n const t = document.cookie;\n if (t.length > 0) {\n let o = t.indexOf(`${e}=`);\n if (o !== -1) {\n o = o + e.length + 1;\n let r = t.indexOf(\";\", o);\n return r === -1 && (r = t.length), unescape(t.substring(o, r));\n }\n }\n return null;\n}\nfunction _(e) {\n let t = 0;\n if (e.length === 0)\n return t.toString();\n for (let o = 0; o < e.length; o++) {\n const r = e.charCodeAt(o);\n t = (t << 5) - t + r, t = t & t;\n }\n return t.toString();\n}\nconst ft = (e, t) => {\n if (!e || !t)\n return !0;\n let o = t.parentNode, r = !1;\n for (; o !== null; )\n o === e && (r = !0), o = o.parentNode;\n return r;\n};\nfunction at(e) {\n return e.replace(/([a-z])([A-Z])/g, \"$1-$2\").replace(/\\s+/g, \"-\").toLowerCase();\n}\nclass Z {\n constructor(t, o) {\n this.lockWarningTime = t, this.lockErrorTime = o, this.tasks = [], this.current = Promise.resolve(), this.next = this.next.bind(this);\n }\n add(t, o, r, i) {\n this.tasks.push({ task: t, resolve: o, reject: r, done: i }), this.next();\n }\n next() {\n this.current = this.current.then(() => {\n const t = this.tasks.shift();\n if (t) {\n let o;\n const r = setTimeout(() => {\n process.env.NODE_ENV !== \"production\" && p.warn(\n `A lock has exceeded ${this.lockWarningTime} ms. Waiting additional ${this.lockErrorTime} ms before rejecting the task.`,\n t\n ), o = setTimeout(() => {\n t.reject(\"lock timeout exceeded\");\n }, this.lockErrorTime);\n }, this.lockWarningTime), i = Promise.resolve(t.task()).then((n) => (clearTimeout(r), clearTimeout(o), n));\n return Promise.resolve(i).then(this.next).then(\n () => i.then((n) => {\n t.done(), t.resolve(n);\n })\n ).catch((n) => (t.done(), t.reject(n), this.next()));\n }\n return Promise.resolve();\n });\n }\n}\nconst b = /* @__PURE__ */ new WeakMap();\nfunction ct(e, t = 5e3, o = 1e3) {\n return b.has(e) || b.set(e, new Z(t, o)), (r) => new Promise((i, n) => {\n const a = b.get(e);\n a.add(r, i, n, () => {\n a.tasks.length || b.delete(e);\n });\n });\n}\nconst v = (e) => !!e && typeof e == \"object\" && !Array.isArray(e), J = (e, ...t) => {\n const o = j(e), r = j(t);\n return w(o, ...r);\n}, w = (e, ...t) => {\n if (!t.length)\n return e;\n const o = t.shift();\n if (v(e) && v(o))\n for (const r in o)\n v(o[r]) ? (e[r] || Object.assign(e, { [r]: {} }), w(e[r], o[r])) : Object.assign(e, { [r]: o[r] });\n return w(e, ...t);\n}, ut = J, Q = (e, t) => {\n const o = () => t.querySelectorAll(\"[data-loading=true]\").length > 0, i = (() => {\n let a = !1;\n return () => {\n if (a)\n return;\n e.get(\"$widget\").events.dispatch(\"widget:data-loaded\", {\n element: t\n }), a = !0;\n };\n })();\n if (!o())\n return i();\n new MutationObserver((a, f) => {\n a.find(\n (g) => g.type === \"attributes\" && g.attributeName === \"data-loading\"\n ) && !o() && (f.disconnect(), i());\n }).observe(t, {\n attributes: !0,\n childList: !0,\n subtree: !0\n });\n}, R = (e, t) => {\n e.get(\"$widget\").container.getAsync(\"components\").then((r) => {\n r.events.subscribeOnce(\"components:component-model-initialized\", () => {\n let i = r.nodes.visible.reduce(\n (f, c) => (!c.name || !c.type || c.type === \"view\" || c.type === \"root\" || c.attributes.layout.size === \"none\" || t.querySelector(`[data-name=\"${c.name}\"]`) || f.push(c.name), f),\n []\n ), n = !1;\n new MutationObserver((f, c) => {\n f.forEach((g) => {\n if (g.addedNodes) {\n const m = Array.from(\n g.addedNodes\n ).reduce((u, l) => {\n const h = l.getAttribute && l.getAttribute(\"data-name\");\n return h && i.indexOf(h) > -1 && u.push(h), u;\n }, []);\n i = i.filter((u) => m.indexOf(u) === -1), !n && i.length === 0 && (n = !0, Q(e, t), c.disconnect());\n }\n });\n }).observe(t, {\n attributes: !1,\n characterData: !1,\n childList: !0,\n subtree: !0,\n attributeOldValue: !1,\n characterDataOldValue: !1\n });\n });\n });\n}, lt = R, H = (e = {}) => (Object.keys(e).forEach((t) => {\n (e[t] === null || typeof e[t] == \"undefined\") && delete e[t];\n}), e), gt = H;\nfunction mt(e, t, o) {\n let r = \"\";\n if (o) {\n const i = /* @__PURE__ */ new Date();\n i.setTime(i.getTime() + o * 24 * 60 * 60 * 1e3), r = `; expires=${i.toUTCString()}`;\n }\n document.cookie = `${e}=${t}${r}; path=/`;\n}\nconst dt = (e, t) => {\n let o = !0;\n return Object.keys(e).length !== Object.keys(t).length || Object.keys(e).some((i) => !Object.keys(t).some((a) => i === a)) ? !1 : (Object.keys(e).forEach((i) => {\n if (o) {\n const n = typeof e[i] == \"undefined\" ? \"\" : e[i], a = typeof t[i] == \"undefined\" ? \"\" : t[i];\n o = n.toString() === a.toString();\n }\n }), o);\n}, d = () => Math.floor((1 + Math.random()) * 65536).toString(16).substring(1);\nfunction ht() {\n return d() + d() + \"-\" + d() + \"-\" + d() + \"-\" + d() + \"-\" + d() + d() + d();\n}\nclass pt {\n constructor(t) {\n this.queue = [], this.queueAttemptCalls = 0, this.callCount = 5, this.add = (o) => {\n this.queue.push(o), this.queueAttempt = setInterval(this.processQueue, 1e3);\n }, this.processQueue = () => {\n if (this.queue.length > 0) {\n const o = [];\n this.queue.forEach((r, i) => {\n const n = r();\n typeof n == \"function\" && (n(), o.push(i));\n }), this.queue = this.queue.filter((r, i) => !(o.indexOf(i) > -1)), this.queueAttempt && clearInterval(this.queueAttempt);\n }\n this.queueAttemptCalls > this.callCount && (clearInterval(this.queueAttempt), this.queueAttemptCalls = 0), this.queueAttemptCalls = this.queueAttemptCalls + 1;\n }, t && t.callCount && (this.callCount = t.callCount);\n }\n}\nexport {\n p as Logger,\n pt as WaitFor,\n X as appendClassNames,\n et as buildCategoryTrail,\n T as camilize,\n Y as categoryTrail,\n tt as createBatch,\n N as createParams,\n ot as dataURItoBlob,\n rt as debugLog,\n j as deepClone,\n it as findAndActivateStoredWidgets,\n W as findCategoryById,\n nt as formatDate,\n E as formatUrl,\n F as getCategoryTrailAsObjects,\n st as getCookie,\n _ as hash,\n ft as htmlParentContains,\n at as kebabCase,\n ct as lock,\n ut as mergeDeep,\n lt as notifyDataLoaded,\n gt as removeNullAndUndefinedValues,\n mt as setCookie,\n dt as shallowCompare,\n ht as uuid\n};\n//# sourceMappingURL=index.js.map\n","var V = Object.defineProperty, j = Object.defineProperties;\nvar q = Object.getOwnPropertyDescriptors;\nvar D = Object.getOwnPropertySymbols;\nvar z = Object.prototype.hasOwnProperty, Q = Object.prototype.propertyIsEnumerable;\nvar S = (s, t, e) => t in s ? V(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e, y = (s, t) => {\n for (var e in t || (t = {}))\n z.call(t, e) && S(s, e, t[e]);\n if (D)\n for (var e of D(t))\n Q.call(t, e) && S(s, e, t[e]);\n return s;\n}, _ = (s, t) => j(s, q(t));\nimport { bootstrapImplementation as F, ConfigurationApi as G } from \"@webprovisions/bootstrapping\";\nimport { selectImplementations as K, createConfigurationApi as U, version as W, Environment as Y, Implementation as J, Plugin as X, WidgetType as Z } from \"@webprovisions/platform\";\nimport { uuid as O, Logger as N } from \"@telia-ace/widget-utilities\";\nclass yt {\n constructor(t) {\n const { events: e } = t.get(\"$widget\");\n this.events = e.createChild(this);\n }\n action(t, e, n) {\n this.events.dispatch(\"data:action\", { action: e, value: n, target: t }, { bubbles: !0 });\n }\n subscribe(t, e) {\n return this.events.subscribe(\n \"data:action\",\n (n, { action: i, value: r, target: c }) => t === c && e(t, i, r)\n );\n }\n}\nconst xt = (s, t, e = {}) => F(\n s,\n s.bindings,\n () => {\n const n = s.container.get(\"$runtimecfg\").map((i) => {\n const r = i[0];\n if (typeof r == \"function\")\n return r;\n if (K(r)(s))\n return i[1];\n }).filter((i) => !!i);\n return (t ? [t] : []).concat(n);\n },\n e.rootElementResolver || (() => document.body)\n), tt = (s) => {\n const t = [];\n return [\n (n, i) => {\n t.push(s.subscribe(n, i));\n },\n () => {\n t.forEach((n) => {\n n();\n });\n }\n ];\n};\nclass P {\n constructor(t, e = []) {\n this.platform = t, this.rules = e;\n }\n match(t) {\n return this.rules.every((e) => !(e.id && e.id !== t.id || e.type && e.type !== t.type));\n }\n ofType(t) {\n return this.rules.push({ type: t }), this;\n }\n withId(t) {\n return this.rules.push({ id: t }), this;\n }\n select() {\n return new et(this.platform, this);\n }\n}\nclass H {\n constructor(t, e, n) {\n this.platform = t, this.node = e, this.actions = new k(\n t,\n new P(t).withId(e.id),\n n\n );\n const [i, r] = tt(this.platform.events);\n this.subscribe = i, this.unsubscribe = r;\n }\n properties(t) {\n return t && this.node.touchProperties((e) => t(e)), this.node.attributes.properties;\n }\n context(t) {\n return t && this.subscribe(\"components:context-changed\", (e, { node: n }) => {\n n === this.node && t(this.node.attributes.context);\n }), this.node.attributes.context;\n }\n layout(t) {\n return t && this.subscribe(\"components:layout-changed\", (e, { node: n }) => {\n n === this.node && t(this.node.attributes.layout);\n }), this.node.attributes.layout;\n }\n writeProperties(t, e) {\n this.node.writeProperties(t, e);\n }\n writeContext(t, e) {\n this.node.writeProperties(t, e);\n }\n writeLayout(t, e) {\n this.node.writeLayout(t, e);\n }\n dispose() {\n this.unsubscribe(), this.actions.dispose();\n }\n}\nclass et {\n constructor(t, e, n = !0) {\n this.platform = t, this.target = e, this.clearOnDispose = n, this.removes = [], this.actions = new k(this.platform, this.target);\n }\n writeProperties(t, e) {\n this.removes.push(\n this.platform.write({\n options: e,\n attributes: { properties: t },\n target: this.target,\n removable: this.clearOnDispose\n })\n );\n }\n writeContext(t, e) {\n this.removes.push(\n this.platform.write({\n options: e,\n attributes: { context: t },\n target: this.target,\n removable: this.clearOnDispose\n })\n );\n }\n writeLayout(t, e) {\n this.removes.push(\n this.platform.write({\n options: e,\n attributes: { layout: t },\n target: this.target,\n removable: this.clearOnDispose\n })\n );\n }\n dispose() {\n this.removes.forEach((t) => {\n t();\n }), this.actions.dispose();\n }\n}\nconst st = (s, t, e) => {\n const n = s.concat(), i = (r, c, a) => {\n let u = !0;\n if (n.length) {\n const h = n.shift(), o = (p, l) => (u = !1, i(p, Object.assign({}, c, l), a));\n return Promise.resolve(h(r, o, a)).then((p) => _(y({}, p), {\n cancelled: u\n }));\n }\n return Promise.resolve({ data: r, cancelled: !1, options: c });\n };\n return i(t, {}, e);\n};\nclass k {\n constructor(t, e, n) {\n this.platform = t, this.target = e, this.ns = n, this.subscriptions = [], this.create = this.create.bind(this);\n }\n create(t, e = () => {\n }) {\n const n = {\n key: t,\n fn: e,\n target: this.target,\n ns: this.ns\n };\n this.platform.actionsState.handlers.push(n);\n const i = () => {\n const r = this.platform.actionsState.handlers.indexOf(n);\n r > -1 && this.platform.actionsState.handlers.splice(r, 1);\n };\n return this.subscriptions.push(i), i;\n }\n dispatch(t, e) {\n const n = this.platform.nodes.all.concat(\n this.platform.nodes.detached\n ), i = {}, r = this.platform.actionsState.handlers.filter(\n (c) => c.key === t && (!c.ns || !this.ns || c.ns === this.ns)\n );\n return Promise.all(\n r.map((c) => {\n const a = n.filter(\n (h) => c.target.match(h) && this.target.match(h)\n ), u = this.platform.actionsState.watchers.filter((h) => h.key === t && (!h.ns || !this.ns || h.ns === this.ns) && a.some((o) => h.target.match(o))).map((h) => h.fn);\n return Promise.all(\n a.map((h) => {\n const o = new H(\n this.platform,\n h,\n this.ns\n );\n return st(u, e, o).then((p) => {\n const { data: l = {}, options: d, cancelled: b } = p;\n return Promise.resolve(\n b ? {} : c.fn(l, d, o)\n ).then((g) => {\n i[h.id] = g;\n });\n });\n })\n );\n })\n ).then(() => i);\n }\n watch(t, e) {\n let n = t, i = this.ns;\n const r = t.split(\".\");\n r.length > 1 && (i = r[0], n = r.splice(1).join(\".\"));\n const c = {\n fn: e,\n target: this.target,\n key: n,\n ns: i\n };\n this.platform.actionsState.watchers.push(c);\n const a = () => {\n const u = this.platform.actionsState.watchers.indexOf(c);\n u > -1 && this.platform.actionsState.watchers.splice(u, 1);\n };\n return this.subscriptions.push(a), a;\n }\n dispose() {\n this.subscriptions.forEach((t) => t());\n }\n}\nconst wt = U((s) => {\n s.createCommand(\"components\", (t) => (e) => {\n t.events.subscribeOnce(\"components:platform-created\", (n, { platform: i }) => {\n e.handlers && e.handlers.forEach(([r, c]) => {\n i.addComponentHandler(r, c);\n });\n });\n });\n});\nclass L {\n constructor(t, e) {\n this.events = t, this.tags = [], this.children = {}, this.changesets = [], this.mountCount = 0, this.id = O(), this.type = e, this.attributes = {\n context: {},\n properties: {},\n layout: {},\n tags: []\n }, this.writeLayout({ size: \"full\", indent: 0 });\n }\n mount(t, e) {\n let n = t.get(\"mounted-nodes\");\n return n || (n = /* @__PURE__ */ new Map(), t.register(\"mounted-nodes\", n)), n.has(this) ? (process.env.NODE_ENV !== \"production\" && N.error(\"Trying to mount an already mounted component node.\", this), () => {\n }) : (this.events.dispatch(\"components:node-mounted\", { node: this }), this.mountCount === 0 && (this.mountCount = this.mountCount + 1, this.events.dispatch(\"components:node-enter\", { node: this })), () => {\n n.delete(this), this.events.dispatch(\"components:node-unmounted\", { node: this }), this.mountCount = this.mountCount - 1, this.mountCount === 0 && this.events.dispatch(\"components:node-exit\", { node: this });\n });\n }\n appendChild(t, e = \"default\") {\n if (t.parent) {\n if (t.parent === this)\n return;\n t.parent.removeChild(t);\n }\n t.parent = this, this.children[e] || (this.children[e] = []), this.children[e].push(t), this.events.dispatch(\"components:node-appended\", { node: t });\n }\n prependChild(t, e = \"default\") {\n if (t.parent) {\n if (t.parent === this)\n return;\n t.parent.removeChild(t);\n }\n t.parent = this, this.children[e] || (this.children[e] = []), this.children[e].unshift(t), this.events.dispatch(\"components:node-appended\", { node: t });\n }\n touchProperties(t, e = {}, n) {\n const r = [{ properties: t }, e];\n return this.changesets.push(r), this.events.dispatch(\"components:set-properties\", { node: this }), () => {\n if (n) {\n const c = this.changesets.indexOf(r);\n c > -1 && (this.changesets.splice(c, 1), this.events.dispatch(\"components:set-properties\", { node: this }));\n }\n };\n }\n writeProperties(t, e = {}, n) {\n const r = [{ properties: t }, e];\n return this.changesets.push(r), this.events.dispatch(\"components:set-properties\", { node: this }), () => {\n if (n) {\n const c = this.changesets.indexOf(r);\n c > -1 && (this.changesets.splice(c, 1), this.events.dispatch(\"components:set-properties\", { node: this }));\n }\n };\n }\n writeLayout(t, e = {}, n) {\n const r = [{ layout: t }, e];\n return this.changesets.push(r), this.events.dispatch(\"components:set-layout\", { node: this }), () => {\n if (!n)\n return;\n const c = this.changesets.indexOf(r);\n c > -1 && (this.changesets.splice(c, 1), this.events.dispatch(\"components:set-layout\", { node: this }));\n };\n }\n writeContext(t, e = {}, n) {\n const r = [{ context: t }, e];\n return this.changesets.push(r), this.events.dispatch(\"components:set-context\", { node: this }), () => {\n if (!n)\n return;\n const c = this.changesets.indexOf(r);\n c > -1 && (this.changesets.splice(c, 1), this.events.dispatch(\"components:set-context\", { node: this }));\n };\n }\n getChildren(t = \"default\") {\n const e = this.children[t] || [];\n return e.reduce((n, i, r) => {\n const { order: c = r } = i.attributes.layout;\n return n[c] ? n.splice(c, 0, i) : n[c] = i, n;\n }, Array(e.length));\n }\n remove() {\n this.parent && this.parent.removeChild(this);\n }\n removeChild(t) {\n Object.keys(this.children).forEach((e) => {\n const n = this.children[e], i = n.indexOf(t);\n i > -1 && (n.splice(i, 1), this.events.dispatch(\"components:node-removed\", { node: t, parentNode: this }));\n }), delete t.parent;\n }\n}\nconst B = (s, t, e) => {\n for (let n = 0, i = s.length; n < i && e(s[n]) !== !0; n++) {\n const r = t[s[n].id] || \"default\", c = s[n].getChildren(r);\n B(c, t, e);\n }\n}, $ = (s, t, e) => {\n if (e(s) !== !0) {\n const n = t[s.id] || \"default\", i = s.children[n];\n B(i, t, e);\n }\n}, w = (s, t) => {\n const e = [];\n return $(s, t, (n) => {\n e.push(n);\n }), e;\n}, nt = (s, t, e) => {\n let n;\n return $(s, t, (i) => {\n if (e(i))\n return n = i, !0;\n }), n;\n};\nclass it {\n constructor(t, e, n) {\n this.root = t, this.switches = e, this.all = [], this.visible = [], this.detached = [], n.subscribe(\"components:node-appended\", (i, r) => {\n this.all.push(r.node), this.visible = w(t, e);\n }), n.subscribe(\"components:node-removed\", (i, r) => {\n let c = this.all.indexOf(r.node);\n c > -1 && this.all.splice(c, 1), c = this.visible.indexOf(r.node), c > -1 && this.visible.splice(c, 1), this.visible = w(t, e);\n }), n.subscribe(\"components:node-switched\", (i, r) => {\n this.visible = w(t, e);\n });\n }\n query(t = {}) {\n const e = [];\n return $(this.root, this.switches, (n) => {\n Object.keys(t).every((r) => t[r] === n[r]) && e.push(n);\n }), e;\n }\n get(t) {\n return nt(this.root, this.switches, (e) => e.id === t) || this.detached.find((e) => e.id === t);\n }\n}\nclass ot {\n constructor() {\n this.handlers = /* @__PURE__ */ new Map();\n }\n add(t, e) {\n this.handlers.set(t, e);\n }\n get(t) {\n return this.handlers.get(t);\n }\n}\nconst rt = (s) => {\n let t = s, e = 0;\n for (; t.parent; )\n e = e + 1, t = t.parent;\n return e;\n}, ct = (s) => s.map(([e, n]) => [rt(e), e, n]).sort(([e], [n]) => e - n).map(([, e, n]) => [e, n]), C = (s) => s instanceof Date ? !1 : s && typeof s == \"object\" && !Array.isArray(s), v = (s, ...t) => {\n if (!t.length)\n return s;\n const e = t.shift();\n if (C(s) && C(e))\n for (const n in e)\n C(e[n]) ? (s[n] || Object.assign(s, { [n]: {} }), v(s[n], e[n])) : Object.assign(s, { [n]: e[n] });\n return v(s, ...t);\n}, ht = (s, t) => !s || s === \"all\" ? !0 : s.some((e) => t.indexOf(e) > -1), at = (s, t) => {\n let e = [], n = [], i;\n const r = () => {\n process.env.NODE_ENV !== \"production\" && console.time(\"state-processor.flush\");\n const a = /* @__PURE__ */ new Map(), u = ct(e.map((o, p) => [o, n[p]])), h = (o, p) => {\n var I;\n const l = a.get(o) || {}, d = p.context && !l.context, b = p.properties && !l.properties, g = p.layout && !l.layout;\n a.set(o, {\n context: l.context || d,\n properties: l.properties || b,\n layout: l.layout || g\n }), b && (o.attributes.properties = {}), g && (o.attributes.layout = {}), d && (o.attributes.context = v({}, (I = o.parent) == null ? void 0 : I.attributes.context));\n const R = [], A = [], T = [];\n if (o.changesets.forEach((f) => {\n const [m, x] = f;\n ht(x.breakpoints, s.breakpoints) && (b && (typeof m.properties == \"function\" ? R.push(\n m.properties\n ) : v(o.attributes.properties, m.properties)), g && (typeof m.layout == \"function\" ? A.push(m.layout) : v(o.attributes.layout, m.layout)), d && (typeof m.context == \"function\" ? T.push(m.context) : v(o.attributes.context, m.context)));\n }), R.forEach((f) => {\n v(o.attributes.properties, f(o.attributes.properties));\n }), A.forEach((f) => {\n v(o.attributes.layout, f(o.attributes.layout));\n }), T.forEach((f) => {\n v(o.attributes.context, f(o.attributes.context));\n }), d || p.recursive) {\n const f = s.getBranch(o), m = p.recursive ? p : {\n context: !!d\n };\n o.getChildren(f).forEach((x) => {\n h(x, m);\n });\n }\n };\n process.env.NODE_ENV !== \"production\" && console.timeEnd(\"state-processor.flush\"), u.forEach(([o, p]) => {\n h(o, p);\n }), e = [], n = [], t(a);\n }, c = () => {\n clearTimeout(i), i = setTimeout(r, 0);\n };\n return (a, u) => {\n const h = e.indexOf(a);\n if (h > -1) {\n const o = n[h];\n return u.context && (o.context = !0), u.properties && (o.properties = !0), u.layout && (o.layout = !0), u.recursive && (o.recursive = !0), c();\n }\n return e.push(a), n.push(u), c();\n };\n};\nclass pt {\n constructor(t, e = {}) {\n this.providers = e, this.breakpoints = [], this.actionsState = { handlers: [], watchers: [] }, this.switches = {}, this.changesets = [], this.subscriptions = [], this.customComponentHandler = new ot(), this.events = t.events.createChild(this);\n const n = new L(this.events, \"root\");\n n.name = `root-${t.name}`, this.nodes = new it(n, this.switches, this.events);\n const i = this.processNode = at(this, (r) => {\n const c = Array.from(r.keys());\n process.env.NODE_ENV !== \"production\" && console.info(`STATE PROCESSOR: ${c.length} node(s) processed:\n${c.map(\n (a) => `${a.name || \"<no name>\"} (${a.id})\n`\n )}`), c.forEach((a) => {\n const u = r.get(a);\n a.parent && a.parent.type === \"root\" && this.events.dispatch(\"components:root-children-changed\", { node: a }), u != null && u.context && this.events.dispatch(\"components:context-changed\", { node: a }), u != null && u.properties && this.events.dispatch(\"components:properties-changed\", { node: a }), u != null && u.layout && this.events.dispatch(\"components:layout-changed\", { node: a });\n }), this.events.dispatch(\"components:component-model-initialized\", {}, { bubbles: !0 });\n });\n Promise.all(\n Object.keys(e).map((r) => e[r].load(this))\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:node-appended\",\n (r, c) => {\n const { node: a } = c;\n this.changesets.forEach((u) => {\n const { changeset: h, target: o, removes: p } = u, [l, d] = h;\n o.match(c.node) && (l.properties && p.push(a.writeProperties(l.properties, d)), l.context && p.push(a.writeContext(l.context, d)), l.layout && p.push(a.writeLayout(l.layout, d)));\n });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:node-appended\",\n (r, c) => {\n i(c.node, { properties: !0, context: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:set-properties\",\n (r, c) => {\n i(c.node, { properties: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:set-context\",\n (r, c) => {\n i(c.node, { properties: !0, context: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:set-indent\",\n (r, c) => {\n i(c.node, { layout: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:set-layout\",\n (r, c) => {\n i(c.node, { layout: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\"components:node-switched\", (r, { node: c, branch: a }) => {\n i(c, {\n layout: !0,\n recursive: !0,\n properties: !0,\n context: !0\n });\n })\n ), this.subscriptions.push(\n this.events.subscribe(\"components:node-removed\", (r, { parentNode: c }) => {\n i(c, { properties: !0 });\n })\n ), this.events.parent && this.events.parent.dispatch(\"components:platform-created\", { platform: this });\n }\n static getInstance(t) {\n return t.getAsync(\"components\");\n }\n addBreakpoint(t) {\n this.breakpoints.indexOf(t) === -1 && (this.breakpoints.push(t), this.processNode(this.nodes.root, {\n context: !0,\n properties: !0,\n layout: !0,\n recursive: !0\n }));\n }\n removeBreakpoint(t) {\n const e = this.breakpoints.indexOf(t);\n e > -1 && (this.breakpoints.splice(e, 1), this.processNode(this.nodes.root, {\n context: !0,\n properties: !0,\n layout: !0,\n recursive: !0\n }));\n }\n setSwitch(t, e) {\n this.switches[t.id] = e, this.events.dispatch(\"components:node-switched\", { node: t, branch: e });\n }\n getBranch(t) {\n return this.switches[t.id];\n }\n /**\n * Creates a `ComponentNode` of the specified type.\n * @param type Type of node.\n */\n createNode(t, e = {}) {\n const n = new L(this.events, t);\n return e.detached && this.nodes.detached.push(n), n;\n }\n components() {\n return new P(this);\n }\n actions(t, e) {\n return new k(this, t, e);\n }\n write(t) {\n const { provider: e, target: n, attributes: i, options: r = {}, removable: c } = t, a = t.key || O(), h = { changeset: [i, r], target: n, removes: [] };\n if (e) {\n const o = this.providers[e];\n o.write(a, n, i, r), h.removes.push(() => {\n o.remove(a);\n });\n }\n return this.changesets.push(h), this.nodes.all.forEach((o) => {\n if (n.match(o)) {\n let p = () => {\n };\n i.properties && (p = o.writeProperties(i.properties, r, c)), i.context && (p = o.writeContext(i.context, r, c)), i.layout && (p = o.writeContext(i.layout, r, c)), h.removes.push(p);\n }\n }), () => {\n if (c) {\n h.removes.forEach((p) => p());\n const o = this.changesets.indexOf(h);\n o > -1 && this.changesets.splice(o, 1);\n }\n };\n }\n addComponentHandler(t, e) {\n this.customComponentHandler.add(t, e);\n }\n getComponentHandler(t) {\n return this.customComponentHandler.get(t);\n }\n dispose() {\n this.subscriptions.forEach((t) => t());\n }\n}\nconst ut = (s) => {\n if (Array.isArray(s)) {\n const [t, ...e] = s;\n return {\n definitionId: t,\n overrides: e\n };\n }\n return {\n definitionId: s,\n overrides: []\n };\n}, E = (s, t, e, n, i, r) => {\n e.forEach((c) => {\n const a = ut(c), u = n[a.definitionId];\n if (a.definitionId === \"view\") {\n const h = s.createNode(\"view\");\n h.name = \"view\", Object.keys(i).forEach((o) => {\n const p = i[o];\n E(s, h, [p.entry], n, i, o);\n }), t.appendChild(h), a.overrides.forEach((o) => {\n o.properties && h.writeProperties(o.properties, {\n breakpoints: o.breakpoints\n }), o.context && h.writeContext(o.context, { breakpoints: o.breakpoints }), o.layout && h.writeLayout(o.layout, { breakpoints: o.breakpoints });\n });\n } else if (s.getComponentHandler(u.type)) {\n const h = s.getComponentHandler(u.type);\n h && h(a, {\n platform: s,\n node: t,\n references: e,\n definitions: n,\n views: i,\n branch: r\n });\n } else {\n const h = n[a.definitionId];\n if (process.env.NODE_ENV !== \"production\" && !h) {\n N.error(\n `No definition found for component type '${a.definitionId}'.`\n );\n return;\n }\n const o = s.createNode(h.type);\n o.name = a.definitionId, o.tags = h.tags || [], h.properties && o.writeProperties(h.properties), h.context && o.writeContext(h.context), h.layout && o.writeLayout(h.layout), t.appendChild(o, r), a.overrides.forEach((p) => {\n const l = { breakpoints: p.breakpoints };\n p.properties && o.writeProperties(p.properties, l), p.context && o.writeContext(p.context, l), p.layout && o.writeLayout(p.layout, l);\n }), h.children && E(s, o, h.children, n, i);\n }\n });\n}, Ct = (s, t) => {\n const { entry: e, components: n, breakpoints: i, views: r } = t, c = [];\n return Object.keys(i).forEach((a) => {\n const u = i[a], h = window.matchMedia(u);\n h.matches && s.breakpoints.push(a);\n const o = (p) => {\n p.matches ? s.addBreakpoint(a) : s.removeBreakpoint(a);\n };\n h.addListener(o), c.push(() => h.removeListener(o));\n }), E(s, s.nodes.root, [e], n, r), () => c.forEach((a) => {\n a();\n });\n}, Et = (s, t) => ({\n id: s.id,\n type: s.type,\n name: s.name,\n branch: t || \"default\"\n}), Ot = (s, t, e, n = O(), i = {}) => s.getAsync(\"components\").then((r) => {\n let c;\n if (typeof t == \"string\") {\n const h = new P(r);\n h.ofType(t), c = h;\n } else\n c = t;\n const a = {}, u = (h) => {\n const o = a[h.id];\n return o ? Promise.resolve(o.controller) : pt.getInstance(s).then((p) => new H(p, h, n));\n };\n r.events.subscribe(\n \"components:node-enter\",\n (h, { node: o }) => {\n c.match(o) && u(o).then((p) => {\n Promise.resolve(e(p)).then((l) => {\n a[o.id] = {\n dispose: l,\n controller: p\n };\n });\n });\n }\n ), r.events.subscribe(\n \"components:node-exit\",\n (h, { node: o }) => {\n const p = a[o.id];\n p && (p.dispose && p.dispose(), i.reuseController || (p.controller.dispose(), delete a[o.id]));\n }\n );\n});\nclass Nt {\n constructor(t) {\n this.aliases = /* @__PURE__ */ new Map(), this.components = /* @__PURE__ */ new Map(), this.logger = new N();\n const { events: e } = t.get(\"$widget\");\n this.events = e;\n }\n getComponent(t) {\n const e = this.aliases.get(t), n = this.components.get(e || t) || null;\n return process.env.NODE_ENV !== \"production\" && (n || this.logger.warn(\n e || t,\n `Unable to resolve component: \"${e || t}\". You most likely forgot to register the required plugin for: ${e || t}.`\n )), n;\n }\n registerComponent(t, e) {\n return this.components.set(t, e), this.events.dispatch(\"component-resolver:resolve\", t), () => {\n this.components.delete(t);\n };\n }\n registerResolver(t, e) {\n return this.events.subscribe(\"component-resolver:resolve\", (n, i) => {\n if (i === t) {\n const r = this.getComponent(t);\n e(r);\n }\n });\n }\n registerAlias(t, e) {\n return this.aliases.set(t, e), this.events.dispatch(\"component-resolver:resolve\", t), () => {\n this.aliases.delete(t);\n };\n }\n}\nconst lt = \"#____version____#\", M = class extends Y {\n constructor(s, t = []) {\n super(s, t, {\n transformPluginSettings: (e, n, i) => {\n const r = i.get(\"$settings\"), c = r.plugins && n ? r.plugins[n] || {} : {};\n return y(y({}, c), e);\n }\n });\n }\n createImplementation(s) {\n const t = super.createImplementation(s);\n return t.bindings = s.bindings, t;\n }\n /**\n * Performs navigation for widgets matching the specified selector by invoking a\n * 'navigate' command.\n * @param selector Widget selector matching the widget(s) to perform navigation on.\n * @param route Route name.\n * @param params Route params.\n */\n navigate(s, t, e) {\n this.widgets.query(s).forEach((n) => n.invoke(\"navigate\", { route: t, params: e }));\n }\n /**\n * Creates a runtime based on provided configuration.\n * @param configuration Runtime configuration.\n */\n static create(s = {}) {\n const t = [G].concat(\n s.configurationApiExtensions || []\n );\n return new M(\"humany\", t);\n }\n /**\n * Creates a widget runtime based on provided configuration and retains configuration handlers\n * registered on global context. Use this factory to fully support the default embed script.\n * Will return any existing widget runtime if available.\n * @param configuration Runtime configuration.\n * @param global Object to read configuration handlers from (default: window).\n */\n static createFromGlobal(s, t = {}) {\n if (this.isRuntime(s))\n return s.patch(t), s;\n const e = [], n = s && s._c;\n n && n.forEach((r) => e.push(r));\n const i = this.create(t);\n return i.container.register(\"$runtimecfg\", e), i;\n }\n /**\n * Determines whether the specified object is a valid widget runtime.\n * @param obj Object to compare.\n */\n static isRuntime(s) {\n return !!(s && typeof s == \"object\" && s.container && typeof s.container.get == \"function\" && s.container.get(\"$environment\") === s && s.container.owner === s);\n }\n};\nlet dt = M;\ndt.version = `${lt} (${W})`;\nclass Pt extends J {\n constructor() {\n super(...arguments), this.bindings = [];\n }\n}\nclass kt extends X {\n constructor(t, e) {\n super(t, e);\n }\n}\nvar mt = /* @__PURE__ */ ((s) => (s.open = \"open\", s.closed = \"closed\", s.hidden = \"hidden\", s))(mt || {});\nclass $t extends Z {\n constructor(t) {\n super(t);\n }\n}\nexport {\n yt as ActionResolver,\n k as ActionsController,\n L as ComponentNode,\n H as ComponentNodeController,\n pt as ComponentPlatform,\n P as ComponentQuery,\n Nt as ComponentResolver,\n dt as Environment,\n Pt as Implementation,\n kt as Plugin,\n mt as WidgetRenderState,\n $t as WidgetType,\n Et as asDescriptor,\n xt as bootstrap,\n wt as componentConfigurationApi,\n E as createChildren,\n Ct as createComponentModel,\n tt as createEventSubscriber,\n Ot as extendComponent,\n nt as findComponent,\n w as findVisibleComponents,\n $ as traverseComponents,\n lt as version\n};\n//# sourceMappingURL=index.js.map\n","var q = Object.defineProperty;\nvar V = Object.getOwnPropertySymbols;\nvar B = Object.prototype.hasOwnProperty, G = Object.prototype.propertyIsEnumerable;\nvar W = (n, e, t) => e in n ? q(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t, p = (n, e) => {\n for (var t in e || (e = {}))\n B.call(e, t) && W(n, t, e[t]);\n if (V)\n for (var t of V(e))\n G.call(e, t) && W(n, t, e[t]);\n return n;\n};\nvar S = (n, e, t) => new Promise((r, s) => {\n var o = (a) => {\n try {\n c(t.next(a));\n } catch (g) {\n s(g);\n }\n }, i = (a) => {\n try {\n c(t.throw(a));\n } catch (g) {\n s(g);\n }\n }, c = (a) => a.done ? r(a.value) : Promise.resolve(a.value).then(o, i);\n c((t = t.apply(n, e)).next());\n});\nimport { Logger as l, lock as f, deepClone as H, hash as L } from \"@telia-ace/widget-utilities\";\nvar u = /* @__PURE__ */ ((n) => (n.Cookie = \"cookie\", n.Local = \"local\", n.Session = \"session\", n))(u || {}), C = /* @__PURE__ */ ((n) => (n.Tenant = \"tenant\", n.Implementation = \"implementation\", n.Widget = \"widget\", n))(C || {}), m = /* @__PURE__ */ ((n) => (n.Necessary = \"necessary\", n.Functional = \"functional\", n.Analytical = \"analytical\", n.Marketing = \"marketing\", n))(m || {});\nconst Q = (n, e, t, r = {}) => j(n, t).then((s) => (process.env.NODE_ENV !== \"production\" && s && l.warn(\n `createStorageWriter: Attempted to create storage writer using unallowed category.\n Key: ${e}\n Category: ${JSON.stringify(t)}\n Options: ${JSON.stringify(r)}`\n), (o) => (T(n), j(n, t).then((i) => {\n if (i) {\n process.env.NODE_ENV !== \"production\" && l.warn(\n `storageWriter: Attempted to write to storage using unallowed category.\n Key: ${e}\n Category: ${JSON.stringify(t)}\n Value: ${JSON.stringify(o)}\n Options: ${JSON.stringify(r)}`\n );\n return;\n }\n const {\n scope: c = C.Widget,\n medium: a = u.Session,\n duration: g\n } = r, d = Z();\n return d[c][e] = x(o, t, g), a === u.Cookie ? re(n, d) : se(n, a, d);\n})))), X = (n, e, t = u.Session) => (T(n), typeof e == \"undefined\" ? (process.env.NODE_ENV !== \"production\" && l.warn(\"readStorage: Undefined key passed when reading storage. \", e, t), Promise.resolve(void 0)) : t === u.Cookie ? ne(n).then((r) => $(r, e)) : oe(n, t).then((r) => $(r, e))), h = (n) => !!Object.entries(n).filter(([e, t]) => typeof t != \"undefined\").length, b = (n) => Object.entries(n).filter(([e, t]) => typeof t != \"undefined\").forEach(([e, { value: t }]) => {\n typeof t == \"undefined\" && delete n[e];\n}), z = (n, e) => {\n const t = {\n tenant: p(p({}, n.tenant), e.tenant),\n implementation: p(p({}, n.implementation), e.implementation),\n widget: p(p({}, n.widget), e.widget)\n };\n return b(t.tenant), b(t.implementation), b(t.widget), t;\n}, Y = (n) => Object.entries(n).reduce((t, r) => {\n const [s, o] = r;\n return Object.entries(o).forEach((i) => {\n const [c, { expiration: a }] = i;\n a && t.push(a);\n }), t;\n}, []).slice().sort((t, r) => new Date(r).valueOf() - new Date(t).valueOf()).shift() || P(), E = (n) => {\n const {\n name: e,\n implementation: { name: t, tenant: r }\n } = n.get(\"$widget\");\n return [\n `humany_${r}`,\n `humany_${L(r + t)}`,\n `humany_${L(r + t + e)}`\n ];\n}, I = (n) => {\n const e = new RegExp(`(?:^|;)\\\\s?${n}=(.*?)(?:;|$)`, \"i\"), t = document.cookie.match(e);\n return t && t[1] && JSON.parse(t[1]) || void 0;\n}, J = (n, e, t) => {\n const r = `${n}=${JSON.stringify(e).trim()}`, s = `expires=${new Date(t).toUTCString()}`, o = \"path=/\", i = \"SameSite=None;Secure\";\n return document.cookie = `${r}; ${s}; ${o}; ${i}`;\n}, _ = (n) => {\n const [e, t, r] = E(n), s = I(e) || {}, o = I(t) || {}, i = I(r) || {};\n return {\n tenant: s,\n implementation: o,\n widget: i\n };\n}, M = (n, e) => {\n const t = _(n), r = z(t, e), [s, o, i] = E(n), { tenant: c, implementation: a, widget: g } = r, d = Y(e), w = P({ days: -1 });\n J(s, c, h(c) ? d : w), J(\n o,\n a,\n h(a) ? d : w\n ), J(i, g, h(g) ? d : w);\n}, O = (n, e) => {\n const [t, r, s] = E(n), o = e.getItem(t) || \"{}\", i = e.getItem(r) || \"{}\", c = e.getItem(s) || \"{}\";\n return {\n tenant: JSON.parse(o),\n implementation: JSON.parse(i),\n widget: JSON.parse(c)\n };\n}, K = (n, e, t) => {\n const r = O(n, e), s = z(r, t), [o, i, c] = E(n), { tenant: a, implementation: g, widget: d } = s;\n h(a) ? e.setItem(o, JSON.stringify(a)) : e.removeItem(o), h(g) ? e.setItem(i, JSON.stringify(g)) : e.removeItem(i), h(d) ? e.setItem(c, JSON.stringify(d)) : e.removeItem(c);\n}, Z = () => ({ tenant: {}, implementation: {}, widget: {} }), ee = (n) => n ? !!n && /* @__PURE__ */ new Date() > new Date(n) : !1, $ = (n, e) => {\n const t = n.widget[e] || n.implementation[e] || n.tenant[e];\n return t == null ? void 0 : t.value;\n}, x = (n, e, t) => t ? {\n value: n,\n category: e,\n expiration: typeof t == \"object\" ? P(t) : t\n} : {\n value: n,\n category: e\n}, v = (n, e) => {\n const t = H(n);\n return Object.entries(t).forEach(([r, s]) => {\n Object.entries(s).forEach(([o, i]) => {\n const { expiration: c, category: a } = i;\n (ee(c) || te(e, a)) && (s[o] = x(void 0, a, c));\n });\n }), t;\n}, j = (n, e) => X(n, \"storagePolicy\", u.Cookie).then(\n (t = [m.Necessary]) => !!e && t.indexOf(e) === -1\n), te = (n = [m.Necessary], e) => !!e && n.indexOf(e) === -1, T = (n) => {\n const e = _(n), t = O(n, window.localStorage), r = O(n, sessionStorage), s = $(e, \"storagePolicy\"), [o, i, c] = [\n e,\n t,\n r\n ].map((a) => v(a, s));\n M(n, o), K(n, window.localStorage, i), K(n, window.sessionStorage, c);\n}, P = (n = { days: 30 }) => {\n const { days: e = 0, hours: t = 0, minutes: r = 0, seconds: s = 0 } = n, o = /* @__PURE__ */ new Date();\n return o.setTime(o.getTime() + t * 60 * 60 * 1e3), o.setTime(o.getTime() + e * 24 * 60 * 60 * 1e3), o.setTime(o.getTime() + r * 60 * 1e3), o.setTime(o.getTime() + s * 1e3), o.toISOString();\n}, ne = (n) => f(document)(() => _(n)), re = (n, e) => f(document)(() => M(n, e)), oe = (n, e) => {\n const t = e === u.Local ? window.localStorage : window.sessionStorage;\n return f(t)(() => O(n, t));\n}, se = (n, e, t) => {\n const r = e === u.Local ? window.localStorage : window.sessionStorage;\n return f(r)(() => K(n, r, t));\n};\nclass k {\n constructor() {\n this.memory = {\n tenant: {},\n implementation: {},\n widget: {}\n };\n }\n setItem(s, o) {\n return S(this, arguments, function* (e, t, r = {}) {\n return f(this)(() => {\n const i = v(this.memory, [m.Necessary]), { scope: c = C.Tenant, expiration: a } = r;\n i[c][e] = x(\n t,\n m.Necessary,\n (a == null ? void 0 : a.toISOString()) || P()\n ), this.memory = i, process.env.NODE_ENV !== \"production\" && l.warn(\n `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value stored temporarily in memory.\n Key: ${e}\n Value: ${JSON.stringify(t)}\n Options: ${JSON.stringify(r)}\n Memory: ${JSON.stringify(i)}`\n );\n });\n });\n }\n getItem(e) {\n return S(this, null, function* () {\n return f(this)(() => {\n const t = v(this.memory, [m.Necessary]);\n process.env.NODE_ENV !== \"production\" && l.warn(\n `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value fetched from legacy memory storage.\n Key: ${e}\n Memory: ${JSON.stringify(t)}`\n );\n const r = $(t, e);\n return this.memory = t, r;\n });\n });\n }\n removeItem(e) {\n return S(this, null, function* () {\n return f(this)(() => {\n const t = v(this.memory, [m.Necessary]);\n delete t.tenant[e], delete t.implementation[e], delete t.widget[e], this.memory = t, process.env.NODE_ENV !== \"production\" && l.warn(\n `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value removed from memory.\n Key: ${e}\n Memory: ${JSON.stringify(t)}`\n );\n });\n });\n }\n clear() {\n return S(this, null, function* () {\n return Promise.resolve();\n });\n }\n}\nclass de {\n constructor() {\n this.cookies = new k(), this.session = new k(), this.local = new k();\n }\n}\nconst D = (n, e, t, ...r) => {\n const s = `[${n.get(\"$environment\").name || \"webprovisions\"}] ${t}`;\n switch (e) {\n case \"info\":\n console.info(s, ...r);\n break;\n case \"warning\":\n console.warn(s, ...r);\n break;\n case \"error\":\n console.error(s, ...r);\n break;\n }\n}, ie = (n) => {\n const e = n.container || n;\n return {\n info: (t, ...r) => D(e, \"info\", t, ...r),\n warn: (t, ...r) => D(e, \"warning\", t, ...r),\n error: (t, ...r) => D(e, \"error\", t, ...r)\n };\n};\nvar A = /* @__PURE__ */ ((n) => (n.Implementation = \"implementation\", n.Widget = \"widget\", n))(A || {}), y = /* @__PURE__ */ ((n) => (n.Pre = \"pre\", n.Post = \"post\", n))(y || {});\nconst ae = (n, e, t, r) => {\n try {\n const s = new e(t, r);\n return {\n name: n,\n invoke: (o, i) => {\n let c;\n return s[o] && (c = s[o].call(s, i)), Promise.resolve(c);\n },\n getInstance: () => s\n };\n } catch (s) {\n if (s.message && s.message.indexOf(\"is not a constructor\") >= 0)\n return {\n name: n,\n invoke: (o) => {\n let i;\n return o === \"initialize\" && (i = e(t, r)), Promise.resolve(i);\n },\n getInstance: () => e\n };\n throw s;\n }\n};\nfunction F(n, e) {\n return typeof n == \"undefined\" ? e : n;\n}\nclass ce {\n constructor(e = {}) {\n this.part = e;\n }\n createCommand(e, t, r) {\n let s;\n typeof t == \"function\" ? s = {\n scope: A.Widget,\n stage: y.Post,\n defaultArgs: void 0,\n handlerResolver: t\n } : s = {\n scope: F(t.scope, A.Widget),\n stage: F(t.stage, y.Post),\n defaultArgs: t.defaultArgs,\n handlerResolver: r\n };\n let o = this.part;\n const i = e.split(\".\");\n return i.forEach((c, a) => {\n a === i.length - 1 ? o[c] || (o[c] = () => s) : o = this.part[c] = this.part[c] || {};\n }), this;\n }\n get() {\n return this.part;\n }\n}\nconst R = (n) => {\n const e = new ce({});\n return n(e), e.get();\n};\nR((n) => {\n n.createCommand(\n \"types.register\",\n { scope: A.Implementation, stage: y.Pre },\n (e) => (t, r) => {\n e.container.get(\"$types\")[t] = r;\n }\n ).createCommand(\n \"type\",\n { stage: y.Pre },\n (e) => (t) => {\n e.container.register(\"$type\", t);\n }\n ).createCommand(\n \"settings\",\n { stage: y.Pre, defaultArgs: [null] },\n (e) => (t) => {\n e.events.dispatch(\n \"settings:change\",\n t,\n { bubbles: !0 }\n ), e.container.register(\"$settings\", t);\n }\n ).createCommand(\n \"plugin\",\n { stage: y.Pre },\n (e) => (t, r, s) => {\n const { container: o } = e;\n let i = null, c = t, a = r;\n typeof t == \"string\" && (i = t, c = r, a = s);\n const g = (d) => {\n const { transformPluginSettings: w } = e.container.get(\"$environmentOptions\"), U = w ? w(\n a || {},\n i,\n e.container,\n c\n ) : r;\n try {\n const N = ae(\n i,\n c,\n o,\n U\n );\n o.get(\"$plugins\").push(N), d && N.invoke(\"initialize\", null);\n } catch (N) {\n ie(e).warn(\"Error when initializing plugin\", N);\n }\n };\n e.container.get(\"$instance\") ? g(!0) : e.events.subscribeOnce(\"widget:instance-created\", () => g(!1));\n }\n ).createCommand(\n \"container.register\",\n (e) => (t, r) => {\n e.container.register(t, r);\n }\n ).createCommand(\n \"container.registerAsync\",\n (e) => (t, r) => {\n e.container.registerAsync(t, r);\n }\n ).createCommand(\n \"container.registerFactory\",\n (e) => (t, r) => {\n e.container.registerFactory(t, r);\n }\n ).createCommand(\n \"container.touch\",\n (e) => (t, r) => {\n e.container.touch(t, r);\n }\n ).createCommand(\n \"csp\",\n {},\n (e) => (t) => {\n e.container.register(\"csp\", t);\n }\n );\n});\nconst le = R((n) => {\n n.createCommand(\"storage\", (e) => (t = {}) => {\n const { consent: r } = t;\n if (typeof r != \"undefined\") {\n if (typeof r != \"number\" && typeof r != \"string\" && !Array.isArray(r)) {\n process.env.NODE_ENV !== \"production\" && l.warn(\n `storagePolicyConfigurationApi: passed consent is not valid. Consent either has to be a number, a string, an array of strings or an array of numbers.\n Passed consent: ${JSON.stringify(r)}`\n );\n return;\n }\n if (Array.isArray(r) && !r.every(\n (o) => typeof o == \"number\" || typeof o == \"string\"\n )) {\n process.env.NODE_ENV !== \"production\" && l.warn(\n `storagePolicyConfigurationApi: passed consent is not valid. Consent either has to be a number, a string, an array of strings or an array of numbers.\n Passed consent: ${JSON.stringify(r)}`\n );\n return;\n }\n const s = [\n m.Necessary,\n m.Functional,\n m.Analytical,\n m.Marketing\n ].filter((o, i, c) => typeof r == \"number\" ? r > i : typeof r == \"string\" ? c.indexOf(r) + 1 > i : Array.isArray(r) ? r.findIndex((a) => a === i + 1 || a === o) > -1 : !0);\n return s.indexOf(m.Necessary) === -1 && (process.env.NODE_ENV !== \"production\" && l.warn(\n `storagePolicyConfigurationApi: passed consent does not include category: '${m.Necessary}'. Consent has to atleast include the '${m.Necessary}' category.\n Passed consent: ${JSON.stringify(r)}`\n ), s.unshift(m.Necessary)), Q(\n e.container,\n \"storagePolicy\",\n m.Necessary,\n {\n medium: u.Cookie,\n scope: C.Tenant,\n duration: { days: 365 }\n }\n ).then((o) => o(s)).then(() => {\n T(e.container), e.events.dispatch(\"storage:policy-changed\", s);\n });\n }\n });\n});\nexport {\n m as StorageCategory,\n u as StorageMedium,\n de as StorageProvider,\n C as StorageScope,\n k as StorageService,\n Q as createStorageWriter,\n X as readStorage,\n le as storagePolicyConfigurationApi\n};\n//# sourceMappingURL=index.js.map\n","import { EventSubscriptionCancellation, Widget } from '@webprovisions/platform';\r\nimport {\r\n ConversationController,\r\n ConversationMessageType,\r\n getNormalizedMessageSettings,\r\n} from './conversation-controller';\r\nimport { ConversationMessageContent, ConversationMessageSender } from './types';\r\n\r\ntype ConversationLogMessage = {\r\n message?: string;\r\n options?: string[];\r\n alias: string;\r\n source: string;\r\n timestamp: number | null;\r\n};\r\n\r\nexport class ConversationHistory {\r\n private cache: Map<string, any> = new Map();\r\n\r\n private subscriptions: EventSubscriptionCancellation[] = [];\r\n\r\n constructor(private controller: ConversationController) {\r\n const { events } = controller.container.get('$widget') as Widget;\r\n\r\n const unsubscribe = events.subscribe('data-client:fetched', (_e, data) => {\r\n if (data.type === 'contact-method') {\r\n this.cache.set(data.response.id, data.response);\r\n }\r\n });\r\n this.subscriptions.push(unsubscribe);\r\n }\r\n\r\n getConversationLogs(): ConversationLogMessage[] {\r\n const logs = this.controller.messages.reduce<ConversationLogMessage[]>(\r\n (acc, message) => {\r\n const normalized = getNormalizedMessageSettings(message as any);\r\n const { content, type, sender, timestamp } = normalized.content;\r\n\r\n const parsed = this.parseEntry(content, type, sender, timestamp);\r\n\r\n if (parsed) {\r\n acc.push(parsed);\r\n }\r\n\r\n return acc;\r\n },\r\n []\r\n );\r\n\r\n return logs;\r\n }\r\n\r\n parseEntry(\r\n content: ConversationMessageContent,\r\n type: ConversationMessageType,\r\n sender?: ConversationMessageSender,\r\n timestamp?: any | null\r\n ) {\r\n const handle = (body: any | any[]) => {\r\n let options: string[] = [];\r\n let messagesAsList: string[] = [];\r\n\r\n let messageData: any;\r\n\r\n // the actual content could also be an array,\r\n if (Array.isArray(body)) {\r\n const [_type, data] = body;\r\n messageData = data;\r\n } else {\r\n messageData = body;\r\n }\r\n\r\n const message = this.createMessageContent(messageData);\r\n if (message.length) {\r\n messagesAsList = [\r\n ...messagesAsList,\r\n this.createMessageContent(messageData),\r\n ];\r\n }\r\n options = [...options, ...this.createMessageOptions(messageData)];\r\n\r\n return {\r\n messagesAsList,\r\n options,\r\n };\r\n };\r\n\r\n let options: string[] = [];\r\n let messagesAsList: string[] = [];\r\n\r\n // a message could be either an array or just the content itself\r\n if (Array.isArray(content.items)) {\r\n const { items } = content;\r\n items.forEach((item) => {\r\n const res = handle(item);\r\n options = [...options, ...res.options];\r\n messagesAsList = [...messagesAsList, ...res.messagesAsList];\r\n });\r\n } else {\r\n const res = handle(content);\r\n options = [...options, ...res.options];\r\n messagesAsList = [...messagesAsList, ...res.messagesAsList];\r\n }\r\n\r\n const result: ConversationLogMessage = {\r\n options: options,\r\n message: messagesAsList.length ? messagesAsList.join('\\n') : undefined,\r\n source: this.createMessageSource(type),\r\n alias: this.createAlias(type, sender),\r\n timestamp,\r\n };\r\n\r\n return result;\r\n }\r\n\r\n private createMessageSource(type: ConversationMessageType) {\r\n return type;\r\n }\r\n\r\n private createAlias(\r\n type: ConversationMessageType,\r\n sender?: ConversationMessageSender\r\n ) {\r\n if (type === ConversationMessageType.System) {\r\n return 'system';\r\n }\r\n return sender?.name || 'Me';\r\n }\r\n\r\n private handleContactMethod(contactMethodId: string) {\r\n if (!this.cache.has(contactMethodId)) {\r\n return;\r\n }\r\n\r\n const method = this.cache.get(contactMethodId);\r\n\r\n let result = '';\r\n\r\n result = this.appendText(result, `${method.clientName}:`);\r\n result = this.appendText(result, method.title);\r\n if (method.description) {\r\n result = this.appendText(result, method.title);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private getDetails(item: any, linebreak = true) {\r\n if (!item) {\r\n return '';\r\n }\r\n\r\n const {\r\n header,\r\n title,\r\n label,\r\n description,\r\n text,\r\n html,\r\n body,\r\n contactMethodId,\r\n } = item;\r\n let result = '';\r\n\r\n if (contactMethodId) {\r\n const text = this.handleContactMethod(contactMethodId.toString());\r\n if (text) {\r\n result = this.appendText(result, text, linebreak);\r\n }\r\n }\r\n\r\n if (header) {\r\n result = this.appendText(result, header, linebreak);\r\n }\r\n if (title) {\r\n result = this.appendText(result, title, linebreak);\r\n }\r\n if (description) {\r\n result = this.appendText(result, description, linebreak);\r\n }\r\n if (text) {\r\n result = this.appendText(result, text, linebreak);\r\n }\r\n if (label) {\r\n result = this.appendText(result, label, linebreak);\r\n }\r\n if (html) {\r\n result = this.appendText(result, html, linebreak);\r\n }\r\n if (body) {\r\n if (typeof body === 'string') {\r\n result = this.appendText(result, body, linebreak);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n private createMessageContent(data: any) {\r\n let message = '';\r\n\r\n message = this.getDetails(data);\r\n\r\n return message;\r\n }\r\n\r\n private createMessageOptions(data: any): any[] {\r\n let options = [];\r\n let actions = [];\r\n\r\n if (Array.isArray(data?.actions)) {\r\n actions = data.actions;\r\n } else if (typeof data?.actions === 'object') {\r\n actions = Object.entries(data.actions).map(([key, value]) => {\r\n return {\r\n actionKey: key,\r\n label: value,\r\n };\r\n });\r\n }\r\n\r\n if (actions.length) {\r\n options = actions.map((option: any) => {\r\n return this.getDetails(option, false);\r\n });\r\n }\r\n return options;\r\n }\r\n\r\n private appendText(target: string, value: string, linebreak = true) {\r\n if (linebreak) {\r\n if (target.length) {\r\n return `${target}\\n${value}`;\r\n }\r\n }\r\n return target.length ? `${target} ${value}` : value;\r\n }\r\n\r\n dispose() {\r\n this.subscriptions.forEach((unsubscribe) => {\r\n unsubscribe();\r\n });\r\n }\r\n}\r\n","import { uuid } from '@telia-ace/widget-utilities';\r\nimport {\r\n ConversationEntry,\r\n ConversationMessageType,\r\n getNormalizedMessageSettings,\r\n} from './conversation-controller';\r\nimport { ConversationProvider } from './conversation-provider';\r\nimport {\r\n ConversationMessageSender,\r\n ConversationMessageSettings,\r\n ConverstationMessageItem,\r\n Symbol,\r\n} from './types';\r\n\r\nexport type AgentSettings = {\r\n id?: string;\r\n name?: string;\r\n avatar?: string | Symbol;\r\n};\r\n\r\nexport class Agent {\r\n id: string;\r\n name?: string;\r\n avatar?: string | Symbol;\r\n\r\n constructor(\r\n private provider: ConversationProvider,\r\n settings: AgentSettings\r\n ) {\r\n this.id = settings.id || uuid();\r\n this.name = settings.name;\r\n this.avatar = settings.avatar;\r\n }\r\n\r\n print = (\r\n settings:\r\n | string\r\n | ConversationMessageSettings\r\n | ConverstationMessageItem<any>\r\n | ConverstationMessageItem<any>[],\r\n options?: {\r\n key?: string;\r\n }\r\n ): ConversationEntry | undefined => {\r\n const sender: ConversationMessageSender = {\r\n name: this.name,\r\n avatar: this.avatar,\r\n id: this.id,\r\n };\r\n const normalized = getNormalizedMessageSettings(settings, options);\r\n\r\n return this.provider.createEntry(\r\n normalized.key,\r\n normalized.content,\r\n ConversationMessageType.Agent,\r\n sender,\r\n normalized.timestamp\r\n );\r\n };\r\n typing = () => {\r\n return this.provider.setTypingState({\r\n name: this.name,\r\n avatar: this.avatar,\r\n });\r\n };\r\n\r\n update(settings: AgentSettings): void {\r\n const { name, avatar } = settings;\r\n if (avatar === null) {\r\n this.avatar = undefined;\r\n } else if (avatar) {\r\n this.avatar = avatar;\r\n }\r\n\r\n if (name === null) {\r\n this.name = undefined;\r\n } else if (name) {\r\n this.name = name;\r\n }\r\n\r\n this.provider.controller?.events.dispatch('conversation:agent-updated', {\r\n agent: this,\r\n });\r\n }\r\n}\r\n","import {\r\n Container,\r\n EventListener,\r\n EventObject,\r\n EventSubscriptionCancellation,\r\n} from '@webprovisions/platform';\r\nimport { Agent, AgentSettings } from './agent';\r\nimport {\r\n CancelLoaderDelegate,\r\n ConversationController,\r\n ConversationEntry,\r\n ConversationMessageType,\r\n ConversationOptions,\r\n} from './conversation-controller';\r\nimport {\r\n ConversationMessageContent,\r\n ConversationMessageSender,\r\n ConversationMessageSettings,\r\n} from './types';\r\n\r\nexport class ConversationProvider {\r\n private subscriptions: EventSubscriptionCancellation[] = [];\r\n public options: ConversationOptions;\r\n public user: any;\r\n\r\n private constructor(\r\n public name: string,\r\n _container: Container,\r\n public controller: ConversationController | null\r\n ) {\r\n this.user = controller?.user;\r\n this.options = {\r\n silent: false,\r\n };\r\n }\r\n\r\n static create(\r\n name: string,\r\n container: Container,\r\n controller: ConversationController\r\n ) {\r\n return new ConversationProvider(name, container, controller);\r\n }\r\n\r\n createAgent(settings: AgentSettings = {}): Agent | undefined {\r\n if (this.controller) {\r\n const storedAgent = this.controller.getAgentById(settings.id);\r\n\r\n const agent = storedAgent\r\n ? new Agent(this, { ...storedAgent, ...settings })\r\n : new Agent(this, settings);\r\n if (!storedAgent) {\r\n this.controller?.events.dispatch('conversation:agent-created', {\r\n agent,\r\n });\r\n }\r\n return agent;\r\n }\r\n }\r\n\r\n print(\r\n settings: string | ConversationMessageSettings\r\n ): ConversationEntry | undefined {\r\n return this.controller?.print(settings);\r\n }\r\n\r\n setTypingState(\r\n sender: ConversationMessageSender,\r\n type?: ConversationMessageType\r\n ) {\r\n return this.controller?.setTypingState(sender, type);\r\n }\r\n\r\n loading(): CancelLoaderDelegate {\r\n if (!this.controller) {\r\n return () => () => {};\r\n }\r\n return this.controller.loader();\r\n }\r\n\r\n createEntry(\r\n key: string,\r\n content: ConversationMessageContent,\r\n type: ConversationMessageType,\r\n sender?: ConversationMessageSender,\r\n timestamp?: number | null\r\n ) {\r\n return this.controller?.createEntry(key, content, type, sender, timestamp);\r\n }\r\n\r\n dispose() {\r\n if (process.env.NODE_ENV !== 'production') {\r\n console.log(`conversation-provider: dispose (${this.name})`);\r\n }\r\n this.controller?.disposeProvider(this);\r\n this.controller = null;\r\n this.subscriptions.forEach((unsub) => unsub());\r\n }\r\n\r\n isRehydrated() {\r\n return this.controller?.isRehydrated() || Promise.resolve(false);\r\n }\r\n\r\n getHistory() {\r\n return this.controller?.getHistory() || [];\r\n }\r\n\r\n complete() {\r\n this.controller?.onCompleteProvider();\r\n }\r\n\r\n setOptions(options: ConversationOptions = { silent: false }) {\r\n this.options = options;\r\n }\r\n\r\n onUnreadMessage(fn: EventListener): EventSubscriptionCancellation | void {\r\n if (this.controller) {\r\n const unsubscribe = this.controller?.onUnreadMessage(fn);\r\n this.subscriptions.push(unsubscribe);\r\n return () => {\r\n unsubscribe();\r\n };\r\n }\r\n }\r\n\r\n onMounted(fn: EventListener): EventSubscriptionCancellation | void {\r\n if (this.controller) {\r\n const unsubscribe = this.controller?.events.subscribe(\r\n 'conversation:component-mount-changed',\r\n fn\r\n );\r\n this.subscriptions.push(unsubscribe);\r\n fn({} as EventObject, this.controller.getComponentMountedState());\r\n return () => {\r\n unsubscribe();\r\n };\r\n }\r\n }\r\n}\r\n\r\nexport default ConversationProvider;\r\n","import {\r\n createStorageWriter,\r\n readStorage,\r\n StorageCategory,\r\n} from '@telia-ace/widget-services';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { Agent, AgentSettings } from './agent';\r\nimport { ConversationController } from './conversation-controller';\r\n\r\ntype StoredConversationAgent = {\r\n id: string;\r\n name: string;\r\n avatar?: string;\r\n providerName: string;\r\n};\r\ntype StoredConversationMessage = any;\r\n\r\ntype StoredConversation = {\r\n agents: StoredConversationAgent[];\r\n messages: StoredConversationMessage[];\r\n};\r\n\r\nexport const createSessionStorageKey = (id: string) => {\r\n return `conversation-${id}`;\r\n};\r\n\r\nclass Locker {\r\n private _locking: Promise<void> = Promise.resolve();\r\n private _locks: number = 0;\r\n\r\n isLocked() {\r\n return this._locks > 0;\r\n }\r\n\r\n lock() {\r\n this._locks += 1;\r\n\r\n let unlockNext: () => void;\r\n\r\n let willLock = new Promise<void>(\r\n (resolve) =>\r\n (unlockNext = () => {\r\n this._locks -= 1;\r\n\r\n resolve();\r\n })\r\n );\r\n\r\n let willUnlock = this._locking.then(() => unlockNext);\r\n\r\n this._locking = this._locking.then(() => willLock);\r\n\r\n return willUnlock;\r\n }\r\n}\r\n\r\nclass Store {\r\n private sessionStorageKey: string;\r\n private locker = new Locker();\r\n private initialStoredAgents: StoredConversationAgent[] = [];\r\n\r\n constructor(\r\n private container: Container,\r\n conversation: ConversationController,\r\n private enabled: boolean // whether or not to store data\r\n ) {\r\n this.sessionStorageKey = createSessionStorageKey(conversation.id);\r\n\r\n conversation.onStarted(async () => {\r\n if (conversation.messages.length > 0) {\r\n // if the conversation already contains messages\r\n // for example when re-opening a minimized widget,\r\n // we do not want to do anything\r\n return;\r\n }\r\n const { agents: storedAgents } = await this.read();\r\n\r\n const agents: Agent[] = [];\r\n\r\n if (storedAgents) {\r\n storedAgents.forEach((a) => {\r\n const providerIndex = conversation.providerIndex(a.providerName);\r\n const provider =\r\n providerIndex > -1\r\n ? conversation.registeredProviders[providerIndex]\r\n : conversation.createProvider(a.providerName);\r\n\r\n const agent = new Agent(provider, {\r\n name: a.name,\r\n avatar: a.avatar,\r\n id: a.id,\r\n });\r\n agents.push(agent);\r\n });\r\n }\r\n\r\n const { messages: storedMessages } = await this.read();\r\n storedMessages.forEach((message) => {\r\n switch (message.type) {\r\n case 'agent': {\r\n const agent = agents.find((a) => a.id === message.sender?.id);\r\n if (agent) {\r\n agent.print(message.content.items || message.content, {\r\n key: message.key,\r\n });\r\n }\r\n return;\r\n }\r\n case 'user': {\r\n conversation.user.print(message.content.items || message.content, {\r\n key: message.key,\r\n });\r\n return;\r\n }\r\n case 'system':\r\n default: {\r\n conversation.print(message.content.items || message.content);\r\n }\r\n }\r\n });\r\n });\r\n conversation.onMessageCreated(async (_, data) => {\r\n this.write(data.message, 'messages');\r\n });\r\n\r\n conversation.events.subscribe(\r\n 'conversation:agent-created',\r\n async (_, data) => {\r\n const agent = {\r\n id: data.agent.id,\r\n name: data.agent.name,\r\n avatar: data.agent.avatar,\r\n providerName: data.agent.provider.name,\r\n };\r\n await this.write(agent, 'agents');\r\n }\r\n );\r\n\r\n conversation.events.subscribe(\r\n 'conversation:agent-updated',\r\n async (_, data) => {\r\n const { agents } = await this.read();\r\n\r\n await this.write(\r\n [\r\n ...agents.map((a) => {\r\n if (a.id === data.agent.id) {\r\n return {\r\n ...a,\r\n name: data.agent.name,\r\n avatar: data.agent.avatar,\r\n };\r\n }\r\n return a;\r\n }),\r\n ],\r\n 'agents',\r\n 'update'\r\n );\r\n }\r\n );\r\n }\r\n\r\n setInitialData(data: { agents: AgentSettings[] }) {\r\n this.initialStoredAgents = data.agents as StoredConversationAgent[];\r\n }\r\n\r\n async isRehydrated() {\r\n const { messages } = await this.read();\r\n return messages.length > 0;\r\n }\r\n\r\n getStoredAgent(agentId: string) {\r\n if (!this.enabled) {\r\n return;\r\n }\r\n return this.initialStoredAgents.find((a) => a.id === agentId);\r\n }\r\n\r\n async write(\r\n data: any,\r\n type: 'messages' | 'agents',\r\n action: 'add' | 'update' = 'add'\r\n ) {\r\n if (!this.enabled) {\r\n return;\r\n }\r\n\r\n const unlock = await this.locker.lock();\r\n return createStorageWriter(\r\n this.container,\r\n this.sessionStorageKey,\r\n StorageCategory.Necessary\r\n ).then(async (write) => {\r\n if (action === 'add') {\r\n const prev = await this.read();\r\n\r\n // ensure that we don't duplicate messages by looking at their unqiue keys\r\n if (\r\n type === 'messages' &&\r\n prev.messages.findIndex((m) => m.key === data.key) > -1\r\n ) {\r\n unlock();\r\n return;\r\n }\r\n\r\n let newData = {\r\n ...prev,\r\n };\r\n\r\n if (type === 'messages') {\r\n newData.messages = [...newData.messages, data];\r\n } else if (type === 'agents') {\r\n newData.agents = [...newData.agents, data];\r\n }\r\n\r\n return write({\r\n ...prev,\r\n ...newData,\r\n }).then(() => {\r\n unlock();\r\n });\r\n }\r\n\r\n if (action === 'update') {\r\n if (type === 'agents') {\r\n const prev = await this.read();\r\n\r\n return write({\r\n ...prev,\r\n agents: data,\r\n }).then(() => {\r\n unlock();\r\n });\r\n }\r\n }\r\n\r\n return write(data).then(() => {\r\n unlock();\r\n });\r\n });\r\n }\r\n\r\n async read() {\r\n return readStorage(this.container, this.sessionStorageKey).then((data) => {\r\n if (!data) {\r\n return {\r\n messages: [],\r\n agents: [],\r\n };\r\n }\r\n return data as StoredConversation;\r\n });\r\n }\r\n}\r\n\r\nexport default Store;\r\n","import {\r\n ConversationController,\r\n ConversationEntry,\r\n ConversationMessageType,\r\n getNormalizedMessageSettings,\r\n} from './conversation-controller';\r\nimport { ConversationMessageSettings } from './types';\r\n\r\nexport class User {\r\n constructor(private controller: ConversationController) {}\r\n\r\n print = (\r\n settings: string | ConversationMessageSettings,\r\n options?: {\r\n key?: string;\r\n }\r\n ): ConversationEntry => {\r\n const normalized = getNormalizedMessageSettings(settings, options);\r\n return this.controller.createEntry(\r\n normalized.key,\r\n normalized.content,\r\n ConversationMessageType.User,\r\n undefined,\r\n normalized.timestamp\r\n );\r\n };\r\n}\r\n","import { ComponentPlatform } from '@telia-ace/widget-core';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { ConversationPlatform } from '../conversation-platform';\r\n\r\n/**\r\n * This will put the current provider(s) in a queue and\r\n * swap current provider to another one based on the providerName.\r\n * When ConversationProvider.complete() is called, the provider(s) in the\r\n * queue will become active again\r\n */\r\nexport const swapProvider = async (\r\n container: Container,\r\n conversationId: string,\r\n providerName: string\r\n) => {\r\n const conversation: ConversationPlatform = await container.getAsync('conversation');\r\n const components: ComponentPlatform = await container.getAsync('components');\r\n const currentInstance = conversation.controllers.find((c) => {\r\n return c.conversation.id === conversationId;\r\n });\r\n\r\n if (currentInstance) {\r\n const toQueue = [...currentInstance.conversation.providers];\r\n toQueue.forEach((name) => {\r\n currentInstance.conversation.setProviderOptions(name, { silent: true });\r\n });\r\n currentInstance.conversation.queueProviders(toQueue);\r\n currentInstance.conversation.setProviders([providerName]);\r\n const conversationQuery = components.components().ofType('conversation');\r\n components.write({\r\n key: 'setConversationProvider',\r\n attributes: {\r\n properties: { providers: [providerName] },\r\n },\r\n target: conversationQuery,\r\n provider: 'localStorage',\r\n });\r\n }\r\n};\r\n","// import { FormBuilder } from '@telia-ace/widget-forms';\r\nimport { uuid } from '@telia-ace/widget-utilities';\r\nimport {\r\n Container,\r\n EventListener,\r\n EventManager,\r\n Widget,\r\n} from '@webprovisions/platform';\r\nimport { AgentSettings } from './agent';\r\nimport { ConversationHistory } from './conversation-history';\r\nimport { ConversationProvider } from './conversation-provider';\r\nimport Store from './store';\r\nimport {\r\n ConversationMessageContent,\r\n ConversationMessageSender,\r\n ConversationMessageSettings,\r\n ConversationMessageUpdateSettings,\r\n ConverstationMessageItem,\r\n NormalizedMessageSettings,\r\n} from './types';\r\nimport { User } from './user';\r\nimport { swapProvider } from './utils/swap-provider';\r\nexport type ValidateHandler = (formValues: {\r\n [key: string]: any;\r\n}) => Promise<any>;\r\n\r\nexport type SubmitHandler = (formValues: {\r\n [key: string]: any;\r\n}) => Promise<any>;\r\n\r\nexport type ConversationOptions = { silent: boolean };\r\n\r\nexport type Print = (\r\n content: string | ConversationMessageContent\r\n) => ConversationEntry;\r\n\r\nexport type FormHandlers = { [key: string]: FormHandler };\r\nexport type FormHandler = { validate?: ValidateHandler; submit: SubmitHandler };\r\n\r\nexport type CancelLoaderDelegate = () => void;\r\n\r\nexport class ConversationEntry {\r\n constructor(private writer: EntryWriter) {}\r\n\r\n update(\r\n content:\r\n | string\r\n | ConversationMessageUpdateSettings\r\n | ConverstationMessageItem<any>\r\n | ConverstationMessageItem<any>[]\r\n ) {\r\n const normalized = this.getNormalizedSettings(content);\r\n // const normalized = typeof content === 'string' ? { body: content } : content;\r\n this.writer(<ConversationMessageUpdateSettings>normalized);\r\n }\r\n\r\n remove() {\r\n this.writer(null);\r\n }\r\n\r\n private getNormalizedSettings(\r\n content:\r\n | string\r\n | ConversationMessageUpdateSettings\r\n | ConverstationMessageItem<any>\r\n | ConverstationMessageItem<any>[]\r\n ) {\r\n if (typeof content === 'string') return { body: content };\r\n else if (content.length > -1 && typeof content === 'object')\r\n return { items: content };\r\n else return content;\r\n }\r\n}\r\n\r\nexport enum ConversationMessageType {\r\n User = 'user',\r\n Agent = 'agent',\r\n System = 'system',\r\n}\r\n\r\nexport type ConversationMessage = {\r\n key: string;\r\n timestamp: number | null;\r\n content: ConversationMessageContent | null;\r\n sender: ConversationMessageSender | null;\r\n type: ConversationMessageType;\r\n};\r\n\r\nexport type EntryWriter = (\r\n content: ConversationMessageUpdateSettings | null\r\n) => void;\r\n\r\nexport const getNormalizedMessageSettings = (\r\n settings:\r\n | string\r\n | ConversationMessageSettings\r\n | ConverstationMessageItem<any>\r\n | ConverstationMessageItem<any>[],\r\n options?: {\r\n key?: string;\r\n }\r\n): NormalizedMessageSettings => {\r\n let content: ConversationMessageContent;\r\n let key = options?.key || uuid();\r\n let timestamp: number | null = Date.now();\r\n\r\n if (Array.isArray(settings) && settings.length > -1) {\r\n if (typeof settings[0] === 'string') {\r\n content = { items: [<ConverstationMessageItem<any>>settings] };\r\n } else {\r\n content = { items: <ConverstationMessageItem<any>[]>settings };\r\n }\r\n } else if (typeof settings === 'string') {\r\n content = { body: settings };\r\n } else {\r\n settings = <ConversationMessageSettings>settings || {};\r\n\r\n if (settings.type) {\r\n content = {\r\n ...(<any>settings),\r\n };\r\n } else {\r\n content = {\r\n body: settings.body,\r\n actions: settings.actions,\r\n title: settings.title,\r\n };\r\n if (settings.key) {\r\n key = settings.key;\r\n }\r\n if (settings.timestamp) {\r\n timestamp = settings.timestamp;\r\n }\r\n if (typeof settings.form === 'function') {\r\n // const builder = FormBuilder.create(key); // TODO:\r\n // settings.form(builder);\r\n // const builtForm = builder.get();\r\n // content.form = builtForm;\r\n }\r\n if (settings.timestamp === null) {\r\n timestamp = null;\r\n }\r\n }\r\n }\r\n return { content, key, timestamp };\r\n};\r\n\r\nconst removeTypingState = (\r\n typingActors: ConversationMessageSender[],\r\n sender?: ConversationMessageSender\r\n) => {\r\n if (!sender) {\r\n return;\r\n }\r\n const senderString = JSON.stringify(sender);\r\n const indexToRemove = typingActors.findIndex((item) => {\r\n return senderString === JSON.stringify(item);\r\n });\r\n if (indexToRemove > -1) {\r\n return typingActors.splice(indexToRemove, 1);\r\n }\r\n};\r\n\r\n/**\r\n * Manages the stream of messages inside a `ConversationComponent` and provides external read-write\r\n * access to it as well as exposing emitted actions.\r\n */\r\nexport class ConversationController {\r\n formHandlers: FormHandlers = {};\r\n\r\n /**\r\n * Represents the current end user.\r\n */\r\n user: User = new User(this);\r\n\r\n events: EventManager;\r\n\r\n providers: string[] = [];\r\n\r\n active: boolean = false;\r\n\r\n queuedProviders: string[] = [];\r\n\r\n registeredProviders: ConversationProvider[] = [];\r\n\r\n private loaders: number = 0;\r\n private componentMounted: boolean = false;\r\n\r\n private store: Store;\r\n\r\n messages: ConversationMessage[] = [];\r\n private typingActors: ConversationMessageSender[] = [];\r\n\r\n private conversationHistory: ConversationHistory;\r\n\r\n constructor(\r\n public container: Container,\r\n public id: string,\r\n options: { rehydrate: boolean }\r\n ) {\r\n const widget: Widget = container.get('$widget');\r\n this.events = widget.events.createChild(this);\r\n this.store = new Store(container, this, options.rehydrate);\r\n this.conversationHistory = new ConversationHistory(this);\r\n }\r\n\r\n setInitialStorage(data: { agents: AgentSettings[] }) {\r\n this.store.setInitialData(data);\r\n }\r\n\r\n setProviders(providers: string[]) {\r\n const removed: string[] = [];\r\n const added: string[] = [];\r\n\r\n // remove\r\n this.providers\r\n .reduce<string[]>((acc, provider) => {\r\n if (providers.indexOf(provider) === -1) {\r\n acc.push(provider);\r\n }\r\n return acc;\r\n }, [])\r\n .forEach((providerToRemove) => {\r\n const indexToRemove = this.providers.indexOf(providerToRemove);\r\n if (indexToRemove > -1) {\r\n removed.push(providerToRemove);\r\n this.providers.splice(indexToRemove, 1);\r\n }\r\n });\r\n\r\n // add\r\n providers.forEach((provider) => {\r\n if (this.providers.indexOf(provider) === -1) {\r\n added.push(provider);\r\n this.providers.push(provider);\r\n }\r\n });\r\n\r\n if (added.length || removed.length) {\r\n this.events.dispatch('conversation:providers-changed', {\r\n added,\r\n removed,\r\n });\r\n }\r\n }\r\n\r\n createProvider(name: string): ConversationProvider {\r\n const index = this.providerIndex(name);\r\n if (index > -1) {\r\n return this.registeredProviders[index];\r\n }\r\n const provider = ConversationProvider.create(name, this.container, this);\r\n this.registeredProviders.push(provider);\r\n return provider;\r\n }\r\n\r\n providerIndex(name: string) {\r\n return this.registeredProviders.findIndex((p) => p.name === name);\r\n }\r\n\r\n getAgentById(id?: string) {\r\n if (!id) {\r\n return;\r\n }\r\n return this.store.getStoredAgent(id);\r\n }\r\n\r\n dispose() {\r\n this.conversationHistory.dispose();\r\n this.registeredProviders.forEach((provider) => provider.dispose());\r\n this.messages = [];\r\n this.events.dispatch('conversation:controller-disposed', this);\r\n this.active = false;\r\n }\r\n\r\n onDispose(fn: EventListener) {\r\n return this.events.subscribe('conversation:controller-disposed', fn);\r\n }\r\n\r\n onStarted(fn: EventListener) {\r\n return this.events.subscribe('conversation:started', fn);\r\n }\r\n\r\n onMessageCreated(fn: EventListener) {\r\n return this.events.subscribe('conversation:message-created', fn);\r\n }\r\n\r\n isRehydrated() {\r\n return this.store.isRehydrated();\r\n }\r\n\r\n disposeProvider(target: ConversationProvider) {\r\n const index = this.providerIndex(target.name);\r\n index > -1 && this.registeredProviders.splice(index, 1);\r\n this.events.dispatch('conversation:providers-changed', {\r\n removed: [target.name],\r\n });\r\n if (!this.registeredProviders.length) {\r\n this.dispose();\r\n }\r\n }\r\n\r\n onProvidersChange(fn: EventListener) {\r\n return this.events.subscribe('conversation:providers-changed', fn);\r\n }\r\n\r\n setComponentMountedState(mounted: boolean) {\r\n if (this.componentMounted === mounted) {\r\n return;\r\n }\r\n this.componentMounted = mounted;\r\n if (mounted) {\r\n this.events.dispatch('conversation:unread-message', false);\r\n this.events.dispatch('conversation:started', true);\r\n this.active = true;\r\n }\r\n this.events.dispatch('conversation:component-mount-changed', mounted);\r\n }\r\n\r\n setProviderOptions(providerName: string, options: ConversationOptions) {\r\n const index = this.providerIndex(providerName);\r\n\r\n if (index > -1) {\r\n this.registeredProviders[index].setOptions(options);\r\n }\r\n }\r\n\r\n changeProvider(providerName: string) {\r\n const provider = this.registeredProviders.find(\r\n (p) => p.name === providerName\r\n );\r\n\r\n if (provider) {\r\n swapProvider(this.container, this.id, providerName);\r\n }\r\n }\r\n\r\n queueProviders(providers: string[]) {\r\n this.queuedProviders = providers;\r\n }\r\n\r\n onCompleteProvider() {\r\n const nextProvider = this.queuedProviders.pop();\r\n\r\n if (nextProvider) {\r\n swapProvider(this.container, this.id, nextProvider);\r\n }\r\n }\r\n\r\n getComponentMountedState() {\r\n return this.componentMounted;\r\n }\r\n\r\n onUnreadMessage(fn: EventListener) {\r\n return this.events.subscribe('conversation:unread-message', fn);\r\n }\r\n\r\n createEntry(\r\n key: string,\r\n content: ConversationMessageContent,\r\n type: ConversationMessageType,\r\n sender?: ConversationMessageSender,\r\n timestamp?: number | null\r\n ): ConversationEntry {\r\n const message: ConversationMessage = {\r\n key,\r\n content,\r\n type,\r\n sender: sender || null,\r\n timestamp: timestamp || timestamp === null ? timestamp : Date.now(),\r\n };\r\n this.messages.push(message);\r\n message.type === ConversationMessageType.Agent &&\r\n removeTypingState(this.typingActors, sender);\r\n const entry = new ConversationEntry((updated) => {\r\n if (updated !== null) {\r\n const { timestamp: updatedTimestamp = undefined, ...content } = updated;\r\n message.content = content;\r\n if (updatedTimestamp) {\r\n message.timestamp = updatedTimestamp;\r\n }\r\n } else {\r\n const indexToRemove = this.messages.indexOf(message);\r\n message.content = null;\r\n if (indexToRemove > -1) {\r\n this.messages.splice(indexToRemove, 1);\r\n }\r\n }\r\n this.events.dispatch('conversation:message-updated', { message });\r\n this.update();\r\n });\r\n this.events.dispatch('conversation:message-created', { message });\r\n this.update();\r\n if (!this.componentMounted) {\r\n this.events.dispatch('conversation:unread-message', true);\r\n }\r\n return entry;\r\n }\r\n\r\n print = (\r\n settings: string | ConversationMessageSettings\r\n ): ConversationEntry => {\r\n const normalized = getNormalizedMessageSettings(settings);\r\n\r\n return this.createEntry(\r\n normalized.key,\r\n normalized.content,\r\n ConversationMessageType.System,\r\n undefined,\r\n normalized.timestamp\r\n );\r\n };\r\n\r\n update() {\r\n this.events.dispatch('conversation:updated', {\r\n messages: this.messages,\r\n loading: this.loaders > 0,\r\n typingActors: this.typingActors,\r\n });\r\n }\r\n\r\n getMessageStream() {\r\n return {\r\n messages: this.messages,\r\n loading: this.loaders > 0,\r\n typingActors: this.typingActors,\r\n };\r\n }\r\n\r\n setTypingState(\r\n sender: ConversationMessageSender,\r\n _type?: ConversationMessageType\r\n ) {\r\n if (this.typingActors.indexOf(sender) === -1) {\r\n this.typingActors.push(sender);\r\n this.update();\r\n }\r\n\r\n return () => {\r\n removeTypingState(this.typingActors, sender);\r\n this.update();\r\n };\r\n }\r\n\r\n /**\r\n * Displays a loader in the conversation.\r\n */\r\n loader(): CancelLoaderDelegate {\r\n this.loaders = this.loaders + 1;\r\n let dismissed = false;\r\n if (this.loaders === 1) {\r\n this.update();\r\n }\r\n return () => {\r\n if (!dismissed) {\r\n dismissed = true;\r\n this.loaders = this.loaders - 1;\r\n if (this.loaders === 0) {\r\n this.update();\r\n }\r\n }\r\n };\r\n }\r\n\r\n submitForm(key: string, handler: SubmitHandler) {\r\n this.formHandlers[key] = { ...this.formHandlers[key], submit: handler };\r\n }\r\n\r\n validateForm(key: string, handler: ValidateHandler) {\r\n this.formHandlers[key] = { ...this.formHandlers[key], validate: handler };\r\n }\r\n\r\n getHistory() {\r\n return this.conversationHistory.getConversationLogs();\r\n }\r\n}\r\n","import { ComponentPlatform, WidgetSettings } from '@telia-ace/widget-core';\r\n// import { closeAllModals } from '@telia-ace/widget-plugins';\r\nimport {\r\n createStorageWriter,\r\n StorageCategory,\r\n StorageMedium,\r\n StorageScope,\r\n} from '@telia-ace/widget-services';\r\nimport { Container, Implementation, Widget } from '@webprovisions/platform';\r\nimport {\r\n ConversationEndedBehavior,\r\n ConversationPlatform,\r\n} from '../conversation-platform';\r\n\r\nconst getParentWidget = (\r\n widgetName: string,\r\n implementation: Implementation\r\n) => {\r\n const mainWidgetName = widgetName.split('_contact');\r\n return implementation.widgets.get(mainWidgetName[0]);\r\n};\r\n\r\nconst getSeparateWidget = (container: Container) => {\r\n const originWidget = container.get('$widget');\r\n const { name, implementation }: Widget = container.get('$widget');\r\n\r\n const mainWidget =\r\n name.indexOf('_contact') > -1\r\n ? getParentWidget(name, implementation)\r\n : originWidget;\r\n const { data }: WidgetSettings = container.get('$settings');\r\n const { trigger }: WidgetSettings = mainWidget.container.get('$settings');\r\n const chatWidgetName = `${name\r\n .replace('_contact-method', '')\r\n .replace('_contact', '')}_contact-method`;\r\n\r\n const chatWidget = implementation.widgets.get(chatWidgetName);\r\n if (chatWidget && !trigger) {\r\n return { chatWidget, mainWidget, data };\r\n }\r\n return { mainWidget, data };\r\n};\r\n\r\nexport const shouldPreventDefault = (container: Container) => {\r\n const { chatWidget } = getSeparateWidget(container);\r\n return !!chatWidget;\r\n};\r\n\r\nexport const openChatWidget = (\r\n container: Container,\r\n contactMethod: any /*ContactMethodType*/,\r\n triggerDOMTarget?: HTMLElement\r\n) => {\r\n const { mainWidget, data, chatWidget } = getSeparateWidget(container);\r\n\r\n if (chatWidget) {\r\n if (chatWidget.state === 'activated') {\r\n return chatWidget.invoke('open').then(() => {\r\n chatWidget.container.getAsync('conversation').then((conversation) => {\r\n conversation.navigateToConversationIfActive(contactMethod.id);\r\n // .then(() => closeAllModals(container)); // TODO:\r\n });\r\n });\r\n }\r\n return chatWidget\r\n .activate()\r\n .then(() => {\r\n const { trigger } = chatWidget.container.get('$settings');\r\n trigger.action = 'hide'; // could be default in configuration\r\n return chatWidget\r\n .invoke('setSettings', () => ({\r\n data,\r\n trigger,\r\n activate: true,\r\n }))\r\n .then(() => {\r\n return chatWidget.container\r\n .getAsync('components')\r\n .then((components: ComponentPlatform) => {\r\n /**\r\n * Could cause issues if target widget is no longer as specific for this use case\r\n */\r\n const contactMethodsQuery = components\r\n .components()\r\n .ofType('contact-method');\r\n components.write({\r\n key: 'setContactMethodId',\r\n attributes: {\r\n properties: {\r\n id: contactMethod.id,\r\n guideId: contactMethod.guideId,\r\n },\r\n },\r\n target: contactMethodsQuery,\r\n provider: 'localStorage',\r\n });\r\n const conversationsQuery = components\r\n .components()\r\n .ofType('conversation');\r\n components.write({\r\n key: 'setConversationProvider',\r\n attributes: {\r\n properties: { providers: [contactMethod.clientName] },\r\n },\r\n target: conversationsQuery,\r\n provider: 'localStorage',\r\n });\r\n });\r\n });\r\n })\r\n .then(() => {\r\n return chatWidget.invoke('attach', {\r\n key: 'contact-method',\r\n triggerDOMElement: triggerDOMTarget,\r\n withRenderState: 'open',\r\n });\r\n })\r\n .then(() => {\r\n createStorageWriter(\r\n chatWidget.container,\r\n 'activeStickyWidget',\r\n StorageCategory.Necessary,\r\n {\r\n medium: StorageMedium.Local,\r\n scope: StorageScope.Implementation,\r\n }\r\n ).then((write) => write(chatWidget.name));\r\n\r\n return (\r\n chatWidget.container\r\n .getAsync('conversation')\r\n .then((platform) => {\r\n platform.setConversationEndedBehavior(\r\n ConversationEndedBehavior.Deactivate\r\n );\r\n })\r\n // .then(() => closeAllModals(container)) // TODO:\r\n .then(() => false)\r\n );\r\n });\r\n }\r\n mainWidget.container\r\n .getAsync('conversation')\r\n .then((platform: ConversationPlatform) => {\r\n return platform\r\n .navigateToConversationIfActive(contactMethod.id)\r\n .then(() =>\r\n platform.setConversationEndedBehavior(\r\n ConversationEndedBehavior.Navigate\r\n )\r\n );\r\n });\r\n return chatWidget ? false : true;\r\n};\r\n\r\nexport const navigateToConversation = (\r\n container: Container,\r\n contactMethod: any /*ContactMethodType*/,\r\n routeName = 'conversation'\r\n) => {\r\n const { mainWidget, chatWidget } = getSeparateWidget(container);\r\n if (chatWidget) {\r\n return chatWidget.container.getAsync('router').then((router: any) => {\r\n router.navigate(routeName, { id: contactMethod.id });\r\n });\r\n }\r\n\r\n return mainWidget.container\r\n .getAsync('conversation')\r\n .then((platform: ConversationPlatform) => {\r\n platform\r\n .setConversationEndedBehavior(ConversationEndedBehavior.Navigate)\r\n ?.then(() => {\r\n mainWidget.container.getAsync('router').then((router: any) => {\r\n mainWidget.container\r\n .getAsync('components')\r\n .then((components: ComponentPlatform) => {\r\n const conversationQuery = components\r\n .components()\r\n .ofType('conversation');\r\n components.write({\r\n key: 'setConversationProvider',\r\n attributes: {\r\n properties: { providers: [contactMethod.clientName] },\r\n },\r\n target: conversationQuery,\r\n provider: 'localStorage',\r\n });\r\n })\r\n .then(() => {\r\n router.navigate(routeName, { id: contactMethod.id });\r\n });\r\n });\r\n });\r\n });\r\n};\r\n","import {\r\n ComponentNodeController,\r\n ComponentPlatform,\r\n ComponentQuery,\r\n} from '@telia-ace/widget-core';\r\nimport { RouteData, RoutingService } from '@telia-ace/widget-routing';\r\nimport {\r\n createStorageWriter,\r\n readStorage,\r\n StorageCategory,\r\n StorageMedium,\r\n StorageWriter,\r\n} from '@telia-ace/widget-services';\r\nimport { lock } from '@telia-ace/widget-utilities';\r\nimport {\r\n Container,\r\n EventManager,\r\n EventSubscriptionCancellation,\r\n Widget,\r\n} from '@webprovisions/platform';\r\nimport { AgentSettings } from './agent';\r\nimport { ConversationController } from './conversation-controller';\r\nimport { ConversationProvider } from './conversation-provider';\r\nimport { createSessionStorageKey } from './store';\r\nimport {\r\n navigateToConversation,\r\n openChatWidget,\r\n shouldPreventDefault,\r\n} from './utils';\r\nimport { swapProvider } from './utils/swap-provider';\r\n\r\nconst STORAGE_KEY = 'conversations';\r\n\r\nexport type ConversationHandler = (\r\n conversation: ConversationProvider,\r\n component: ComponentNodeController\r\n) => void | (() => void);\r\n\r\nexport type UnregisterControllerDelegate = () => void;\r\n\r\nexport type ConversationProviderRegistration = {\r\n name: string;\r\n handler: ConversationHandler;\r\n};\r\n\r\nexport enum ConversationEndedBehavior {\r\n Deactivate = 'deactivate',\r\n Navigate = 'navigate',\r\n None = 'none',\r\n}\r\n\r\nexport type SessionInfo = {\r\n id?: string;\r\n route?: RouteData;\r\n conversationEndedBehavior?: ConversationEndedBehavior;\r\n};\r\n\r\nexport class ConversationPlatform {\r\n events: EventManager;\r\n public controllers: {\r\n conversation: ConversationController;\r\n component: ComponentNodeController;\r\n }[] = [];\r\n private providers: ConversationProviderRegistration[] = [];\r\n private disposeProviders: { [providerKey: string]: (() => void)[] } = {};\r\n private subscriptions: EventSubscriptionCancellation[] = [];\r\n private storageWriter: StorageWriter | null = null;\r\n private router: RoutingService | null = null;\r\n private buttonQuery: ComponentQuery | null = null;\r\n private sessionInfo: SessionInfo | null = null;\r\n\r\n constructor(\r\n private container: Container,\r\n private components: ComponentPlatform\r\n ) {\r\n const widget: Widget = container.get('$widget');\r\n this.events = widget.events.createChild(this);\r\n }\r\n\r\n initialize() {\r\n createStorageWriter(\r\n this.container,\r\n STORAGE_KEY,\r\n StorageCategory.Necessary,\r\n {\r\n medium: StorageMedium.Local,\r\n }\r\n ).then((writer) => (this.storageWriter = writer));\r\n\r\n readStorage<SessionInfo>(\r\n this.container,\r\n STORAGE_KEY,\r\n StorageMedium.Local\r\n ).then((storedSession) => {\r\n this.buttonQuery = this.components\r\n .components()\r\n .ofType('conversation-return-button');\r\n if (storedSession) {\r\n this.sessionInfo = storedSession;\r\n if (storedSession.id && storedSession.route) {\r\n this.writeToComponents({ active: true, alert: { show: false } });\r\n }\r\n }\r\n });\r\n this.container.getAsync('router').then((router) => (this.router = router));\r\n this.events.subscribe('conversation:ended', (_event, _data) => {\r\n switch (this.sessionInfo?.conversationEndedBehavior) {\r\n case ConversationEndedBehavior.Deactivate:\r\n const widget: Widget = this.container.get('$widget');\r\n widget.deactivate();\r\n break;\r\n case ConversationEndedBehavior.Navigate:\r\n const initialRoute = this.router?.getInitialRoute();\r\n if (initialRoute) {\r\n this.router?.navigate(initialRoute.name);\r\n }\r\n break;\r\n case ConversationEndedBehavior.None:\r\n default:\r\n break;\r\n }\r\n this.writeToComponents({ active: false });\r\n this.sessionInfo = null;\r\n this.storageWriter && this.storageWriter();\r\n });\r\n }\r\n\r\n addSubscription(sub: EventSubscriptionCancellation) {\r\n this.subscriptions.push(sub);\r\n }\r\n\r\n static getInstance(\r\n container: Container,\r\n key: string = 'conversation'\r\n ): Promise<ConversationPlatform> {\r\n return lock(container)(() => {\r\n return container.getAsync(key).then((value: ConversationPlatform) => {\r\n let conversation = value;\r\n\r\n if (!conversation) {\r\n return ComponentPlatform.getInstance(container).then((components) => {\r\n conversation = new ConversationPlatform(container, components);\r\n conversation.initialize();\r\n container.registerAsync(key, () => conversation);\r\n return conversation;\r\n });\r\n }\r\n return conversation;\r\n });\r\n });\r\n }\r\n\r\n navigateToConversationIfActive(id: string): Promise<void> {\r\n return readStorage<SessionInfo>(\r\n this.container,\r\n STORAGE_KEY,\r\n StorageMedium.Local\r\n ).then((storedSession) => {\r\n if (storedSession && storedSession.id === id) {\r\n if (storedSession.route) {\r\n const { name, params } = storedSession.route;\r\n this.router?.navigate(name, params);\r\n }\r\n }\r\n });\r\n }\r\n\r\n setConversationEndedBehavior(behavior: ConversationEndedBehavior) {\r\n return readStorage<SessionInfo>(\r\n this.container,\r\n STORAGE_KEY,\r\n StorageMedium.Local\r\n ).then((stored) => {\r\n let storedSession = stored;\r\n if (storedSession) {\r\n storedSession.conversationEndedBehavior = behavior;\r\n } else {\r\n storedSession = { conversationEndedBehavior: behavior };\r\n }\r\n this.sessionInfo = storedSession;\r\n return (\r\n (this.storageWriter && this.storageWriter(this.sessionInfo)) ||\r\n Promise.resolve()\r\n );\r\n });\r\n }\r\n\r\n async createController(id: string, options: { rehydrate: boolean }) {\r\n const storageKey = createSessionStorageKey(id);\r\n const { agents: storedAgents } = (await readStorage<{\r\n agents: AgentSettings[];\r\n }>(this.container, storageKey)) || { agents: [] };\r\n\r\n const index = this.controllers.findIndex((c) => c.conversation.id === id);\r\n let controller;\r\n if (index > -1) {\r\n controller = this.controllers[index].conversation;\r\n } else {\r\n controller = new ConversationController(this.container, id, options);\r\n }\r\n\r\n controller.setInitialStorage({ agents: storedAgents || [] });\r\n return controller;\r\n }\r\n\r\n registerProvider(name: string, handler: ConversationHandler): void {\r\n const provider = {\r\n name,\r\n handler,\r\n };\r\n this.providers.push(provider);\r\n // execute provider for all matching controllers\r\n this.controllers\r\n .filter(\r\n (controller) => controller.conversation.providers.indexOf(name) > -1\r\n )\r\n .forEach((controller) => {\r\n this.invokeHandler(provider, controller);\r\n });\r\n }\r\n\r\n registerController(\r\n conversation: ConversationController,\r\n component: ComponentNodeController\r\n ): boolean {\r\n const index = this.controllers.findIndex(\r\n (c) => c.conversation.id === conversation.id\r\n );\r\n let controller: any;\r\n if (index < 0) {\r\n controller = { conversation, component };\r\n this.controllers.push(controller);\r\n const invokeHandlers = (providers: string[]) => {\r\n if (providers) {\r\n this.providers\r\n .filter((provider) => providers.indexOf(provider.name) > -1)\r\n .forEach((provider) => {\r\n this.invokeHandler(provider, controller);\r\n });\r\n }\r\n };\r\n\r\n this.subscriptions.push(\r\n conversation.onDispose((_event, data) => {\r\n const index = this.controllers.findIndex(\r\n (c) => c.conversation === data\r\n );\r\n index > -1 && this.controllers.splice(index, 1);\r\n this.components\r\n .components()\r\n .ofType('conversation-return-button')\r\n .select()\r\n .writeProperties({ active: false });\r\n\r\n this.events.dispatch('conversation:ended', {}, { bubbles: true });\r\n })\r\n );\r\n this.subscriptions.push(\r\n conversation.onProvidersChange((_event, data) => {\r\n const {\r\n added,\r\n removed = [],\r\n }: { added: string[]; removed: string[] } = data;\r\n removed.forEach((removedProvider) => {\r\n (this.disposeProviders[removedProvider] || []).forEach(\r\n (dispose) => {\r\n dispose();\r\n }\r\n );\r\n });\r\n invokeHandlers(added);\r\n })\r\n );\r\n\r\n this.subscriptions.push(\r\n conversation.onStarted((_event, isActive) => {\r\n const session: SessionInfo = {\r\n id: conversation.id,\r\n route: this.router?.getRouteData(),\r\n conversationEndedBehavior:\r\n this.sessionInfo?.conversationEndedBehavior,\r\n };\r\n this.sessionInfo = session;\r\n this.storageWriter && this.storageWriter(session);\r\n\r\n this.writeToComponents({ active: isActive });\r\n })\r\n );\r\n\r\n this.subscriptions.push(\r\n conversation.onUnreadMessage((_event, data) => {\r\n this.events.dispatch('conversation:unread-message', data);\r\n this.writeToComponents({ alert: { show: data } });\r\n })\r\n );\r\n\r\n invokeHandlers(conversation.providers);\r\n return true;\r\n }\r\n controller = this.controllers[index];\r\n return false;\r\n }\r\n\r\n private writeToComponents(\r\n properties: any,\r\n _key: string = 'conversationReturnButtonState'\r\n ) {\r\n if (this.buttonQuery) {\r\n this.components.write({\r\n key: 'conversationReturnButtonState',\r\n attributes: { properties },\r\n target: this.buttonQuery,\r\n provider: 'localStorage',\r\n });\r\n }\r\n }\r\n\r\n private invokeHandler(\r\n provider: ConversationProviderRegistration,\r\n controller: any\r\n ) {\r\n const dispose = provider.handler(\r\n controller.conversation.createProvider(provider.name),\r\n controller.component\r\n );\r\n if (dispose) {\r\n if (!this.disposeProviders[provider.name]) {\r\n this.disposeProviders[provider.name] = [];\r\n }\r\n this.disposeProviders[provider.name].push(dispose);\r\n }\r\n }\r\n\r\n getComponentRoute() {\r\n return readStorage<SessionInfo>(\r\n this.container,\r\n STORAGE_KEY,\r\n StorageMedium.Local\r\n ).then((stored) => stored?.route);\r\n }\r\n\r\n dispose() {\r\n Object.keys(this.disposeProviders).forEach((key) => {\r\n this.disposeProviders[key].forEach((dispose) => {\r\n dispose();\r\n });\r\n });\r\n this.subscriptions.forEach((unsubscribe) => {\r\n unsubscribe();\r\n });\r\n this.controllers = [];\r\n this.providers = [];\r\n }\r\n\r\n public static async handleContactMethodClick(\r\n event: any,\r\n container: Container,\r\n contactMethod: any,\r\n _callback?: Function\r\n ) {\r\n if (shouldPreventDefault(container)) {\r\n event.preventDefault();\r\n let triggerEl = document.getElementById('humany-dynamic-anchor');\r\n if (!triggerEl) {\r\n triggerEl = document.createElement('a');\r\n triggerEl.setAttribute('href', '#');\r\n triggerEl.id = 'humany-dynamic-anchor';\r\n document.body.appendChild(triggerEl);\r\n }\r\n openChatWidget(container, contactMethod, triggerEl);\r\n }\r\n openChatWidget(container, contactMethod);\r\n }\r\n\r\n public static async handleContactMethodSubmit(\r\n container: Container,\r\n contactMethod: any\r\n ) {\r\n if (contactMethod?.body.form.meta?.conversation?.id) {\r\n // if we already are in a conversational context, we always want to swap\r\n // the current provider instead of a route navigation\r\n return swapProvider(\r\n container,\r\n contactMethod.body.form.meta.conversation.id,\r\n contactMethod.clientName\r\n );\r\n }\r\n\r\n return navigateToConversation(container, contactMethod);\r\n }\r\n}\r\n","var Hn = Object.defineProperty, Vn = Object.defineProperties;\nvar Bn = Object.getOwnPropertyDescriptors;\nvar xe = Object.getOwnPropertySymbols;\nvar Un = Object.prototype.hasOwnProperty, Wn = Object.prototype.propertyIsEnumerable;\nvar $e = (n, t, e) => t in n ? Hn(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e, dt = (n, t) => {\n for (var e in t || (t = {}))\n Un.call(t, e) && $e(n, e, t[e]);\n if (xe)\n for (var e of xe(t))\n Wn.call(t, e) && $e(n, e, t[e]);\n return n;\n}, Pe = (n, t) => Vn(n, Bn(t));\nvar Zt = (n, t, e) => new Promise((r, s) => {\n var i = (c) => {\n try {\n a(e.next(c));\n } catch (h) {\n s(h);\n }\n }, o = (c) => {\n try {\n a(e.throw(c));\n } catch (h) {\n s(h);\n }\n }, a = (c) => c.done ? r(c.value) : Promise.resolve(c.value).then(i, o);\n a((e = e.apply(n, t)).next());\n});\nconst Xt = (n, t, e, ...r) => {\n const s = `[${n.get(\"$environment\").name || \"webprovisions\"}] ${e}`;\n switch (t) {\n case \"info\":\n console.info(s, ...r);\n break;\n case \"warning\":\n console.warn(s, ...r);\n break;\n case \"error\":\n console.error(s, ...r);\n break;\n }\n}, zn = (n) => {\n const t = n.container || n;\n return {\n info: (e, ...r) => Xt(t, \"info\", e, ...r),\n warn: (e, ...r) => Xt(t, \"warning\", e, ...r),\n error: (e, ...r) => Xt(t, \"error\", e, ...r)\n };\n};\nvar Tt = /* @__PURE__ */ ((n) => (n.Implementation = \"implementation\", n.Widget = \"widget\", n))(Tt || {}), at = /* @__PURE__ */ ((n) => (n.Pre = \"pre\", n.Post = \"post\", n))(at || {});\nconst Fn = (n, t, e, r) => {\n try {\n const s = new t(e, r);\n return {\n name: n,\n invoke: (i, o) => {\n let a;\n return s[i] && (a = s[i].call(s, o)), Promise.resolve(a);\n },\n getInstance: () => s\n };\n } catch (s) {\n if (s.message && s.message.indexOf(\"is not a constructor\") >= 0)\n return {\n name: n,\n invoke: (i) => {\n let o;\n return i === \"initialize\" && (o = t(e, r)), Promise.resolve(o);\n },\n getInstance: () => t\n };\n throw s;\n }\n};\nfunction Se(n, t) {\n return typeof n == \"undefined\" ? t : n;\n}\nlet Jn = class {\n constructor(t = {}) {\n this.part = t;\n }\n createCommand(t, e, r) {\n let s;\n typeof e == \"function\" ? s = {\n scope: Tt.Widget,\n stage: at.Post,\n defaultArgs: void 0,\n handlerResolver: e\n } : s = {\n scope: Se(e.scope, Tt.Widget),\n stage: Se(e.stage, at.Post),\n defaultArgs: e.defaultArgs,\n handlerResolver: r\n };\n let i = this.part;\n const o = t.split(\".\");\n return o.forEach((a, c) => {\n c === o.length - 1 ? i[a] || (i[a] = () => s) : i = this.part[a] = this.part[a] || {};\n }), this;\n }\n get() {\n return this.part;\n }\n};\nconst fe = (n) => {\n const t = new Jn({});\n return n(t), t.get();\n};\nfe((n) => {\n n.createCommand(\n \"types.register\",\n { scope: Tt.Implementation, stage: at.Pre },\n (t) => (e, r) => {\n t.container.get(\"$types\")[e] = r;\n }\n ).createCommand(\n \"type\",\n { stage: at.Pre },\n (t) => (e) => {\n t.container.register(\"$type\", e);\n }\n ).createCommand(\n \"settings\",\n { stage: at.Pre, defaultArgs: [null] },\n (t) => (e) => {\n t.events.dispatch(\n \"settings:change\",\n e,\n { bubbles: !0 }\n ), t.container.register(\"$settings\", e);\n }\n ).createCommand(\n \"plugin\",\n { stage: at.Pre },\n (t) => (e, r, s) => {\n const { container: i } = t;\n let o = null, a = e, c = r;\n typeof e == \"string\" && (o = e, a = r, c = s);\n const h = (u) => {\n const { transformPluginSettings: l } = t.container.get(\"$environmentOptions\"), d = l ? l(\n c || {},\n o,\n t.container,\n a\n ) : r;\n try {\n const f = Fn(\n o,\n a,\n i,\n d\n );\n i.get(\"$plugins\").push(f), u && f.invoke(\"initialize\", null);\n } catch (f) {\n zn(t).warn(\"Error when initializing plugin\", f);\n }\n };\n t.container.get(\"$instance\") ? h(!0) : t.events.subscribeOnce(\"widget:instance-created\", () => h(!1));\n }\n ).createCommand(\n \"container.register\",\n (t) => (e, r) => {\n t.container.register(e, r);\n }\n ).createCommand(\n \"container.registerAsync\",\n (t) => (e, r) => {\n t.container.registerAsync(e, r);\n }\n ).createCommand(\n \"container.registerFactory\",\n (t) => (e, r) => {\n t.container.registerFactory(e, r);\n }\n ).createCommand(\n \"container.touch\",\n (t) => (e, r) => {\n t.container.touch(e, r);\n }\n ).createCommand(\n \"csp\",\n {},\n (t) => (e) => {\n t.container.register(\"csp\", e);\n }\n );\n});\nvar nn = /* @__PURE__ */ ((n) => (n.Activating = \"activating\", n.Loading = \"loading\", n.Activated = \"activated\", n.Deactivating = \"deactivating\", n.Deactivated = \"deactivated\", n))(nn || {});\nlet Kn = class {\n /**\n * Creates a new `Widget` instance.\n * @param container The `Container` instance to base the widget upon.\n */\n constructor(t) {\n this.container = t, this.widget = t.get(\"$widget\"), this.settings = t.get(\"$settings\"), this.events = this.widget.events, this.widget.events.subscribe(\"settings:change\", (e, r) => {\n this.settings = r;\n });\n }\n};\nvar Ce = Object.getOwnPropertySymbols, qn = Object.prototype.hasOwnProperty, Yn = Object.prototype.propertyIsEnumerable, Gn = (n, t) => {\n var e = {};\n for (var r in n)\n qn.call(n, r) && t.indexOf(r) < 0 && (e[r] = n[r]);\n if (n != null && Ce)\n for (var r of Ce(n))\n t.indexOf(r) < 0 && Yn.call(n, r) && (e[r] = n[r]);\n return e;\n};\nfunction Qn(n = {}) {\n const t = n, {\n phrase: e = \"\",\n category: r,\n guideCategory: s,\n contactCategory: i,\n take: o,\n connectionKey: a,\n accordion: c,\n id: h,\n uriName: u,\n sorting: l,\n tag: d,\n tagId: f,\n tagTitle: g\n } = t, E = Gn(t, [\n \"phrase\",\n \"category\",\n \"guideCategory\",\n \"contactCategory\",\n \"take\",\n \"connectionKey\",\n \"accordion\",\n \"id\",\n \"uriName\",\n \"sorting\",\n \"tag\",\n \"tagId\",\n \"tagTitle\"\n ]), p = {};\n return Object.keys(E).forEach((C) => {\n typeof n[C] == \"string\" && (p[C] = n[C]);\n }), typeof e == \"string\" && e.length && (p.phrase = e), e === null && (p.phrase = e), typeof s == \"string\" && s !== \"0\" && (p.guideCategory = s), typeof s == \"number\" && s !== 0 && (p.guideCategory = s), typeof s == \"object\" && s !== null && (typeof s.id == \"string\" && s.id !== \"0\" && (p.guideCategory = s.id), typeof s.id == \"number\" && s.id !== 0 && (p.guideCategory = s.id)), typeof i == \"string\" && i !== \"0\" && (p.contactCategory = i), typeof i == \"number\" && i !== 0 && (p.contactCategory = i), typeof i == \"object\" && i !== null && (typeof i.id == \"string\" && i.id !== \"0\" && (p.contactCategory = i.id), typeof i.id == \"number\" && i.id !== 0 && (p.contactCategory = i.id)), typeof r == \"string\" && r !== \"0\" && (p.category = r), typeof r == \"number\" && r !== 0 && (p.category = r), typeof r == \"object\" && r !== null && (typeof r.id == \"string\" && r.id !== \"0\" && (p.category = r.id), typeof r.id == \"number\" && r.id !== 0 && (p.category = r.id)), h && (p.id = h), u && (+p.category || +p.guideCategory || +p.guide || +p.contactCategory || +p.contactMethod) && (p.uriName = u), a && (p.connectionKey = a), o && (p.take = o), l && (p.sorting = l), typeof c == \"string\" && c.length > 0 && (p.accordion = c), typeof d == \"string\" && d !== \"0\" && (p.tag = d), typeof d == \"number\" && d !== 0 && (p.tag = d), Array.isArray(d) && d.length && (p.tag = d), (typeof f == \"string\" || typeof f == \"number\") && (p.tagId = f), typeof g == \"string\" && (p.tagTitle = g), typeof p.tag == \"string\" && (p.tag = p.tag.split(\",\")), p;\n}\nconst Ft = (n, t, ...e) => typeof t == \"string\" ? n(`[humany] ${t}`, ...e) : n(t, ...e), bt = class {\n constructor() {\n this.keys = [], this.log = (t, ...e) => this.lookup(t, () => bt.log(...e)), this.warn = (t, ...e) => this.lookup(t, () => bt.warn(...e)), this.error = (t, ...e) => this.lookup(t, () => bt.error(...e)), this.info = (t, ...e) => this.lookup(t, () => bt.info(...e));\n }\n lookup(t, e) {\n this.keys.indexOf(t) === -1 && (this.keys.push(t), e());\n }\n};\nlet R = bt;\nR.log = (...n) => Ft(console.log, ...n);\nR.warn = (...n) => Ft(console.warn, ...n);\nR.error = (...n) => Ft(console.error, ...n);\nR.info = (...n) => Ft(console.info, ...n);\nconst rn = (n) => {\n let t = {}, e, r;\n if (typeof n != \"object\" || n === null)\n return n;\n t = Array.isArray(n) ? [] : {};\n for (r in n)\n e = n[r], t[r] = typeof e == \"object\" && e !== null ? rn(e) : e;\n return t;\n}, Zn = rn;\nfunction ke(n) {\n let t = 0;\n if (n.length === 0)\n return t.toString();\n for (let e = 0; e < n.length; e++) {\n const r = n.charCodeAt(e);\n t = (t << 5) - t + r, t = t & t;\n }\n return t.toString();\n}\nlet Xn = class {\n constructor(t, e) {\n this.lockWarningTime = t, this.lockErrorTime = e, this.tasks = [], this.current = Promise.resolve(), this.next = this.next.bind(this);\n }\n add(t, e, r, s) {\n this.tasks.push({ task: t, resolve: e, reject: r, done: s }), this.next();\n }\n next() {\n this.current = this.current.then(() => {\n const t = this.tasks.shift();\n if (t) {\n let e;\n const r = setTimeout(() => {\n process.env.NODE_ENV !== \"production\" && R.warn(\n `A lock has exceeded ${this.lockWarningTime} ms. Waiting additional ${this.lockErrorTime} ms before rejecting the task.`,\n t\n ), e = setTimeout(() => {\n t.reject(\"lock timeout exceeded\");\n }, this.lockErrorTime);\n }, this.lockWarningTime), s = Promise.resolve(t.task()).then((i) => (clearTimeout(r), clearTimeout(e), i));\n return Promise.resolve(s).then(this.next).then(\n () => s.then((i) => {\n t.done(), t.resolve(i);\n })\n ).catch((i) => (t.done(), t.reject(i), this.next()));\n }\n return Promise.resolve();\n });\n }\n};\nconst St = /* @__PURE__ */ new WeakMap();\nfunction G(n, t = 5e3, e = 1e3) {\n return St.has(n) || St.set(n, new Xn(t, e)), (r) => new Promise((s, i) => {\n const o = St.get(n);\n o.add(r, s, i, () => {\n o.tasks.length || St.delete(n);\n });\n });\n}\nconst tr = (n, t) => {\n const e = () => t.querySelectorAll(\"[data-loading=true]\").length > 0, r = (() => {\n let s = !1;\n return () => {\n s || (n.get(\"$widget\").events.dispatch(\"widget:data-loaded\", {\n element: t\n }), s = !0);\n };\n })();\n if (!e())\n return r();\n new MutationObserver((s, i) => {\n s.find(\n (o) => o.type === \"attributes\" && o.attributeName === \"data-loading\"\n ) && !e() && (i.disconnect(), r());\n }).observe(t, {\n attributes: !0,\n childList: !0,\n subtree: !0\n });\n}, er = (n, t) => {\n n.get(\"$widget\").container.getAsync(\"components\").then((e) => {\n e.events.subscribeOnce(\"components:component-model-initialized\", () => {\n let r = e.nodes.visible.reduce(\n (i, o) => (!o.name || !o.type || o.type === \"view\" || o.type === \"root\" || o.attributes.layout.size === \"none\" || t.querySelector(`[data-name=\"${o.name}\"]`) || i.push(o.name), i),\n []\n ), s = !1;\n new MutationObserver((i, o) => {\n i.forEach((a) => {\n if (a.addedNodes) {\n const c = Array.from(\n a.addedNodes\n ).reduce((h, u) => {\n const l = u.getAttribute && u.getAttribute(\"data-name\");\n return l && r.indexOf(l) > -1 && h.push(l), h;\n }, []);\n r = r.filter((h) => c.indexOf(h) === -1), !s && r.length === 0 && (s = !0, tr(n, t), o.disconnect());\n }\n });\n }).observe(t, {\n attributes: !1,\n characterData: !1,\n childList: !0,\n subtree: !0,\n attributeOldValue: !1,\n characterDataOldValue: !1\n });\n });\n });\n}, nr = er, rr = (n = {}) => (Object.keys(n).forEach((t) => {\n (n[t] === null || typeof n[t] == \"undefined\") && delete n[t];\n}), n), lt = rr, Ae = (n, t) => {\n let e = !0;\n return Object.keys(n).length !== Object.keys(t).length || Object.keys(n).some((r) => !Object.keys(t).some((s) => r === s)) ? !1 : (Object.keys(n).forEach((r) => {\n if (e) {\n const s = typeof n[r] == \"undefined\" ? \"\" : n[r], i = typeof t[r] == \"undefined\" ? \"\" : t[r];\n e = s.toString() === i.toString();\n }\n }), e);\n}, nt = () => Math.floor((1 + Math.random()) * 65536).toString(16).substring(1);\nfunction Pt() {\n return nt() + nt() + \"-\" + nt() + \"-\" + nt() + \"-\" + nt() + \"-\" + nt() + nt() + nt();\n}\nvar sr = Object.defineProperty, ir = Object.defineProperties, or = Object.getOwnPropertyDescriptors, Ne = Object.getOwnPropertySymbols, ar = Object.prototype.hasOwnProperty, cr = Object.prototype.propertyIsEnumerable, Le = (n, t, e) => t in n ? sr(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e, hr = (n, t) => {\n for (var e in t || (t = {}))\n ar.call(t, e) && Le(n, e, t[e]);\n if (Ne)\n for (var e of Ne(t))\n cr.call(t, e) && Le(n, e, t[e]);\n return n;\n}, ur = (n, t) => ir(n, or(t));\nclass lr {\n constructor(t) {\n const { events: e } = t.get(\"$widget\");\n this.events = e.createChild(this);\n }\n action(t, e, r) {\n this.events.dispatch(\"data:action\", { action: e, value: r, target: t }, { bubbles: !0 });\n }\n subscribe(t, e) {\n return this.events.subscribe(\n \"data:action\",\n (r, { action: s, value: i, target: o }) => t === o && e(t, s, i)\n );\n }\n}\nconst sn = (n) => {\n const t = [];\n return [\n (e, r) => {\n t.push(n.subscribe(e, r));\n },\n () => {\n t.forEach((e) => {\n e();\n });\n }\n ];\n};\nlet yt = class {\n constructor(t, e = []) {\n this.platform = t, this.rules = e;\n }\n match(t) {\n return this.rules.every((e) => !(e.id && e.id !== t.id || e.type && e.type !== t.type));\n }\n ofType(t) {\n return this.rules.push({ type: t }), this;\n }\n withId(t) {\n return this.rules.push({ id: t }), this;\n }\n select() {\n return new dr(this.platform, this);\n }\n};\nclass ge {\n constructor(t, e, r) {\n this.platform = t, this.node = e, this.actions = new Jt(\n t,\n new yt(t).withId(e.id),\n r\n );\n const [s, i] = sn(this.platform.events);\n this.subscribe = s, this.unsubscribe = i;\n }\n properties(t) {\n return t && this.node.touchProperties((e) => t(e)), this.node.attributes.properties;\n }\n context(t) {\n return t && this.subscribe(\"components:context-changed\", (e, { node: r }) => {\n r === this.node && t(this.node.attributes.context);\n }), this.node.attributes.context;\n }\n layout(t) {\n return t && this.subscribe(\"components:layout-changed\", (e, { node: r }) => {\n r === this.node && t(this.node.attributes.layout);\n }), this.node.attributes.layout;\n }\n writeProperties(t, e) {\n this.node.writeProperties(t, e);\n }\n writeContext(t, e) {\n this.node.writeProperties(t, e);\n }\n writeLayout(t, e) {\n this.node.writeLayout(t, e);\n }\n dispose() {\n this.unsubscribe(), this.actions.dispose();\n }\n}\nclass dr {\n constructor(t, e, r = !0) {\n this.platform = t, this.target = e, this.clearOnDispose = r, this.removes = [], this.actions = new Jt(this.platform, this.target);\n }\n writeProperties(t, e) {\n this.removes.push(\n this.platform.write({\n options: e,\n attributes: { properties: t },\n target: this.target,\n removable: this.clearOnDispose\n })\n );\n }\n writeContext(t, e) {\n this.removes.push(\n this.platform.write({\n options: e,\n attributes: { context: t },\n target: this.target,\n removable: this.clearOnDispose\n })\n );\n }\n writeLayout(t, e) {\n this.removes.push(\n this.platform.write({\n options: e,\n attributes: { layout: t },\n target: this.target,\n removable: this.clearOnDispose\n })\n );\n }\n dispose() {\n this.removes.forEach((t) => {\n t();\n }), this.actions.dispose();\n }\n}\nconst pr = (n, t, e) => {\n const r = n.concat(), s = (i, o, a) => {\n let c = !0;\n if (r.length) {\n const h = r.shift(), u = (l, d) => (c = !1, s(l, Object.assign({}, o, d), a));\n return Promise.resolve(h(i, u, a)).then((l) => ur(hr({}, l), {\n cancelled: c\n }));\n }\n return Promise.resolve({ data: i, cancelled: !1, options: o });\n };\n return s(t, {}, e);\n};\nlet Jt = class {\n constructor(t, e, r) {\n this.platform = t, this.target = e, this.ns = r, this.subscriptions = [], this.create = this.create.bind(this);\n }\n create(t, e = () => {\n }) {\n const r = {\n key: t,\n fn: e,\n target: this.target,\n ns: this.ns\n };\n this.platform.actionsState.handlers.push(r);\n const s = () => {\n const i = this.platform.actionsState.handlers.indexOf(r);\n i > -1 && this.platform.actionsState.handlers.splice(i, 1);\n };\n return this.subscriptions.push(s), s;\n }\n dispatch(t, e) {\n const r = this.platform.nodes.all.concat(\n this.platform.nodes.detached\n ), s = {}, i = this.platform.actionsState.handlers.filter(\n (o) => o.key === t && (!o.ns || !this.ns || o.ns === this.ns)\n );\n return Promise.all(\n i.map((o) => {\n const a = r.filter(\n (h) => o.target.match(h) && this.target.match(h)\n ), c = this.platform.actionsState.watchers.filter((h) => h.key === t && (!h.ns || !this.ns || h.ns === this.ns) && a.some((u) => h.target.match(u))).map((h) => h.fn);\n return Promise.all(\n a.map((h) => {\n const u = new ge(\n this.platform,\n h,\n this.ns\n );\n return pr(c, e, u).then((l) => {\n const { data: d = {}, options: f, cancelled: g } = l;\n return Promise.resolve(\n g ? {} : o.fn(d, f, u)\n ).then((E) => {\n s[h.id] = E;\n });\n });\n })\n );\n })\n ).then(() => s);\n }\n watch(t, e) {\n let r = t, s = this.ns;\n const i = t.split(\".\");\n i.length > 1 && (s = i[0], r = i.splice(1).join(\".\"));\n const o = {\n fn: e,\n target: this.target,\n key: r,\n ns: s\n };\n this.platform.actionsState.watchers.push(o);\n const a = () => {\n const c = this.platform.actionsState.watchers.indexOf(o);\n c > -1 && this.platform.actionsState.watchers.splice(c, 1);\n };\n return this.subscriptions.push(a), a;\n }\n dispose() {\n this.subscriptions.forEach((t) => t());\n }\n};\nfe((n) => {\n n.createCommand(\"components\", (t) => (e) => {\n t.events.subscribeOnce(\"components:platform-created\", (r, { platform: s }) => {\n e.handlers && e.handlers.forEach(([i, o]) => {\n s.addComponentHandler(i, o);\n });\n });\n });\n});\nlet le = class {\n constructor(t, e) {\n this.events = t, this.tags = [], this.children = {}, this.changesets = [], this.mountCount = 0, this.id = Pt(), this.type = e, this.attributes = {\n context: {},\n properties: {},\n layout: {},\n tags: []\n }, this.writeLayout({ size: \"full\", indent: 0 });\n }\n mount(t, e) {\n let r = t.get(\"mounted-nodes\");\n return r || (r = /* @__PURE__ */ new Map(), t.register(\"mounted-nodes\", r)), r.has(this) ? (process.env.NODE_ENV !== \"production\" && R.error(\"Trying to mount an already mounted component node.\", this), () => {\n }) : (this.events.dispatch(\"components:node-mounted\", { node: this }), this.mountCount === 0 && (this.mountCount = this.mountCount + 1, this.events.dispatch(\"components:node-enter\", { node: this })), () => {\n r.delete(this), this.events.dispatch(\"components:node-unmounted\", { node: this }), this.mountCount = this.mountCount - 1, this.mountCount === 0 && this.events.dispatch(\"components:node-exit\", { node: this });\n });\n }\n appendChild(t, e = \"default\") {\n if (t.parent) {\n if (t.parent === this)\n return;\n t.parent.removeChild(t);\n }\n t.parent = this, this.children[e] || (this.children[e] = []), this.children[e].push(t), this.events.dispatch(\"components:node-appended\", { node: t });\n }\n prependChild(t, e = \"default\") {\n if (t.parent) {\n if (t.parent === this)\n return;\n t.parent.removeChild(t);\n }\n t.parent = this, this.children[e] || (this.children[e] = []), this.children[e].unshift(t), this.events.dispatch(\"components:node-appended\", { node: t });\n }\n touchProperties(t, e = {}, r) {\n const s = [{ properties: t }, e];\n return this.changesets.push(s), this.events.dispatch(\"components:set-properties\", { node: this }), () => {\n if (r) {\n const i = this.changesets.indexOf(s);\n i > -1 && (this.changesets.splice(i, 1), this.events.dispatch(\"components:set-properties\", { node: this }));\n }\n };\n }\n writeProperties(t, e = {}, r) {\n const s = [{ properties: t }, e];\n return this.changesets.push(s), this.events.dispatch(\"components:set-properties\", { node: this }), () => {\n if (r) {\n const i = this.changesets.indexOf(s);\n i > -1 && (this.changesets.splice(i, 1), this.events.dispatch(\"components:set-properties\", { node: this }));\n }\n };\n }\n writeLayout(t, e = {}, r) {\n const s = [{ layout: t }, e];\n return this.changesets.push(s), this.events.dispatch(\"components:set-layout\", { node: this }), () => {\n if (!r)\n return;\n const i = this.changesets.indexOf(s);\n i > -1 && (this.changesets.splice(i, 1), this.events.dispatch(\"components:set-layout\", { node: this }));\n };\n }\n writeContext(t, e = {}, r) {\n const s = [{ context: t }, e];\n return this.changesets.push(s), this.events.dispatch(\"components:set-context\", { node: this }), () => {\n if (!r)\n return;\n const i = this.changesets.indexOf(s);\n i > -1 && (this.changesets.splice(i, 1), this.events.dispatch(\"components:set-context\", { node: this }));\n };\n }\n getChildren(t = \"default\") {\n const e = this.children[t] || [];\n return e.reduce((r, s, i) => {\n const { order: o = i } = s.attributes.layout;\n return r[o] ? r.splice(o, 0, s) : r[o] = s, r;\n }, Array(e.length));\n }\n remove() {\n this.parent && this.parent.removeChild(this);\n }\n removeChild(t) {\n Object.keys(this.children).forEach((e) => {\n const r = this.children[e], s = r.indexOf(t);\n s > -1 && (r.splice(s, 1), this.events.dispatch(\"components:node-removed\", { node: t, parentNode: this }));\n }), delete t.parent;\n }\n};\nconst on = (n, t, e) => {\n for (let r = 0, s = n.length; r < s && e(n[r]) !== !0; r++) {\n const i = t[n[r].id] || \"default\", o = n[r].getChildren(i);\n on(o, t, e);\n }\n}, Kt = (n, t, e) => {\n if (e(n) !== !0) {\n const r = t[n.id] || \"default\", s = n.children[r];\n on(s, t, e);\n }\n}, Mt = (n, t) => {\n const e = [];\n return Kt(n, t, (r) => {\n e.push(r);\n }), e;\n}, an = (n, t, e) => {\n let r;\n return Kt(n, t, (s) => {\n if (e(s))\n return r = s, !0;\n }), r;\n};\nlet fr = class {\n constructor(t, e, r) {\n this.root = t, this.switches = e, this.all = [], this.visible = [], this.detached = [], r.subscribe(\"components:node-appended\", (s, i) => {\n this.all.push(i.node), this.visible = Mt(t, e);\n }), r.subscribe(\"components:node-removed\", (s, i) => {\n let o = this.all.indexOf(i.node);\n o > -1 && this.all.splice(o, 1), o = this.visible.indexOf(i.node), o > -1 && this.visible.splice(o, 1), this.visible = Mt(t, e);\n }), r.subscribe(\"components:node-switched\", (s, i) => {\n this.visible = Mt(t, e);\n });\n }\n query(t = {}) {\n const e = [];\n return Kt(this.root, this.switches, (r) => {\n Object.keys(t).every((s) => t[s] === r[s]) && e.push(r);\n }), e;\n }\n get(t) {\n return an(this.root, this.switches, (e) => e.id === t) || this.detached.find((e) => e.id === t);\n }\n}, gr = class {\n constructor() {\n this.handlers = /* @__PURE__ */ new Map();\n }\n add(t, e) {\n this.handlers.set(t, e);\n }\n get(t) {\n return this.handlers.get(t);\n }\n};\nconst mr = (n) => {\n let t = n, e = 0;\n for (; t.parent; )\n e = e + 1, t = t.parent;\n return e;\n}, yr = (n) => n.map(([t, e]) => [mr(t), t, e]).sort(([t], [e]) => t - e).map(([, t, e]) => [t, e]), te = (n) => n instanceof Date ? !1 : n && typeof n == \"object\" && !Array.isArray(n), Q = (n, ...t) => {\n if (!t.length)\n return n;\n const e = t.shift();\n if (te(n) && te(e))\n for (const r in e)\n te(e[r]) ? (n[r] || Object.assign(n, { [r]: {} }), Q(n[r], e[r])) : Object.assign(n, { [r]: e[r] });\n return Q(n, ...t);\n}, vr = (n, t) => !n || n === \"all\" ? !0 : n.some((e) => t.indexOf(e) > -1), br = (n, t) => {\n let e = [], r = [], s;\n const i = () => {\n process.env.NODE_ENV !== \"production\" && console.time(\"state-processor.flush\");\n const a = /* @__PURE__ */ new Map(), c = yr(e.map((u, l) => [u, r[l]])), h = (u, l) => {\n var d;\n const f = a.get(u) || {}, g = l.context && !f.context, E = l.properties && !f.properties, p = l.layout && !f.layout;\n a.set(u, {\n context: f.context || g,\n properties: f.properties || E,\n layout: f.layout || p\n }), E && (u.attributes.properties = {}), p && (u.attributes.layout = {}), g && (u.attributes.context = Q({}, (d = u.parent) == null ? void 0 : d.attributes.context));\n const C = [], T = [], U = [];\n if (u.changesets.forEach((_) => {\n const [D, H] = _;\n vr(H.breakpoints, n.breakpoints) && (E && (typeof D.properties == \"function\" ? C.push(\n D.properties\n ) : Q(u.attributes.properties, D.properties)), p && (typeof D.layout == \"function\" ? T.push(D.layout) : Q(u.attributes.layout, D.layout)), g && (typeof D.context == \"function\" ? U.push(D.context) : Q(u.attributes.context, D.context)));\n }), C.forEach((_) => {\n Q(u.attributes.properties, _(u.attributes.properties));\n }), T.forEach((_) => {\n Q(u.attributes.layout, _(u.attributes.layout));\n }), U.forEach((_) => {\n Q(u.attributes.context, _(u.attributes.context));\n }), g || l.recursive) {\n const _ = n.getBranch(u), D = l.recursive ? l : {\n context: !!g\n };\n u.getChildren(_).forEach((H) => {\n h(H, D);\n });\n }\n };\n process.env.NODE_ENV !== \"production\" && console.timeEnd(\"state-processor.flush\"), c.forEach(([u, l]) => {\n h(u, l);\n }), e = [], r = [], t(a);\n }, o = () => {\n clearTimeout(s), s = setTimeout(i, 0);\n };\n return (a, c) => {\n const h = e.indexOf(a);\n if (h > -1) {\n const u = r[h];\n return c.context && (u.context = !0), c.properties && (u.properties = !0), c.layout && (u.layout = !0), c.recursive && (u.recursive = !0), o();\n }\n return e.push(a), r.push(c), o();\n };\n};\nlet qt = class {\n constructor(t, e = {}) {\n this.providers = e, this.breakpoints = [], this.actionsState = { handlers: [], watchers: [] }, this.switches = {}, this.changesets = [], this.subscriptions = [], this.customComponentHandler = new gr(), this.events = t.events.createChild(this);\n const r = new le(this.events, \"root\");\n r.name = `root-${t.name}`, this.nodes = new fr(r, this.switches, this.events);\n const s = this.processNode = br(this, (i) => {\n const o = Array.from(i.keys());\n process.env.NODE_ENV !== \"production\" && console.info(`STATE PROCESSOR: ${o.length} node(s) processed:\n${o.map(\n (a) => `${a.name || \"<no name>\"} (${a.id})\n`\n )}`), o.forEach((a) => {\n const c = i.get(a);\n a.parent && a.parent.type === \"root\" && this.events.dispatch(\"components:root-children-changed\", { node: a }), c != null && c.context && this.events.dispatch(\"components:context-changed\", { node: a }), c != null && c.properties && this.events.dispatch(\"components:properties-changed\", { node: a }), c != null && c.layout && this.events.dispatch(\"components:layout-changed\", { node: a });\n }), this.events.dispatch(\"components:component-model-initialized\", {}, { bubbles: !0 });\n });\n Promise.all(\n Object.keys(e).map((i) => e[i].load(this))\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:node-appended\",\n (i, o) => {\n const { node: a } = o;\n this.changesets.forEach((c) => {\n const { changeset: h, target: u, removes: l } = c, [d, f] = h;\n u.match(o.node) && (d.properties && l.push(a.writeProperties(d.properties, f)), d.context && l.push(a.writeContext(d.context, f)), d.layout && l.push(a.writeLayout(d.layout, f)));\n });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:node-appended\",\n (i, o) => {\n s(o.node, { properties: !0, context: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:set-properties\",\n (i, o) => {\n s(o.node, { properties: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:set-context\",\n (i, o) => {\n s(o.node, { properties: !0, context: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:set-indent\",\n (i, o) => {\n s(o.node, { layout: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\n \"components:set-layout\",\n (i, o) => {\n s(o.node, { layout: !0 });\n }\n )\n ), this.subscriptions.push(\n this.events.subscribe(\"components:node-switched\", (i, { node: o, branch: a }) => {\n s(o, {\n layout: !0,\n recursive: !0,\n properties: !0,\n context: !0\n });\n })\n ), this.subscriptions.push(\n this.events.subscribe(\"components:node-removed\", (i, { parentNode: o }) => {\n s(o, { properties: !0 });\n })\n ), this.events.parent && this.events.parent.dispatch(\"components:platform-created\", { platform: this });\n }\n static getInstance(t) {\n return t.getAsync(\"components\");\n }\n addBreakpoint(t) {\n this.breakpoints.indexOf(t) === -1 && (this.breakpoints.push(t), this.processNode(this.nodes.root, {\n context: !0,\n properties: !0,\n layout: !0,\n recursive: !0\n }));\n }\n removeBreakpoint(t) {\n const e = this.breakpoints.indexOf(t);\n e > -1 && (this.breakpoints.splice(e, 1), this.processNode(this.nodes.root, {\n context: !0,\n properties: !0,\n layout: !0,\n recursive: !0\n }));\n }\n setSwitch(t, e) {\n this.switches[t.id] = e, this.events.dispatch(\"components:node-switched\", { node: t, branch: e });\n }\n getBranch(t) {\n return this.switches[t.id];\n }\n /**\n * Creates a `ComponentNode` of the specified type.\n * @param type Type of node.\n */\n createNode(t, e = {}) {\n const r = new le(this.events, t);\n return e.detached && this.nodes.detached.push(r), r;\n }\n components() {\n return new yt(this);\n }\n actions(t, e) {\n return new Jt(this, t, e);\n }\n write(t) {\n const { provider: e, target: r, attributes: s, options: i = {}, removable: o } = t, a = t.key || Pt(), c = { changeset: [s, i], target: r, removes: [] };\n if (e) {\n const h = this.providers[e];\n h.write(a, r, s, i), c.removes.push(() => {\n h.remove(a);\n });\n }\n return this.changesets.push(c), this.nodes.all.forEach((h) => {\n if (r.match(h)) {\n let u = () => {\n };\n s.properties && (u = h.writeProperties(s.properties, i, o)), s.context && (u = h.writeContext(s.context, i, o)), s.layout && (u = h.writeContext(s.layout, i, o)), c.removes.push(u);\n }\n }), () => {\n if (o) {\n c.removes.forEach((u) => u());\n const h = this.changesets.indexOf(c);\n h > -1 && this.changesets.splice(h, 1);\n }\n };\n }\n addComponentHandler(t, e) {\n this.customComponentHandler.add(t, e);\n }\n getComponentHandler(t) {\n return this.customComponentHandler.get(t);\n }\n dispose() {\n this.subscriptions.forEach((t) => t());\n }\n};\nconst wr = (n) => {\n if (Array.isArray(n)) {\n const [t, ...e] = n;\n return {\n definitionId: t,\n overrides: e\n };\n }\n return {\n definitionId: n,\n overrides: []\n };\n}, Ht = (n, t, e, r, s, i) => {\n e.forEach((o) => {\n const a = wr(o), c = r[a.definitionId];\n if (a.definitionId === \"view\") {\n const h = n.createNode(\"view\");\n h.name = \"view\", Object.keys(s).forEach((u) => {\n const l = s[u];\n Ht(n, h, [l.entry], r, s, u);\n }), t.appendChild(h), a.overrides.forEach((u) => {\n u.properties && h.writeProperties(u.properties, {\n breakpoints: u.breakpoints\n }), u.context && h.writeContext(u.context, { breakpoints: u.breakpoints }), u.layout && h.writeLayout(u.layout, { breakpoints: u.breakpoints });\n });\n } else if (n.getComponentHandler(c.type)) {\n const h = n.getComponentHandler(c.type);\n h && h(a, {\n platform: n,\n node: t,\n references: e,\n definitions: r,\n views: s,\n branch: i\n });\n } else {\n const h = r[a.definitionId];\n if (process.env.NODE_ENV !== \"production\" && !h) {\n R.error(\n `No definition found for component type '${a.definitionId}'.`\n );\n return;\n }\n const u = n.createNode(h.type);\n u.name = a.definitionId, u.tags = h.tags || [], h.properties && u.writeProperties(h.properties), h.context && u.writeContext(h.context), h.layout && u.writeLayout(h.layout), t.appendChild(u, i), a.overrides.forEach((l) => {\n const d = { breakpoints: l.breakpoints };\n l.properties && u.writeProperties(l.properties, d), l.context && u.writeContext(l.context, d), l.layout && u.writeLayout(l.layout, d);\n }), h.children && Ht(n, u, h.children, r, s);\n }\n });\n}, cn = (n, t) => {\n const { entry: e, components: r, breakpoints: s, views: i } = t, o = [];\n return Object.keys(s).forEach((a) => {\n const c = s[a], h = window.matchMedia(c);\n h.matches && n.breakpoints.push(a);\n const u = (l) => {\n l.matches ? n.addBreakpoint(a) : n.removeBreakpoint(a);\n };\n h.addListener(u), o.push(() => h.removeListener(u));\n }), Ht(n, n.nodes.root, [e], r, i), () => o.forEach((a) => {\n a();\n });\n}, Or = (n, t) => ({\n id: n.id,\n type: n.type,\n name: n.name,\n branch: t || \"default\"\n}), hn = (n, t, e, r = Pt(), s = {}) => n.getAsync(\"components\").then((i) => {\n let o;\n if (typeof t == \"string\") {\n const h = new yt(i);\n h.ofType(t), o = h;\n } else\n o = t;\n const a = {}, c = (h) => {\n const u = a[h.id];\n return u ? Promise.resolve(u.controller) : qt.getInstance(n).then((l) => new ge(l, h, r));\n };\n i.events.subscribe(\n \"components:node-enter\",\n (h, { node: u }) => {\n o.match(u) && c(u).then((l) => {\n Promise.resolve(e(l)).then((d) => {\n a[u.id] = {\n dispose: d,\n controller: l\n };\n });\n });\n }\n ), i.events.subscribe(\n \"components:node-exit\",\n (h, { node: u }) => {\n const l = a[u.id];\n l && (l.dispose && l.dispose(), s.reuseController || (l.controller.dispose(), delete a[u.id]));\n }\n );\n});\nclass Er {\n constructor(t) {\n this.aliases = /* @__PURE__ */ new Map(), this.components = /* @__PURE__ */ new Map(), this.logger = new R();\n const { events: e } = t.get(\"$widget\");\n this.events = e;\n }\n getComponent(t) {\n const e = this.aliases.get(t), r = this.components.get(e || t) || null;\n return process.env.NODE_ENV !== \"production\" && (r || this.logger.warn(\n e || t,\n `Unable to resolve component: \"${e || t}\". You most likely forgot to register the required plugin for: ${e || t}.`\n )), r;\n }\n registerComponent(t, e) {\n return this.components.set(t, e), this.events.dispatch(\"component-resolver:resolve\", t), () => {\n this.components.delete(t);\n };\n }\n registerResolver(t, e) {\n return this.events.subscribe(\"component-resolver:resolve\", (r, s) => {\n if (s === t) {\n const i = this.getComponent(t);\n e(i);\n }\n });\n }\n registerAlias(t, e) {\n return this.aliases.set(t, e), this.events.dispatch(\"component-resolver:resolve\", t), () => {\n this.aliases.delete(t);\n };\n }\n}\nvar z = /* @__PURE__ */ ((n) => (n.open = \"open\", n.closed = \"closed\", n.hidden = \"hidden\", n))(z || {});\nconst me = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n ActionResolver: lr,\n ActionsController: Jt,\n ComponentNode: le,\n ComponentNodeController: ge,\n ComponentPlatform: qt,\n ComponentQuery: yt,\n ComponentResolver: Er,\n WidgetRenderState: z,\n asDescriptor: Or,\n createChildren: Ht,\n createComponentModel: cn,\n createEventSubscriber: sn,\n extendComponent: hn,\n findComponent: an,\n findVisibleComponents: Mt,\n traverseComponents: Kt\n}, Symbol.toStringTag, { value: \"Module\" }));\nfunction un(n) {\n return n && n.__esModule && Object.prototype.hasOwnProperty.call(n, \"default\") ? n.default : n;\n}\nvar ln = function() {\n};\nprocess.env.NODE_ENV !== \"production\" && (ln = function(n, t, e) {\n var r = arguments.length;\n e = new Array(r > 2 ? r - 2 : 0);\n for (var s = 2; s < r; s++)\n e[s - 2] = arguments[s];\n if (t === void 0)\n throw new Error(\n \"`warning(condition, format, ...args)` requires a warning message argument\"\n );\n if (t.length < 10 || /^[s\\W]*$/.test(t))\n throw new Error(\n \"The warning format should be able to uniquely identify this warning. Please, use a more descriptive format than: \" + t\n );\n if (!n) {\n var i = 0, o = \"Warning: \" + t.replace(/%s/g, function() {\n return e[i++];\n });\n typeof console != \"undefined\" && console.error(o);\n try {\n throw new Error(o);\n } catch (a) {\n }\n }\n});\nvar xr = ln;\nconst Z = /* @__PURE__ */ un(xr);\nvar $r = function(n, t, e, r, s, i, o, a) {\n if (process.env.NODE_ENV !== \"production\" && t === void 0)\n throw new Error(\"invariant requires an error message argument\");\n if (!n) {\n var c;\n if (t === void 0)\n c = new Error(\n \"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\"\n );\n else {\n var h = [e, r, s, i, o, a], u = 0;\n c = new Error(\n t.replace(/%s/g, function() {\n return h[u++];\n })\n ), c.name = \"Invariant Violation\";\n }\n throw c.framesToPop = 1, c;\n }\n}, Pr = $r;\nconst Sr = /* @__PURE__ */ un(Pr);\nfunction Ct(n) {\n return n.charAt(0) === \"/\";\n}\nfunction ee(n, t) {\n for (var e = t, r = e + 1, s = n.length; r < s; e += 1, r += 1)\n n[e] = n[r];\n n.pop();\n}\nfunction Cr(n) {\n var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : \"\", e = n && n.split(\"/\") || [], r = t && t.split(\"/\") || [], s = n && Ct(n), i = t && Ct(t), o = s || i;\n if (n && Ct(n) ? r = e : e.length && (r.pop(), r = r.concat(e)), !r.length)\n return \"/\";\n var a = void 0;\n if (r.length) {\n var c = r[r.length - 1];\n a = c === \".\" || c === \"..\" || c === \"\";\n } else\n a = !1;\n for (var h = 0, u = r.length; u >= 0; u--) {\n var l = r[u];\n l === \".\" ? ee(r, u) : l === \"..\" ? (ee(r, u), h++) : h && (ee(r, u), h--);\n }\n if (!o)\n for (; h--; h)\n r.unshift(\"..\");\n o && r[0] !== \"\" && (!r[0] || !Ct(r[0])) && r.unshift(\"\");\n var d = r.join(\"/\");\n return a && d.substr(-1) !== \"/\" && (d += \"/\"), d;\n}\nvar kr = function(t) {\n return t.charAt(0) === \"/\" ? t : \"/\" + t;\n}, dn = function(t, e) {\n return new RegExp(\"^\" + e + \"(\\\\/|\\\\?|#|$)\", \"i\").test(t);\n}, Ar = function(t, e) {\n return dn(t, e) ? t.substr(e.length) : t;\n}, Nr = function(t) {\n return t.charAt(t.length - 1) === \"/\" ? t.slice(0, -1) : t;\n}, Lr = function(t) {\n var e = t || \"/\", r = \"\", s = \"\", i = e.indexOf(\"#\");\n i !== -1 && (s = e.substr(i), e = e.substr(0, i));\n var o = e.indexOf(\"?\");\n return o !== -1 && (r = e.substr(o), e = e.substr(0, o)), {\n pathname: e,\n search: r === \"?\" ? \"\" : r,\n hash: s === \"#\" ? \"\" : s\n };\n}, pn = function(t) {\n var e = t.pathname, r = t.search, s = t.hash, i = e || \"/\";\n return r && r !== \"?\" && (i += r.charAt(0) === \"?\" ? r : \"?\" + r), s && s !== \"#\" && (i += s.charAt(0) === \"#\" ? s : \"#\" + s), i;\n}, Mr = Object.assign || function(n) {\n for (var t = 1; t < arguments.length; t++) {\n var e = arguments[t];\n for (var r in e)\n Object.prototype.hasOwnProperty.call(e, r) && (n[r] = e[r]);\n }\n return n;\n}, ct = function(t, e, r, s) {\n var i = void 0;\n typeof t == \"string\" ? (i = Lr(t), i.state = e) : (i = Mr({}, t), i.pathname === void 0 && (i.pathname = \"\"), i.search ? i.search.charAt(0) !== \"?\" && (i.search = \"?\" + i.search) : i.search = \"\", i.hash ? i.hash.charAt(0) !== \"#\" && (i.hash = \"#\" + i.hash) : i.hash = \"\", e !== void 0 && i.state === void 0 && (i.state = e));\n try {\n i.pathname = decodeURI(i.pathname);\n } catch (o) {\n throw o instanceof URIError ? new URIError('Pathname \"' + i.pathname + '\" could not be decoded. This is likely caused by an invalid percent-encoding.') : o;\n }\n return r && (i.key = r), s ? i.pathname ? i.pathname.charAt(0) !== \"/\" && (i.pathname = Cr(i.pathname, s.pathname)) : i.pathname = s.pathname : i.pathname || (i.pathname = \"/\"), i;\n}, fn = function() {\n var t = null, e = function(c) {\n return Z(t == null, \"A history supports only one prompt at a time\"), t = c, function() {\n t === c && (t = null);\n };\n }, r = function(c, h, u, l) {\n if (t != null) {\n var d = typeof t == \"function\" ? t(c, h) : t;\n typeof d == \"string\" ? typeof u == \"function\" ? u(d, l) : (Z(!1, \"A history needs a getUserConfirmation function in order to use a prompt message\"), l(!0)) : l(d !== !1);\n } else\n l(!0);\n }, s = [], i = function(c) {\n var h = !0, u = function() {\n h && c.apply(void 0, arguments);\n };\n return s.push(u), function() {\n h = !1, s = s.filter(function(l) {\n return l !== u;\n });\n };\n }, o = function() {\n for (var c = arguments.length, h = Array(c), u = 0; u < c; u++)\n h[u] = arguments[u];\n s.forEach(function(l) {\n return l.apply(void 0, h);\n });\n };\n return {\n setPrompt: e,\n confirmTransitionTo: r,\n appendListener: i,\n notifyListeners: o\n };\n}, Dr = !!(typeof window != \"undefined\" && window.document && window.document.createElement), Me = function(t, e, r) {\n return t.addEventListener ? t.addEventListener(e, r, !1) : t.attachEvent(\"on\" + e, r);\n}, De = function(t, e, r) {\n return t.removeEventListener ? t.removeEventListener(e, r, !1) : t.detachEvent(\"on\" + e, r);\n}, jr = function(t, e) {\n return e(window.confirm(t));\n}, _r = function() {\n var t = window.navigator.userAgent;\n return (t.indexOf(\"Android 2.\") !== -1 || t.indexOf(\"Android 4.0\") !== -1) && t.indexOf(\"Mobile Safari\") !== -1 && t.indexOf(\"Chrome\") === -1 && t.indexOf(\"Windows Phone\") === -1 ? !1 : window.history && \"pushState\" in window.history;\n}, Ir = function() {\n return window.navigator.userAgent.indexOf(\"Trident\") === -1;\n}, Rr = function(t) {\n return t.state === void 0 && navigator.userAgent.indexOf(\"CriOS\") === -1;\n}, je = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(n) {\n return typeof n;\n} : function(n) {\n return n && typeof Symbol == \"function\" && n.constructor === Symbol && n !== Symbol.prototype ? \"symbol\" : typeof n;\n}, Tr = Object.assign || function(n) {\n for (var t = 1; t < arguments.length; t++) {\n var e = arguments[t];\n for (var r in e)\n Object.prototype.hasOwnProperty.call(e, r) && (n[r] = e[r]);\n }\n return n;\n}, _e = \"popstate\", Ie = \"hashchange\", Re = function() {\n try {\n return window.history.state || {};\n } catch (t) {\n return {};\n }\n}, Hr = function() {\n var t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n Sr(Dr, \"Browser history needs a DOM\");\n var e = window.history, r = _r(), s = !Ir(), i = t.forceRefresh, o = i === void 0 ? !1 : i, a = t.getUserConfirmation, c = a === void 0 ? jr : a, h = t.keyLength, u = h === void 0 ? 6 : h, l = t.basename ? Nr(kr(t.basename)) : \"\", d = function(y) {\n var O = y || {}, L = O.key, M = O.state, F = window.location, J = F.pathname, et = F.search, Y = F.hash, W = J + et + Y;\n return Z(!l || dn(W, l), 'You are attempting to use a basename on a page whose URL path does not begin with the basename. Expected path \"' + W + '\" to begin with \"' + l + '\".'), l && (W = Ar(W, l)), ct(W, M, L);\n }, f = function() {\n return Math.random().toString(36).substr(2, u);\n }, g = fn(), E = function(y) {\n Tr(P, y), P.length = e.length, g.notifyListeners(P.location, P.action);\n }, p = function(y) {\n Rr(y) || U(d(y.state));\n }, C = function() {\n U(d(Re()));\n }, T = !1, U = function(y) {\n if (T)\n T = !1, E();\n else {\n var O = \"POP\";\n g.confirmTransitionTo(y, O, c, function(L) {\n L ? E({ action: O, location: y }) : _(y);\n });\n }\n }, _ = function(y) {\n var O = P.location, L = H.indexOf(O.key);\n L === -1 && (L = 0);\n var M = H.indexOf(y.key);\n M === -1 && (M = 0);\n var F = L - M;\n F && (T = !0, j(F));\n }, D = d(Re()), H = [D.key], x = function(y) {\n return l + pn(y);\n }, N = function(y, O) {\n Z(!((typeof y == \"undefined\" ? \"undefined\" : je(y)) === \"object\" && y.state !== void 0 && O !== void 0), \"You should avoid providing a 2nd state argument to push when the 1st argument is a location-like object that already has state; it is ignored\");\n var L = \"PUSH\", M = ct(y, O, f(), P.location);\n g.confirmTransitionTo(M, L, c, function(F) {\n if (F) {\n var J = x(M), et = M.key, Y = M.state;\n if (r)\n if (e.pushState({ key: et, state: Y }, null, J), o)\n window.location.href = J;\n else {\n var W = H.indexOf(P.location.key), Ee = H.slice(0, W === -1 ? 0 : W + 1);\n Ee.push(M.key), H = Ee, E({ action: L, location: M });\n }\n else\n Z(Y === void 0, \"Browser history cannot push state in browsers that do not support HTML5 history\"), window.location.href = J;\n }\n });\n }, A = function(y, O) {\n Z(!((typeof y == \"undefined\" ? \"undefined\" : je(y)) === \"object\" && y.state !== void 0 && O !== void 0), \"You should avoid providing a 2nd state argument to replace when the 1st argument is a location-like object that already has state; it is ignored\");\n var L = \"REPLACE\", M = ct(y, O, f(), P.location);\n g.confirmTransitionTo(M, L, c, function(F) {\n if (F) {\n var J = x(M), et = M.key, Y = M.state;\n if (r)\n if (e.replaceState({ key: et, state: Y }, null, J), o)\n window.location.replace(J);\n else {\n var W = H.indexOf(P.location.key);\n W !== -1 && (H[W] = M.key), E({ action: L, location: M });\n }\n else\n Z(Y === void 0, \"Browser history cannot replace state in browsers that do not support HTML5 history\"), window.location.replace(J);\n }\n });\n }, j = function(y) {\n e.go(y);\n }, B = function() {\n return j(-1);\n }, V = function() {\n return j(1);\n }, I = 0, m = function(y) {\n I += y, I === 1 ? (Me(window, _e, p), s && Me(window, Ie, C)) : I === 0 && (De(window, _e, p), s && De(window, Ie, C));\n }, b = !1, v = function() {\n var y = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !1, O = g.setPrompt(y);\n return b || (m(1), b = !0), function() {\n return b && (b = !1, m(-1)), O();\n };\n }, w = function(y) {\n var O = g.appendListener(y);\n return m(1), function() {\n m(-1), O();\n };\n }, P = {\n length: e.length,\n action: \"POP\",\n location: D,\n createHref: x,\n push: N,\n replace: A,\n go: j,\n goBack: B,\n goForward: V,\n block: v,\n listen: w\n };\n return P;\n}, Te = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(n) {\n return typeof n;\n} : function(n) {\n return n && typeof Symbol == \"function\" && n.constructor === Symbol && n !== Symbol.prototype ? \"symbol\" : typeof n;\n}, Vr = Object.assign || function(n) {\n for (var t = 1; t < arguments.length; t++) {\n var e = arguments[t];\n for (var r in e)\n Object.prototype.hasOwnProperty.call(e, r) && (n[r] = e[r]);\n }\n return n;\n}, He = function(t, e, r) {\n return Math.min(Math.max(t, e), r);\n}, Br = function() {\n var t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, e = t.getUserConfirmation, r = t.initialEntries, s = r === void 0 ? [\"/\"] : r, i = t.initialIndex, o = i === void 0 ? 0 : i, a = t.keyLength, c = a === void 0 ? 6 : a, h = fn(), u = function(A) {\n Vr(x, A), x.length = x.entries.length, h.notifyListeners(x.location, x.action);\n }, l = function() {\n return Math.random().toString(36).substr(2, c);\n }, d = He(o, 0, s.length - 1), f = s.map(function(N) {\n return typeof N == \"string\" ? ct(N, void 0, l()) : ct(N, void 0, N.key || l());\n }), g = pn, E = function(A, j) {\n Z(!((typeof A == \"undefined\" ? \"undefined\" : Te(A)) === \"object\" && A.state !== void 0 && j !== void 0), \"You should avoid providing a 2nd state argument to push when the 1st argument is a location-like object that already has state; it is ignored\");\n var B = \"PUSH\", V = ct(A, j, l(), x.location);\n h.confirmTransitionTo(V, B, e, function(I) {\n if (I) {\n var m = x.index, b = m + 1, v = x.entries.slice(0);\n v.length > b ? v.splice(b, v.length - b, V) : v.push(V), u({\n action: B,\n location: V,\n index: b,\n entries: v\n });\n }\n });\n }, p = function(A, j) {\n Z(!((typeof A == \"undefined\" ? \"undefined\" : Te(A)) === \"object\" && A.state !== void 0 && j !== void 0), \"You should avoid providing a 2nd state argument to replace when the 1st argument is a location-like object that already has state; it is ignored\");\n var B = \"REPLACE\", V = ct(A, j, l(), x.location);\n h.confirmTransitionTo(V, B, e, function(I) {\n I && (x.entries[x.index] = V, u({ action: B, location: V }));\n });\n }, C = function(A) {\n var j = He(x.index + A, 0, x.entries.length - 1), B = \"POP\", V = x.entries[j];\n h.confirmTransitionTo(V, B, e, function(I) {\n I ? u({\n action: B,\n location: V,\n index: j\n }) : u();\n });\n }, T = function() {\n return C(-1);\n }, U = function() {\n return C(1);\n }, _ = function(A) {\n var j = x.index + A;\n return j >= 0 && j < x.entries.length;\n }, D = function() {\n var A = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !1;\n return h.setPrompt(A);\n }, H = function(A) {\n return h.appendListener(A);\n }, x = {\n length: f.length,\n action: \"POP\",\n location: f[d],\n index: d,\n entries: f,\n createHref: g,\n push: E,\n replace: p,\n go: C,\n goBack: T,\n goForward: U,\n canGo: _,\n block: D,\n listen: H\n };\n return x;\n}, Ur = Object.defineProperty, Ve = Object.getOwnPropertySymbols, Wr = Object.prototype.hasOwnProperty, zr = Object.prototype.propertyIsEnumerable, Be = (n, t, e) => t in n ? Ur(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e, pt = (n, t) => {\n for (var e in t || (t = {}))\n Wr.call(t, e) && Be(n, e, t[e]);\n if (Ve)\n for (var e of Ve(t))\n zr.call(t, e) && Be(n, e, t[e]);\n return n;\n}, kt = (n, t, e) => new Promise((r, s) => {\n var i = (c) => {\n try {\n a(e.next(c));\n } catch (h) {\n s(h);\n }\n }, o = (c) => {\n try {\n a(e.throw(c));\n } catch (h) {\n s(h);\n }\n }, a = (c) => c.done ? r(c.value) : Promise.resolve(c.value).then(i, o);\n a((e = e.apply(n, t)).next());\n}), S = /* @__PURE__ */ ((n) => (n.Cookie = \"cookie\", n.Local = \"local\", n.Session = \"session\", n))(S || {}), vt = /* @__PURE__ */ ((n) => (n.Tenant = \"tenant\", n.Implementation = \"implementation\", n.Widget = \"widget\", n))(vt || {}), k = /* @__PURE__ */ ((n) => (n.Necessary = \"necessary\", n.Functional = \"functional\", n.Analytical = \"analytical\", n.Marketing = \"marketing\", n))(k || {});\nconst X = (n, t, e, r = {}) => Ue(n, e).then((s) => (process.env.NODE_ENV !== \"production\" && s && R.warn(\n `createStorageWriter: Attempted to create storage writer using unallowed category.\n Key: ${t}\n Category: ${JSON.stringify(e)}\n Options: ${JSON.stringify(r)}`\n), (i) => (be(n), Ue(n, e).then((o) => {\n if (o) {\n process.env.NODE_ENV !== \"production\" && R.warn(\n `storageWriter: Attempted to write to storage using unallowed category.\n Key: ${t}\n Category: ${JSON.stringify(e)}\n Value: ${JSON.stringify(i)}\n Options: ${JSON.stringify(r)}`\n );\n return;\n }\n const {\n scope: a = vt.Widget,\n medium: c = S.Session,\n duration: h\n } = r, u = Jr();\n return u[a][t] = ve(i, e, h), c === S.Cookie ? Gr(n, u) : Zr(n, c, u);\n})))), q = (n, t, e = S.Session) => (be(n), typeof t == \"undefined\" ? (process.env.NODE_ENV !== \"production\" && R.warn(\"readStorage: Undefined key passed when reading storage. \", t, e), Promise.resolve(void 0)) : e === S.Cookie ? Yr(n).then((r) => Bt(r, t)) : Qr(n, e).then((r) => Bt(r, t))), mt = (n) => !!Object.entries(n).filter(([t, e]) => typeof e != \"undefined\").length, ne = (n) => Object.entries(n).filter(([t, e]) => typeof e != \"undefined\").forEach(([t, { value: e }]) => {\n typeof e == \"undefined\" && delete n[t];\n}), gn = (n, t) => {\n const e = {\n tenant: pt(pt({}, n.tenant), t.tenant),\n implementation: pt(pt({}, n.implementation), t.implementation),\n widget: pt(pt({}, n.widget), t.widget)\n };\n return ne(e.tenant), ne(e.implementation), ne(e.widget), e;\n}, Fr = (n) => Object.entries(n).reduce((t, e) => {\n const [r, s] = e;\n return Object.entries(s).forEach((i) => {\n const [o, { expiration: a }] = i;\n a && t.push(a);\n }), t;\n}, []).slice().sort((t, e) => new Date(e).valueOf() - new Date(t).valueOf()).shift() || Gt(), Yt = (n) => {\n const {\n name: t,\n implementation: { name: e, tenant: r }\n } = n.get(\"$widget\");\n return [\n `humany_${r}`,\n `humany_${ke(r + e)}`,\n `humany_${ke(r + e + t)}`\n ];\n}, re = (n) => {\n const t = new RegExp(`(?:^|;)\\\\s?${n}=(.*?)(?:;|$)`, \"i\"), e = document.cookie.match(t);\n return e && e[1] && JSON.parse(e[1]) || void 0;\n}, se = (n, t, e) => {\n const r = `${n}=${JSON.stringify(t).trim()}`, s = `expires=${new Date(e).toUTCString()}`, i = \"path=/\", o = \"SameSite=None;Secure\";\n return document.cookie = `${r}; ${s}; ${i}; ${o}`;\n}, ye = (n) => {\n const [t, e, r] = Yt(n), s = re(t) || {}, i = re(e) || {}, o = re(r) || {};\n return {\n tenant: s,\n implementation: i,\n widget: o\n };\n}, mn = (n, t) => {\n const e = ye(n), r = gn(e, t), [s, i, o] = Yt(n), { tenant: a, implementation: c, widget: h } = r, u = Fr(t), l = Gt({ days: -1 });\n se(s, a, mt(a) ? u : l), se(\n i,\n c,\n mt(c) ? u : l\n ), se(o, h, mt(h) ? u : l);\n}, Vt = (n, t) => {\n const [e, r, s] = Yt(n), i = t.getItem(e) || \"{}\", o = t.getItem(r) || \"{}\", a = t.getItem(s) || \"{}\";\n return {\n tenant: JSON.parse(i),\n implementation: JSON.parse(o),\n widget: JSON.parse(a)\n };\n}, de = (n, t, e) => {\n const r = Vt(n, t), s = gn(r, e), [i, o, a] = Yt(n), { tenant: c, implementation: h, widget: u } = s;\n mt(c) ? t.setItem(i, JSON.stringify(c)) : t.removeItem(i), mt(h) ? t.setItem(o, JSON.stringify(h)) : t.removeItem(o), mt(u) ? t.setItem(a, JSON.stringify(u)) : t.removeItem(a);\n}, Jr = () => ({ tenant: {}, implementation: {}, widget: {} }), Kr = (n) => n ? !!n && /* @__PURE__ */ new Date() > new Date(n) : !1, Bt = (n, t) => {\n const e = n.widget[t] || n.implementation[t] || n.tenant[t];\n return e == null ? void 0 : e.value;\n}, ve = (n, t, e) => e ? {\n value: n,\n category: t,\n expiration: typeof e == \"object\" ? Gt(e) : e\n} : {\n value: n,\n category: t\n}, Dt = (n, t) => {\n const e = Zn(n);\n return Object.entries(e).forEach(([r, s]) => {\n Object.entries(s).forEach(([i, o]) => {\n const { expiration: a, category: c } = o;\n (Kr(a) || qr(t, c)) && (s[i] = ve(void 0, c, a));\n });\n }), e;\n}, Ue = (n, t) => q(n, \"storagePolicy\", S.Cookie).then(\n (e = [k.Necessary]) => !!t && e.indexOf(t) === -1\n), qr = (n = [k.Necessary], t) => !!t && n.indexOf(t) === -1, be = (n) => {\n const t = ye(n), e = Vt(n, window.localStorage), r = Vt(n, sessionStorage), s = Bt(t, \"storagePolicy\"), [i, o, a] = [\n t,\n e,\n r\n ].map((c) => Dt(c, s));\n mn(n, i), de(n, window.localStorage, o), de(n, window.sessionStorage, a);\n}, Gt = (n = { days: 30 }) => {\n const { days: t = 0, hours: e = 0, minutes: r = 0, seconds: s = 0 } = n, i = /* @__PURE__ */ new Date();\n return i.setTime(i.getTime() + e * 60 * 60 * 1e3), i.setTime(i.getTime() + t * 24 * 60 * 60 * 1e3), i.setTime(i.getTime() + r * 60 * 1e3), i.setTime(i.getTime() + s * 1e3), i.toISOString();\n}, Yr = (n) => G(document)(() => ye(n)), Gr = (n, t) => G(document)(() => mn(n, t)), Qr = (n, t) => {\n const e = t === S.Local ? window.localStorage : window.sessionStorage;\n return G(e)(() => Vt(n, e));\n}, Zr = (n, t, e) => {\n const r = t === S.Local ? window.localStorage : window.sessionStorage;\n return G(r)(() => de(n, r, e));\n};\nclass jt {\n constructor() {\n this.memory = {\n tenant: {},\n implementation: {},\n widget: {}\n };\n }\n setItem(t, e) {\n return kt(this, arguments, function* (r, s, i = {}) {\n return G(this)(() => {\n const o = Dt(this.memory, [k.Necessary]), { scope: a = vt.Tenant, expiration: c } = i;\n o[a][r] = ve(\n s,\n k.Necessary,\n (c == null ? void 0 : c.toISOString()) || Gt()\n ), this.memory = o, process.env.NODE_ENV !== \"production\" && R.warn(\n `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value stored temporarily in memory.\n Key: ${r}\n Value: ${JSON.stringify(s)}\n Options: ${JSON.stringify(i)}\n Memory: ${JSON.stringify(o)}`\n );\n });\n });\n }\n getItem(t) {\n return kt(this, null, function* () {\n return G(this)(() => {\n const e = Dt(this.memory, [k.Necessary]);\n process.env.NODE_ENV !== \"production\" && R.warn(\n `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value fetched from legacy memory storage.\n Key: ${t}\n Memory: ${JSON.stringify(e)}`\n );\n const r = Bt(e, t);\n return this.memory = e, r;\n });\n });\n }\n removeItem(t) {\n return kt(this, null, function* () {\n return G(this)(() => {\n const e = Dt(this.memory, [k.Necessary]);\n delete e.tenant[t], delete e.implementation[t], delete e.widget[t], this.memory = e, process.env.NODE_ENV !== \"production\" && R.warn(\n `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value removed from memory.\n Key: ${t}\n Memory: ${JSON.stringify(e)}`\n );\n });\n });\n }\n clear() {\n return kt(this, null, function* () {\n return Promise.resolve();\n });\n }\n}\nlet Xr = class {\n constructor() {\n this.cookies = new jt(), this.session = new jt(), this.local = new jt();\n }\n};\nconst ie = (n, t, e, ...r) => {\n const s = `[${n.get(\"$environment\").name || \"webprovisions\"}] ${e}`;\n switch (t) {\n case \"info\":\n console.info(s, ...r);\n break;\n case \"warning\":\n console.warn(s, ...r);\n break;\n case \"error\":\n console.error(s, ...r);\n break;\n }\n}, ts = (n) => {\n const t = n.container || n;\n return {\n info: (e, ...r) => ie(t, \"info\", e, ...r),\n warn: (e, ...r) => ie(t, \"warning\", e, ...r),\n error: (e, ...r) => ie(t, \"error\", e, ...r)\n };\n};\nvar Ut = /* @__PURE__ */ ((n) => (n.Implementation = \"implementation\", n.Widget = \"widget\", n))(Ut || {}), ht = /* @__PURE__ */ ((n) => (n.Pre = \"pre\", n.Post = \"post\", n))(ht || {});\nconst es = (n, t, e, r) => {\n try {\n const s = new t(e, r);\n return {\n name: n,\n invoke: (i, o) => {\n let a;\n return s[i] && (a = s[i].call(s, o)), Promise.resolve(a);\n },\n getInstance: () => s\n };\n } catch (s) {\n if (s.message && s.message.indexOf(\"is not a constructor\") >= 0)\n return {\n name: n,\n invoke: (i) => {\n let o;\n return i === \"initialize\" && (o = t(e, r)), Promise.resolve(o);\n },\n getInstance: () => t\n };\n throw s;\n }\n};\nfunction We(n, t) {\n return typeof n == \"undefined\" ? t : n;\n}\nlet ns = class {\n constructor(t = {}) {\n this.part = t;\n }\n createCommand(t, e, r) {\n let s;\n typeof e == \"function\" ? s = {\n scope: Ut.Widget,\n stage: ht.Post,\n defaultArgs: void 0,\n handlerResolver: e\n } : s = {\n scope: We(e.scope, Ut.Widget),\n stage: We(e.stage, ht.Post),\n defaultArgs: e.defaultArgs,\n handlerResolver: r\n };\n let i = this.part;\n const o = t.split(\".\");\n return o.forEach((a, c) => {\n c === o.length - 1 ? i[a] || (i[a] = () => s) : i = this.part[a] = this.part[a] || {};\n }), this;\n }\n get() {\n return this.part;\n }\n};\nconst yn = (n) => {\n const t = new ns({});\n return n(t), t.get();\n};\nyn((n) => {\n n.createCommand(\n \"types.register\",\n { scope: Ut.Implementation, stage: ht.Pre },\n (t) => (e, r) => {\n t.container.get(\"$types\")[e] = r;\n }\n ).createCommand(\n \"type\",\n { stage: ht.Pre },\n (t) => (e) => {\n t.container.register(\"$type\", e);\n }\n ).createCommand(\n \"settings\",\n { stage: ht.Pre, defaultArgs: [null] },\n (t) => (e) => {\n t.events.dispatch(\n \"settings:change\",\n e,\n { bubbles: !0 }\n ), t.container.register(\"$settings\", e);\n }\n ).createCommand(\n \"plugin\",\n { stage: ht.Pre },\n (t) => (e, r, s) => {\n const { container: i } = t;\n let o = null, a = e, c = r;\n typeof e == \"string\" && (o = e, a = r, c = s);\n const h = (u) => {\n const { transformPluginSettings: l } = t.container.get(\"$environmentOptions\"), d = l ? l(\n c || {},\n o,\n t.container,\n a\n ) : r;\n try {\n const f = es(\n o,\n a,\n i,\n d\n );\n i.get(\"$plugins\").push(f), u && f.invoke(\"initialize\", null);\n } catch (f) {\n ts(t).warn(\"Error when initializing plugin\", f);\n }\n };\n t.container.get(\"$instance\") ? h(!0) : t.events.subscribeOnce(\"widget:instance-created\", () => h(!1));\n }\n ).createCommand(\n \"container.register\",\n (t) => (e, r) => {\n t.container.register(e, r);\n }\n ).createCommand(\n \"container.registerAsync\",\n (t) => (e, r) => {\n t.container.registerAsync(e, r);\n }\n ).createCommand(\n \"container.registerFactory\",\n (t) => (e, r) => {\n t.container.registerFactory(e, r);\n }\n ).createCommand(\n \"container.touch\",\n (t) => (e, r) => {\n t.container.touch(e, r);\n }\n ).createCommand(\n \"csp\",\n {},\n (t) => (e) => {\n t.container.register(\"csp\", e);\n }\n );\n});\nyn((n) => {\n n.createCommand(\"storage\", (t) => (e = {}) => {\n const { consent: r } = e;\n if (typeof r != \"undefined\") {\n if (typeof r != \"number\" && typeof r != \"string\" && !Array.isArray(r)) {\n process.env.NODE_ENV !== \"production\" && R.warn(\n `storagePolicyConfigurationApi: passed consent is not valid. Consent either has to be a number, a string, an array of strings or an array of numbers.\n Passed consent: ${JSON.stringify(r)}`\n );\n return;\n }\n if (Array.isArray(r) && !r.every(\n (i) => typeof i == \"number\" || typeof i == \"string\"\n )) {\n process.env.NODE_ENV !== \"production\" && R.warn(\n `storagePolicyConfigurationApi: passed consent is not valid. Consent either has to be a number, a string, an array of strings or an array of numbers.\n Passed consent: ${JSON.stringify(r)}`\n );\n return;\n }\n const s = [\n k.Necessary,\n k.Functional,\n k.Analytical,\n k.Marketing\n ].filter((i, o, a) => typeof r == \"number\" ? r > o : typeof r == \"string\" ? a.indexOf(r) + 1 > o : Array.isArray(r) ? r.findIndex((c) => c === o + 1 || c === i) > -1 : !0);\n return s.indexOf(k.Necessary) === -1 && (process.env.NODE_ENV !== \"production\" && R.warn(\n `storagePolicyConfigurationApi: passed consent does not include category: '${k.Necessary}'. Consent has to atleast include the '${k.Necessary}' category.\n Passed consent: ${JSON.stringify(r)}`\n ), s.unshift(k.Necessary)), X(\n t.container,\n \"storagePolicy\",\n k.Necessary,\n {\n medium: S.Cookie,\n scope: vt.Tenant,\n duration: { days: 365 }\n }\n ).then((i) => i(s)).then(() => {\n be(t.container), t.events.dispatch(\"storage:policy-changed\", s);\n });\n }\n });\n});\nconst rs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n StorageCategory: k,\n StorageMedium: S,\n StorageProvider: Xr,\n StorageScope: vt,\n StorageService: jt,\n createStorageWriter: X,\n readStorage: q\n}, Symbol.toStringTag, { value: \"Module\" }));\nvar ss = Object.defineProperty, is = Object.defineProperties, os = Object.getOwnPropertyDescriptors, Wt = Object.getOwnPropertySymbols, vn = Object.prototype.hasOwnProperty, bn = Object.prototype.propertyIsEnumerable, ze = (n, t, e) => t in n ? ss(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e, gt = (n, t) => {\n for (var e in t || (t = {}))\n vn.call(t, e) && ze(n, e, t[e]);\n if (Wt)\n for (var e of Wt(t))\n bn.call(t, e) && ze(n, e, t[e]);\n return n;\n}, wn = (n, t) => is(n, os(t)), as = (n, t) => {\n var e = {};\n for (var r in n)\n vn.call(n, r) && t.indexOf(r) < 0 && (e[r] = n[r]);\n if (n != null && Wt)\n for (var r of Wt(n))\n t.indexOf(r) < 0 && bn.call(n, r) && (e[r] = n[r]);\n return e;\n};\nfunction On(n) {\n if (n.__esModule)\n return n;\n var t = n.default;\n if (typeof t == \"function\") {\n var e = function r() {\n if (this instanceof r) {\n var s = [null];\n s.push.apply(s, arguments);\n var i = Function.bind.apply(t, s);\n return new i();\n }\n return t.apply(this, arguments);\n };\n e.prototype = t.prototype;\n } else\n e = {};\n return Object.defineProperty(e, \"__esModule\", { value: !0 }), Object.keys(n).forEach(function(r) {\n var s = Object.getOwnPropertyDescriptor(n, r);\n Object.defineProperty(e, r, s.get ? s : {\n enumerable: !0,\n get: function() {\n return n[r];\n }\n });\n }), e;\n}\nvar En = function() {\n};\nprocess.env.NODE_ENV !== \"production\" && (En = function(n, t, e) {\n var r = arguments.length;\n e = new Array(r > 2 ? r - 2 : 0);\n for (var s = 2; s < r; s++)\n e[s - 2] = arguments[s];\n if (t === void 0)\n throw new Error(\n \"`warning(condition, format, ...args)` requires a warning message argument\"\n );\n if (t.length < 10 || /^[s\\W]*$/.test(t))\n throw new Error(\n \"The warning format should be able to uniquely identify this warning. Please, use a more descriptive format than: \" + t\n );\n if (!n) {\n var i = 0, o = \"Warning: \" + t.replace(/%s/g, function() {\n return e[i++];\n });\n typeof console != \"undefined\" && console.error(o);\n try {\n throw new Error(o);\n } catch (a) {\n }\n }\n});\nvar cs = En, hs = cs, Fe = us(hs);\nfunction us(n) {\n return n && n.__esModule ? n : { default: n };\n}\nvar ls = function() {\n var n = null, t = function(o) {\n return (0, Fe.default)(n == null, \"A history supports only one prompt at a time\"), n = o, function() {\n n === o && (n = null);\n };\n }, e = function(o, a, c, h) {\n if (n != null) {\n var u = typeof n == \"function\" ? n(o, a) : n;\n typeof u == \"string\" ? typeof c == \"function\" ? c(u, h) : ((0, Fe.default)(!1, \"A history needs a getUserConfirmation function in order to use a prompt message\"), h(!0)) : h(u !== !1);\n } else\n h(!0);\n }, r = [], s = function(o) {\n var a = !0, c = function() {\n a && o.apply(void 0, arguments);\n };\n return r.push(c), function() {\n a = !1, r = r.filter(function(h) {\n return h !== c;\n });\n };\n }, i = function() {\n for (var o = arguments.length, a = Array(o), c = 0; c < o; c++)\n a[c] = arguments[c];\n r.forEach(function(h) {\n return h.apply(void 0, a);\n });\n };\n return {\n setPrompt: t,\n confirmTransitionTo: e,\n appendListener: s,\n notifyListeners: i\n };\n}, xn = ls, $n;\n$n = function(n, t) {\n return t(window.confirm(n));\n};\nfunction At(n) {\n return n.charAt(0) === \"/\";\n}\nfunction oe(n, t) {\n for (var e = t, r = e + 1, s = n.length; r < s; e += 1, r += 1)\n n[e] = n[r];\n n.pop();\n}\nfunction ds(n) {\n var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : \"\", e = n && n.split(\"/\") || [], r = t && t.split(\"/\") || [], s = n && At(n), i = t && At(t), o = s || i;\n if (n && At(n) ? r = e : e.length && (r.pop(), r = r.concat(e)), !r.length)\n return \"/\";\n var a = void 0;\n if (r.length) {\n var c = r[r.length - 1];\n a = c === \".\" || c === \"..\" || c === \"\";\n } else\n a = !1;\n for (var h = 0, u = r.length; u >= 0; u--) {\n var l = r[u];\n l === \".\" ? oe(r, u) : l === \"..\" ? (oe(r, u), h++) : h && (oe(r, u), h--);\n }\n if (!o)\n for (; h--; h)\n r.unshift(\"..\");\n o && r[0] !== \"\" && (!r[0] || !At(r[0])) && r.unshift(\"\");\n var d = r.join(\"/\");\n return a && d.substr(-1) !== \"/\" && (d += \"/\"), d;\n}\nconst ps = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: ds\n}, Symbol.toStringTag, { value: \"Module\" })), fs = /* @__PURE__ */ On(ps);\nvar Je = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(n) {\n return typeof n;\n} : function(n) {\n return n && typeof Symbol == \"function\" && n.constructor === Symbol && n !== Symbol.prototype ? \"symbol\" : typeof n;\n};\nfunction _t(n, t) {\n if (n === t)\n return !0;\n if (n == null || t == null)\n return !1;\n if (Array.isArray(n))\n return Array.isArray(t) && n.length === t.length && n.every(function(c, h) {\n return _t(c, t[h]);\n });\n var e = typeof n == \"undefined\" ? \"undefined\" : Je(n), r = typeof t == \"undefined\" ? \"undefined\" : Je(t);\n if (e !== r)\n return !1;\n if (e === \"object\") {\n var s = n.valueOf(), i = t.valueOf();\n if (s !== n || i !== t)\n return _t(s, i);\n var o = Object.keys(n), a = Object.keys(t);\n return o.length !== a.length ? !1 : o.every(function(c) {\n return _t(n[c], t[c]);\n });\n }\n return !1;\n}\nconst gs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: _t\n}, Symbol.toStringTag, { value: \"Module\" })), ms = /* @__PURE__ */ On(gs);\nvar tt = {}, rt, Pn, pe, xt;\ntt.__esModule = !0;\nxt = tt.addLeadingSlash = function(n) {\n return n.charAt(0) === \"/\" ? n : \"/\" + n;\n};\npe = tt.stripLeadingSlash = function(n) {\n return n.charAt(0) === \"/\" ? n.substr(1) : n;\n};\nvar ys = tt.hasBasename = function(n, t) {\n return new RegExp(\"^\" + t + \"(\\\\/|\\\\?|#|$)\", \"i\").test(n);\n};\ntt.stripBasename = function(n, t) {\n return ys(n, t) ? n.substr(t.length) : n;\n};\nPn = tt.stripTrailingSlash = function(n) {\n return n.charAt(n.length - 1) === \"/\" ? n.slice(0, -1) : n;\n};\ntt.parsePath = function(n) {\n var t = n || \"/\", e = \"\", r = \"\", s = t.indexOf(\"#\");\n s !== -1 && (r = t.substr(s), t = t.substr(0, s));\n var i = t.indexOf(\"?\");\n return i !== -1 && (e = t.substr(i), t = t.substr(0, i)), {\n pathname: t,\n search: e === \"?\" ? \"\" : e,\n hash: r === \"#\" ? \"\" : r\n };\n};\nrt = tt.createPath = function(n) {\n var t = n.pathname, e = n.search, r = n.hash, s = t || \"/\";\n return e && e !== \"?\" && (s += e.charAt(0) === \"?\" ? e : \"?\" + e), r && r !== \"#\" && (s += r.charAt(0) === \"#\" ? r : \"#\" + r), s;\n};\nvar Qt, Sn = Qt = void 0, vs = Object.assign || function(n) {\n for (var t = 1; t < arguments.length; t++) {\n var e = arguments[t];\n for (var r in e)\n Object.prototype.hasOwnProperty.call(e, r) && (n[r] = e[r]);\n }\n return n;\n}, bs = fs, ws = Cn(bs), Os = ms, Es = Cn(Os), xs = tt;\nfunction Cn(n) {\n return n && n.__esModule ? n : { default: n };\n}\nQt = function(n, t, e, r) {\n var s = void 0;\n typeof n == \"string\" ? (s = (0, xs.parsePath)(n), s.state = t) : (s = vs({}, n), s.pathname === void 0 && (s.pathname = \"\"), s.search ? s.search.charAt(0) !== \"?\" && (s.search = \"?\" + s.search) : s.search = \"\", s.hash ? s.hash.charAt(0) !== \"#\" && (s.hash = \"#\" + s.hash) : s.hash = \"\", t !== void 0 && s.state === void 0 && (s.state = t));\n try {\n s.pathname = decodeURI(s.pathname);\n } catch (i) {\n throw i instanceof URIError ? new URIError('Pathname \"' + s.pathname + '\" could not be decoded. This is likely caused by an invalid percent-encoding.') : i;\n }\n return e && (s.key = e), r ? s.pathname ? s.pathname.charAt(0) !== \"/\" && (s.pathname = (0, ws.default)(s.pathname, r.pathname)) : s.pathname = r.pathname : s.pathname || (s.pathname = \"/\"), s;\n};\nSn = function(n, t) {\n return n.pathname === t.pathname && n.search === t.search && n.hash === t.hash && n.key === t.key && (0, Es.default)(n.state, t.state);\n};\nconst kn = \"/\", An = \"./\", $s = new RegExp(\n [\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n \"(\\\\\\\\.)\",\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\"]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined]\n \"(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?\"\n ].join(\"|\"),\n \"g\"\n), Nn = (n, t) => {\n const e = [];\n let r = 0, s = 0, i = \"\";\n const o = t && t.delimiter || kn, a = t && t.delimiters || An;\n let c = !1, h;\n for (; (h = $s.exec(n)) !== null; ) {\n const u = h[0], l = h[1], d = h.index;\n if (i += n.slice(s, d), s = d + u.length, l) {\n i += l[1], c = !0;\n continue;\n }\n let f = \"\";\n const g = n[s], E = h[2], p = h[3], C = h[4], T = h[5];\n if (!c && i.length) {\n const N = i.length - 1;\n a.indexOf(i[N]) > -1 && (f = i[N], i = i.slice(0, N));\n }\n i && (e.push(i), i = \"\", c = !1);\n const U = f !== \"\" && g !== void 0 && g !== f, _ = T === \"+\" || T === \"*\", D = T === \"?\" || T === \"*\", H = f || o, x = p || C;\n e.push({\n delimiter: H,\n optional: D,\n repeat: _,\n partial: U,\n name: E || r++,\n // tslint:disable-line:no-increment-decrement\n prefix: f,\n pattern: x ? Cs(x) : \"[^\" + wt(H) + \"]+?\"\n });\n }\n return (i || s < n.length) && e.push(i + n.substr(s)), e;\n}, Ps = (n, t) => Ss(Nn(n, t)), Ss = (n) => {\n const t = new Array(n.length);\n for (let e = 0; e < n.length; e++)\n typeof n[e] == \"object\" && (t[e] = new RegExp(\"^(?:\" + n[e].pattern + \")$\"));\n return function(e, r) {\n let s = \"\";\n const i = r && r.encode || encodeURIComponent;\n for (let o = 0; o < n.length; o++) {\n const a = n[o];\n if (typeof a == \"string\") {\n s += a;\n continue;\n }\n const c = e ? e[a.name] : void 0;\n let h;\n if (Array.isArray(c)) {\n if (!a.repeat)\n throw new TypeError(\n 'Expected \"' + a.name + '\" to not repeat, but got array'\n );\n if (c.length === 0) {\n if (a.optional)\n continue;\n throw new TypeError('Expected \"' + a.name + '\" to not be empty');\n }\n for (let u = 0; u < c.length; u++) {\n if (h = i(c[u], a), !t[o].test(h))\n throw new TypeError(\n 'Expected all \"' + a.name + '\" to match \"' + a.pattern + '\"'\n );\n s += (u === 0 ? a.prefix : a.delimiter) + h;\n }\n continue;\n }\n if (typeof c == \"string\" || typeof c == \"number\" || typeof c == \"boolean\") {\n if (h = i(String(c), a), !t[o].test(h))\n throw new TypeError(\n 'Expected \"' + a.name + '\" to match \"' + a.pattern + '\", but got \"' + h + '\"'\n );\n s += a.prefix + h;\n continue;\n }\n if (a.optional) {\n a.partial && (s += a.prefix);\n continue;\n }\n throw new TypeError(\n 'Expected \"' + a.name + '\" to be ' + (a.repeat ? \"an array\" : \"a string\")\n );\n }\n return s;\n };\n}, wt = (n) => n.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\"), Cs = (n) => n.replace(/([=!:$/()])/g, \"\\\\$1\"), Ln = (n) => n && n.sensitive ? \"\" : \"i\", ks = (n, t) => {\n if (!t)\n return n;\n const e = n.source.match(/\\((?!\\?)/g);\n if (e)\n for (let r = 0; r < e.length; r++)\n t.push({\n name: r,\n prefix: \"\",\n delimiter: \"\",\n optional: !1,\n repeat: !1,\n partial: !1,\n pattern: \"\"\n });\n return n;\n}, As = (n, t, e) => {\n const r = [];\n for (let s = 0; s < n.length; s++)\n r.push(Mn(n[s], t, e).source);\n return new RegExp(\"(?:\" + r.join(\"|\") + \")\", Ln(e));\n}, Ns = (n, t, e) => Ls(Nn(n, e), t, e), Ls = (n, t, e) => {\n e = e || {};\n const r = e.strict, s = e.end !== !1, i = wt(e.delimiter || kn), o = e.delimiters || An, a = [].concat(e.endsWith || []).map(wt).concat(\"$\").join(\"|\");\n let c = \"\", h = !1;\n for (let u = 0; u < n.length; u++) {\n const l = n[u];\n if (typeof l == \"string\")\n c += wt(l), h = u === n.length - 1 && o.indexOf(l[l.length - 1]) > -1;\n else {\n const d = wt(l.prefix), f = l.repeat ? \"(?:\" + l.pattern + \")(?:\" + d + \"(?:\" + l.pattern + \"))*\" : l.pattern;\n t && t.push(l), l.optional ? l.partial ? c += d + \"(\" + f + \")?\" : c += \"(?:\" + d + \"(\" + f + \"))?\" : c += d + \"(\" + f + \")\";\n }\n }\n return s ? (r || (c += \"(?:\" + i + \")?\"), c += a === \"$\" ? \"$\" : \"(?=\" + a + \")\") : (r || (c += \"(?:\" + i + \"(?=\" + a + \"))?\"), h || (c += \"(?=\" + i + \"|\" + a + \")\")), new RegExp(\"^\" + c, Ln(e));\n}, Mn = (n, t, e) => n instanceof RegExp ? ks(n, t || []) : Array.isArray(n) ? As(n, t, e) : Ns(n, t, e), zt = Mn;\nvar K = /* @__PURE__ */ ((n) => (n.scopedHash = \"scopedHash\", n.hash = \"hash\", n.browser = \"browser\", n.memory = \"memory\", n))(K || {}), ot = /* @__PURE__ */ ((n) => (n.storage = \"storage\", n.path = \"path\", n.initialPath = \"initial\", n))(ot || {});\nconst Ot = (n, t) => {\n const e = [], r = zt(t, e).exec(n);\n if (!r)\n return {};\n const [s, ...i] = r;\n return e.reduce((o, a, c) => (o[a.name] = i[c], o), {});\n}, Ms = (n) => Object.keys(n).reduce((t, e) => {\n const r = typeof n[e] == \"string\" ? n[e].replace(\"&\", \"%20\") : n[e];\n let s = `${e}=${r}`;\n return t.length > 1 && (s = \"&\".concat(s)), t.concat(s);\n}, \"?\"), ae = (n, t) => {\n const e = t.find((r) => r.name === n);\n if (!e) {\n process.env.NODE_ENV !== \"production\" && R.warn(`Unable to find route with specified name: ${n}`);\n return;\n }\n return e;\n}, Dn = (n) => n.length ? n.slice(1).split(\"&\").map((t) => t.split(\"=\")).reduce((t, e) => {\n const [r, s] = e.map(encodeURI).map(decodeURIComponent);\n return wn(gt({}, t), { [r]: decodeURIComponent(s).replace(\"%20\", \"&\") });\n}, {}) : {}, Ds = (n, t) => {\n const e = t.map((r) => It(n, r)).reduce(\n (r, s) => {\n if (s === null)\n return r;\n const i = s.split(\"?\")[1];\n let o = 0;\n if (i) {\n const a = Dn(`?${i}`);\n o = Object.keys(a).length;\n }\n return !r.path || r.count && o < r.count ? {\n count: o,\n path: s\n } : r;\n },\n { count: void 0, path: void 0 }\n );\n return e ? e.path : t[0];\n}, It = (n, t) => {\n const e = lt(n);\n if (Array.isArray(t)) {\n const c = Ds(e, t);\n if (!c)\n throw new Error(\"Unable to match path.\");\n return c;\n }\n const r = Ps(t);\n let s = t;\n try {\n s = r(e);\n } catch (c) {\n return null;\n }\n const i = [];\n zt(t, i);\n const o = Object.keys(e).reduce((c, h) => (i.find((u) => u.name === h) || c.push(h), c), []), a = {};\n return o.forEach((c) => a[c] = e[c]), Object.keys(a).forEach((c) => a[c] === null && delete a[c]), Object.keys(a).length > 0 ? `${s}${Ms(a)}` : s;\n}, ft = (n, t) => {\n let e = n;\n return e.indexOf(\"?\") > -1 && (e = e.substring(0, e.indexOf(\"?\"))), e.indexOf(\";\") > -1 && (e = e.substring(0, e.indexOf(\";\"))), e === \"\" && (e = \"/\"), t.reduce((r, s) => {\n if (Array.isArray(s.path))\n return s.path.reduce((o, a) => zt(a, []).exec(e || \"\") && !o ? e : o, void 0) && !r ? s : r;\n if (!s.path)\n return r;\n const i = [];\n return zt(s.path, i).exec(e || \"\") && !r ? s : r;\n }, void 0);\n}, js = (n) => {\n let t = n.get(\"historyTransitionManager\");\n return t || (t = xn(), n.parent && n.parent.register(\"historyTransitionManager\", t)), t;\n}, Et = (n, t = null) => n ? Qt(t ? t(n) : n) : {\n pathname: \"\",\n search: \"\",\n hash: \"\"\n}, _s = (n, t) => {\n if (lt(n), lt(t), Object.keys(n).length !== Object.keys(t).length)\n return !1;\n if (Object.keys(n).length === 0 && Object.keys(t).length === 0)\n return !0;\n let e = !0;\n return Object.keys(t).forEach((r) => {\n t[r] !== n[r] && (e = !1);\n }), e;\n}, Is = (n) => {\n if (typeof n.mode == \"string\") {\n if (n.mode === K.memory)\n return !0;\n } else if (n.mode[1]) {\n const [t, { sticky: e }] = n.mode;\n if (t === K.memory)\n return typeof e == \"undefined\" ? !0 : e;\n }\n return !1;\n}, ce = (n) => {\n const { views: t } = n.get(\"$settings\"), e = Object.keys(t).reduce((r, s) => typeof t[s].path == \"undefined\" ? s : r, void 0);\n return e ? {\n name: e,\n params: {}\n } : null;\n}, Ke = \"hashchange\", Rs = {\n hashbang: {\n encodePath: (n) => n.charAt(0) === \"!\" ? n : \"!/\" + pe(n),\n decodePath: (n) => n.charAt(0) === \"!\" ? n.substr(1) : n\n },\n noslash: {\n encodePath: pe,\n decodePath: xt\n },\n slash: {\n encodePath: xt,\n decodePath: xt\n }\n}, st = () => {\n const n = window.location.href, t = n.indexOf(\"#\");\n return t === -1 ? \"\" : n.substring(t + 1);\n}, qe = (n) => window.location.hash = n, Ye = (n) => {\n const t = window.location.href.indexOf(\"#\");\n window.location.replace(\n window.location.href.slice(0, t >= 0 ? t : 0) + \"#\" + n\n );\n}, Rt = (n = \"\") => {\n const t = n.replace(\";\", \"?\"), e = [\n { from: /\\;+/gi, to: \"&\" },\n { from: /:+/gi, to: \"=\" }\n ];\n let r = t;\n return e.forEach(({ to: s, from: i }) => {\n r = r.replace(i, s);\n }), r;\n}, Ts = (n = {}) => {\n const t = window.history, { getUserConfirmation: e = $n, hashType: r = \"slash\" } = n, s = n.basename ? Pn(xt(n.basename)) : \"\", { encodePath: i } = Rs[r], o = () => {\n const m = st(), b = u(m);\n return Et(b, Rt);\n }, a = n.transitionManager || xn(), c = (m) => {\n Object.assign(I, m), I.length = t.length, a.notifyListeners(I.location, I.action, n.widgetName);\n };\n let h = !1;\n const u = (m) => {\n const b = (w) => {\n function P($, y) {\n const O = {};\n let L;\n for (; L = y.exec($); )\n O[L[1]] = L[2];\n return O;\n }\n return P(w, /([^#?&=]+)=([^&#]*)(?!.*?\\#)/gi) || null;\n }, v = \"humany-\" + n.widgetName;\n return b(m)[v];\n }, l = () => {\n const m = o(), b = I.location;\n !h && Sn(b, m) || d(m);\n }, d = (m) => {\n if (h)\n h = !1, c();\n else {\n const b = \"POP\";\n a.confirmTransitionTo(\n m,\n b,\n e,\n (v) => {\n v ? c({ action: b, location: m }) : f(m);\n }\n );\n }\n }, f = (m) => {\n const b = I.location;\n let v = p.lastIndexOf(rt(b));\n v === -1 && (v = 0);\n let w = p.lastIndexOf(rt(m));\n w === -1 && (w = 0);\n const P = v - w;\n P && (h = !0, x(P));\n }, g = st(), E = i(g);\n g !== E && Ye(E);\n let p = [];\n const C = o();\n C.pathname !== null && p.push(rt(C));\n const T = (m = \"\") => {\n const b = [\n { from: /\\?+/gi, to: \";\" },\n { from: /\\&amp;+/gi, to: \";\" },\n { from: /\\&+/gi, to: \";\" },\n { from: /=+/gi, to: \":\" }\n ];\n let v = m;\n return b.forEach(({ to: w, from: P }) => {\n v = v.replace(P, w);\n }), v;\n }, U = (m, b, v) => {\n let w = \"\", P = !1;\n return m.split(\"&\").forEach(($) => {\n const y = $.split(\"=\"), O = y[0], L = y[1];\n if (O === b) {\n if (P = !0, v === null)\n return;\n w.length > 0 && (w += \"&\"), typeof v != \"undefined\" ? w += O + \"=\" + v : w += O;\n } else\n O && (w.length > 0 && (w += \"&\"), w += O + \"=\" + L);\n }), !P && v !== null && (w.length > 0 && (w += \"&\"), typeof v != \"undefined\" ? w += b + \"=\" + v : w += b), w;\n }, _ = (m) => {\n const b = m.pathname, v = T(m.search), w = b + (v ? `;${v}` : \"\"), P = `humany-${n.widgetName}`, $ = st();\n return `#${U($, P, w).replace(\";;\", \";\")}`;\n }, D = (m, b) => {\n const v = \"PUSH\", w = Et(m, Rt), P = w.pathname, $ = T(w.search), y = P + ($ ? `${$}` : \"\"), O = `humany-${n.widgetName}`, L = st(), M = U(L, O, y);\n a.confirmTransitionTo(w, v, e, (F) => {\n if (!F)\n return;\n const J = rt(w), et = i(M);\n if (st() !== et) {\n qe(et);\n const Y = p.lastIndexOf(rt(I.location)), W = p.slice(0, Y === -1 ? 0 : Y + 1);\n W.push(J), p = W, c({ action: v, location: w });\n } else\n c();\n });\n }, H = (m, b) => {\n const v = \"REPLACE\", w = Et(m, Rt);\n a.confirmTransitionTo(w, v, e, (P) => {\n if (!P)\n return;\n const $ = rt(w), y = i(s + $);\n st() !== y && Ye(y);\n const O = p.indexOf(rt(I.location));\n O !== -1 && (p[O] = $), c({ action: v, location: w });\n });\n }, x = (m) => {\n t.go(m);\n }, N = () => x(-1), A = () => x(1);\n let j = 0;\n const B = (m) => {\n j += m, j === 1 ? window.addEventListener(Ke, l) : j === 0 && window.removeEventListener(Ke, l);\n };\n let V = !1;\n const I = {\n createHref: _,\n createLocation: Et,\n push: D,\n replace: H,\n go: x,\n goBack: N,\n goForward: A,\n block: (m = !1) => {\n const b = a.setPrompt(m);\n return V || (B(1), V = !0), () => (V && (V = !1, B(-1)), b());\n },\n listen: (m) => {\n const b = a.appendListener(m);\n return B(1), () => {\n B(-1), b();\n };\n },\n stop: () => {\n const m = st(), b = U(m, `humany-${n.widgetName}`, null), v = i(b);\n qe(v);\n },\n length: t.length,\n action: \"POP\",\n location: C\n };\n return I;\n}, jn = Ts, Hs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n decodeSearch: Rt,\n default: jn,\n getHashPath: st\n}, Symbol.toStringTag, { value: \"Module\" })), Vs = (n, t) => {\n const e = (s) => {\n function i(o, a) {\n const c = {};\n let h;\n for (; h = a.exec(o); )\n c[h[1]] = h[2];\n return c;\n }\n return i(s, /([^#?&=]+)=([^&#]*)(?!.*?\\#)/gi) || null;\n }, r = `humany-${t}`;\n return e(n)[r];\n}, Bs = () => {\n const n = window.location.href, t = n.indexOf(\"#\");\n return t === -1 ? \"\" : n.substring(t + 1);\n}, Us = (n = \"\") => {\n const t = n.replace(\";\", \"?\"), e = [\n { from: /\\;+/gi, to: \"&\" },\n { from: /:+/gi, to: \"=\" }\n ];\n let r = t;\n return e.forEach(({ to: s, from: i }) => {\n r = r.replace(i, s);\n }), r;\n}, Ws = (n, t = null) => n ? Qt(t ? t(n) : n) : {\n pathname: \"\",\n search: \"\",\n hash: \"\"\n}, _n = (n) => {\n const t = Bs(), e = Vs(t, n);\n return Ws(e, Us);\n}, we = (n) => {\n const { name: t } = n.get(\"$widget\");\n return !!_n(t).pathname;\n};\nfe((n) => {\n n.createCommand(\"routing\", (t) => (e) => {\n const r = {\n mode: e.mode\n };\n e.basePath && (r.basePath = e.basePath), t.container.register(\"routingSettings\", r);\n });\n});\nconst Ge = \"routeData\";\nclass zs {\n constructor(t, e) {\n this.container = t, this.steps = [], this.historyListenSubscription = () => {\n }, this.sticky = !1, this.storageWriter = null, this.widget = t.get(\"$widget\");\n const r = e, { routes: s } = r, i = as(r, [\"routes\"]);\n this.settings = gt(gt({}, i), t.get(\"routingSettings\")), this.sticky = Is(this.settings), this.storageMedium = this.sticky ? S.Local : S.Session, X(t, Ge, k.Necessary, {\n medium: this.storageMedium\n }).then((o) => this.storageWriter = o), this.routes = s;\n }\n initialize() {\n return this.initialized = this.initialized || this.createHistory().then((t) => {\n this.history = t, this.location = t.location, this.historyListenSubscription = t.listen(\n (e, r, s) => this.handleLocationChange(e, s)\n );\n });\n }\n setMatch(t) {\n if (this.match = t, this.location) {\n const e = this.getRouteData(), r = {\n routeData: e,\n location: this.location\n }, s = this.steps[0], i = e.name === (s == null ? void 0 : s.routeData.name), o = Ae(\n e.params,\n (s == null ? void 0 : s.routeData.params) || {}\n );\n (!i || !o) && (this.widget.events.dispatch(\"router:change\", { next: r, previous: s }), this.steps.unshift(r), this.storageWriter && this.storageWriter(r.routeData), this.widget.events.dispatch(\"router:changed\", { previous: s, current: r }));\n }\n }\n onRouteChange(t) {\n return this.widget.events.subscribe(\"router:change\", t);\n }\n isSticky() {\n return this.sticky;\n }\n /**\n * Generate a formatted path from string\n * @param routeName Name of route to generate path for\n * @param params Optional: route params\n */\n generate(t, e = {}) {\n const r = ae(t, this.routes);\n if (!r || !this.history)\n throw `No route found for ${t}`;\n const s = It(e, r.path);\n if (!s)\n throw `Unable to generate path for \"${t}\".`;\n const i = Et(s, this.settings.decodeSearch);\n let o = this.history.createHref(i);\n const { mode: a, basePath: c } = this.settings;\n return a === \"browser\" && c && (o = o.replace(c, \"\")), o.charAt(0) !== \"/\" && (o = `/${o}`), o;\n }\n /**\n * Navigate to path\n * @param routeName Route to navigate to\n * @param params Optional: route params\n */\n navigate(t, e = {}) {\n const r = ae(t, this.routes);\n if (!r || !this.history)\n return;\n const s = It(e, r.path);\n if (!s)\n return;\n const i = this.getRouteData(), o = i && i.name === t && _s(i.params, e);\n if (this.steps[0] && o)\n return;\n const { decodeSearch: a } = this.settings, c = a ? a(s) : s;\n this.widget.events.dispatch(\"router:navigate\", {\n decodedPath: c\n }), c.charAt(0) !== \"/\" ? this.history.push(`/${c}`) : this.history.push(c);\n }\n /**\n * Return true or false depending\n * on whether it is possible to navigate backwards\n */\n hasBack() {\n if (this.steps.length > 1)\n return !0;\n const t = this.getRouteData(this.settings.initialPath), e = this.getRouteData(), r = e.name === t.name, s = Ae(e.params, t.params);\n return !r || !s;\n }\n /**\n * Navigate to previous route\n */\n goBack(t = 1) {\n if (this.steps.length < 2) {\n const e = this.getRouteData(this.settings.initialPath);\n e && e.name && (this.navigate(e.name, e.params), this.steps = []);\n } else {\n const e = t >= this.steps.length ? this.steps.length - 1 : t, { routeData: r } = this.steps[e];\n this.steps = [...this.steps.slice(e + 1)], this.navigate(r.name, Qn(r.params));\n }\n }\n /**\n * Navigate to next route\n */\n goForward() {\n this.history && this.history.goForward();\n }\n /**\n * Get the current location\n */\n current() {\n return this.location;\n }\n /**\n * Get the initial route. If the defined initial route does not exist,\n * return the first defined route\n */\n getInitialRoute() {\n const { name: t } = this.getRouteData(this.settings.initialPath);\n return this.routes.find((r) => r.name === t) || (this.routes.length > 0 ? this.routes[0] : (process.env.NODE_ENV !== \"production\" && R.warn(\"Unable to get initial route as no routes are defined.\"), null));\n }\n getRouteData(t) {\n const e = ce(this.container);\n if (t) {\n const r = ft(t, this.routes);\n return r ? {\n params: lt(Ot(t, r.path)),\n name: r.name\n } : e || {\n name: \"\",\n params: {}\n };\n }\n if (this.location) {\n const { pathname: r, search: s } = this.location;\n if (this.currentRoute = this.currentRoute || ft(r, this.routes), this.currentRoute) {\n const { path: i, name: o } = this.currentRoute;\n this.match || (this.match = {\n params: Ot(r, i),\n isExact: !0,\n path: i,\n url: r\n });\n const a = lt(gt(gt({}, this.match.params), s.length > 0 && Dn(s)));\n return {\n name: o,\n params: a\n };\n }\n }\n return e || {\n name: \"\",\n params: {}\n };\n }\n dispose() {\n return this.historyListenSubscription(), this.stop();\n }\n /**\n * Setup and load the initial route based on router configuration\n */\n setupInitialRoute() {\n return q(this.container, Ge, this.storageMedium).then(\n (t) => {\n if (!this.location || !this.history)\n return;\n const { initialPath: e, mode: r } = this.settings;\n switch ((() => {\n const s = we(this.container);\n return r === K.browser || s ? ot.path : r === K.memory && t ? ot.storage : ot.initialPath;\n })()) {\n case ot.initialPath: {\n const s = this.getRouteData(e);\n return s && s.name ? this.navigate(s.name, s.params) : void 0;\n }\n case ot.path: {\n const { pathname: s } = this.location;\n if (this.currentRoute = ft(s, this.routes), this.currentRoute) {\n const { path: o } = this.currentRoute;\n return this.setMatch({\n params: Ot(s, o),\n isExact: !0,\n path: o,\n url: s\n });\n }\n const i = ce(this.container);\n return i ? this.setMatch({\n params: {},\n isExact: !0,\n path: i.name,\n url: s\n }) : void 0;\n }\n case ot.storage: {\n const { pathname: s } = this.location;\n this.currentRoute = ft(s, this.routes);\n const { name: i = \"\", params: o = {} } = t || {}, a = ae(i, this.routes);\n if (a) {\n const c = It(o, a.path);\n if (c)\n return this.history.push(c), this.location = wn(gt({}, this.location), { pathname: c }), this.currentRoute = ft(c, this.routes), this.setMatch({\n params: o,\n isExact: !0,\n path: a.path,\n url: c\n });\n }\n return;\n }\n }\n }\n );\n }\n start() {\n return this.setupInitialRoute();\n }\n stop() {\n return this.history && (this.settings.mode === K.scopedHash && this.history.stop(), this.steps = [], this.storageWriter) ? this.storageWriter() : Promise.resolve();\n }\n handleLocationChange(t, e) {\n const { pathname: r } = t, { mode: s } = this.settings;\n if (r.indexOf(\"?\") > -1 || r.indexOf(\";\") > -1 || s === K.scopedHash && e !== this.widget.name)\n return;\n this.location = t, this.currentRoute = ft(r, this.routes);\n const i = ce(this.container);\n if (this.currentRoute) {\n const { path: o } = this.currentRoute;\n this.setMatch({\n params: Ot(r, o),\n isExact: !0,\n path: o,\n url: r\n });\n } else\n i && this.setMatch({\n params: {},\n isExact: !0,\n path: i.name,\n url: r\n });\n }\n createHistory() {\n return new Promise((t) => {\n const { mode: e, basePath: r } = this.settings;\n if (e === K.scopedHash) {\n const s = this.widget.name, i = js(this.container);\n return Promise.resolve().then(() => Hs).then((o) => {\n const a = o.default({\n widgetName: s,\n transitionManager: i,\n hashType: \"noslash\"\n });\n return t(a);\n });\n }\n if (e === K.memory)\n return t(Br());\n if (e === K.browser)\n return t(Hr({ basename: r }));\n throw \"RoutingService: History could not be created.\";\n });\n }\n}\nconst Fs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n HistoryMode: K,\n RoutingService: zs,\n createHashHistory: jn,\n getScopedHashDOMLocation: _n,\n matchParams: Ot,\n onWidgetUrl: we\n}, Symbol.toStringTag, { value: \"Module\" })), he = (n, t, e, ...r) => {\n const s = `[${n.get(\"$environment\").name || \"webprovisions\"}] ${e}`;\n switch (t) {\n case \"info\":\n console.info(s, ...r);\n break;\n case \"warning\":\n console.warn(s, ...r);\n break;\n case \"error\":\n console.error(s, ...r);\n break;\n }\n}, Js = (n) => {\n const t = n.container || n;\n return {\n info: (e, ...r) => he(t, \"info\", e, ...r),\n warn: (e, ...r) => he(t, \"warning\", e, ...r),\n error: (e, ...r) => he(t, \"error\", e, ...r)\n };\n};\nvar $t = /* @__PURE__ */ ((n) => (n.Implementation = \"implementation\", n.Widget = \"widget\", n))($t || {}), it = /* @__PURE__ */ ((n) => (n.Pre = \"pre\", n.Post = \"post\", n))(it || {});\nconst Ks = (n, t, e, r) => {\n try {\n const s = new t(e, r);\n return {\n name: n,\n invoke: (i, o) => {\n let a;\n return s[i] && (a = s[i].call(s, o)), Promise.resolve(a);\n },\n getInstance: () => s\n };\n } catch (s) {\n if (s.message && s.message.indexOf(\"is not a constructor\") >= 0)\n return {\n name: n,\n invoke: (i) => {\n let o;\n return i === \"initialize\" && (o = t(e, r)), Promise.resolve(o);\n },\n getInstance: () => t\n };\n throw s;\n }\n};\nfunction Qe(n, t) {\n return typeof n == \"undefined\" ? t : n;\n}\nclass qs {\n constructor(t = {}) {\n this.part = t;\n }\n createCommand(t, e, r) {\n let s;\n typeof e == \"function\" ? s = {\n scope: $t.Widget,\n stage: it.Post,\n defaultArgs: void 0,\n handlerResolver: e\n } : s = {\n scope: Qe(e.scope, $t.Widget),\n stage: Qe(e.stage, it.Post),\n defaultArgs: e.defaultArgs,\n handlerResolver: r\n };\n let i = this.part;\n const o = t.split(\".\");\n return o.forEach((a, c) => {\n c === o.length - 1 ? i[a] || (i[a] = () => s) : i = this.part[a] = this.part[a] || {};\n }), this;\n }\n get() {\n return this.part;\n }\n}\nconst In = (n) => {\n const t = new qs({});\n return n(t), t.get();\n};\nIn((n) => {\n n.createCommand(\n \"types.register\",\n { scope: $t.Implementation, stage: it.Pre },\n (t) => (e, r) => {\n t.container.get(\"$types\")[e] = r;\n }\n ).createCommand(\n \"type\",\n { stage: it.Pre },\n (t) => (e) => {\n t.container.register(\"$type\", e);\n }\n ).createCommand(\n \"settings\",\n { stage: it.Pre, defaultArgs: [null] },\n (t) => (e) => {\n t.events.dispatch(\n \"settings:change\",\n e,\n { bubbles: !0 }\n ), t.container.register(\"$settings\", e);\n }\n ).createCommand(\n \"plugin\",\n { stage: it.Pre },\n (t) => (e, r, s) => {\n const { container: i } = t;\n let o = null, a = e, c = r;\n typeof e == \"string\" && (o = e, a = r, c = s);\n const h = (u) => {\n const { transformPluginSettings: l } = t.container.get(\"$environmentOptions\"), d = l ? l(\n c || {},\n o,\n t.container,\n a\n ) : r;\n try {\n const f = Ks(\n o,\n a,\n i,\n d\n );\n i.get(\"$plugins\").push(f), u && f.invoke(\"initialize\", null);\n } catch (f) {\n Js(t).warn(\"Error when initializing plugin\", f);\n }\n };\n t.container.get(\"$instance\") ? h(!0) : t.events.subscribeOnce(\"widget:instance-created\", () => h(!1));\n }\n ).createCommand(\n \"container.register\",\n (t) => (e, r) => {\n t.container.register(e, r);\n }\n ).createCommand(\n \"container.registerAsync\",\n (t) => (e, r) => {\n t.container.registerAsync(e, r);\n }\n ).createCommand(\n \"container.registerFactory\",\n (t) => (e, r) => {\n t.container.registerFactory(e, r);\n }\n ).createCommand(\n \"container.touch\",\n (t) => (e, r) => {\n t.container.touch(e, r);\n }\n ).createCommand(\n \"csp\",\n {},\n (t) => (e) => {\n t.container.register(\"csp\", e);\n }\n );\n});\nfunction Ys(n) {\n const t = {};\n return [].filter.call(n.attributes, (e) => /^data-/.test(e.name)).map((e) => e.name).forEach((e) => t[e.substr(5)] = n.getAttribute(e)), t;\n}\nconst Ze = (n, t, e) => {\n const r = Ys(n);\n e({\n sourceDOMElement: n,\n eventType: t,\n data: r\n });\n};\nfunction Xe(n, t, e) {\n n.forEach((r) => {\n r.dataset.attached !== \"true\" && (t === \"load\" ? Ze(r, t, e) : r.addEventListener(t, (s) => {\n s.preventDefault(), Ze(r, t, e);\n }), r.dataset.monitored = \"true\");\n });\n}\nfunction Gs(n, t, e) {\n const r = n.container.get(\"bootstrapping.monitor\");\n r && r.events.subscribe(\"bootstrap:trigger-elements-updated\", (i, o) => {\n Xe(\n o.triggerElements,\n t,\n e\n );\n });\n const s = n.container.get(\"triggerElements\");\n s && Xe(\n s,\n t,\n e\n );\n}\nIn((n) => {\n n.createCommand(\n \"ready\",\n { scope: $t.Implementation, stage: it.Pre },\n (t) => (e) => {\n const { container: r } = t, s = r.owner;\n r.get(\"bootstrapping\").ready ? e(s) : s.events.subscribeOnce(\"bootstrap:ready\", () => {\n e(s);\n });\n }\n );\n});\nconst Qs = (n) => {\n if (n) {\n const { type: t, content: e } = n;\n switch (t) {\n case \"FontAwesome\":\n return `<i class=\"humany-icon fa fa-${e}\"></i>`;\n case \"Uri\":\n return `<i class=\"humany-icon humany-custom-icon\" style=\"background: url(${e}) no-repeat center center;background-size: contain;\"></i>`;\n default:\n return \"\";\n }\n }\n}, Zs = (n) => {\n const t = (s, i) => {\n s && (i ? s.classList.add(\"humany-tabbing\") : s.classList.remove(\"humany-tabbing\"));\n }, e = (s) => {\n s.key === \"Tab\" ? t(n, !0) : s.key === \"Enter\" && document.activeElement && document.activeElement.classList.contains(\"humany-trigger\") || t(n, !1);\n }, r = (s) => {\n document.activeElement && document.activeElement.classList.contains(\"humany-trigger\") && document.activeElement.classList.contains(\"humany-tabbing\") || t(n, !1);\n };\n return document.addEventListener(\"keydown\", e), document.addEventListener(\"click\", r), () => {\n document.removeEventListener(\"keydown\", e), document.removeEventListener(\"click\", r);\n };\n};\nfunction Xs(n, t) {\n const {\n symbol: e,\n widgetName: r,\n label: s = \"\",\n ariaLabel: i = \"\",\n tooltip: o = \"\"\n } = t;\n n.classList.add(\"humany-trigger\"), n.classList.add(`humany_${r}`), s.length && n.classList.add(\"humany-has-text\"), i.length && !n.getAttribute(\"aria-label\") && n.setAttribute(\"aria-label\", i), i.length && !n.getAttribute(\"tabindex\") && n.setAttribute(\"tabindex\", \"0\"), o.length && !n.getAttribute(\"title\") && n.setAttribute(\"title\", o);\n const a = Qs(e) || \"\";\n return n.innerHTML = `${a}\n <span class=\"humany-close\">\n <svg width=\"18\" height=\"9\" viewBox=\"0 0 18 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 9C8.81794 9.00045 8.63759 8.96634 8.46939 8.89965C8.3012 8.83295 8.14851 8.735 8.02015 8.61145L0.194523 1.12367C0.068294 0.99862 -0.00155266 0.831133 2.61958e-05 0.657285C0.00160506 0.483436 0.0744832 0.317136 0.202964 0.194202C0.331445 0.0712675 0.505249 0.00153576 0.686941 2.50649e-05C0.868634 -0.00148563 1.04368 0.0653456 1.17437 0.186125L9 7.6739L16.8256 0.186125C16.9563 0.0653456 17.1314 -0.00148563 17.3131 2.50649e-05C17.4948 0.00153576 17.6686 0.0712675 17.797 0.194202C17.9255 0.317136 17.9984 0.483436 18 0.657285C18.0016 0.831133 17.9317 0.99862 17.8055 1.12367L9.97985 8.61145C9.85149 8.735 9.6988 8.83295 9.53061 8.89965C9.36241 8.96634 9.18206 9.00045 9 9Z\" fill=\"white\"/>\n </svg>\n </span>\n <span class=\"humany-loader\">\n <svg viewBox=\"25 25 50 50\">\n <circle\n cx=\"50\"\n cy=\"50\"\n r=\"20\"\n fill=\"none\"\n stroke=\"#000\"\n stroke-width=\"2\"\n stroke-miterlimit=\"10\" />\n </svg>\n </span>\n ${s.length ? `<span>${s}</span>` : \"\"}`, setTimeout(\n () => n && n.classList.add(\"humany-rendered\")\n ), Zs(n);\n}\nfunction ti(n, t) {\n n instanceof HTMLElement ? (t && n.setAttribute(\"title\", t), n.classList.remove(\"humany-active\"), n.classList.remove(\"humany-loading\")) : n instanceof Array && n.forEach((e) => {\n t && e.setAttribute(\"title\", t), e.classList.remove(\"humany-active\"), e.classList.remove(\"humany-loading\");\n });\n}\nfunction ei(n) {\n n instanceof HTMLElement ? (n.classList.remove(\"humany-active\"), n.classList.add(\"humany-loading\")) : n instanceof Array && n.forEach((t) => {\n t.classList.remove(\"humany-active\"), t.classList.add(\"humany-loading\");\n });\n}\nfunction Rn(n, t) {\n n instanceof HTMLElement ? (t && n.setAttribute(\"title\", t), n.classList.add(\"humany-active\"), n.classList.remove(\"humany-loading\")) : n instanceof Array && n.forEach((e) => {\n t && e.setAttribute(\"title\", t), e.classList.add(\"humany-active\"), e.classList.remove(\"humany-loading\");\n });\n}\nvar ut = /* @__PURE__ */ ((n) => (n.Inline = \"inline\", n.Link = \"link\", n.Badge = \"badge\", n.Unsupported = \"unsupported\", n))(ut || {});\nconst ni = (n, t) => n && t ? \"both\" : n ? \"widgetDOM\" : t ? \"triggerDOM\" : \"none\", Tn = (n) => n ? typeof n == \"boolean\" && n ? \"link\" : typeof n == \"object\" && !Array.isArray(n) ? \"badge\" : \"unsupported\" : \"inline\", ri = (n, t, e, r, s = !1) => {\n var h, u;\n const i = ni(\n t,\n e\n ), o = Tn(r), a = {\n widgetDOMElement: t ? t.cloneNode(!0) : void 0,\n triggerDOMElement: e ? e.cloneNode(!0) : void 0\n }, c = {\n triggerType: o,\n cachedOriginals: a,\n widgetDOMElement: document.createElement(\"div\")\n };\n switch (i) {\n case \"both\": {\n c.widgetDOMElement = t || document.createElement(\"div\"), o !== \"inline\" && (c.triggerDOMElement = e);\n break;\n }\n case \"widgetDOM\": {\n if (c.widgetDOMElement = t || document.createElement(\"div\"), o !== \"inline\") {\n const l = document.body.appendChild(document.createElement(\"a\"));\n o === \"link\" && (l.innerText = n), c.triggerDOMElement = l;\n }\n break;\n }\n case \"triggerDOM\": {\n const l = document.createElement(\"div\");\n c.widgetDOMElement = l, o === \"inline\" ? (l.id = (e == null ? void 0 : e.id) || \"\", s ? (l.style.display = \"none\", (h = e == null ? void 0 : e.parentNode) == null || h.appendChild(l), c.callback = () => {\n var d;\n (d = e == null ? void 0 : e.parentNode) == null || d.replaceChild(\n l,\n e\n ), l.style.display = (e == null ? void 0 : e.style.display) || \"block\";\n }) : (u = e == null ? void 0 : e.parentNode) == null || u.replaceChild(\n l,\n e\n ), c.cachedOriginals.widgetDOMElement = e, c.cachedOriginals.triggerDOMElement = void 0) : (c.widgetDOMElement = document.body.appendChild(l), c.triggerDOMElement = e);\n break;\n }\n case \"none\": {\n const l = document.body.appendChild(document.createElement(\"div\"));\n if (c.widgetDOMElement = l, o !== \"inline\") {\n const d = document.body.appendChild(document.createElement(\"a\"));\n o === \"link\" && (d.innerText = n), c.triggerDOMElement = d;\n }\n break;\n }\n }\n return c;\n}, si = \"modals\";\nclass ii {\n constructor(t, e) {\n this.options = e, this.unsubscribe = [], this.container = t.createChild(this), this.container.register(\"widgetDOMElement\", this.options.widgetDOMElement), this.container.register(\n \"triggerDOMElement\",\n this.options.triggerDOMElement\n );\n const r = this.container.get(\"$widget\");\n this.options.widgetDOMElement.classList.add(\"humany-widget\"), this.options.widgetDOMElement.classList.add(`humany_${r.name}`);\n const s = t.get(\"widgetDOMElements\") || [];\n t.register(\"widgetDOMElements\", [\n ...s,\n this.options.widgetDOMElement\n ]);\n }\n /**\n * Renders the view outlet to the DOM.\n */\n render() {\n const { widgetDOMElement: t, triggerDOMElement: e } = this.options, r = this.container.get(\"$widget\");\n return t.getAttribute(\"data-rendered\") === \"true\" ? Promise.resolve() : (e && this.options.triggerType === ut.Badge && ei(e), import(\"./render-301f6791.js\").then((s) => s.default(this.container, t)).then(() => {\n if (t.setAttribute(\"data-rendered\", \"true\"), e && this.options.triggerType === ut.Badge) {\n const i = this.options.triggerOptions.openTooltip;\n Rn(e, i);\n }\n nr(this.container, t);\n const s = this.container.get(\"$environment\").widgets.all();\n q(\n this.container,\n si,\n S.Session\n ).then((i) => {\n i && i.forEach((o) => {\n s.find(\n (a) => a.name === o.name && a.state === \"activated\"\n ) && r.events.dispatch(\"widget:modal-opened\", o);\n });\n });\n }));\n }\n renderBadge(t) {\n const { triggerDOMElement: e } = this.options;\n if (!e)\n return;\n e.getAttribute(\"role\") || e.setAttribute(\"role\", \"button\");\n const { name: r } = this.container.get(\"$widget\"), { label: s, symbol: i, ariaLabel: o, closedTooltip: a, openTooltip: c } = t, h = { closedTooltip: a, openTooltip: c };\n this.options.triggerOptions = h;\n const u = Xs(e, {\n label: s,\n symbol: i,\n ariaLabel: o,\n widgetName: r,\n tooltip: a\n });\n this.unsubscribe.push(u);\n }\n dispose() {\n return Zt(this, null, function* () {\n var r, s, i, o;\n const { triggerDOMElement: t, widgetDOMElement: e } = this.options;\n this.options.cachedOriginals.widgetDOMElement && e && ((r = e.parentNode) == null || r.replaceChild(\n this.options.cachedOriginals.widgetDOMElement,\n e\n )), this.options.cachedOriginals.triggerDOMElement && t && ((s = t.parentNode) == null || s.replaceChild(\n this.options.cachedOriginals.triggerDOMElement,\n t\n )), this.unsubscribe.forEach((a) => {\n a();\n }), (i = e.parentNode) == null || i.removeChild(e), (o = t == null ? void 0 : t.parentNode) == null || o.removeChild(t);\n });\n }\n}\nconst Nt = \"changesets\", oi = (n) => {\n const t = { tags: n.tags };\n return n.context && typeof n.context != \"function\" && (t.context = n.context), n.properties && typeof n.properties != \"function\" && (t.properties = n.properties), n.layout && typeof n.layout != \"function\" && (t.layout = n.layout), t;\n};\nclass Oe {\n constructor(t, e) {\n this.container = t, this.storageWriter = e;\n }\n static create(t) {\n return X(\n t,\n Nt,\n k.Necessary,\n {\n medium: S.Local\n }\n ).then(\n (e) => new Oe(t, e)\n );\n }\n write(t, e, r, s) {\n return G(this)(() => q(\n this.container,\n Nt,\n S.Local\n ).then((i = {}) => {\n const { keys: o = [], items: a = {} } = i, c = o.indexOf(t);\n return c > -1 && o.splice(c, 1), o.push(t), a[t] = {\n options: s,\n attributes: oi(r),\n rules: e.rules\n }, this.storageWriter({ keys: o, items: a });\n }));\n }\n remove(t) {\n return G(this)(() => q(\n this.container,\n Nt,\n S.Local\n ).then((e = {}) => {\n const { keys: r = [], items: s = {} } = e, i = r.indexOf(t);\n if (i > -1)\n return r.splice(i, 1), delete s[t], this.storageWriter(e);\n }));\n }\n load(t) {\n return G(this)(() => q(\n this.container,\n Nt,\n S.Local\n ).then((e = {}) => {\n const { keys: r = [], items: s = {} } = e;\n r.forEach((i) => {\n const o = s[i];\n if (o) {\n const { rules: a, attributes: c, options: h } = o;\n t.write({\n attributes: c,\n options: h,\n target: new yt(t, a)\n });\n }\n });\n }));\n }\n}\nconst ai = (n) => {\n const { container: t } = n;\n return Oe.create(t).then(\n (e) => {\n const r = t.get(\"$settings\"), s = { localStorage: e }, i = new qt(n, s), o = cn(i, r);\n return n.events.subscribe(\n \"widget:state-change\",\n (a, c) => {\n c.state === nn.Deactivating && o();\n }\n ), i;\n }\n );\n}, ci = (n) => Promise.resolve().then(() => Fs).then(\n ({ RoutingService: t, HistoryMode: e }) => n.get(\"settings\").then((r) => {\n const {\n routing: {\n initialPath: s = \"/\",\n mode: i = e.scopedHash,\n basePath: o\n },\n views: a\n } = r;\n return new t(n, {\n initialPath: s,\n mode: i,\n routes: Object.keys(a).map((h) => ({\n name: h,\n path: a[h].path\n })),\n basePath: o\n });\n })\n), hi = (n) => Promise.resolve().then(() => rs).then(({ StorageProvider: t }) => new t()), ui = (n) => Promise.resolve().then(() => me).then(({ ActionResolver: t }) => new t(n)), li = (n) => Promise.resolve().then(() => me).then(({ ComponentResolver: t }) => new t(n)), di = (n) => Promise.resolve().then(() => me).then(() => ai(n.get(\"$widget\"))), ue = \"$settings\", Lt = \"open\", tn = \"activeStickyWidget\";\nclass Ai extends Kn {\n constructor(t) {\n super(t), this.outlets = /* @__PURE__ */ new Map(), this.activated = void 0, this.subs = [], this.handleBootstrapping = (e) => {\n const r = {\n triggerDOMElement: e.sourceDOMElement,\n withRenderState: \"storage\"\n /* Storage */\n };\n this.container.get(\"settings\").then((s) => {\n const { activate: i } = s;\n (typeof i == \"undefined\" || i === null || i === !0) && (this.activated = (this.activated || this.widget.activate()).then(\n () => this.attach(r)\n ));\n });\n }, this.container.registerAsync(\n \"storage\",\n () => hi(this.container)\n ), this.container.registerFactory(\"settings\", () => q(\n this.container,\n ue,\n S.Local\n ).then((e = {}) => dt(dt({}, this.container.get(\"$settings\")), e))), Gs(this, \"load\", this.handleBootstrapping), this.container.registerAsync(\n \"componentResolver\",\n () => li(this.container)\n ), this.container.registerAsync(\n \"router\",\n () => ci(this.container)\n ), this.container.registerAsync(\n \"actionResolver\",\n () => ui(this.container)\n ), this.container.register(\"matchMedia\", window.matchMedia), this.container.registerAsync(\n \"components\",\n () => di(this.container)\n );\n }\n initialize() {\n const t = this.container.getManyAsync(\n \"actionResolver\",\n \"router\",\n \"components\"\n ), e = this.container.get(\"csp\");\n return e && (window.webprovisionsEnvironmentVariables || (window.webprovisionsEnvironmentVariables = {}), window.webprovisionsEnvironmentVariables.cspNonce = e.nonce), Promise.all([t, this.container.get(\"settings\")]).then(\n ([{ actionResolver: r, router: s, components: i }, o]) => {\n var h;\n r.subscribe(\n this.widget.name,\n (u, l, d) => this.onAction(l, d)\n );\n const a = (u) => {\n i.nodes.query({ type: \"view\" }).forEach((l) => {\n i.setSwitch(l, u);\n });\n }, c = ((h = s.getInitialRoute()) == null ? void 0 : h.name) || \"index\";\n return a(c), this.events.subscribe(\"widget:data-loaded\", (u, { element: l }) => {\n this.widget.container.get(\"seoConfiguration\") && this.events.dispatch(\"widget:preloaded-replaced\", {\n element: l\n });\n }), this.events.subscribe(\n \"router:change\",\n (u, { previous: l = { routeData: {} }, next: d = { routeData: {} } }) => {\n const { routeData: f } = l, { routeData: g } = d, E = Object.keys(o.views).reduce(\n (p, C) => typeof o.views[C].path == \"undefined\" ? C : p,\n \"\"\n );\n !g.name && E ? a(E) : a(g.name), lt(f && f.params), lt(g && g.params), this.container.getAsync(\"actionResolver\").then((p) => {\n p.action(this.widget.name, \"routeChange\", {\n next: g,\n previous: f\n });\n });\n }\n ), s.initialize();\n }\n );\n }\n attach(t = {}) {\n return this.container.get(\"settings\").then(({ trigger: e }) => {\n var d, f;\n const {\n widgetDOMElement: r,\n key: s = Pt(),\n triggerDOMElement: i,\n withRenderState: o\n } = t, c = Tn(e) === ut.Inline && ((i == null ? void 0 : i.childElementCount) || 0) > 0, h = ri(\n this.widget.name,\n r,\n i,\n e,\n c\n );\n this.outlets.size < 1 && !o && this.setRenderState(\"unset\");\n const u = () => {\n const g = () => E.querySelectorAll(\"[data-loading=true]\").length === 0, [E] = this.widget.container.get(\"widgetDOMElements\"), p = (U, _) => {\n g() && (h.callback && h.callback(), _.disconnect());\n }, C = {\n attributes: !0,\n subtree: !0,\n childList: !0\n };\n g() && h.callback && h.callback(), new MutationObserver(p).observe(E, C);\n };\n c && this.widget.container.getAsync(\"dataClient\").then(({ events: g }) => {\n g.subscribe(\n \"data-client:fetched\",\n (E, p) => {\n p.unresolvedQueries === 0 && u();\n }\n );\n });\n const l = this.getOrCreateViewOutlet(s, h);\n if (this.outlets.set(s, l), this.widget.events.dispatch(\"widget:attached\", {}, { bubbles: !0 }), h.triggerType === ut.Badge && e && ((d = h.triggerDOMElement) == null || d.setAttribute(\n \"aria-expanded\",\n \"false\"\n ), l == null || l.renderBadge(e)), h.triggerType !== ut.Inline && ((f = h.triggerDOMElement) == null || f.addEventListener(\n \"click\",\n (g) => {\n g.preventDefault(), this.container.get(\"settings\").then(({ trigger: E }) => {\n l.render().then(() => this.renderState()).then((p) => E && E.action && E.action === \"hide\" ? p === z.open ? this.hide() : this.open() : p === z.open ? this.close() : this.open());\n });\n }\n )), this.outlets.size > 1)\n return this.renderState().then((g) => {\n this.triggerStateIfApplicable(g);\n });\n if (o)\n return o === \"storage\" ? this.renderState().then((g) => {\n if (h.triggerType === ut.Inline) {\n this.triggerStateIfApplicable(\"open\");\n return;\n }\n this.triggerStateIfApplicable(g);\n }) : this.triggerStateIfApplicable(o);\n });\n }\n detach(t) {\n if (t) {\n if (this.outlets.has(t)) {\n const e = this.outlets.get(t);\n e == null || e.dispose(), this.outlets.delete(t);\n return;\n }\n process.env.NODE_ENV !== \"production\" && console.warn(`detach(): Could not find View Outlet with key ${t}`);\n return;\n }\n this.outlets.forEach((e) => {\n e.dispose();\n }), this.outlets.clear();\n }\n triggerStateIfApplicable(t) {\n return this.container.getAsync(\"router\").then((e) => {\n switch (t) {\n case \"closed\":\n this.close();\n break;\n case \"open\":\n this.open();\n break;\n case \"hidden\":\n this.hide(), e.start();\n break;\n default:\n return;\n }\n });\n }\n getOrCreateViewOutlet(t, e) {\n return this.outlets.has(t) ? this.outlets.get(t) : new ii(this.container, e);\n }\n render(t = {}) {\n if (process.env.NODE_ENV !== \"production\" && console.warn(\n \"widget.render() is deprecated. Use widget.attach() instead.\"\n ), t.open) {\n const e = Pe(dt({}, t), {\n withRenderState: \"open\"\n /* Open */\n });\n return this.attach(e);\n }\n return this.attach(t);\n }\n activate(t) {\n t != null && t.override && this.setSettings(() => t.override), t != null && t.apiNotificationPriorityBy && this.container.register(\n \"apiNotificationPriorityBy\",\n t.apiNotificationPriorityBy\n );\n }\n setSettings(t) {\n return Promise.all([\n this.container.get(\"settings\"),\n X(\n this.container,\n ue,\n k.Necessary,\n {\n medium: S.Local\n }\n )\n ]).then(([e, r]) => Promise.resolve(t(e)).then((s) => r(s).then(() => {\n const i = dt(dt({}, e), s);\n return this.widget.events.dispatch(\"widget:settings-updated\", i), i;\n })));\n }\n clearSettings() {\n return X(\n this.container,\n ue,\n k.Necessary,\n { medium: S.Local }\n ).then((t) => t()).then(() => this.container.get(\"settings\")).then((t) => {\n this.widget.events.dispatch(\"widget:settings-updated\", t);\n });\n }\n action({ action: t, value: e }) {\n return this.container.getAsync(\"actionResolver\").then((r) => {\n r.action(this.widget.name, t, e);\n });\n }\n renderState() {\n if (we(this.container))\n return Promise.resolve(z.open);\n const t = () => q(\n this.container,\n Lt,\n S.Session\n ).then((r = z.closed) => r), e = () => q(\n this.container,\n Lt,\n S.Session\n ).then((r = z.closed) => r);\n return this.container.getAsync(\"router\").then((r) => r.isSticky() ? e().then((s) => s === z.open ? s : t()) : t());\n }\n hide() {\n return this.outlets.size < 1 ? (process.env.NODE_ENV !== \"production\" && console.warn(\n \"hide(): No-op as no view outlets are registered. Invoke the attach() command first.\"\n ), Promise.resolve()) : (this.outlets.forEach((t) => t.render()), this.action({ action: \"hide\" }).then(() => {\n this.setTriggerState(!1);\n }));\n }\n open() {\n return this.outlets.size < 1 ? (process.env.NODE_ENV !== \"production\" && console.warn(\n \"open(): No-op as no view outlets are registered. Invoke the attach() command first.\"\n ), Promise.resolve()) : (this.outlets.forEach((t) => t.render()), this.action({ action: \"open\" }).then(() => (this.widget.events.dispatch(\"tracking:widget-rendered\", {}), this.onOpen())));\n }\n close() {\n return this.outlets.size < 1 ? (process.env.NODE_ENV !== \"production\" && console.warn(\n \"close(): No-op as no view outlets are registered. Invoke the attach() command first.\"\n ), Promise.resolve()) : this.action({ action: \"close\" }).then(() => this.onClose());\n }\n show() {\n return process.env.NODE_ENV !== \"production\" && console.warn(\n \"show(): Command is deprecated and will be removed in the future. Use open() instead.\"\n ), this.open();\n }\n onAction(t, e) {\n switch (t) {\n case \"close\":\n case \"open\":\n case \"hide\":\n const r = t === \"open\" ? z.open : t === \"close\" ? z.closed : z.hidden;\n return this.setRenderState(r).then(() => {\n this.setTriggerState(r === z.open), r !== z.hidden ? r === z.open ? this.onOpen() : this.onClose() : this.outlets.forEach(\n (s) => {\n var i;\n return (i = s.options.triggerDOMElement) == null ? void 0 : i.setAttribute(\n \"aria-expanded\",\n \"false\"\n );\n }\n );\n });\n }\n }\n setRenderState(t) {\n const { invoke: e, events: r } = this.container.get(\"$widget\");\n return Promise.all([\n X(\n this.container,\n Lt,\n k.Necessary,\n {\n medium: S.Session\n }\n ),\n X(\n this.container,\n Lt,\n k.Necessary,\n {\n medium: S.Local,\n duration: { minutes: 5 }\n }\n ),\n this.container.getAsync(\"router\"),\n e(\"renderState\")\n ]).then(\n ([s, i, o, a]) => {\n t === \"unset\" || !t ? (i(), s()) : (o.isSticky() && i(t), s(t)), r.dispatch(\"widget:render-state-changed\", {\n previous: a,\n next: t\n });\n }\n );\n }\n onOpen() {\n return this.container.getAsync(\"router\").then((t) => (this.outlets.forEach(\n (e) => {\n var r;\n return (r = e.options.triggerDOMElement) == null ? void 0 : r.setAttribute(\n \"aria-expanded\",\n \"true\"\n );\n }\n ), t.start()));\n }\n onClose() {\n const t = this.container.getManyAsync(\n \"router\",\n \"components\"\n );\n return (() => this.container.get(\"settings\").then((r) => {\n const { activate: s } = this.container.get(\"$settings\");\n return r.activate !== s ? this.setSettings(() => Promise.resolve({ activate: s })) : Promise.resolve();\n }))().then(() => t).then(\n ({\n router: r,\n components: s\n }) => {\n const i = s.nodes.visible;\n return this.outlets.forEach(\n (o) => {\n var a;\n return (a = o.options.triggerDOMElement) == null ? void 0 : a.setAttribute(\n \"aria-expanded\",\n \"false\"\n );\n }\n ), i.filter(\n (o) => o.attributes.properties.animation && o.attributes.properties.animation !== \"none\"\n ).length ? new Promise((o) => {\n setTimeout(() => {\n o(r);\n }, 200);\n }) : Promise.resolve(r);\n }\n ).then((r) => r.stop());\n }\n setTriggerState(t) {\n this.outlets.forEach((e) => {\n const {\n options: { triggerDOMElement: r, triggerOptions: s }\n } = e, { openTooltip: i, closedTooltip: o } = s || {};\n r && (t ? Rn(r, i) : ti(r, o));\n });\n }\n deactivate() {\n this.subs.forEach((e) => e());\n const t = [];\n return this.outlets.forEach((e) => t.push(e.dispose())), q(\n this.container,\n tn,\n S.Local\n ).then((e) => e === this.widget.name ? X(\n this.container,\n tn,\n k.Necessary,\n {\n medium: S.Local,\n scope: vt.Implementation\n }\n ).then((r) => r()).then(() => Promise.all(t)) : Promise.all(t));\n }\n}\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nlet pi = class extends Event {\n constructor(t, e, r) {\n super(\"context-request\", { bubbles: !0, composed: !0 }), this.context = t, this.callback = e, this.subscribe = r != null && r;\n }\n};\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nclass en {\n constructor(t, e, r, s) {\n var i;\n if (this.subscribe = !1, this.provided = !1, this.value = void 0, this.t = (o, a) => {\n this.unsubscribe && (this.unsubscribe !== a && (this.provided = !1, this.unsubscribe()), this.subscribe || this.unsubscribe()), this.value = o, this.host.requestUpdate(), this.provided && !this.subscribe || (this.provided = !0, this.callback && this.callback(o, a)), this.unsubscribe = a;\n }, this.host = t, e.context !== void 0) {\n const o = e;\n this.context = o.context, this.callback = o.callback, this.subscribe = (i = o.subscribe) !== null && i !== void 0 && i;\n } else\n this.context = e, this.callback = r, this.subscribe = s != null && s;\n this.host.addController(this);\n }\n hostConnected() {\n this.dispatchRequest();\n }\n hostDisconnected() {\n this.unsubscribe && (this.unsubscribe(), this.unsubscribe = void 0);\n }\n dispatchRequest() {\n this.host.dispatchEvent(new pi(this.context, this.t, this.subscribe));\n }\n}\nconst Li = \"children\", fi = \"descriptor\", gi = \"container\", Mi = \"context\", Di = \"layout\", ji = \"properties\";\nclass _i {\n constructor(t) {\n (this.host = t).addController(this), new en(\n t,\n gi,\n (e) => {\n this._container = e, this.host.requestUpdate();\n },\n !0\n ), new en(\n t,\n fi,\n (e) => {\n this._descriptor = e, this.host.requestUpdate();\n },\n !0\n );\n }\n hostConnected() {\n }\n hostDisconnected() {\n }\n dispatch(t, e) {\n return Zt(this, null, function* () {\n if (!this._container || !this._descriptor)\n return;\n const r = yield qt.getInstance(\n this._container\n ), s = new yt(r).withId(\n this._descriptor.id\n );\n yield r.actions(\n s,\n this._descriptor.type || Pt()\n ).dispatch(t, e);\n });\n }\n}\nconst Ii = (n, t, e, r, s) => n.getAsync(\"componentResolver\").then((i) => (i.registerComponent(t, e), hn(n, t, r || (() => {\n}), t, s)));\nexport {\n _i as A,\n Or as E,\n Ai as W,\n en as a,\n Mi as b,\n Li as c,\n fi as d,\n qt as e,\n gi as f,\n Ii as g,\n Di as l,\n z as m,\n ji as p,\n pi as s\n};\n//# sourceMappingURL=index-8c63c0e1.js.map\n","import { Container } from '@webprovisions/platform';\r\n\r\nimport {\r\n ConversationMessageContent,\r\n ConversationMessageSender,\r\n} from '../../types';\r\nimport {\r\n ConversationMessage,\r\n ConversationMessageType,\r\n} from '../../conversation-controller';\r\nimport { ConversationPlatform } from '../../conversation-platform';\r\nimport { createWebComponent } from '@telia-ace/widget-runtime-flamingo';\r\n\r\nexport type BundledConversationMessage = {\r\n timestamp: number;\r\n content: [BundledMessageContent];\r\n sender: ConversationMessageSender;\r\n type: ConversationMessageType;\r\n};\r\n\r\ntype BundledMessageContent = {\r\n key: string;\r\n} & ConversationMessageContent;\r\n\r\nexport type ConversationContent = {\r\n loading: boolean;\r\n typingActors: ConversationMessageSender[];\r\n messages: ConversationMessage[];\r\n};\r\n\r\n/**\r\n * Group items by sender, type and time. Current grouping threshold is 2000 ms.\r\n * Put this as a property on either the component or on the provider?\r\n * Could possibly be implemented directly in the createEntry method\r\n * of the conversation controller to avoid iterating over the entire array on\r\n * each update.\r\n */\r\nconst groupedMessages = (\r\n messages: ConversationMessage[],\r\n timeout?: number\r\n): BundledConversationMessage[] => {\r\n return messages.reduce((acc: any[], current: any, _index: number) => {\r\n const newItem = {\r\n ...current,\r\n content: [{ ...current.content, key: current.key }],\r\n };\r\n if (acc.length > 0 && current.type !== ConversationMessageType.System) {\r\n const previous = acc[acc.length - 1];\r\n if (\r\n (!timeout && timeout !== 0) ||\r\n Math.abs(previous.timestamp - current.timestamp) < timeout\r\n ) {\r\n if (\r\n previous.sender?.name === current.sender?.name &&\r\n previous.type === current.type\r\n ) {\r\n previous.timestamp = current.timestamp;\r\n previous.content.push({ ...current.content, key: current.key });\r\n return acc;\r\n }\r\n }\r\n }\r\n acc.push(newItem);\r\n return acc;\r\n }, []);\r\n};\r\n\r\nexport type ConversationComponentProperties = {\r\n providers: string[];\r\n messages: BundledConversationMessage[]; // internal\r\n overlay?: { conversation: boolean; secondary: boolean }; // internal\r\n overlayConversationHeader?: string;\r\n overlayConversationCloseLabel?: string;\r\n loading: boolean;\r\n inputPlaceholder: string;\r\n inputDisabled: boolean;\r\n inputHidden: boolean;\r\n inputMultiline: boolean;\r\n rehydrate?: boolean;\r\n userLabel: string;\r\n avatarSize: string;\r\n typingActors: any[]; // internal\r\n conversationControllerId?: string; // internal\r\n sendButtonLabel: string;\r\n secondaryAction?: { icon?: string; action: string; label: string };\r\n};\r\n\r\nexport const ConversationComponent = async (container: Container) => {\r\n const router = await container.getAsync('router');\r\n const platform = await ConversationPlatform.getInstance(container);\r\n\r\n return createWebComponent(\r\n container,\r\n 'conversation',\r\n import('./conversation'),\r\n async (component) => {\r\n const { rehydrate = false } =\r\n component.properties<ConversationComponentProperties>();\r\n const routeData = router.getRouteData();\r\n const name = routeData.params.id || component.node.name || 'component';\r\n const conversation = await platform.createController(name, { rehydrate });\r\n const isNewController = platform.registerController(\r\n conversation,\r\n component\r\n );\r\n\r\n const messageGroupingTimeout = 3 * 60 * 1000;\r\n\r\n const setProperties = (properties: ConversationComponentProperties) => {\r\n const { providers = [] } = properties;\r\n if (providers) {\r\n const providerKeys = Array.isArray(providers)\r\n ? providers\r\n : [providers];\r\n conversation.setProviders(providerKeys);\r\n return providerKeys;\r\n }\r\n };\r\n setProperties(\r\n component.properties<ConversationComponentProperties>(setProperties)\r\n );\r\n\r\n conversation.setComponentMountedState(true);\r\n\r\n const writeMessages = (messageStream: any) => {\r\n const { loading, typingActors, messages } = messageStream;\r\n component.writeProperties({\r\n loading,\r\n typingActors,\r\n messages: groupedMessages(messages, messageGroupingTimeout),\r\n });\r\n };\r\n\r\n writeMessages(conversation.getMessageStream());\r\n\r\n if (isNewController) {\r\n component.writeProperties({\r\n conversationControllerId: conversation.id,\r\n });\r\n // todo: dont create actions here, there will be duplicates due to reuseController = true\r\n component.actions.create('user-submit', (data, options) => {\r\n if (options) {\r\n const { preventDefault, validationPromise } = options;\r\n if (preventDefault) {\r\n if (validationPromise) {\r\n validationPromise().then((text: string) => {\r\n if (text) {\r\n conversation.user.print(text);\r\n }\r\n });\r\n }\r\n return;\r\n }\r\n }\r\n conversation.user.print(data.text);\r\n });\r\n\r\n component.actions.create('user-typing', (_data, _options) => {});\r\n\r\n component.actions.create('form', (_data, _options) => {});\r\n\r\n component.actions.create('action', (_data, _options) => {});\r\n\r\n component.actions.create('overlay-mounted', (_data, _options) => {});\r\n\r\n component.actions.create('show-overlay', (_data, _options) => {\r\n component.writeProperties({\r\n overlay: { conversation: false, secondary: false },\r\n });\r\n });\r\n\r\n component.actions.create('hide-overlay', (_data, _options) => {\r\n component.writeProperties({\r\n overlay: null,\r\n });\r\n });\r\n\r\n component.actions.create(\r\n 'show-overlay-conversation',\r\n (_data, _options) => {\r\n component.writeProperties({\r\n overlay: { conversation: true, secondary: false },\r\n });\r\n }\r\n );\r\n\r\n component.actions.create(\r\n 'hide-overlay-conversation',\r\n (_data, _options) => {\r\n component.writeProperties({\r\n overlay: { conversation: false, secondary: false },\r\n });\r\n }\r\n );\r\n }\r\n\r\n const unsubscribe = conversation.events.subscribe(\r\n 'conversation:updated',\r\n (_e: any, conversationData: ConversationContent) => {\r\n writeMessages(conversationData);\r\n }\r\n );\r\n\r\n return () => {\r\n conversation.setComponentMountedState(false);\r\n unsubscribe();\r\n if (!conversation.active) {\r\n // unregisterController();\r\n // todo: add possibility to dispose this through extendComponent()\r\n // component.dispose();\r\n writeMessages({ messages: [], typingActors: [], loading: false });\r\n }\r\n };\r\n }\r\n );\r\n};\r\n\r\nexport default ConversationComponent;\r\n","// import { Form, FormBuilder } from '@telia-ace/widget-forms';\r\n\r\nexport type ConversationMessageSettings = {\r\n key?: string;\r\n timestamp?: number;\r\n title?: string;\r\n body?: string;\r\n actions?: { [actionKey: string]: any };\r\n form?: (builder: any /*FormBuilder*/) => void;\r\n type?: string;\r\n items?: ConversationMessageList[];\r\n [key: string]: any;\r\n};\r\n\r\nexport type NormalizedMessageSettings = {\r\n content: ConversationMessageContent;\r\n key: string;\r\n timestamp: number | null;\r\n};\r\n\r\nexport type ConversationMessageList = {\r\n header?: string;\r\n itemKey: string;\r\n type?: ConversationMessageListType;\r\n items: ConversationMessageListItem[];\r\n};\r\n\r\nexport type ConversationMessageListItem = {\r\n icon?: string;\r\n type?: ConversationMessageListItemType;\r\n actions?: { [actionKey: string]: any };\r\n form?: any /*Form*/;\r\n body?: string;\r\n key: string;\r\n [key: string]: any;\r\n};\r\n\r\nexport type ConversationMessageContent = {\r\n title?: string;\r\n body?: string;\r\n actions?: { [actionKey: string]: any };\r\n items?: ConverstationMessageItem<any>[];\r\n form?: any /*Form*/;\r\n [key: string]: any;\r\n};\r\n\r\nexport type ConverstationMessageItem<T, R = ItemPayload> = R extends [T, any]\r\n ? R\r\n : never;\r\n\r\nexport type ConversationMessageUpdateSettings = ConversationMessageContent & {\r\n timestamp?: number;\r\n};\r\n\r\nexport type ConversationMessageSender = {\r\n name?: string;\r\n avatar?: string | Symbol;\r\n id?: string;\r\n};\r\n\r\nexport enum ConversationMessageListType {\r\n Ordinary = 'ordinary',\r\n Seperator = 'seperator',\r\n}\r\n\r\nexport enum ConversationMessageListItemType {\r\n LinkList = 'link-list',\r\n Separator = 'separator',\r\n ButtonList = 'button-list',\r\n ItemList = 'item-list',\r\n Text = 'text',\r\n HTML = 'html',\r\n VideoRequest = 'video-request',\r\n}\r\n\r\nexport type LinkListProperties = {\r\n header?: string;\r\n actions:\r\n | { [key: string]: string }\r\n | { label: string; actionKey: string; data: any }[];\r\n};\r\n\r\ntype LinkListItem = [\r\n ConversationMessageListItemType.LinkList,\r\n LinkListProperties,\r\n];\r\n\r\ntype TextItem = [ConversationMessageListItemType.Text, string];\r\ntype SeparatorItem = [ConversationMessageListItemType.Separator, undefined];\r\n\r\nexport type ButtonListProperties = {\r\n header?: string;\r\n actions:\r\n | { [key: string]: string }\r\n | { label: string; actionKey: string; data: any }[];\r\n};\r\n\r\ntype ButtonListItem = [\r\n ConversationMessageListItemType.ButtonList,\r\n ButtonListProperties,\r\n];\r\n\r\nexport type ItemListProperties = {\r\n header?: string;\r\n actions:\r\n | { [key: string]: string }\r\n | { label: string; actionKey: string; data: any }[];\r\n};\r\n\r\ntype ItemListItem = [\r\n ConversationMessageListItemType.ItemList,\r\n ItemListProperties,\r\n];\r\n\r\nexport type VideoRequestProperties = {\r\n header?: string;\r\n acceptLabel: string;\r\n declineLabel: string;\r\n};\r\n\r\ntype VideoRequestItem = [\r\n ConversationMessageListItemType.VideoRequest,\r\n VideoRequestProperties,\r\n];\r\n\r\nexport type HtmlProperties = {\r\n body: string;\r\n};\r\n\r\ntype HtmlItem = [ConversationMessageListItemType.HTML, HtmlProperties];\r\n\r\ntype ItemPayload =\r\n | LinkListItem\r\n | TextItem\r\n | SeparatorItem\r\n | ButtonListItem\r\n | HtmlItem\r\n | VideoRequestItem\r\n | ItemListItem;\r\n\r\nexport type Symbol = {\r\n type: 'Uri' | 'Svg' | 'FontAwesome' | 'Text' | string;\r\n content: string;\r\n};\r\n","import { Container } from '@webprovisions/platform';\r\n\r\nexport const registerCustomMessageComponent = async (\r\n _container: Container,\r\n _type: string,\r\n componentImport: any\r\n) => {\r\n await componentImport;\r\n // return container\r\n // .getAsync('componentResolver')\r\n // .then(async (o: ComponentResolver) => {\r\n // const platform = await ConversationPlatform.getInstance(container);\r\n // platform.addSubscription(\r\n // o.registerComponent(\r\n // type,\r\n // lazy(() => component)\r\n // )\r\n // );\r\n // });\r\n};\r\n"],"names":["f","n","t","e","r","o","E","m","g","L","i","s","y","O$2","A","O","u","l","p","k","d","F","z","b","I","c","M","_","G$2","J$1","X$2","W$1","W","a","G","X","J","L$1","q","D$3","D","h","P","Z$2","w","K","nt","tt","st","Q","et","V","it","T","rt","x","v","R","ot","at","j","ct$2","ht","ct","lt","ut","dt","pt$2","vt","pt","U","$","gt","Z","mt$1","Y","yt$1","mt","wt","yt","C$3","C","S","N","bt","H","B","Z$1","P$1","k$1","it$1","pt$1","re","se","ne","oe","ee","te","ie","ae","ce","ConversationHistory","controller","events","unsubscribe","_e","data","acc","message","normalized","getNormalizedMessageSettings","content","type","sender","timestamp","parsed","handle","body","options","messagesAsList","messageData","_type","items","item","res","ConversationMessageType","contactMethodId","method","result","linebreak","header","title","label","description","text","html","actions","key","value","option","target","Agent","provider","settings","uuid","_a","name","avatar","ConversationProvider","_container","container","storedAgent","agent","__spreadValues","unsub","fn","createSessionStorageKey","id","Locker","unlockNext","willLock","resolve","willUnlock","Store","conversation","enabled","__async","storedAgents","agents","providerIndex","storedMessages","__spreadProps","messages","agentId","action","unlock","createStorageWriter","StorageCategory","write","prev","newData","readStorage","User","swapProvider","conversationId","providerName","components","currentInstance","toQueue","conversationQuery","ConversationEntry","writer","removeTypingState","typingActors","senderString","indexToRemove","ConversationController","widget","providers","removed","added","providerToRemove","index","mounted","nextProvider","entry","updated","updatedTimestamp","dismissed","handler","getParentWidget","widgetName","implementation","mainWidgetName","getSeparateWidget","originWidget","mainWidget","trigger","chatWidgetName","chatWidget","shouldPreventDefault","openChatWidget","contactMethod","triggerDOMTarget","contactMethodsQuery","conversationsQuery","StorageMedium","StorageScope","platform","ConversationEndedBehavior","navigateToConversation","routeName","router","STORAGE_KEY","ConversationPlatform","storedSession","_event","_data","_b","_c","initialRoute","sub","lock","ComponentPlatform","params","behavior","stored","storageKey","component","invokeHandlers","removedProvider","dispose","isActive","session","properties","_key","event","_callback","triggerEl","Zt","Xt","zn","Tt","Fn","Se","Jn","fe","Ft","rn","Zn","ke","Xn","St","Pt","sr","ir","or","Ne","ar","cr","Le","hr","ur","sn","dr","ge","Jt","pr","le","on","Kt","Mt","an","fr","gr","mr","yr","vr","br","qt","hn","Ur","Ve","Wr","zr","Be","Ue","be","Jr","ve","Gr","Zr","Yr","Bt","Qr","gn","Fr","Gt","Yt","ye","mn","Vt","de","Kr","Dt","qr","ts","Ut","es","We","ns","yn","On","En","cs","hs","us","At","ds","ps","fs","Je","_t","gs","ms","bs","Cn","Os","he","Js","$t","Ks","Qe","qs","In","pi","en","fi","gi","ji","_i","Ii","groupedMessages","timeout","current","_index","newItem","previous","ConversationComponent","createWebComponent","rehydrate","isNewController","messageGroupingTimeout","setProperties","providerKeys","writeMessages","messageStream","loading","preventDefault","validationPromise","_options","conversationData","ConversationMessageListItemType","registerCustomMessageComponent","componentImport"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}