@telia-ace/knowledge-data-client-flamingo 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.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","../src/create-serviceclient.ts","../src/legacy-conversion.ts","../src/data-client.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","// import { WidgetSettings } from '@telia-ace/knowledge-widget-core';\r\nimport { Container, Widget } from '@webprovisions/platform';\r\n\r\nexport const createServiceClient = (container: Container) => {\r\n return import('@telia-ace/knowledge-serviceclient').then(\r\n ({ ServiceClient, ServiceProxy }) => {\r\n return container.get('settings').then((settings: any) => {\r\n const { name, events }: Widget = container.get('$widget');\r\n const {\r\n data: { projection = '', site = 'current', forceHttps = false },\r\n } = settings;\r\n\r\n const proxy = new ServiceProxy(projection, {\r\n credentials: 'same-origin',\r\n });\r\n\r\n // Replacing '_contact' & '_contact-method' while\r\n // still using the shadow widget concept\r\n const client = new ServiceClient(\r\n proxy,\r\n {\r\n funnel: name.replace('_contact-method', '').replace('_contact', ''),\r\n site: createSiteProvider(site, forceHttps),\r\n },\r\n null,\r\n container\r\n );\r\n\r\n events.subscribe('widget:settings-updated', (_event, { data }: any) => {\r\n if (data && data.projection !== projection) {\r\n client.proxy.setBaseUrl(data.projection);\r\n }\r\n });\r\n\r\n return client;\r\n });\r\n }\r\n );\r\n};\r\n\r\ntype SiteLocation = {\r\n host: string;\r\n pathname: string;\r\n};\r\n\r\nconst createSiteProvider = (\r\n site: 'current' | 'referrer',\r\n forceHttps: boolean\r\n): (() => string) => {\r\n return () => {\r\n const parseLocation = (href: string): SiteLocation => {\r\n const link = document.createElement('a');\r\n link.href = href;\r\n return link;\r\n };\r\n\r\n let location: SiteLocation = window.location;\r\n if (site === 'referrer' && document.referrer) {\r\n location = parseLocation(document.referrer);\r\n }\r\n return [\r\n forceHttps ? 'https:' : '',\r\n '//',\r\n location.host,\r\n location.pathname,\r\n ].join('');\r\n };\r\n};\r\n","import {\r\n CategoryApiResponse,\r\n ContactApiResponse,\r\n ContactCategoriesApiResponse,\r\n ContactMethodApiResponse,\r\n GuideApiResponse,\r\n GuideCategoriesApiResponse,\r\n GuideMatchApiResponse,\r\n GuideViewApiResponse,\r\n NoticeApiResponse,\r\n NoticeListApiResponse,\r\n TagListApiResponse,\r\n ValidationApiResult,\r\n} from '@telia-ace/knowledge-serviceclient';\r\n// import { ContactMethodType as ContactMethod } from '@telia-ace/knowledge-widget-adapters';\r\n// import {\r\n// Category,\r\n// DialogItem,\r\n// DialogItemType,\r\n// Guide,\r\n// Notification,\r\n// NotificationList,\r\n// Symbol,\r\n// Tag,\r\n// } from '@telia-ace/widget-core';\r\n// import { FormBuilder } from '@telia-ace/widget-forms';\r\nimport { DataError, ServiceClientQueryType } from './data-client';\r\n\r\ntype Category = any;\r\ntype DialogItem = any;\r\ntype Guide = any;\r\ntype Notification = any;\r\ntype NotificationList = any;\r\ntype Symbol = any;\r\ntype Tag = any;\r\n\r\ntype ContactMethod = any;\r\n\r\nenum DialogItemType {\r\n guide = 'guide',\r\n link = 'link',\r\n default = 'default',\r\n}\r\n\r\nexport type MatchResult = {\r\n guides: Guide[];\r\n matches: number;\r\n topNotifications: Notification[];\r\n middleNotifications: Notification[];\r\n bottomNotifications: Notification[];\r\n notificationLists: NotificationList[];\r\n tags: Tag[];\r\n byCategory: { id: string; guides: Guide[]; matches: number }[];\r\n};\r\n\r\nexport type TagsResult = Tag[];\r\n\r\nexport type CategoriesResult = {\r\n categories: Category[];\r\n matches: number;\r\n};\r\n\r\nexport type NotificationResults = Pick<\r\n MatchResult,\r\n | 'topNotifications'\r\n | 'middleNotifications'\r\n | 'bottomNotifications'\r\n | 'notificationLists'\r\n>;\r\n\r\nexport type GuideResult = {\r\n guide: {\r\n id: string;\r\n title: string;\r\n body: string;\r\n modified: string;\r\n modifiedBy: string | null;\r\n publishedBy: string | null;\r\n published: string;\r\n connection: string;\r\n categories: number[];\r\n hasHandover: boolean;\r\n allowFeedback: boolean;\r\n seoMetaDescription: string | null;\r\n seoAllowIndex: boolean | null;\r\n perspective: string | null;\r\n perspectives: { [key: string]: string };\r\n translations?: { [key: string]: string };\r\n };\r\n related: Guide[];\r\n dialog: DialogItem[];\r\n contactMethods: ContactMethod[];\r\n tags: Tag[];\r\n error?: DataError;\r\n};\r\n\r\nexport type ContactsResult = {\r\n categories: Category[];\r\n contactMethods: ContactMethod[];\r\n topNotifications: Notification[];\r\n middleNotifications: Notification[];\r\n bottomNotifications: Notification[];\r\n notificationLists: NotificationList[];\r\n};\r\n\r\nexport type SubmissionResult = {\r\n contactMethod?: ContactMethod;\r\n valid: boolean;\r\n};\r\n\r\nconst convertLegacySymbol = (symbol?: {\r\n Type: string;\r\n Content: string;\r\n}): Symbol | undefined => {\r\n if (symbol) {\r\n const { Type, Content } = symbol;\r\n if (Type && Content) {\r\n return { type: Type, content: Content };\r\n }\r\n }\r\n};\r\n\r\nconst mapLegacyCategoriesRecursively = (\r\n categories: CategoryApiResponse[]\r\n): Category[] => {\r\n return categories.map((c) => {\r\n const category: Category = {\r\n id: c.Id.toString(),\r\n title: c.Name,\r\n symbol: convertLegacySymbol(c.DefaultIcon),\r\n activeSymbol: c.ActiveIcon && convertLegacySymbol(c.ActiveIcon),\r\n description:\r\n c.Description || (c.Attributes && c.Attributes.description) || '',\r\n matches: c.GuidesCount,\r\n };\r\n if (c.Children && c.Children.length) {\r\n category.items = mapLegacyCategoriesRecursively(c.Children);\r\n }\r\n return category;\r\n });\r\n};\r\n\r\nconst mapNotices = (\r\n source: NoticeApiResponse[],\r\n type: string\r\n): Notification[] => {\r\n return source\r\n .filter(({ Type }) => Type === type)\r\n .map(({ Id, Title, Body }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n body: Body,\r\n }));\r\n};\r\n\r\nconst mapNotificationLists = (\r\n source: NoticeListApiResponse[]\r\n): NotificationList[] => {\r\n return source.map(({ Id, Title, DefaultIcon, ListNotices, Notices }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n symbol: convertLegacySymbol(DefaultIcon),\r\n defaultHeaderOptions: {\r\n visible: !!ListNotices.length,\r\n },\r\n notifications: (ListNotices || [])\r\n .concat(Notices || [])\r\n .map(({ Id, Title, Body, Type, Modified }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n body: Body,\r\n modified: Modified,\r\n expandable: Type === 'listNotice',\r\n })),\r\n }));\r\n};\r\n\r\nconst mapContactMethodSettings = (\r\n {\r\n Id,\r\n Title,\r\n DefaultIcon,\r\n Exits: [Exit],\r\n ExitType,\r\n ConfirmationText,\r\n Description,\r\n }: ContactApiResponse,\r\n _Validation?: ValidationApiResult\r\n): ContactMethod => {\r\n const { Adapter } = Exit || { Adapter: {} };\r\n const { ClientName = '', Settings = {}, CustomClientName = '' } = Adapter;\r\n\r\n const settings: ContactMethod = {\r\n id: Id.toString(),\r\n title: Title,\r\n description: Description,\r\n symbol: convertLegacySymbol(DefaultIcon),\r\n clientName: ClientName === 'custom.adapter' ? CustomClientName : ClientName,\r\n expanded: true,\r\n inline: true,\r\n body: {},\r\n };\r\n\r\n if (ClientName.indexOf('phone') > -1 || ClientName.indexOf('freetext') > -1) {\r\n const { displayTextBeforeClick, textBeforeClick } = Settings;\r\n if (displayTextBeforeClick === 'true') {\r\n settings.expanded = false;\r\n settings.title = textBeforeClick;\r\n }\r\n\r\n if (ClientName.indexOf('phone.text') > -1) {\r\n settings.body.phoneNumber = Settings.phoneNumber;\r\n } else {\r\n settings.body.freetext = Settings.freetext;\r\n }\r\n }\r\n\r\n if (\r\n ClientName.indexOf('chat.popup') > -1 ||\r\n ClientName.indexOf('link') > -1 ||\r\n (ClientName === 'custom.adapter' && ExitType === 'custom')\r\n ) {\r\n settings.body = Settings;\r\n settings.body.confirmationFallback = ConfirmationText;\r\n }\r\n\r\n if (ClientName.indexOf('ace') > -1) {\r\n settings.body = Settings;\r\n }\r\n\r\n // if (Form && Form.HasValueComponents) { // TODO:\r\n // if (Validation) {\r\n // settings.body.form = FormBuilder.fromLegacyForm(\r\n // Id.toString(),\r\n // Form,\r\n // Validation\r\n // ).get();\r\n // } else {\r\n // settings.body.form = FormBuilder.fromLegacyForm(\r\n // Id.toString(),\r\n // Form\r\n // ).get();\r\n // }\r\n // if (!ExpandFormAutomatically) {\r\n // settings.expanded = settings.inline = false;\r\n // }\r\n // }\r\n\r\n return settings;\r\n};\r\n\r\ntype Modify<T, R> = Omit<T, keyof R> & R;\r\ntype ExtendedGuideMatchApiResponse = Modify<\r\n GuideMatchApiResponse,\r\n {\r\n ByCategory: {\r\n Id: string;\r\n Matches: GuideApiResponse[];\r\n TotalMatches: number;\r\n }[];\r\n }\r\n>;\r\n\r\nconst mapTags = (tags: TagListApiResponse[] = []): Tag[] => {\r\n return tags.map(\r\n ({ Id, Title, TotalMatches, Symbol, DefaultIcon, ActiveIcon }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n matches: TotalMatches,\r\n symbol: convertLegacySymbol(DefaultIcon || Symbol),\r\n defaultIcon: convertLegacySymbol(DefaultIcon),\r\n activeIcon: convertLegacySymbol(ActiveIcon),\r\n })\r\n );\r\n};\r\n\r\nconst mapGuides = (guides: GuideApiResponse[]) => {\r\n return guides.map(({ Id, Title, Tags, FirstPublishedDate, Modified }) => ({\r\n id: Id.toString(),\r\n title: Title,\r\n tags: mapTags(Tags),\r\n published: FirstPublishedDate,\r\n modified: Modified,\r\n }));\r\n};\r\n\r\nexport const formatLegacyData = (type: ServiceClientQueryType, data: any) => {\r\n switch (type) {\r\n case ServiceClientQueryType.MatchByCategory:\r\n case ServiceClientQueryType.Match: {\r\n const result: MatchResult = {\r\n guides: [],\r\n matches: 0,\r\n topNotifications: [],\r\n middleNotifications: [],\r\n bottomNotifications: [],\r\n notificationLists: [],\r\n tags: [],\r\n byCategory: [],\r\n };\r\n const {\r\n Matches,\r\n TotalMatches,\r\n Notices,\r\n NoticeLists,\r\n Tags,\r\n ByCategory,\r\n }: ExtendedGuideMatchApiResponse = data;\r\n\r\n result.guides = mapGuides(Matches);\r\n\r\n result.matches = TotalMatches;\r\n\r\n result.byCategory = (ByCategory || []).map(\r\n ({ Id, Matches, TotalMatches }) => ({\r\n id: Id,\r\n guides: mapGuides(Matches),\r\n matches: TotalMatches,\r\n })\r\n );\r\n\r\n result.tags = mapTags(Tags);\r\n\r\n result.notificationLists = mapNotificationLists(NoticeLists || []);\r\n\r\n result.topNotifications = mapNotices(Notices || [], 'noticeRowTop');\r\n\r\n result.middleNotifications = mapNotices(Notices || [], 'noticeRowMiddle');\r\n\r\n result.bottomNotifications = mapNotices(Notices || [], 'footerNotice');\r\n\r\n return result;\r\n }\r\n case ServiceClientQueryType.Categories: {\r\n const { Children, GuidesCountTotal }: GuideCategoriesApiResponse = data;\r\n\r\n const result: CategoriesResult = {\r\n categories: mapLegacyCategoriesRecursively(Children || []),\r\n matches: GuidesCountTotal,\r\n };\r\n\r\n return result;\r\n }\r\n case ServiceClientQueryType.Guide: {\r\n const {\r\n Id,\r\n Title,\r\n Body,\r\n Related,\r\n Options,\r\n ConnectionId,\r\n ContactMethods,\r\n EnableFeedback,\r\n HandoverExists,\r\n FirstPublishedDate,\r\n Modified,\r\n ModifiedByDisplayName,\r\n FirstPublishedByDisplayName,\r\n Categories,\r\n Tags,\r\n SeoMetaDescription,\r\n SeoAllowIndex,\r\n Perspectives,\r\n PerspectiveKey,\r\n Translations,\r\n }: GuideViewApiResponse = data;\r\n\r\n /* \r\n PerspectiveKey is always null when on the \"top level\" of a dialog tree\r\n OR when navigating down a dialog tree in the \"Default answer version\"\r\n Note: The \"Default answer version\" is not the same as a given guides\r\n default answer version. The \"Default answer version\" is always the answer\r\n version in Perspectives with the key \"Default\".\r\n */\r\n const perspective =\r\n PerspectiveKey ||\r\n Object.values(Perspectives).find(\r\n (connection) => connection === ConnectionId\r\n ) ||\r\n Perspectives['Default'] ||\r\n null;\r\n\r\n const result: GuideResult = {\r\n guide: {\r\n id: Id.toString(),\r\n title: Title,\r\n body: Body,\r\n modified: Modified,\r\n published: FirstPublishedDate,\r\n modifiedBy: ModifiedByDisplayName,\r\n publishedBy: FirstPublishedByDisplayName,\r\n connection: ConnectionId,\r\n categories: Categories,\r\n hasHandover: HandoverExists,\r\n allowFeedback: EnableFeedback,\r\n seoMetaDescription: SeoMetaDescription,\r\n seoAllowIndex: SeoAllowIndex,\r\n perspectives: Perspectives,\r\n perspective,\r\n translations: Object.keys(Translations || {}).reduce<{\r\n [key: string]: string;\r\n }>((acc, key) => {\r\n acc[key] = Translations[key].toString();\r\n return acc;\r\n }, {}),\r\n },\r\n related: mapGuides(Related || []),\r\n dialog: [],\r\n contactMethods: (ContactMethods || []).map((cm) =>\r\n mapContactMethodSettings(cm)\r\n ),\r\n tags: mapTags(Tags),\r\n };\r\n\r\n (Options || []).forEach(\r\n ({ CanAccess, Description, ConnectionId, Properties }) => {\r\n if (!CanAccess) {\r\n return;\r\n }\r\n\r\n const item: DialogItem = {\r\n id: Id.toString(),\r\n title: Description,\r\n connection: ConnectionId,\r\n connectionKey: (Properties as any).ConnectionKey,\r\n type: DialogItemType.default,\r\n parent: {\r\n id: Id.toString(),\r\n title: Title,\r\n tags: mapTags(Tags),\r\n },\r\n };\r\n\r\n if (Properties.Type === 'Guide' || Properties.Type === 'Link') {\r\n Properties.Id && (item.id = Properties.Id.toString());\r\n Properties.Uri && (item.href = Properties.Uri);\r\n Properties.Target && (item.target = Properties.Target);\r\n switch (Properties.Type) {\r\n case 'Guide':\r\n item.type = DialogItemType.guide;\r\n break;\r\n case 'Link':\r\n item.type = DialogItemType.link;\r\n break;\r\n }\r\n }\r\n\r\n result.dialog.push(item);\r\n }\r\n );\r\n\r\n return result;\r\n }\r\n case ServiceClientQueryType.Contacts: {\r\n const {\r\n Children,\r\n Matches,\r\n Notices,\r\n NoticeLists,\r\n }: ContactCategoriesApiResponse = data;\r\n\r\n const result: ContactsResult = {\r\n contactMethods: (Matches || []).map((cm) =>\r\n mapContactMethodSettings(cm)\r\n ),\r\n categories: mapLegacyCategoriesRecursively(Children || []),\r\n topNotifications: mapNotices(Notices || [], 'noticeRowTop'),\r\n middleNotifications: mapNotices(Notices || [], 'noticeRowMiddle'),\r\n bottomNotifications: mapNotices(Notices || [], 'footerNotice'),\r\n notificationLists: mapNotificationLists(NoticeLists || []),\r\n };\r\n\r\n return result;\r\n }\r\n case ServiceClientQueryType.ContactMethod: {\r\n const { ContactMethod }: ContactMethodApiResponse = data;\r\n\r\n return mapContactMethodSettings(ContactMethod || {});\r\n }\r\n case ServiceClientQueryType.Tags:\r\n case ServiceClientQueryType.TagsOnGuides: {\r\n return mapTags(data || []);\r\n }\r\n case ServiceClientQueryType.Notifications: {\r\n const { Notices, NoticeLists } = data;\r\n\r\n return {\r\n topNotifications: mapNotices(Notices || [], 'noticeRowTop'),\r\n middleNotifications: mapNotices(Notices || [], 'noticeRowMiddle'),\r\n bottomNotifications: mapNotices(Notices || [], 'footerNotice'),\r\n notificationLists: mapNotificationLists(NoticeLists || []),\r\n };\r\n }\r\n default:\r\n return {};\r\n }\r\n};\r\n","import { ServiceClient } from '@telia-ace/knowledge-serviceclient';\r\nimport { WidgetRenderState } from '@telia-ace/widget-core';\r\nimport {\r\n deepClone,\r\n lock,\r\n removeNullAndUndefinedValues,\r\n shallowCompare,\r\n} from '@telia-ace/widget-utilities';\r\nimport { Container, EventManager, Widget } from '@webprovisions/platform';\r\nimport { createServiceClient } from './create-serviceclient';\r\nimport { formatLegacyData } from './legacy-conversion';\r\n\r\nexport type Subscriber = (...args: any[]) => void;\r\n\r\nexport enum DataType {\r\n Guide = 'guide',\r\n Guides = 'guides',\r\n GuidesByCategory = 'guides-by-category',\r\n RowNotifications = 'row-notices',\r\n NotificationLists = 'notification-lists',\r\n GuideCategories = 'guide-categories',\r\n ContactMethodCategories = 'contact-method-categories',\r\n ContactMethod = 'contact-method',\r\n ContactMethods = 'contact-methods',\r\n Tags = 'tags',\r\n TagsOnGuides = 'tagsonguides',\r\n}\r\n\r\nexport type DataError = {\r\n status: number;\r\n message: string;\r\n};\r\n\r\nexport enum ServiceClientQueryType {\r\n Match = 'match',\r\n Categories = 'categories',\r\n Guide = 'guide',\r\n Contacts = 'contacts',\r\n ContactMethod = 'contact-method',\r\n MatchByCategory = 'match-by-category',\r\n Tags = 'tags',\r\n TagsOnGuides = 'tagsonguides',\r\n Notifications = 'notifications',\r\n}\r\n\r\nexport enum FeedbackType {\r\n Positive = 'Positive',\r\n Negative = 'Negative',\r\n}\r\n\r\nexport type QueryParameters = {\r\n guideId?: string | number;\r\n categories?: string | number | string[] | number[];\r\n tagId?: string | number;\r\n connection?: string;\r\n\r\n contactMethodCategoryId?: string | number;\r\n contactMethodId?: string | number;\r\n\r\n searchPhrase?: string | number;\r\n take?: string | number;\r\n [key: string]: any;\r\n\r\n expandCategories?: 'none' | 'children' | 'descendants';\r\n sorting?: SortingType;\r\n guideIds?: string[];\r\n};\r\n\r\nexport enum SortingType {\r\n POPULARITY_DESCENDING = 'popularity-descending',\r\n ALPHABETIC_ASCENDING = 'alphabetic-ascending',\r\n ALPHABETIC_DESCENDING = 'alphabetic-descending',\r\n MODIFIED_ASCENDING = 'modified-ascending',\r\n MODIFIED_DESCENDING = 'modified-descending',\r\n PUBLISHED_ASCENDING = 'published-ascending',\r\n PUBLISHED_DESCENDING = 'published-descending',\r\n}\r\n\r\nexport type Query = {\r\n params: QueryParameters;\r\n resolved: boolean;\r\n loading: boolean;\r\n error?: DataError;\r\n data: any;\r\n resolvers: {\r\n resolve: (data: any) => void;\r\n reject: (data: any) => void;\r\n }[];\r\n};\r\n\r\nexport const determineServiceClientQueryType = (\r\n type: DataType\r\n): ServiceClientQueryType => {\r\n switch (type) {\r\n case DataType.Guides:\r\n return ServiceClientQueryType.Match;\r\n case DataType.GuidesByCategory:\r\n return ServiceClientQueryType.MatchByCategory;\r\n case DataType.Guide:\r\n return ServiceClientQueryType.Guide;\r\n case DataType.GuideCategories:\r\n return ServiceClientQueryType.Categories;\r\n case DataType.ContactMethodCategories:\r\n case DataType.ContactMethods:\r\n return ServiceClientQueryType.Contacts;\r\n case DataType.ContactMethod:\r\n return ServiceClientQueryType.ContactMethod;\r\n case DataType.Tags:\r\n return ServiceClientQueryType.Tags;\r\n case DataType.TagsOnGuides:\r\n return ServiceClientQueryType.TagsOnGuides;\r\n case DataType.NotificationLists:\r\n case DataType.RowNotifications:\r\n return ServiceClientQueryType.Notifications;\r\n default:\r\n throw 'error';\r\n }\r\n};\r\n\r\nconst widgetIsHidden = async (container: Container) => {\r\n const { invoke } = container.get('$widget');\r\n const renderState = await invoke('renderState');\r\n return renderState === WidgetRenderState.hidden;\r\n};\r\n\r\nexport default class DataClient {\r\n private queries: Map<ServiceClientQueryType, Query[]> = new Map();\r\n // private lastTake: number = 0;\r\n public events: EventManager;\r\n constructor(\r\n private container: Container,\r\n private matchingClient: ServiceClient\r\n ) {\r\n this.events = (<Widget>container.get('$widget')).events;\r\n\r\n this.events.subscribe(\r\n 'widget:settings-updated',\r\n () => (this.queries = new Map())\r\n );\r\n\r\n this.events.subscribe(\r\n 'widget:render-state-changed',\r\n (_event, { next, previous }) => {\r\n if (\r\n previous === WidgetRenderState.hidden &&\r\n next === WidgetRenderState.open\r\n ) {\r\n this.fetchAllUnresolvedQueries();\r\n }\r\n }\r\n );\r\n }\r\n\r\n static getInstance(\r\n container: Container,\r\n key = 'dataClient'\r\n ): Promise<DataClient> {\r\n return lock(this)(() => {\r\n return container.getAsync(key).then(async (value: DataClient) => {\r\n let serviceClient = await container.getAsync('matchingClient');\r\n\r\n if (!serviceClient) {\r\n serviceClient = await createServiceClient(container);\r\n container.registerAsync('matchingClient', () => serviceClient);\r\n }\r\n\r\n let platform = value;\r\n if (!platform) {\r\n platform = new DataClient(container, serviceClient);\r\n container.registerAsync(key, () => platform);\r\n }\r\n return platform;\r\n });\r\n });\r\n }\r\n\r\n private getUnresolvedQueries = () => {\r\n let unresolvedCount = 0;\r\n this.queries.forEach((queries, _type) => {\r\n const hasUnresolved = queries.some((query: Query) => !query.resolved);\r\n if (hasUnresolved) {\r\n unresolvedCount = +1;\r\n }\r\n });\r\n return unresolvedCount;\r\n };\r\n\r\n public fetch(\r\n type: DataType,\r\n params: QueryParameters,\r\n options?: {\r\n // this is useful when something else in the environment may have changed that\r\n // could have side effects, will ensure that a fresh fetch is always initiated\r\n noCache: boolean;\r\n }\r\n ): Promise<any> {\r\n return new Promise((resolve, reject) => {\r\n if (params.take) {\r\n // this.lastTake = +(params.take || 0);\r\n }\r\n\r\n removeNullAndUndefinedValues(params);\r\n const serviceClientQueryType = determineServiceClientQueryType(type);\r\n let queries = this.queries.get(serviceClientQueryType) || [];\r\n\r\n let query: Query | null =\r\n queries.find((q) => shallowCompare(q.params, params)) || null;\r\n\r\n if (query && options?.noCache) {\r\n const index = queries.findIndex((q) =>\r\n shallowCompare(q.params, params)\r\n );\r\n queries = [...queries.slice(0, index), ...queries.slice(index + 1)];\r\n query = null;\r\n }\r\n\r\n if (query) {\r\n const index = queries.indexOf(query);\r\n if (query.resolved) {\r\n this.events.dispatch('data-client:fetched', {\r\n params,\r\n type: serviceClientQueryType,\r\n response: query.data,\r\n unresolvedQueries: this.getUnresolvedQueries(),\r\n });\r\n this.track(query.data, serviceClientQueryType, query.error);\r\n if (query.data && query.error) {\r\n reject({ error: query.error });\r\n } else {\r\n resolve(query.data);\r\n }\r\n } else {\r\n query.resolvers.push({ resolve, reject });\r\n }\r\n queries.splice(index, 1);\r\n queries.push(query);\r\n this.queries.set(serviceClientQueryType, queries);\r\n if (!query.loading && !query.resolved) {\r\n return this.runQuery(serviceClientQueryType, params);\r\n }\r\n } else {\r\n queries.push({\r\n params,\r\n resolved: false,\r\n loading: true,\r\n data: {},\r\n resolvers: [{ resolve, reject }],\r\n });\r\n this.queries.set(serviceClientQueryType, queries);\r\n\r\n return this.runQuery(serviceClientQueryType, params);\r\n }\r\n }).then((res) => deepClone(res));\r\n }\r\n\r\n // query the cached data\r\n public read(\r\n type: DataType,\r\n options: {\r\n select?: (data: any) => any; // either return all data by the DataType, or use an selector\r\n }\r\n ) {\r\n const { select } = options;\r\n const serviceClientQueryType = determineServiceClientQueryType(type);\r\n const queries = this.queries.get(serviceClientQueryType) || [];\r\n\r\n const result = queries.reduce<any[]>((acc, query) => {\r\n if (typeof select === 'function') {\r\n const match = select(query.data);\r\n if (match) {\r\n acc.push(match);\r\n }\r\n } else {\r\n acc.push(query.data);\r\n }\r\n return acc;\r\n }, []);\r\n return result;\r\n }\r\n\r\n public feedback(\r\n id: string,\r\n connection: string,\r\n feedback: FeedbackType\r\n ): Promise<any> {\r\n return this.matchingClient.giveFeedback(id, connection, feedback);\r\n }\r\n\r\n private setLoadingStatus(\r\n type: ServiceClientQueryType,\r\n params: QueryParameters,\r\n loading: boolean\r\n ) {\r\n const queries = this.queries.get(type) || [];\r\n const query = queries.find((q) => shallowCompare(q.params, params));\r\n\r\n if (query) {\r\n query.loading = loading;\r\n }\r\n this.queries.set(type, queries);\r\n }\r\n\r\n private async runQuery(\r\n type: ServiceClientQueryType,\r\n params: QueryParameters\r\n ) {\r\n const {\r\n searchPhrase = '',\r\n categories = '0',\r\n contactMethodCategoryId = '0',\r\n contactMethodId = '0',\r\n tagId = undefined,\r\n take = 5,\r\n connection = '',\r\n guideId,\r\n expandCategories = 'descendants',\r\n currentCategory,\r\n sorting = SortingType.POPULARITY_DESCENDING,\r\n guideIds = [],\r\n } = params;\r\n\r\n const trimmedPhrase = searchPhrase.toString().trim();\r\n if (await widgetIsHidden(this.container)) {\r\n return Promise.resolve();\r\n }\r\n\r\n switch (type) {\r\n case ServiceClientQueryType.Match: {\r\n const formatSortingValues = (sorting: string) => {\r\n const [type, direction] = sorting.split('-');\r\n const sortKeysMap = new Map([\r\n ['popularity', 'popularity'],\r\n ['alphabetic', 'title'],\r\n ['modified', 'lastModified'],\r\n ['published', 'firstPublished'],\r\n ]);\r\n\r\n return {\r\n type: sortKeysMap.get(type),\r\n direction: direction,\r\n };\r\n };\r\n\r\n if (guideIds.length) {\r\n return this.matchingClient\r\n .customRequest('guides', 'POST', {\r\n configuration: { ids: guideIds, take: +take },\r\n })\r\n .then(\r\n (matches) => matches && this.handleResponse(matches, type, params)\r\n );\r\n }\r\n\r\n return this.matchingClient\r\n .match(trimmedPhrase, {\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n take: +take,\r\n tags: tagId,\r\n sorting: formatSortingValues(sorting),\r\n ids: guideIds,\r\n })\r\n .then(\r\n (matches) => matches && this.handleResponse(matches, type, params)\r\n );\r\n }\r\n case ServiceClientQueryType.MatchByCategory: {\r\n return this.matchingClient\r\n .match(trimmedPhrase, {\r\n groupByCategory: true,\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n take: +take,\r\n tags: tagId,\r\n })\r\n .then(\r\n (matches) => matches && this.handleResponse(matches, type, params)\r\n );\r\n }\r\n case ServiceClientQueryType.Guide: {\r\n return this.matchingClient\r\n .getGuide(guideId, { connectionId: connection })\r\n .then((guide) => {\r\n if (guide) {\r\n this.handleResponse(guide, type, params);\r\n }\r\n })\r\n .catch((e) => {\r\n const error = {\r\n message: 'Something went wrong.',\r\n status: e.status || 400,\r\n };\r\n if (error.status === 404) {\r\n error.message = 'The guide could not be found.';\r\n }\r\n this.handleResponse({}, type, params, error);\r\n });\r\n }\r\n case ServiceClientQueryType.Categories: {\r\n return this.matchingClient\r\n .getCategories({\r\n phrase: trimmedPhrase,\r\n expand: expandCategories,\r\n tags: tagId,\r\n })\r\n .then(\r\n (categories) =>\r\n categories && this.handleResponse(categories, type, params)\r\n );\r\n }\r\n case ServiceClientQueryType.Contacts: {\r\n if (guideId) {\r\n return this.matchingClient\r\n .contactMethods(+guideId, { phrase: trimmedPhrase })\r\n .then(\r\n (result) => result && this.handleResponse(result, type, params)\r\n );\r\n }\r\n return this.matchingClient\r\n .contacts(+contactMethodCategoryId, { phrase: trimmedPhrase })\r\n .then(\r\n (result) => result && this.handleResponse(result, type, params)\r\n );\r\n }\r\n case ServiceClientQueryType.ContactMethod: {\r\n return this.matchingClient\r\n .getContactMethod(+contactMethodId, { guideId, currentCategory })\r\n .then(\r\n (result) => result && this.handleResponse(result, type, params)\r\n );\r\n }\r\n case ServiceClientQueryType.Tags: {\r\n return this.matchingClient\r\n .customRequest('tags', 'GET', {\r\n configuration: {\r\n take: 999999,\r\n phrase: trimmedPhrase,\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n },\r\n })\r\n .then(\r\n (result) => result && this.handleResponse(result, type, params)\r\n );\r\n }\r\n case ServiceClientQueryType.TagsOnGuides: {\r\n return this.matchingClient\r\n .customRequest('tagsonguides', 'GET', {\r\n configuration: {\r\n take: 999999,\r\n phrase: trimmedPhrase,\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n tags: tagId,\r\n },\r\n })\r\n .then(\r\n (result) => result && this.handleResponse(result, type, params)\r\n );\r\n }\r\n case ServiceClientQueryType.Notifications: {\r\n return this.matchingClient\r\n .customRequest('notices', 'GET', {\r\n configuration: {\r\n phrase: trimmedPhrase,\r\n categories:\r\n categories === '0'\r\n ? []\r\n : Array.isArray(categories)\r\n ? categories\r\n : [+categories],\r\n },\r\n })\r\n .then(\r\n (result) => result && this.handleResponse(result, type, params)\r\n );\r\n }\r\n }\r\n }\r\n\r\n handleResponse(\r\n data: any = {},\r\n type: ServiceClientQueryType,\r\n params: QueryParameters,\r\n error?: DataError\r\n ) {\r\n const queries = this.queries.get(type) || [];\r\n const existing = queries.find((q) => shallowCompare(q.params, params));\r\n if (existing) {\r\n const formatted = error ? error : formatLegacyData(type, data);\r\n this.track(formatted, type, error);\r\n existing.resolvers.forEach((r) => {\r\n if (error) {\r\n r.reject({ error: formatted });\r\n } else {\r\n r.resolve(formatted);\r\n }\r\n });\r\n\r\n const index = queries.indexOf(existing);\r\n if (index > -1) {\r\n queries.splice(index, 1);\r\n }\r\n queries.push({\r\n ...existing,\r\n error,\r\n resolvers: [],\r\n data: formatted,\r\n resolved: true,\r\n });\r\n this.setLoadingStatus(type, params, false);\r\n this.queries.set(type, queries);\r\n if (!error) {\r\n this.events.dispatch('data-client:fetched', {\r\n type,\r\n params,\r\n response: formatted,\r\n unresolvedQueries: this.getUnresolvedQueries(),\r\n });\r\n }\r\n }\r\n }\r\n\r\n private fetchAllUnresolvedQueries() {\r\n for (const [queryType, queries] of this.queries) {\r\n queries\r\n .filter((query: Query) => !query.resolved)\r\n .forEach((query) => {\r\n this.runQuery(queryType, query.params);\r\n });\r\n }\r\n }\r\n\r\n private track(\r\n data: any = {},\r\n type: ServiceClientQueryType,\r\n error?: DataError\r\n ) {\r\n const widget = this.container.get('$widget');\r\n if (widget && !error) {\r\n widget.events.dispatch('tracking:service-client-response', {\r\n type,\r\n data,\r\n });\r\n } else if (widget) {\r\n widget.events.dispatch('tracking:service-client-error', {\r\n type,\r\n error,\r\n });\r\n }\r\n }\r\n\r\n static create(container: Container): Promise<DataClient> {\r\n return container.getAsync('matchingClient').then(async (matchingClient) => {\r\n if (matchingClient) {\r\n return new DataClient(container, matchingClient);\r\n }\r\n\r\n const client = await createServiceClient(container);\r\n container.registerAsync('matchingClient', () => client);\r\n\r\n return new DataClient(container, client);\r\n });\r\n }\r\n\r\n getClient() {\r\n return this.matchingClient;\r\n }\r\n}\r\n"],"names":["f","t","e","r","o","E","m","g","L","i","s","a","y","O$1","A","O","u","l","p","k","d","F","z","b","I","n","c","M","_","G","J","X","W","q","D$2","D","P","Z$1","w","K","nt","tt","st","Q","et","V","it","T","rt","x","v","R","ot","at","j","ct$1","ht","ct","lt","ut","dt","pt","U","$","gt","Z","mt$1","Y","yt","mt","wt","C$1","C","S","N","bt","H","B","createServiceClient","container","ServiceClient","ServiceProxy","settings","name","events","projection","site","forceHttps","proxy","client","createSiteProvider","_event","data","parseLocation","href","link","location","convertLegacySymbol","symbol","Type","Content","mapLegacyCategoriesRecursively","categories","category","mapNotices","source","type","Id","Title","Body","mapNotificationLists","DefaultIcon","ListNotices","Notices","Modified","mapContactMethodSettings","Exit","ExitType","ConfirmationText","Description","_Validation","Adapter","ClientName","Settings","CustomClientName","displayTextBeforeClick","textBeforeClick","mapTags","tags","TotalMatches","Symbol","ActiveIcon","mapGuides","guides","Tags","FirstPublishedDate","formatLegacyData","ServiceClientQueryType","result","Matches","NoticeLists","ByCategory","Children","GuidesCountTotal","Related","Options","ConnectionId","ContactMethods","EnableFeedback","HandoverExists","ModifiedByDisplayName","FirstPublishedByDisplayName","Categories","SeoMetaDescription","SeoAllowIndex","Perspectives","PerspectiveKey","Translations","perspective","connection","acc","key","cm","CanAccess","Properties","item","ContactMethod","DataType","FeedbackType","SortingType","determineServiceClientQueryType","widgetIsHidden","__async","invoke","WidgetRenderState","DataClient","matchingClient","unresolvedCount","queries","_type","query","next","previous","lock","value","serviceClient","platform","params","options","resolve","reject","removeNullAndUndefinedValues","serviceClientQueryType","shallowCompare","index","res","deepClone","select","match","id","feedback","loading","searchPhrase","contactMethodCategoryId","contactMethodId","tagId","take","guideId","expandCategories","currentCategory","sorting","guideIds","trimmedPhrase","formatSortingValues","direction","matches","guide","error","existing","formatted","__spreadProps","__spreadValues","queryType","widget"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
@@ -0,0 +1,72 @@
1
+ import { DataError, ServiceClientQueryType } from './data-client';
2
+ type Category = any;
3
+ type DialogItem = any;
4
+ type Guide = any;
5
+ type Notification = any;
6
+ type NotificationList = any;
7
+ type Tag = any;
8
+ type ContactMethod = any;
9
+ export type MatchResult = {
10
+ guides: Guide[];
11
+ matches: number;
12
+ topNotifications: Notification[];
13
+ middleNotifications: Notification[];
14
+ bottomNotifications: Notification[];
15
+ notificationLists: NotificationList[];
16
+ tags: Tag[];
17
+ byCategory: {
18
+ id: string;
19
+ guides: Guide[];
20
+ matches: number;
21
+ }[];
22
+ };
23
+ export type TagsResult = Tag[];
24
+ export type CategoriesResult = {
25
+ categories: Category[];
26
+ matches: number;
27
+ };
28
+ export type NotificationResults = Pick<MatchResult, 'topNotifications' | 'middleNotifications' | 'bottomNotifications' | 'notificationLists'>;
29
+ export type GuideResult = {
30
+ guide: {
31
+ id: string;
32
+ title: string;
33
+ body: string;
34
+ modified: string;
35
+ modifiedBy: string | null;
36
+ publishedBy: string | null;
37
+ published: string;
38
+ connection: string;
39
+ categories: number[];
40
+ hasHandover: boolean;
41
+ allowFeedback: boolean;
42
+ seoMetaDescription: string | null;
43
+ seoAllowIndex: boolean | null;
44
+ perspective: string | null;
45
+ perspectives: {
46
+ [key: string]: string;
47
+ };
48
+ translations?: {
49
+ [key: string]: string;
50
+ };
51
+ };
52
+ related: Guide[];
53
+ dialog: DialogItem[];
54
+ contactMethods: ContactMethod[];
55
+ tags: Tag[];
56
+ error?: DataError;
57
+ };
58
+ export type ContactsResult = {
59
+ categories: Category[];
60
+ contactMethods: ContactMethod[];
61
+ topNotifications: Notification[];
62
+ middleNotifications: Notification[];
63
+ bottomNotifications: Notification[];
64
+ notificationLists: NotificationList[];
65
+ };
66
+ export type SubmissionResult = {
67
+ contactMethod?: ContactMethod;
68
+ valid: boolean;
69
+ };
70
+ export declare const formatLegacyData: (type: ServiceClientQueryType, data: any) => any;
71
+ export {};
72
+ //# sourceMappingURL=legacy-conversion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-conversion.d.ts","sourceRoot":"","sources":["../src/legacy-conversion.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@telia-ace/knowledge-data-client-flamingo",
3
+ "version": "1.0.9",
4
+ "description": "Data client used by ACE Knowledge Widgets.",
5
+ "license": "SEE LICENSE IN LICENSE.txt",
6
+ "author": "Telia Company AB",
7
+ "keywords": [
8
+ "telia"
9
+ ],
10
+ "main": "dist/index.js",
11
+ "sourceMain": "src/index.ts",
12
+ "type": "module",
13
+ "types": "dist/index.d.ts",
14
+ "files": [
15
+ "LICENSE.txt",
16
+ "README.md",
17
+ "dist/"
18
+ ],
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "sideEffects": false,
23
+ "dependencies": {
24
+ "@telia-ace/knowledge-serviceclient": "^1.0.31",
25
+ "@telia-ace/widget-core": "^1.0.27",
26
+ "@telia-ace/widget-utilities": "^1.0.16",
27
+ "@webprovisions/platform": "^1.1.3"
28
+ },
29
+ "devDependencies": {
30
+ "@types/node": "^20.5.4",
31
+ "rimraf": "^5.0.1",
32
+ "tslib": "^2.6.0",
33
+ "typescript": "^5.1.6",
34
+ "vite": "^4.4.9"
35
+ },
36
+ "scripts": {
37
+ "clean": "rimraf ./dist",
38
+ "build": "tsc -emitDeclarationOnly && vite build"
39
+ }
40
+ }