@telia-ace/knowledge-widget-bot-provider 0.0.23-next.4 → 0.0.23-next.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.4cc04b4e.js","sources":["../src/types.ts","../src/utils.ts","../src/entry-handler.ts","../src/http-client.ts","../src/store.ts","../src/provider.ts","../src/plugin.ts"],"sourcesContent":["import { ConversationMessageListItemType } from '@telia-ace/widget-conversation';\n\nexport enum CustomMessageTypes {\n ContactMethod = 'ace-knowledge-bot-contact-method',\n ContactList = 'ace-knowledge-bot-contact-list',\n FeedbackList = 'ace-knowledge-bot-feedback-list',\n NotificationList = 'ace-knowledge-bot-notification-list',\n NoGoodAlternative = 'ace-knowledge-bot-no-good-alternative',\n}\n\nexport type LooseObject = { [key: string]: any };\n\nexport interface ActionItem {\n label: string;\n actionKey: string;\n data?: any;\n description?: string;\n}\n\nexport interface MessageGroup {\n id: string;\n isUser: boolean;\n items: MessageGroupItem[];\n writer?: any;\n meta: { [key: string]: any };\n}\n\nexport interface MessageGroupItem {\n id: string;\n groupId: string;\n isUser: boolean;\n message: [ConversationMessageListItemType | CustomMessageTypes, any];\n}\n\nexport interface ClientEnvelope {\n command?: LooseObject;\n action?: {\n key: string;\n content: any;\n };\n globalState?: LooseObject;\n localState?: LooseObject;\n clientId?: string;\n funnel?: string;\n}\n\nexport interface ServerEnvelope {\n clientId?: string | undefined;\n entries: ServerEntry[];\n globalState?: GlobalState;\n resolveCommand?: string;\n clientEnvelope?: ClientEnvelope;\n}\n\nexport interface GlobalState {\n completedInteractionsCount: number;\n lastQuestion?: string;\n lastBotGuide: number;\n lastGuideTitle?: string;\n site: string;\n invincibleParameters: object;\n}\n\nexport interface ServerEntry {\n id: string;\n type: string;\n content: any;\n actions: { [key: string]: any };\n tags: string[];\n relation?: string;\n timestamp: string;\n localState?: { [key: string]: any };\n}\n\nexport interface ListContent {\n header?: string;\n actions: ActionItem[];\n contactMethodIds?: string[];\n entryId: string;\n groupId: string;\n}\n","import { ContactMethodType } from '@telia-ace/knowledge-widget-adapters';\nimport { Symbol } from '@telia-ace/knowledge-widget-ui';\nimport { ConversationMessageListItemType } from '@telia-ace/widget-conversation';\nimport { FormBuilder, submitButton } from '@telia-ace/widget-forms';\nimport { uuid } from '@telia-ace/widget-utilities';\nimport { Container } from '@webprovisions/platform';\nimport { CustomMessageTypes, MessageGroup, MessageGroupItem, ServerEntry } from './types';\n\nconst convertLegacySymbol = (symbol?: { type: string; content: string }): Symbol | undefined => {\n if (symbol) {\n const { type, content } = symbol;\n if (type && content) {\n return { type, content };\n }\n }\n};\n\nexport const createGroup = ({\n isUser,\n items = [],\n meta = {},\n}: {\n isUser: boolean;\n items?: Partial<MessageGroupItem>[];\n meta?: MessageGroup['meta'];\n}) => {\n const groupId = uuid();\n\n const group = {\n id: groupId,\n isUser,\n items: items.map((i) => {\n return {\n id: i.id || uuid(),\n isUser: isUser,\n groupId: groupId,\n message: i.message || [],\n };\n }),\n meta,\n } as MessageGroup;\n\n return group;\n};\n\nexport const contactMethodFromLegacy = (\n {\n id,\n title,\n defaultIcon,\n exits: [exit],\n exitType,\n confirmationText,\n expandFormAutomatically,\n form,\n description,\n }: any,\n options: {\n validation?: any;\n guideId?: string;\n } = {}\n): any => {\n const { adapter } = exit || { Adapter: {} };\n const { clientName = '', settings: adapterSettings = {}, customClientName = '' } = adapter;\n const { validation } = options;\n\n const settings: any = {\n id: id.toString(),\n title: title,\n description: description,\n symbol: convertLegacySymbol(defaultIcon),\n clientName: clientName === 'custom.adapter' ? customClientName : clientName,\n expanded: true,\n inline: true,\n body: {},\n };\n\n if (clientName.indexOf('phone') > -1 || clientName.indexOf('freetext') > -1) {\n const { displayTextBeforeClick, textBeforeClick } = adapterSettings;\n if (displayTextBeforeClick === 'true') {\n settings.expanded = false;\n settings.title = textBeforeClick;\n }\n\n if (clientName.indexOf('phone.text') > -1) {\n settings.body.phoneNumber = adapterSettings.phoneNumber;\n } else {\n settings.body.freetext = adapterSettings.freetext;\n }\n }\n\n if (\n clientName.indexOf('chat.popup') > -1 ||\n clientName.indexOf('link') > -1 ||\n (clientName === 'custom.adapter' && exitType === 'custom')\n ) {\n settings.body = adapterSettings;\n settings.body.confirmationFallback = confirmationText;\n }\n\n if (clientName.indexOf('ace') > -1) {\n settings.body = adapterSettings;\n }\n\n if (form && form.hasValueComponents) {\n if (validation) {\n settings.body.form = FormBuilder.fromLegacyForm(id.toString(), form, validation).get();\n } else {\n settings.body.form = FormBuilder.fromLegacyForm(id.toString(), form).get();\n }\n if (!expandFormAutomatically) {\n settings.expanded = settings.inline = false;\n }\n\n settings.body = updateForm(settings, { submit: 'Submit' });\n }\n\n if (options.guideId) {\n settings.body.guideId = options.guideId;\n }\n\n return settings;\n};\n\nexport const getListType = (entry: ServerEntry) => {\n const { localState: state } = entry;\n\n if (entry.tags.includes('category') && entry.tags.includes('contact')) {\n return ConversationMessageListItemType.ItemList;\n }\n\n if (entry.tags.includes('suggestion')) {\n return ConversationMessageListItemType.LinkList;\n }\n\n if (state?.$type === 'Humany.Matching.Bots.Conversations.GuideListState, Humany.Matching') {\n return ConversationMessageListItemType.LinkList;\n } else if (\n state?.$type ===\n 'Humany.Matching.Bots.Conversations.States.GuideFeedbackState, Humany.Matching'\n ) {\n return CustomMessageTypes.FeedbackList;\n } else if (\n state?.$type === 'Humany.Matching.Bots.Conversations.States.ContactState, Humany.Matching'\n ) {\n return CustomMessageTypes.ContactList;\n } else return ConversationMessageListItemType.ButtonList;\n};\n\nexport const getKnowledgeBotEndpoint = (\n container: Container,\n component: any /*: ComponentNodeController */\n) => {\n const { knowledgeBotEndpoint } = component.properties();\n\n if (knowledgeBotEndpoint) {\n return `${knowledgeBotEndpoint}/conversations`;\n }\n\n const { data } = container.get('$settings');\n\n if (!data || !data.projection) throw new Error('Missing Knowledge Bot endpoint');\n\n return `${data.projection}/conversations`;\n};\n\nexport const updateForm = (\n contactMethod: ContactMethodType,\n {\n submit,\n errors,\n meta,\n }: { submit: string; errors?: { [key: string]: string }; meta?: { [key: string]: string } }\n): any => {\n if (contactMethod?.body?.form) {\n const { body } = contactMethod;\n const builder = new FormBuilder(body.form);\n\n if (!body.form.layout.submit) {\n builder.createComponent(submitButton(submit, 'submit'));\n }\n\n if (errors) {\n builder.setValidationErrors(errors);\n }\n\n if (meta) {\n (builder as any).setMeta(meta);\n }\n\n return {\n ...body,\n form: builder.get(),\n };\n }\n return contactMethod?.body || {};\n};\n\n// since we interacting with knowledge through the /conversations endpoint\n// and not using the service client we sync parameters here\nexport const setServiceClientParameter = async (\n container: Container,\n key: string,\n value: string\n) => {\n const dataClient = await container.getAsync('dataClient');\n const matchingClient = await dataClient.getClient();\n matchingClient.parameters.set(key, value);\n};\n","import { ConversationMessageListItemType } from '@telia-ace/widget-conversation';\nimport { uuid } from '@telia-ace/widget-utilities';\nimport { Container } from '@webprovisions/platform';\nimport {\n ActionItem,\n CustomMessageTypes,\n ListContent,\n MessageGroup,\n MessageGroupItem,\n ServerEntry,\n} from './types';\nimport {\n contactMethodFromLegacy,\n createGroup,\n getListType,\n setServiceClientParameter,\n} from './utils';\n\nconst createGroupItem = ({\n messageId,\n message,\n group,\n}: {\n messageId: string;\n message: MessageGroupItem['message'];\n group: MessageGroup;\n}) => {\n return {\n id: messageId,\n message,\n groupId: group.id,\n isUser: group.isUser,\n };\n};\n\nexport const processEntries = async (\n container: Container,\n entries: ServerEntry[],\n prevGroup?: MessageGroup\n) => {\n const createListContent = (\n listType: string,\n entry: ServerEntry,\n groupId: string,\n listContent: ListContent = {\n actions: [],\n entryId: entry.id,\n groupId,\n }\n ) => {\n const contactMethodIds: string[] = [];\n\n listContent.actions = entry.content.items.map((i: any) => {\n const action = {\n label: i.title,\n actionKey: i.actionKey,\n symbol: !!i.symbol ? i.symbol : undefined,\n description: i.description || undefined,\n } as ActionItem;\n\n if (i.data) {\n const entryAction = entry.actions[i.actionKey];\n if (listType === CustomMessageTypes.ContactList) {\n contactMethodIds.push(i.data.id);\n action.data = contactMethodFromLegacy(i.data, {\n guideId: entryAction?.guideId?.toString(),\n });\n } else {\n action.data = i.data;\n }\n }\n return action;\n });\n\n if (listType === CustomMessageTypes.ContactList) {\n listContent.contactMethodIds = contactMethodIds;\n }\n\n return listContent;\n };\n\n const transform = async (\n entry: ServerEntry,\n group: MessageGroup,\n related: ServerEntry[] = [],\n prevGroup?: MessageGroup\n ) => {\n const messageId = uuid();\n\n if (entry.type !== 'List' && entry.tags.includes('guide') && entry.content.hints?.[0]?.id) {\n await setServiceClientParameter(container, 'LastGuideId', entry.content.hints[0].id);\n }\n\n switch (entry.type) {\n case 'List':\n {\n const { header, items, html } = entry.content;\n\n const result = [];\n\n let listContent = {\n actions: [],\n entryId: entry.id,\n groupId: group.id,\n } as ListContent;\n\n if (header) {\n listContent.header = header;\n }\n\n if (items?.length > 0) {\n const listType = getListType(entry);\n listContent = createListContent(listType, entry, group.id, listContent);\n\n // entry has related entries\n if (!!related.length) {\n const pagingEntry = related.find((e) => e.tags.includes('paging'));\n const fallbackEntry = related.find((e) => e.tags.includes('fallback'));\n\n if (pagingEntry?.content) {\n group.meta.paging = {\n actions: pagingEntry.actions,\n items: pagingEntry.content.items,\n localState: pagingEntry.localState,\n };\n pagingEntry.content.items.forEach((i: any) => {\n listContent.actions.push({\n label: i.title,\n actionKey: i.actionKey,\n data: {\n groupId: !!prevGroup ? prevGroup.id : group.id,\n },\n });\n });\n }\n\n if (fallbackEntry) {\n const fallbackAction = fallbackEntry.content.items.find(\n (i: any) => i.actionKey === 'help'\n );\n if (fallbackAction) {\n result.push(\n createGroupItem({\n messageId,\n message: [\n ConversationMessageListItemType.Separator,\n undefined,\n ],\n group,\n })\n );\n result.push(\n createGroupItem({\n messageId,\n message: [\n CustomMessageTypes.NoGoodAlternative,\n { body: fallbackAction.title },\n ],\n group,\n })\n );\n }\n }\n }\n\n result.unshift(\n createGroupItem({\n messageId,\n message: [listType, listContent],\n group,\n })\n );\n }\n\n if (html) {\n result.unshift(\n createGroupItem({\n messageId,\n message: [ConversationMessageListItemType.HTML, { body: html }],\n group,\n })\n );\n }\n\n return result;\n }\n break;\n case 'Text':\n {\n const result = [];\n result.push(\n createGroupItem({\n messageId,\n message: [\n ConversationMessageListItemType.HTML,\n { body: entry.content.html },\n ],\n group,\n })\n );\n\n // embedded contact methods\n if (!!related.length) {\n const contactMethodListEntry = related.find(\n (e) =>\n e.type === 'List' &&\n e.localState?.$type ===\n 'Humany.Matching.Bots.Conversations.States.ContactState, Humany.Matching'\n );\n\n const dialogListEntry = related.find((e) => e.tags.includes('dialog'));\n const feedbackEntry = related.find((e) => e.tags.includes('feedback'));\n const contactMethodEntry = related.find(\n (e) => e.tags.includes('contact') && e.type === 'Contact'\n );\n\n if (contactMethodEntry) {\n result.push(\n createGroupItem({\n messageId,\n message: [\n CustomMessageTypes.ContactMethod,\n {\n contactMethodId: contactMethodEntry.content.id,\n groupId: group.id,\n guideId: contactMethodEntry.content.guideId,\n },\n ],\n group,\n })\n );\n }\n\n if (dialogListEntry) {\n result.push(\n createGroupItem({\n messageId,\n message: [\n ConversationMessageListItemType.ButtonList,\n {\n actions: dialogListEntry.content.items.map((i: any) => {\n return {\n label: i.title,\n actionKey: i.actionKey,\n };\n }),\n },\n ],\n group,\n })\n );\n }\n\n if (contactMethodListEntry) {\n const listContent = createListContent(\n CustomMessageTypes.ContactList,\n contactMethodListEntry,\n group.id\n );\n\n result.push(\n createGroupItem({\n messageId,\n message: [ConversationMessageListItemType.Separator, undefined],\n group,\n })\n );\n\n result.push(\n createGroupItem({\n messageId,\n message: [CustomMessageTypes.ContactList, listContent],\n group,\n })\n );\n }\n\n if (feedbackEntry) {\n if (feedbackEntry.content.html) {\n result.push(\n createGroupItem({\n messageId,\n group,\n message: [\n ConversationMessageListItemType.HTML,\n {\n body: feedbackEntry.content.html,\n },\n ],\n })\n );\n }\n result.push(\n createGroupItem({\n messageId,\n group,\n message: [\n CustomMessageTypes.FeedbackList,\n {\n actions: feedbackEntry.content.items.map((i: any) => {\n return {\n actionKey: i.actionKey,\n label: i.title,\n };\n }),\n },\n ],\n })\n );\n }\n }\n return result;\n }\n break;\n case 'Contact': {\n return [\n createGroupItem({\n messageId,\n message: [\n CustomMessageTypes.ContactMethod,\n {\n contactMethodId: entry.content.id,\n groupId: group.id,\n guideId: entry.content.guideId,\n },\n ],\n group,\n }),\n ];\n }\n case 'CategorizedNoticeList': {\n const result = [\n createGroupItem({\n messageId,\n message: [\n CustomMessageTypes.NotificationList,\n {\n id: entry.content.item.id.toString(),\n header: entry.content.item.title,\n items: entry.content.item.listNotices,\n symbol: entry.content.item.defaultIcon,\n },\n ],\n group,\n }),\n ];\n\n (entry.content.notices || []).forEach((notice: any) => {\n result.push(\n createGroupItem({\n messageId,\n message: [\n ConversationMessageListItemType.HTML,\n {\n body: notice.body,\n },\n ],\n group,\n })\n );\n });\n\n return result;\n }\n case 'footerNotice': {\n return [\n createGroupItem({\n messageId,\n message: [\n ConversationMessageListItemType.HTML,\n {\n body: entry.content.item.body,\n },\n ],\n group,\n }),\n ];\n }\n case 'Error': {\n return [\n createGroupItem({\n messageId,\n message: [\n ConversationMessageListItemType.HTML,\n {\n body: entry.content.message || 'Something went wrong.',\n },\n ],\n group,\n }),\n ];\n }\n\n default:\n return [];\n }\n };\n\n const splitEntry = (entry: ServerEntry): ServerEntry | ServerEntry[] => {\n if (['CategorizedNoticeList', 'NoticeList'].includes(entry.type)) {\n return (entry.content.items || []).reduce((acc: any, item: any) => {\n if (!entry.content.isInitialNotices) {\n return acc;\n }\n acc.push({\n ...entry,\n id: uuid(),\n type: item.type || entry.type,\n content: {\n $type: entry.content.$type,\n isInitialNotices: entry.content.isInitialNotices,\n notices: item.notices,\n item,\n },\n });\n return acc;\n }, []);\n }\n return entry;\n };\n\n // map of in which order the messages should be displayed\n // lower numbers will be displayed above higher\n const sortMap = new Map<string, number>([\n ['Text', 1],\n ['List', 2],\n ['Contact', 3],\n ['CategorizedNoticeList', 10],\n ]);\n\n const result: MessageGroup[] = [];\n const filteredEntries = entries\n .sort((item, other) => {\n // sort the entries based on it's types sort value\n const defaultSortValue = 20;\n\n var sortValue = sortMap.get(item.type) || defaultSortValue;\n var sortValueOther = sortMap.get(other.type) || defaultSortValue;\n return sortValue - sortValueOther;\n })\n .filter((entry) => !entry.relation) // remove any \"relation entries\"\n .reduce<ServerEntry[]>((acc, entry) => {\n // some entries needs to be splitted into seperate groups\n return acc.concat(splitEntry(entry));\n }, []);\n\n // we dont want to display this type of entry\n // as we dont support it, and it was not supported in v4 either\n const isNonVisibleRelatedEntry = (e: ServerEntry) => {\n return typeof e.actions['selector'] !== 'undefined';\n };\n\n for (const entry of filteredEntries) {\n const relatedEntries = entries.filter(\n (other) => other.relation === entry.id && !isNonVisibleRelatedEntry(other)\n );\n const group = createGroup({ isUser: false });\n\n const items = await transform(entry, group, relatedEntries, prevGroup);\n items.forEach((item) => {\n group.items.push(item);\n });\n\n if (group.items.length) {\n result.push(group);\n }\n }\n return result;\n};\n","import { uuid } from '@telia-ace/widget-utilities';\nimport { Container, EventManager } from '@webprovisions/platform';\nimport { processEntries } from './entry-handler';\nimport Store from './store';\nimport { ClientEnvelope, MessageGroup, ServerEntry, ServerEnvelope } from './types';\n\nclass HttpClient {\n private globalState: any;\n private localState: ServerEntry['localState'];\n private clientId: string;\n private entries: ServerEntry[];\n\n constructor(\n private endpoint: string,\n private events: EventManager,\n private store: Store,\n private container: Container\n ) {\n this.clientId = uuid();\n this.entries = [];\n }\n\n async start({ silent }: { silent: boolean }) {\n const storedGlobalState = await this.store.read('globalState');\n const storedLocalState = await this.store.read('localState');\n const storedEntries = await this.store.read('entries');\n\n // if there is state stored we need to set it\n this.globalState = storedGlobalState || this.globalState;\n this.localState = storedLocalState || this.localState;\n this.entries = storedEntries || this.entries;\n\n // dont create initial envelope if the client should just\n // set local and global state and then start silently\n if (silent) {\n return;\n }\n\n const envelope = this.createInitialEnvelope();\n const initialResponse = await this.postEnvelope(envelope);\n return initialResponse;\n }\n\n async sendMessage(message: string) {\n const envelope = {\n command: { phrase: message },\n globalState: this.globalState,\n clientId: this.clientId,\n };\n\n const result = await this.postEnvelope(envelope);\n return result;\n }\n\n async helpAction() {\n return this.postEnvelope({\n action: {\n key: 'help',\n content: {\n $type: 'Humany.Matching.Bots.Conversations.Actions.Help, Humany.Matching',\n },\n },\n globalState: this.globalState,\n clientId: this.clientId,\n });\n }\n\n async nextAction(group: MessageGroup) {\n const { paging } = group.meta;\n if (!paging.actions?.next) {\n return;\n }\n return this.postEnvelope(\n {\n action: {\n key: 'next',\n content: paging.actions.next,\n },\n localState: paging.localState,\n globalState: this.globalState,\n clientId: this.clientId,\n },\n group\n ).then((response) => {\n const listItemIndex = group.items.findIndex((item) => item.message[0] === 'link-list');\n if (listItemIndex === -1 || !response) {\n return group;\n }\n\n return {\n ...group,\n meta: {\n ...group.meta,\n ...response[0].meta,\n },\n items: [\n ...group.items.slice(0, listItemIndex),\n {\n ...group.items[listItemIndex],\n message: [\n response[0].items[0].message[0],\n {\n ...group.items[listItemIndex].message[1],\n ...response[0].items[0].message[1],\n },\n ],\n },\n ...group.items.slice(listItemIndex + 1),\n ],\n };\n });\n }\n\n async showContactMethodAction(data: {\n contactMethod: any;\n actionKey: string;\n entryId: string;\n }) {\n const entry = this.entries.find((e) => e.id === data.entryId);\n const actionItem = entry?.actions[data.actionKey];\n\n if (!actionItem) {\n return;\n }\n\n return this.postEnvelope({\n action: {\n key: data.actionKey,\n content: actionItem,\n },\n localState: entry.localState,\n globalState: this.globalState,\n clientId: this.clientId,\n });\n }\n\n async defaultAction(action: string) {\n const entry = this.getEntryOfAction(action);\n\n if (!entry) {\n return;\n }\n\n return this.postEnvelope({\n action: {\n key: action,\n content: entry.actions[action],\n },\n localState: entry.localState,\n globalState: this.globalState,\n clientId: this.clientId,\n });\n }\n\n private createInitialEnvelope(): ClientEnvelope {\n return {\n command: { site: this.endpoint },\n clientId: this.clientId,\n globalState: {},\n funnel: this.container.get('$widget').name,\n };\n }\n\n private async postEnvelope(envelope: ClientEnvelope, prevGroup?: MessageGroup) {\n try {\n const response = await fetch(this.endpoint, this.getHttpOptions(envelope));\n\n if (!response.ok) {\n throw response;\n }\n\n const data = await response.json();\n\n return this.handleResponse(data, prevGroup);\n } catch (error: any) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Something went wrong when posting the envelope.');\n }\n let message = 'Something went wrong';\n if (\n error.message === 'Failed to fetch' ||\n error.message === 'NetworkError when attempting to fetch resource.'\n ) {\n message = 'Lost connection... Please try again.';\n }\n return this.handleResponse({\n entries: [\n {\n id: uuid(),\n type: 'Error',\n timestamp: new Date().toISOString(),\n content: {\n message,\n },\n actions: {},\n tags: [],\n },\n ],\n });\n }\n }\n\n private async handleResponse(data: ServerEnvelope, prevGroup?: MessageGroup) {\n this.entries = this.entries.concat(data.entries);\n this.store.write(this.entries, 'entries');\n\n const widgetEntry = data.entries.find((e) => e.type === 'Widget');\n\n if (widgetEntry) {\n this.events.dispatch('provider:widget-entry', widgetEntry.content);\n }\n\n if (data.globalState) {\n this.globalState = data.globalState;\n this.store.write(data.globalState, 'globalState');\n }\n\n this.localState = data.entries.reduce<ServerEntry['localState']>((acc, entry) => {\n if (entry.localState) {\n return entry.localState;\n }\n return acc;\n }, undefined);\n this.store.write(this.localState, 'localState');\n\n const groups = await processEntries(this.container, data.entries, prevGroup);\n return groups;\n }\n\n private getHttpOptions(envelope: ClientEnvelope) {\n const fetchOptions = {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n };\n envelope.funnel = this.container.get('$widget').name;\n envelope.localState = envelope.localState || this.localState;\n return Object.assign({}, fetchOptions, {\n body: JSON.stringify(envelope),\n credentials: 'same-origin' as RequestCredentials,\n });\n }\n\n private getEntryOfAction(action: string) {\n return this.entries.find((entry) => !!entry.actions[action]);\n }\n}\n\nexport default HttpClient;\n","import { createStorageWriter, readStorage, StorageCategory } from '@telia-ace/widget-services';\nimport { Container } from '@webprovisions/platform';\nimport { GlobalState, LooseObject, ServerEntry } from './types';\n\ntype MetaData = {\n agent: {\n name: string;\n avatar?: string;\n };\n};\n\ntype StorageTypes = 'localState' | 'globalState' | 'entries' | 'meta';\n\nclass Store {\n private enabled = true; // set whether or not to store data\n private botProviderGlobalStateKey = 'bot-provider-global-state';\n private botProviderLocalStateKey = 'bot-provider-local-state';\n private botProviderEntriesKey = 'bot-provider-entries';\n private botProviderMetaStateKey = 'bot-provider-conversation-meta';\n\n constructor(private container: Container) {}\n\n private getKey(type: StorageTypes) {\n let key;\n switch (type) {\n case 'localState':\n key = this.botProviderLocalStateKey;\n break;\n case 'globalState':\n key = this.botProviderGlobalStateKey;\n break;\n case 'entries':\n key = this.botProviderEntriesKey;\n break;\n case 'meta':\n key = this.botProviderMetaStateKey;\n break;\n\n default:\n break;\n }\n return key;\n }\n\n async read(type: 'localState'): Promise<LooseObject | undefined>;\n async read(type: 'meta'): Promise<MetaData | undefined>;\n async read(type: 'entries'): Promise<ServerEntry[] | undefined>;\n async read(type: 'globalState'): Promise<GlobalState | undefined>;\n async read(type: StorageTypes): Promise<any | undefined> {\n const key = this.getKey(type);\n if (!this.enabled || !key) {\n return;\n }\n\n return readStorage(this.container, key);\n }\n\n async write(data: any, type: StorageTypes) {\n const key = this.getKey(type);\n if (!this.enabled || !key) {\n return;\n }\n\n const write = await createStorageWriter(this.container, key, StorageCategory.Necessary);\n write(data);\n }\n}\n\nexport default Store;\n","import { ComponentNodeController } from '@telia-ace/knowledge-widget-core';\nimport { ConversationMessageListItemType } from '@telia-ace/widget-conversation';\nimport { createStorageWriter, StorageCategory } from '@telia-ace/widget-services';\nimport { uuid } from '@telia-ace/widget-utilities';\nimport { Container, EventManager, Widget } from '@webprovisions/platform';\nimport HttpClient from './http-client';\nimport Store from './store';\nimport { MessageGroup, ServerEntry } from './types';\nimport { createGroup, getKnowledgeBotEndpoint, setServiceClientParameter } from './utils';\n\nclass KnowledgeBotProvider {\n private agent: any;\n private user: any;\n private httpClient: HttpClient;\n private events: EventManager;\n private groups: MessageGroup[] = [];\n private store: Store;\n\n constructor(\n private container: Container,\n private conversation: any,\n component: ComponentNodeController\n ) {\n const { events } = this.container.get('$widget') as Widget;\n this.events = events;\n this.store = new Store(container);\n this.agent = conversation.createAgent({\n id: 'knowledge-bot-agent', // we need to specify an ID here to allow rehydration to work\n name: '',\n avatar: undefined,\n });\n this.user = conversation.user;\n const endpoint = getKnowledgeBotEndpoint(container, component);\n this.httpClient = new HttpClient(endpoint, events, this.store, this.container);\n\n this.events.subscribe('provider:widget-entry', (_event, data: ServerEntry['content']) => {\n this.onWidgetEntryReceived(data);\n });\n\n this.events.subscribe(\n 'provider:open-contact-method',\n async (_event, data: { contactMethod: any; entryId: string; actionKey: string }) => {\n const response = await this.httpClient.showContactMethodAction(data);\n\n if (response) {\n if (!!data.contactMethod.title) this.printUserMessage(data.contactMethod.title);\n this.onMessagesReceived(response);\n }\n }\n );\n }\n\n async initialize() {\n const loader = this.conversation.loading();\n\n const storedMeta = await this.store.read('meta');\n if (storedMeta?.agent) {\n this.agent.update({\n name: storedMeta.agent.name,\n avatar: storedMeta.agent.avatar,\n });\n }\n\n const rehydrated = await this.conversation.isRehydrated();\n\n const response = await this.httpClient.start({\n silent: this.conversation.options?.silent || rehydrated,\n });\n if (response) {\n this.onMessagesReceived(response);\n }\n\n loader();\n }\n\n async onMessagesReceived(groups: MessageGroup[]) {\n this.groups = this.groups.concat(groups);\n groups.forEach((group) => {\n const items = group.items.map((item) => item.message);\n if (group.isUser) {\n group.writer = this.user.print(items);\n } else {\n group.writer = this.agent.print(items);\n }\n });\n }\n\n async onInput(action: string | { [key: string]: any; actionKey: string; label?: string }) {\n const actionKey = typeof action === 'string' ? action : action.actionKey;\n\n switch (actionKey) {\n case 'next':\n {\n if (typeof action === 'string') {\n return;\n }\n const group = this.groups.find((other) => other.id === action.data?.groupId);\n\n if (group) {\n const response = await this.httpClient.nextAction(group);\n if (response) {\n const combined = response.items.map((item) => item.message);\n group.meta.paging = response?.meta.paging;\n group.writer.update(combined);\n }\n }\n }\n break;\n case 'help':\n {\n const loader = this.conversation.loading();\n\n const response = await this.httpClient.helpAction();\n loader();\n if (response) {\n this.onMessagesReceived(response);\n }\n }\n break;\n default:\n {\n if (typeof action !== 'string' && action.label) {\n this.printUserMessage(action.label);\n }\n const loader = this.conversation.loading();\n const response = await this.httpClient.defaultAction(actionKey);\n if (response) {\n this.onMessagesReceived(response);\n }\n loader();\n }\n break;\n }\n }\n\n private printUserMessage(message: string) {\n const group = createGroup({\n isUser: true,\n items: [\n {\n id: uuid(),\n isUser: true,\n message: [ConversationMessageListItemType.HTML, { body: message }],\n },\n ],\n });\n this.onMessagesReceived([group]);\n return group;\n }\n\n async onMessageSend(message: string) {\n const loader = this.conversation.loading();\n const response = await this.httpClient.sendMessage(message);\n\n await setServiceClientParameter(this.container, 'phrase', message);\n\n this.printUserMessage(message);\n\n if (response) {\n this.onMessagesReceived(response);\n }\n loader();\n }\n\n private async onWidgetEntryReceived(data: ServerEntry['content']) {\n if (data.agent) {\n const agentSettings = {\n name: data.agent.name,\n avatar: data.agent.avatar,\n };\n this.agent.update(agentSettings);\n const write = await createStorageWriter(\n this.container,\n 'bot-provider-conversation-meta',\n StorageCategory.Necessary\n );\n write({\n agent: agentSettings,\n });\n }\n }\n}\n\nexport default KnowledgeBotProvider;\n","import {\n ConversationPlatform,\n registerCustomMessageComponent,\n} from '@telia-ace/widget-conversation';\nimport { Container, Widget } from '@webprovisions/platform';\nimport KnowledgeBotProvider from './provider';\nimport { CustomMessageTypes } from './types';\n\nconst KnowledgeBotProviderPlugin = async (container: Container) => {\n const platform = await ConversationPlatform.getInstance(container);\n\n registerCustomMessageComponent(\n container,\n CustomMessageTypes.ContactList,\n import('./ui/contact-method-list')\n );\n registerCustomMessageComponent(\n container,\n CustomMessageTypes.ContactMethod,\n import('./ui/contact-method')\n );\n\n registerCustomMessageComponent(\n container,\n CustomMessageTypes.NotificationList,\n import('./ui/notification-list')\n );\n registerCustomMessageComponent(\n container,\n CustomMessageTypes.NoGoodAlternative,\n import('./ui/no-good-alternative')\n );\n registerCustomMessageComponent(\n container,\n CustomMessageTypes.FeedbackList,\n import('./ui/feedback-list')\n );\n\n platform.registerProvider('ace-knowledge-bot', (conversation, component) => {\n const provider = new KnowledgeBotProvider(container, conversation, component);\n provider.initialize();\n\n const subscriptions: any[] = [];\n subscriptions.push(\n component.actions.watch('conversation.user-submit', (input, next) => {\n provider.onMessageSend(input.text);\n })\n );\n\n subscriptions.push(\n component.actions.watch('conversation.action', (input, next) => {\n provider.onInput(input);\n\n return next(input);\n })\n );\n\n subscriptions.push(\n component.actions.create('evaluate', (input) => {\n const { events } = container.get('$widget') as Widget;\n events.dispatch('bot-provider:evaluate', input);\n })\n );\n\n subscriptions.push(\n component.actions.create('submit', (input) => {\n const { events } = container.get('$widget') as Widget;\n events.dispatch('bot-provider:form-submitted', input);\n })\n );\n\n return () => {\n // cleaning up when provider is disposed\n subscriptions.forEach((unsubscribe) => {\n unsubscribe();\n });\n };\n });\n};\n\nexport default KnowledgeBotProviderPlugin;\n"],"names":["CustomMessageTypes","convertLegacySymbol","symbol","type","content","createGroup","isUser","items","meta","groupId","uuid","i","contactMethodFromLegacy","id","title","defaultIcon","exit","exitType","confirmationText","expandFormAutomatically","form","description","options","adapter","clientName","adapterSettings","customClientName","validation","settings","displayTextBeforeClick","textBeforeClick","FormBuilder","updateForm","getListType","entry","state","ConversationMessageListItemType","getKnowledgeBotEndpoint","container","component","knowledgeBotEndpoint","data","contactMethod","submit","errors","_a","body","builder","submitButton","__spreadProps","__spreadValues","setServiceClientParameter","key","value","__async","createGroupItem","messageId","message","group","processEntries","entries","prevGroup","createListContent","listType","listContent","contactMethodIds","action","entryAction","transform","_0","_1","_2","related","_b","header","html","result","pagingEntry","e","fallbackEntry","fallbackAction","contactMethodListEntry","dialogListEntry","feedbackEntry","contactMethodEntry","notice","splitEntry","acc","item","sortMap","filteredEntries","other","sortValue","sortValueOther","isNonVisibleRelatedEntry","relatedEntries","HttpClient","endpoint","events","store","__publicField","silent","storedGlobalState","storedLocalState","storedEntries","envelope","paging","response","listItemIndex","actionItem","error","widgetEntry","fetchOptions","HttpClient$1","Store","readStorage","createStorageWriter","StorageCategory","Store$1","KnowledgeBotProvider","conversation","_event","loader","storedMeta","rehydrated","groups","actionKey","combined","agentSettings","KnowledgeBotProvider$1","KnowledgeBotProviderPlugin","platform","ConversationPlatform","registerCustomMessageComponent","provider","subscriptions","input","next","unsubscribe","KnowledgeBotProviderPlugin$1"],"mappings":"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"}
1
+ {"version":3,"file":"index.a97894e5.js","sources":["../src/types.ts","../src/utils.ts","../src/entry-handler.ts","../src/http-client.ts","../src/store.ts","../src/provider.ts","../src/plugin.ts"],"sourcesContent":["import { ConversationMessageListItemType } from '@telia-ace/widget-conversation';\n\nexport enum CustomMessageTypes {\n ContactMethod = 'ace-knowledge-bot-contact-method',\n ContactList = 'ace-knowledge-bot-contact-list',\n FeedbackList = 'ace-knowledge-bot-feedback-list',\n NotificationList = 'ace-knowledge-bot-notification-list',\n NoGoodAlternative = 'ace-knowledge-bot-no-good-alternative',\n}\n\nexport type LooseObject = { [key: string]: any };\n\nexport interface ActionItem {\n label: string;\n actionKey: string;\n data?: any;\n description?: string;\n}\n\nexport interface MessageGroup {\n id: string;\n isUser: boolean;\n items: MessageGroupItem[];\n writer?: any;\n meta: { [key: string]: any };\n}\n\nexport interface MessageGroupItem {\n id: string;\n groupId: string;\n isUser: boolean;\n message: [ConversationMessageListItemType | CustomMessageTypes, any];\n}\n\nexport interface ClientEnvelope {\n command?: LooseObject;\n action?: {\n key: string;\n content: any;\n };\n globalState?: LooseObject;\n localState?: LooseObject;\n clientId?: string;\n funnel?: string;\n}\n\nexport interface ServerEnvelope {\n clientId?: string | undefined;\n entries: ServerEntry[];\n globalState?: GlobalState;\n resolveCommand?: string;\n clientEnvelope?: ClientEnvelope;\n}\n\nexport interface GlobalState {\n completedInteractionsCount: number;\n lastQuestion?: string;\n lastBotGuide: number;\n lastGuideTitle?: string;\n site: string;\n invincibleParameters: object;\n}\n\nexport interface ServerEntry {\n id: string;\n type: string;\n content: any;\n actions: { [key: string]: any };\n tags: string[];\n relation?: string;\n timestamp: string;\n localState?: { [key: string]: any };\n}\n\nexport interface ListContent {\n header?: string;\n actions: ActionItem[];\n contactMethodIds?: string[];\n entryId: string;\n groupId: string;\n}\n","import { ContactMethodType } from '@telia-ace/knowledge-widget-adapters';\nimport { Symbol } from '@telia-ace/knowledge-widget-ui';\nimport { ConversationMessageListItemType } from '@telia-ace/widget-conversation';\nimport { FormBuilder, submitButton } from '@telia-ace/widget-forms';\nimport { uuid } from '@telia-ace/widget-utilities';\nimport { Container } from '@webprovisions/platform';\nimport { CustomMessageTypes, MessageGroup, MessageGroupItem, ServerEntry } from './types';\n\nconst convertLegacySymbol = (symbol?: { type: string; content: string }): Symbol | undefined => {\n if (symbol) {\n const { type, content } = symbol;\n if (type && content) {\n return { type, content };\n }\n }\n};\n\nexport const createGroup = ({\n isUser,\n items = [],\n meta = {},\n}: {\n isUser: boolean;\n items?: Partial<MessageGroupItem>[];\n meta?: MessageGroup['meta'];\n}) => {\n const groupId = uuid();\n\n const group = {\n id: groupId,\n isUser,\n items: items.map((i) => {\n return {\n id: i.id || uuid(),\n isUser: isUser,\n groupId: groupId,\n message: i.message || [],\n };\n }),\n meta,\n } as MessageGroup;\n\n return group;\n};\n\nexport const contactMethodFromLegacy = (\n {\n id,\n title,\n defaultIcon,\n exits: [exit],\n exitType,\n confirmationText,\n expandFormAutomatically,\n form,\n description,\n }: any,\n options: {\n validation?: any;\n guideId?: string;\n } = {}\n): any => {\n const { adapter } = exit || { Adapter: {} };\n const { clientName = '', settings: adapterSettings = {}, customClientName = '' } = adapter;\n const { validation } = options;\n\n const settings: any = {\n id: id.toString(),\n title: title,\n description: description,\n symbol: convertLegacySymbol(defaultIcon),\n clientName: clientName === 'custom.adapter' ? customClientName : clientName,\n expanded: true,\n inline: true,\n body: {},\n };\n\n if (clientName.indexOf('phone') > -1 || clientName.indexOf('freetext') > -1) {\n const { displayTextBeforeClick, textBeforeClick } = adapterSettings;\n if (displayTextBeforeClick === 'true') {\n settings.expanded = false;\n settings.title = textBeforeClick;\n }\n\n if (clientName.indexOf('phone.text') > -1) {\n settings.body.phoneNumber = adapterSettings.phoneNumber;\n } else {\n settings.body.freetext = adapterSettings.freetext;\n }\n }\n\n if (\n clientName.indexOf('chat.popup') > -1 ||\n clientName.indexOf('link') > -1 ||\n (clientName === 'custom.adapter' && exitType === 'custom')\n ) {\n settings.body = adapterSettings;\n settings.body.confirmationFallback = confirmationText;\n }\n\n if (clientName.indexOf('ace') > -1) {\n settings.body = adapterSettings;\n }\n\n if (form && form.hasValueComponents) {\n if (validation) {\n settings.body.form = FormBuilder.fromLegacyForm(id.toString(), form, validation).get();\n } else {\n settings.body.form = FormBuilder.fromLegacyForm(id.toString(), form).get();\n }\n if (!expandFormAutomatically) {\n settings.expanded = settings.inline = false;\n }\n\n settings.body = updateForm(settings, { submit: 'Submit' });\n }\n\n if (options.guideId) {\n settings.body.guideId = options.guideId;\n }\n\n return settings;\n};\n\nexport const getListType = (entry: ServerEntry) => {\n const { localState: state } = entry;\n\n if (entry.tags.includes('category') && entry.tags.includes('contact')) {\n return ConversationMessageListItemType.ItemList;\n }\n\n if (entry.tags.includes('suggestion')) {\n return ConversationMessageListItemType.LinkList;\n }\n\n if (state?.$type === 'Humany.Matching.Bots.Conversations.GuideListState, Humany.Matching') {\n return ConversationMessageListItemType.LinkList;\n } else if (\n state?.$type ===\n 'Humany.Matching.Bots.Conversations.States.GuideFeedbackState, Humany.Matching'\n ) {\n return CustomMessageTypes.FeedbackList;\n } else if (\n state?.$type === 'Humany.Matching.Bots.Conversations.States.ContactState, Humany.Matching'\n ) {\n return CustomMessageTypes.ContactList;\n } else return ConversationMessageListItemType.ButtonList;\n};\n\nexport const getKnowledgeBotEndpoint = (\n container: Container,\n component: any /*: ComponentNodeController */\n) => {\n const { knowledgeBotEndpoint } = component.properties();\n\n if (knowledgeBotEndpoint) {\n return `${knowledgeBotEndpoint}/conversations`;\n }\n\n const { data } = container.get('$settings');\n\n if (!data || !data.projection) throw new Error('Missing Knowledge Bot endpoint');\n\n return `${data.projection}/conversations`;\n};\n\nexport const updateForm = (\n contactMethod: ContactMethodType,\n {\n submit,\n errors,\n meta,\n }: { submit: string; errors?: { [key: string]: string }; meta?: { [key: string]: string } }\n): any => {\n if (contactMethod?.body?.form) {\n const { body } = contactMethod;\n const builder = new FormBuilder(body.form);\n\n if (!body.form.layout.submit) {\n builder.createComponent(submitButton(submit, 'submit'));\n }\n\n if (errors) {\n builder.setValidationErrors(errors);\n }\n\n if (meta) {\n (builder as any).setMeta(meta);\n }\n\n return {\n ...body,\n form: builder.get(),\n };\n }\n return contactMethod?.body || {};\n};\n\n// since we interacting with knowledge through the /conversations endpoint\n// and not using the service client we sync parameters here\nexport const setServiceClientParameter = async (\n container: Container,\n key: string,\n value: string\n) => {\n const dataClient = await container.getAsync('dataClient');\n const matchingClient = await dataClient.getClient();\n matchingClient.parameters.set(key, value);\n};\n","import { ConversationMessageListItemType } from '@telia-ace/widget-conversation';\nimport { uuid } from '@telia-ace/widget-utilities';\nimport { Container } from '@webprovisions/platform';\nimport {\n ActionItem,\n CustomMessageTypes,\n ListContent,\n MessageGroup,\n MessageGroupItem,\n ServerEntry,\n} from './types';\nimport {\n contactMethodFromLegacy,\n createGroup,\n getListType,\n setServiceClientParameter,\n} from './utils';\n\nconst createGroupItem = ({\n messageId,\n message,\n group,\n}: {\n messageId: string;\n message: MessageGroupItem['message'];\n group: MessageGroup;\n}) => {\n return {\n id: messageId,\n message,\n groupId: group.id,\n isUser: group.isUser,\n };\n};\n\nexport const processEntries = async (\n container: Container,\n entries: ServerEntry[],\n prevGroup?: MessageGroup\n) => {\n const createListContent = (\n listType: string,\n entry: ServerEntry,\n groupId: string,\n listContent: ListContent = {\n actions: [],\n entryId: entry.id,\n groupId,\n }\n ) => {\n const contactMethodIds: string[] = [];\n\n listContent.actions = entry.content.items.map((i: any) => {\n const action = {\n label: i.title,\n actionKey: i.actionKey,\n symbol: !!i.symbol ? i.symbol : undefined,\n description: i.description || undefined,\n } as ActionItem;\n\n if (i.data) {\n const entryAction = entry.actions[i.actionKey];\n if (listType === CustomMessageTypes.ContactList) {\n contactMethodIds.push(i.data.id);\n action.data = contactMethodFromLegacy(i.data, {\n guideId: entryAction?.guideId?.toString(),\n });\n } else {\n action.data = i.data;\n }\n }\n return action;\n });\n\n if (listType === CustomMessageTypes.ContactList) {\n listContent.contactMethodIds = contactMethodIds;\n }\n\n return listContent;\n };\n\n const transform = async (\n entry: ServerEntry,\n group: MessageGroup,\n related: ServerEntry[] = [],\n prevGroup?: MessageGroup\n ) => {\n const messageId = uuid();\n\n if (entry.type !== 'List' && entry.tags.includes('guide') && entry.content.hints?.[0]?.id) {\n await setServiceClientParameter(container, 'LastGuideId', entry.content.hints[0].id);\n }\n\n switch (entry.type) {\n case 'List':\n {\n const { header, items, html } = entry.content;\n\n const result = [];\n\n let listContent = {\n actions: [],\n entryId: entry.id,\n groupId: group.id,\n } as ListContent;\n\n if (header) {\n listContent.header = header;\n }\n\n if (items?.length > 0) {\n const listType = getListType(entry);\n listContent = createListContent(listType, entry, group.id, listContent);\n\n // entry has related entries\n if (!!related.length) {\n const pagingEntry = related.find((e) => e.tags.includes('paging'));\n const fallbackEntry = related.find((e) => e.tags.includes('fallback'));\n\n if (pagingEntry?.content) {\n group.meta.paging = {\n actions: pagingEntry.actions,\n items: pagingEntry.content.items,\n localState: pagingEntry.localState,\n };\n pagingEntry.content.items.forEach((i: any) => {\n listContent.actions.push({\n label: i.title,\n actionKey: i.actionKey,\n data: {\n groupId: !!prevGroup ? prevGroup.id : group.id,\n },\n });\n });\n }\n\n if (fallbackEntry) {\n const fallbackAction = fallbackEntry.content.items.find(\n (i: any) => i.actionKey === 'help'\n );\n if (fallbackAction) {\n result.push(\n createGroupItem({\n messageId,\n message: [\n ConversationMessageListItemType.Separator,\n undefined,\n ],\n group,\n })\n );\n result.push(\n createGroupItem({\n messageId,\n message: [\n CustomMessageTypes.NoGoodAlternative,\n { body: fallbackAction.title },\n ],\n group,\n })\n );\n }\n }\n }\n\n result.unshift(\n createGroupItem({\n messageId,\n message: [listType, listContent],\n group,\n })\n );\n }\n\n if (html) {\n result.unshift(\n createGroupItem({\n messageId,\n message: [ConversationMessageListItemType.HTML, { body: html }],\n group,\n })\n );\n }\n\n return result;\n }\n break;\n case 'Text':\n {\n const result = [];\n result.push(\n createGroupItem({\n messageId,\n message: [\n ConversationMessageListItemType.HTML,\n { body: entry.content.html },\n ],\n group,\n })\n );\n\n // embedded contact methods\n if (!!related.length) {\n const contactMethodListEntry = related.find(\n (e) =>\n e.type === 'List' &&\n e.localState?.$type ===\n 'Humany.Matching.Bots.Conversations.States.ContactState, Humany.Matching'\n );\n\n const dialogListEntry = related.find((e) => e.tags.includes('dialog'));\n const feedbackEntry = related.find((e) => e.tags.includes('feedback'));\n const contactMethodEntry = related.find(\n (e) => e.tags.includes('contact') && e.type === 'Contact'\n );\n\n if (contactMethodEntry) {\n result.push(\n createGroupItem({\n messageId,\n message: [\n CustomMessageTypes.ContactMethod,\n {\n contactMethodId: contactMethodEntry.content.id,\n groupId: group.id,\n guideId: contactMethodEntry.content.guideId,\n },\n ],\n group,\n })\n );\n }\n\n if (dialogListEntry) {\n result.push(\n createGroupItem({\n messageId,\n message: [\n ConversationMessageListItemType.ButtonList,\n {\n actions: dialogListEntry.content.items.map((i: any) => {\n return {\n label: i.title,\n actionKey: i.actionKey,\n };\n }),\n },\n ],\n group,\n })\n );\n }\n\n if (contactMethodListEntry) {\n const listContent = createListContent(\n CustomMessageTypes.ContactList,\n contactMethodListEntry,\n group.id\n );\n\n result.push(\n createGroupItem({\n messageId,\n message: [ConversationMessageListItemType.Separator, undefined],\n group,\n })\n );\n\n result.push(\n createGroupItem({\n messageId,\n message: [CustomMessageTypes.ContactList, listContent],\n group,\n })\n );\n }\n\n if (feedbackEntry) {\n if (feedbackEntry.content.html) {\n result.push(\n createGroupItem({\n messageId,\n group,\n message: [\n ConversationMessageListItemType.HTML,\n {\n body: feedbackEntry.content.html,\n },\n ],\n })\n );\n }\n result.push(\n createGroupItem({\n messageId,\n group,\n message: [\n CustomMessageTypes.FeedbackList,\n {\n actions: feedbackEntry.content.items.map((i: any) => {\n return {\n actionKey: i.actionKey,\n label: i.title,\n };\n }),\n },\n ],\n })\n );\n }\n }\n return result;\n }\n break;\n case 'Contact': {\n return [\n createGroupItem({\n messageId,\n message: [\n CustomMessageTypes.ContactMethod,\n {\n contactMethodId: entry.content.id,\n groupId: group.id,\n guideId: entry.content.guideId,\n },\n ],\n group,\n }),\n ];\n }\n case 'CategorizedNoticeList': {\n const result = [\n createGroupItem({\n messageId,\n message: [\n CustomMessageTypes.NotificationList,\n {\n id: entry.content.item.id.toString(),\n header: entry.content.item.title,\n items: entry.content.item.listNotices,\n symbol: entry.content.item.defaultIcon,\n },\n ],\n group,\n }),\n ];\n\n (entry.content.notices || []).forEach((notice: any) => {\n result.push(\n createGroupItem({\n messageId,\n message: [\n ConversationMessageListItemType.HTML,\n {\n body: notice.body,\n },\n ],\n group,\n })\n );\n });\n\n return result;\n }\n case 'footerNotice': {\n return [\n createGroupItem({\n messageId,\n message: [\n ConversationMessageListItemType.HTML,\n {\n body: entry.content.item.body,\n },\n ],\n group,\n }),\n ];\n }\n case 'Error': {\n return [\n createGroupItem({\n messageId,\n message: [\n ConversationMessageListItemType.HTML,\n {\n body: entry.content.message || 'Something went wrong.',\n },\n ],\n group,\n }),\n ];\n }\n\n default:\n return [];\n }\n };\n\n const splitEntry = (entry: ServerEntry): ServerEntry | ServerEntry[] => {\n if (['CategorizedNoticeList', 'NoticeList'].includes(entry.type)) {\n return (entry.content.items || []).reduce((acc: any, item: any) => {\n if (!entry.content.isInitialNotices) {\n return acc;\n }\n acc.push({\n ...entry,\n id: uuid(),\n type: item.type || entry.type,\n content: {\n $type: entry.content.$type,\n isInitialNotices: entry.content.isInitialNotices,\n notices: item.notices,\n item,\n },\n });\n return acc;\n }, []);\n }\n return entry;\n };\n\n // map of in which order the messages should be displayed\n // lower numbers will be displayed above higher\n const sortMap = new Map<string, number>([\n ['Text', 1],\n ['List', 2],\n ['Contact', 3],\n ['CategorizedNoticeList', 10],\n ]);\n\n const result: MessageGroup[] = [];\n const filteredEntries = entries\n .sort((item, other) => {\n // sort the entries based on it's types sort value\n const defaultSortValue = 20;\n\n var sortValue = sortMap.get(item.type) || defaultSortValue;\n var sortValueOther = sortMap.get(other.type) || defaultSortValue;\n return sortValue - sortValueOther;\n })\n .filter((entry) => !entry.relation) // remove any \"relation entries\"\n .reduce<ServerEntry[]>((acc, entry) => {\n // some entries needs to be splitted into seperate groups\n return acc.concat(splitEntry(entry));\n }, []);\n\n // we dont want to display this type of entry\n // as we dont support it, and it was not supported in v4 either\n const isNonVisibleRelatedEntry = (e: ServerEntry) => {\n return typeof e.actions['selector'] !== 'undefined';\n };\n\n for (const entry of filteredEntries) {\n const relatedEntries = entries.filter(\n (other) => other.relation === entry.id && !isNonVisibleRelatedEntry(other)\n );\n const group = createGroup({ isUser: false });\n\n const items = await transform(entry, group, relatedEntries, prevGroup);\n items.forEach((item) => {\n group.items.push(item);\n });\n\n if (group.items.length) {\n result.push(group);\n }\n }\n return result;\n};\n","import { uuid } from '@telia-ace/widget-utilities';\nimport { Container, EventManager } from '@webprovisions/platform';\nimport { processEntries } from './entry-handler';\nimport Store from './store';\nimport { ClientEnvelope, MessageGroup, ServerEntry, ServerEnvelope } from './types';\n\nclass HttpClient {\n private globalState: any;\n private localState: ServerEntry['localState'];\n private clientId: string;\n private entries: ServerEntry[];\n\n constructor(\n private endpoint: string,\n private events: EventManager,\n private store: Store,\n private container: Container\n ) {\n this.clientId = uuid();\n this.entries = [];\n }\n\n async start({ silent }: { silent: boolean }) {\n const storedGlobalState = await this.store.read('globalState');\n const storedLocalState = await this.store.read('localState');\n const storedEntries = await this.store.read('entries');\n\n // if there is state stored we need to set it\n this.globalState = storedGlobalState || this.globalState;\n this.localState = storedLocalState || this.localState;\n this.entries = storedEntries || this.entries;\n\n // dont create initial envelope if the client should just\n // set local and global state and then start silently\n if (silent) {\n return;\n }\n\n const envelope = this.createInitialEnvelope();\n const initialResponse = await this.postEnvelope(envelope);\n return initialResponse;\n }\n\n async sendMessage(message: string) {\n const envelope = {\n command: { phrase: message },\n globalState: this.globalState,\n clientId: this.clientId,\n };\n\n const result = await this.postEnvelope(envelope);\n return result;\n }\n\n async helpAction() {\n return this.postEnvelope({\n action: {\n key: 'help',\n content: {\n $type: 'Humany.Matching.Bots.Conversations.Actions.Help, Humany.Matching',\n },\n },\n globalState: this.globalState,\n clientId: this.clientId,\n });\n }\n\n async nextAction(group: MessageGroup) {\n const { paging } = group.meta;\n if (!paging.actions?.next) {\n return;\n }\n return this.postEnvelope(\n {\n action: {\n key: 'next',\n content: paging.actions.next,\n },\n localState: paging.localState,\n globalState: this.globalState,\n clientId: this.clientId,\n },\n group\n ).then((response) => {\n const listItemIndex = group.items.findIndex((item) => item.message[0] === 'link-list');\n if (listItemIndex === -1 || !response) {\n return group;\n }\n\n return {\n ...group,\n meta: {\n ...group.meta,\n ...response[0].meta,\n },\n items: [\n ...group.items.slice(0, listItemIndex),\n {\n ...group.items[listItemIndex],\n message: [\n response[0].items[0].message[0],\n {\n ...group.items[listItemIndex].message[1],\n ...response[0].items[0].message[1],\n },\n ],\n },\n ...group.items.slice(listItemIndex + 1),\n ],\n };\n });\n }\n\n async showContactMethodAction(data: {\n contactMethod: any;\n actionKey: string;\n entryId: string;\n }) {\n const entry = this.entries.find((e) => e.id === data.entryId);\n const actionItem = entry?.actions[data.actionKey];\n\n if (!actionItem) {\n return;\n }\n\n return this.postEnvelope({\n action: {\n key: data.actionKey,\n content: actionItem,\n },\n localState: entry.localState,\n globalState: this.globalState,\n clientId: this.clientId,\n });\n }\n\n async defaultAction(action: string) {\n const entry = this.getEntryOfAction(action);\n\n if (!entry) {\n return;\n }\n\n return this.postEnvelope({\n action: {\n key: action,\n content: entry.actions[action],\n },\n localState: entry.localState,\n globalState: this.globalState,\n clientId: this.clientId,\n });\n }\n\n private createInitialEnvelope(): ClientEnvelope {\n return {\n command: { site: this.endpoint },\n clientId: this.clientId,\n globalState: {},\n funnel: this.container.get('$widget').name,\n };\n }\n\n private async postEnvelope(envelope: ClientEnvelope, prevGroup?: MessageGroup) {\n try {\n const response = await fetch(this.endpoint, this.getHttpOptions(envelope));\n\n if (!response.ok) {\n throw response;\n }\n\n const data = await response.json();\n\n return this.handleResponse(data, prevGroup);\n } catch (error: any) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Something went wrong when posting the envelope.');\n }\n let message = 'Something went wrong';\n if (\n error.message === 'Failed to fetch' ||\n error.message === 'NetworkError when attempting to fetch resource.'\n ) {\n message = 'Lost connection... Please try again.';\n }\n return this.handleResponse({\n entries: [\n {\n id: uuid(),\n type: 'Error',\n timestamp: new Date().toISOString(),\n content: {\n message,\n },\n actions: {},\n tags: [],\n },\n ],\n });\n }\n }\n\n private async handleResponse(data: ServerEnvelope, prevGroup?: MessageGroup) {\n this.entries = this.entries.concat(data.entries);\n this.store.write(this.entries, 'entries');\n\n const widgetEntry = data.entries.find((e) => e.type === 'Widget');\n\n if (widgetEntry) {\n this.events.dispatch('provider:widget-entry', widgetEntry.content);\n }\n\n if (data.globalState) {\n this.globalState = data.globalState;\n this.store.write(data.globalState, 'globalState');\n }\n\n this.localState = data.entries.reduce<ServerEntry['localState']>((acc, entry) => {\n if (entry.localState) {\n return entry.localState;\n }\n return acc;\n }, undefined);\n this.store.write(this.localState, 'localState');\n\n const groups = await processEntries(this.container, data.entries, prevGroup);\n return groups;\n }\n\n private getHttpOptions(envelope: ClientEnvelope) {\n const fetchOptions = {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n };\n envelope.funnel = this.container.get('$widget').name;\n envelope.localState = envelope.localState || this.localState;\n return Object.assign({}, fetchOptions, {\n body: JSON.stringify(envelope),\n credentials: 'same-origin' as RequestCredentials,\n });\n }\n\n private getEntryOfAction(action: string) {\n return this.entries.find((entry) => !!entry.actions[action]);\n }\n}\n\nexport default HttpClient;\n","import { createStorageWriter, readStorage, StorageCategory } from '@telia-ace/widget-services';\nimport { Container } from '@webprovisions/platform';\nimport { GlobalState, LooseObject, ServerEntry } from './types';\n\ntype MetaData = {\n agent: {\n name: string;\n avatar?: string;\n };\n};\n\ntype StorageTypes = 'localState' | 'globalState' | 'entries' | 'meta';\n\nclass Store {\n private enabled = true; // set whether or not to store data\n private botProviderGlobalStateKey = 'bot-provider-global-state';\n private botProviderLocalStateKey = 'bot-provider-local-state';\n private botProviderEntriesKey = 'bot-provider-entries';\n private botProviderMetaStateKey = 'bot-provider-conversation-meta';\n\n constructor(private container: Container) {}\n\n private getKey(type: StorageTypes) {\n let key;\n switch (type) {\n case 'localState':\n key = this.botProviderLocalStateKey;\n break;\n case 'globalState':\n key = this.botProviderGlobalStateKey;\n break;\n case 'entries':\n key = this.botProviderEntriesKey;\n break;\n case 'meta':\n key = this.botProviderMetaStateKey;\n break;\n\n default:\n break;\n }\n return key;\n }\n\n async read(type: 'localState'): Promise<LooseObject | undefined>;\n async read(type: 'meta'): Promise<MetaData | undefined>;\n async read(type: 'entries'): Promise<ServerEntry[] | undefined>;\n async read(type: 'globalState'): Promise<GlobalState | undefined>;\n async read(type: StorageTypes): Promise<any | undefined> {\n const key = this.getKey(type);\n if (!this.enabled || !key) {\n return;\n }\n\n return readStorage(this.container, key);\n }\n\n async write(data: any, type: StorageTypes) {\n const key = this.getKey(type);\n if (!this.enabled || !key) {\n return;\n }\n\n const write = await createStorageWriter(this.container, key, StorageCategory.Necessary);\n write(data);\n }\n}\n\nexport default Store;\n","import { ComponentNodeController } from '@telia-ace/knowledge-widget-core';\nimport { ConversationMessageListItemType } from '@telia-ace/widget-conversation';\nimport { createStorageWriter, StorageCategory } from '@telia-ace/widget-services';\nimport { uuid } from '@telia-ace/widget-utilities';\nimport { Container, EventManager, Widget } from '@webprovisions/platform';\nimport HttpClient from './http-client';\nimport Store from './store';\nimport { MessageGroup, ServerEntry } from './types';\nimport { createGroup, getKnowledgeBotEndpoint, setServiceClientParameter } from './utils';\n\nclass KnowledgeBotProvider {\n private agent: any;\n private user: any;\n private httpClient: HttpClient;\n private events: EventManager;\n private groups: MessageGroup[] = [];\n private store: Store;\n\n constructor(\n private container: Container,\n private conversation: any,\n component: ComponentNodeController\n ) {\n const { events } = this.container.get('$widget') as Widget;\n this.events = events;\n this.store = new Store(container);\n this.agent = conversation.createAgent({\n id: 'knowledge-bot-agent', // we need to specify an ID here to allow rehydration to work\n name: '',\n avatar: undefined,\n });\n this.user = conversation.user;\n const endpoint = getKnowledgeBotEndpoint(container, component);\n this.httpClient = new HttpClient(endpoint, events, this.store, this.container);\n\n this.events.subscribe('provider:widget-entry', (_event, data: ServerEntry['content']) => {\n this.onWidgetEntryReceived(data);\n });\n\n this.events.subscribe(\n 'provider:open-contact-method',\n async (_event, data: { contactMethod: any; entryId: string; actionKey: string }) => {\n const response = await this.httpClient.showContactMethodAction(data);\n\n if (response) {\n if (!!data.contactMethod.title) this.printUserMessage(data.contactMethod.title);\n this.onMessagesReceived(response);\n }\n }\n );\n }\n\n async initialize() {\n const loader = this.conversation.loading();\n\n const storedMeta = await this.store.read('meta');\n if (storedMeta?.agent) {\n this.agent.update({\n name: storedMeta.agent.name,\n avatar: storedMeta.agent.avatar,\n });\n }\n\n const rehydrated = await this.conversation.isRehydrated();\n\n const response = await this.httpClient.start({\n silent: this.conversation.options?.silent || rehydrated,\n });\n if (response) {\n this.onMessagesReceived(response);\n }\n\n loader();\n }\n\n async onMessagesReceived(groups: MessageGroup[]) {\n this.groups = this.groups.concat(groups);\n groups.forEach((group) => {\n const items = group.items.map((item) => item.message);\n if (group.isUser) {\n group.writer = this.user.print(items);\n } else {\n group.writer = this.agent.print(items);\n }\n });\n }\n\n async onInput(action: string | { [key: string]: any; actionKey: string; label?: string }) {\n const actionKey = typeof action === 'string' ? action : action.actionKey;\n\n switch (actionKey) {\n case 'next':\n {\n if (typeof action === 'string') {\n return;\n }\n const group = this.groups.find((other) => other.id === action.data?.groupId);\n\n if (group) {\n const response = await this.httpClient.nextAction(group);\n if (response) {\n const combined = response.items.map((item) => item.message);\n group.meta.paging = response?.meta.paging;\n group.writer.update(combined);\n }\n }\n }\n break;\n case 'help':\n {\n const loader = this.conversation.loading();\n\n const response = await this.httpClient.helpAction();\n loader();\n if (response) {\n this.onMessagesReceived(response);\n }\n }\n break;\n default:\n {\n if (typeof action !== 'string' && action.label) {\n this.printUserMessage(action.label);\n }\n const loader = this.conversation.loading();\n const response = await this.httpClient.defaultAction(actionKey);\n if (response) {\n this.onMessagesReceived(response);\n }\n loader();\n }\n break;\n }\n }\n\n private printUserMessage(message: string) {\n const group = createGroup({\n isUser: true,\n items: [\n {\n id: uuid(),\n isUser: true,\n message: [ConversationMessageListItemType.HTML, { body: message }],\n },\n ],\n });\n this.onMessagesReceived([group]);\n return group;\n }\n\n async onMessageSend(message: string) {\n const loader = this.conversation.loading();\n const response = await this.httpClient.sendMessage(message);\n\n await setServiceClientParameter(this.container, 'phrase', message);\n\n this.printUserMessage(message);\n\n if (response) {\n this.onMessagesReceived(response);\n }\n loader();\n }\n\n private async onWidgetEntryReceived(data: ServerEntry['content']) {\n if (data.agent) {\n const agentSettings = {\n name: data.agent.name,\n avatar: data.agent.avatar,\n };\n this.agent.update(agentSettings);\n const write = await createStorageWriter(\n this.container,\n 'bot-provider-conversation-meta',\n StorageCategory.Necessary\n );\n write({\n agent: agentSettings,\n });\n }\n }\n}\n\nexport default KnowledgeBotProvider;\n","import {\n ConversationPlatform,\n registerCustomMessageComponent,\n} from '@telia-ace/widget-conversation';\nimport { Container, Widget } from '@webprovisions/platform';\nimport KnowledgeBotProvider from './provider';\nimport { CustomMessageTypes } from './types';\n\nconst KnowledgeBotProviderPlugin = async (container: Container) => {\n const platform = await ConversationPlatform.getInstance(container);\n\n registerCustomMessageComponent(\n container,\n CustomMessageTypes.ContactList,\n import('./ui/contact-method-list')\n );\n registerCustomMessageComponent(\n container,\n CustomMessageTypes.ContactMethod,\n import('./ui/contact-method')\n );\n\n registerCustomMessageComponent(\n container,\n CustomMessageTypes.NotificationList,\n import('./ui/notification-list')\n );\n registerCustomMessageComponent(\n container,\n CustomMessageTypes.NoGoodAlternative,\n import('./ui/no-good-alternative')\n );\n registerCustomMessageComponent(\n container,\n CustomMessageTypes.FeedbackList,\n import('./ui/feedback-list')\n );\n\n platform.registerProvider('ace-knowledge-bot', (conversation, component) => {\n const provider = new KnowledgeBotProvider(container, conversation, component);\n provider.initialize();\n\n const subscriptions: any[] = [];\n subscriptions.push(\n component.actions.watch('conversation.user-submit', (input, next) => {\n provider.onMessageSend(input.text);\n })\n );\n\n subscriptions.push(\n component.actions.watch('conversation.action', (input, next) => {\n provider.onInput(input);\n\n return next(input);\n })\n );\n\n subscriptions.push(\n component.actions.create('evaluate', (input) => {\n const { events } = container.get('$widget') as Widget;\n events.dispatch('bot-provider:evaluate', input);\n })\n );\n\n subscriptions.push(\n component.actions.create('submit', (input) => {\n const { events } = container.get('$widget') as Widget;\n events.dispatch('bot-provider:form-submitted', input);\n })\n );\n\n return () => {\n // cleaning up when provider is disposed\n subscriptions.forEach((unsubscribe) => {\n unsubscribe();\n });\n };\n });\n};\n\nexport default KnowledgeBotProviderPlugin;\n"],"names":["CustomMessageTypes","convertLegacySymbol","symbol","type","content","createGroup","isUser","items","meta","groupId","uuid","i","contactMethodFromLegacy","id","title","defaultIcon","exit","exitType","confirmationText","expandFormAutomatically","form","description","options","adapter","clientName","adapterSettings","customClientName","validation","settings","displayTextBeforeClick","textBeforeClick","FormBuilder","updateForm","getListType","entry","state","ConversationMessageListItemType","getKnowledgeBotEndpoint","container","component","knowledgeBotEndpoint","data","contactMethod","submit","errors","_a","body","builder","submitButton","__spreadProps","__spreadValues","setServiceClientParameter","key","value","__async","createGroupItem","messageId","message","group","processEntries","entries","prevGroup","createListContent","listType","listContent","contactMethodIds","action","entryAction","transform","_0","_1","_2","related","_b","header","html","result","pagingEntry","e","fallbackEntry","fallbackAction","contactMethodListEntry","dialogListEntry","feedbackEntry","contactMethodEntry","notice","splitEntry","acc","item","sortMap","filteredEntries","other","sortValue","sortValueOther","isNonVisibleRelatedEntry","relatedEntries","HttpClient","endpoint","events","store","__publicField","silent","storedGlobalState","storedLocalState","storedEntries","envelope","paging","response","listItemIndex","actionItem","error","widgetEntry","fetchOptions","HttpClient$1","Store","readStorage","createStorageWriter","StorageCategory","Store$1","KnowledgeBotProvider","conversation","_event","loader","storedMeta","rehydrated","groups","actionKey","combined","agentSettings","KnowledgeBotProvider$1","KnowledgeBotProviderPlugin","platform","ConversationPlatform","registerCustomMessageComponent","provider","subscriptions","input","next","unsubscribe","KnowledgeBotProviderPlugin$1"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEY,IAAAA,sBAAAA,OACRA,EAAA,gBAAgB,oCAChBA,EAAA,cAAc,kCACdA,EAAA,eAAe,mCACfA,EAAA,mBAAmB,uCACnBA,EAAA,oBAAoB,yCALZA,IAAAA,KAAA,CAAA,CAAA;ACMZ,MAAMC,KAAsB,CAACC,MAAmE;AAC5F,MAAIA,GAAQ;AACF,UAAA,EAAE,MAAAC,GAAM,SAAAC,EAAY,IAAAF;AAC1B,QAAIC,KAAQC;AACD,aAAA,EAAE,MAAAD,GAAM,SAAAC;EAEvB;AACJ,GAEaC,IAAc,CAAC;AAAA,EACxB,QAAAC;AAAA,EACA,OAAAC,IAAQ,CAAC;AAAA,EACT,MAAAC,IAAO,CAAC;AACZ,MAIM;AACF,QAAMC,IAAUC;AAgBT,SAdO;AAAA,IACV,IAAID;AAAA,IACJ,QAAAH;AAAA,IACA,OAAOC,EAAM,IAAI,CAACI,OACP;AAAA,MACH,IAAIA,EAAE,MAAMD,EAAK;AAAA,MACjB,QAAAJ;AAAA,MACA,SAAAG;AAAA,MACA,SAASE,EAAE,WAAW,CAAC;AAAA,IAAA,EAE9B;AAAA,IACD,MAAAH;AAAA,EAAA;AAIR,GAEaI,KAA0B,CACnC;AAAA,EACI,IAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAO,CAACC,CAAI;AAAA,EACZ,UAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,yBAAAC;AAAA,EACA,MAAAC;AAAA,EACA,aAAAC;AACJ,GACAC,IAGI,CAAA,MACE;AACN,QAAM,EAAE,SAAAC,EAAQ,IAAIP,KAAQ,EAAE,SAAS,CAAG,EAAA,GACpC,EAAE,YAAAQ,IAAa,IAAI,UAAUC,IAAkB,CAAA,GAAI,kBAAAC,IAAmB,GAAO,IAAAH,GAC7E,EAAE,YAAAI,EAAe,IAAAL,GAEjBM,IAAgB;AAAA,IAClB,IAAIf,EAAG,SAAS;AAAA,IAChB,OAAAC;AAAA,IACA,aAAAO;AAAA,IACA,QAAQpB,GAAoBc,CAAW;AAAA,IACvC,YAAYS,MAAe,mBAAmBE,IAAmBF;AAAA,IACjE,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,MAAM,CAAC;AAAA,EAAA;AAGP,MAAAA,EAAW,QAAQ,OAAO,IAAI,MAAMA,EAAW,QAAQ,UAAU,IAAI,IAAI;AACnE,UAAA,EAAE,wBAAAK,GAAwB,iBAAAC,EAAoB,IAAAL;AACpD,IAAII,MAA2B,WAC3BD,EAAS,WAAW,IACpBA,EAAS,QAAQE,IAGjBN,EAAW,QAAQ,YAAY,IAAI,KAC1BI,EAAA,KAAK,cAAcH,EAAgB,cAEnCG,EAAA,KAAK,WAAWH,EAAgB;AAAA,EAEjD;AAEA,UACID,EAAW,QAAQ,YAAY,IAAI,MACnCA,EAAW,QAAQ,MAAM,IAAI,MAC5BA,MAAe,oBAAoBP,MAAa,cAEjDW,EAAS,OAAOH,GAChBG,EAAS,KAAK,uBAAuBV,IAGrCM,EAAW,QAAQ,KAAK,IAAI,OAC5BI,EAAS,OAAOH,IAGhBL,KAAQA,EAAK,uBACTO,IACSC,EAAA,KAAK,OAAOG,EAAY,eAAelB,EAAG,YAAYO,GAAMO,CAAU,EAAE,IAAI,IAE5EC,EAAA,KAAK,OAAOG,EAAY,eAAelB,EAAG,YAAYO,CAAI,EAAE,OAEpED,MACQS,EAAA,WAAWA,EAAS,SAAS,KAG1CA,EAAS,OAAOI,GAAWJ,GAAU,EAAE,QAAQ,UAAU,IAGzDN,EAAQ,YACCM,EAAA,KAAK,UAAUN,EAAQ,UAG7BM;AACX,GAEaK,KAAc,CAACC,MAAuB;AACzC,QAAA,EAAE,YAAYC,EAAU,IAAAD;AAE1B,SAAAA,EAAM,KAAK,SAAS,UAAU,KAAKA,EAAM,KAAK,SAAS,SAAS,IACzDE,EAAgC,WAGvCF,EAAM,KAAK,SAAS,YAAY,IACzBE,EAAgC,YAGvCD,KAAA,gBAAAA,EAAO,WAAU,uEACVC,EAAgC,YAEvCD,KAAA,gBAAAA,EAAO,WACP,kFAEOnC,EAAmB,gBAE1BmC,KAAA,gBAAAA,EAAO,WAAU,4EAEVnC,EAAmB,cAChBoC,EAAgC;AAClD,GAEaC,KAA0B,CACnCC,GACAC,MACC;AACD,QAAM,EAAE,sBAAAC,EAAA,IAAyBD,EAAU,WAAW;AAEtD,MAAIC;AACA,WAAO,GAAGA;AAGd,QAAM,EAAE,MAAAC,EAAS,IAAAH,EAAU,IAAI,WAAW;AAEtC,MAAA,CAACG,KAAQ,CAACA,EAAK;AAAkB,UAAA,IAAI,MAAM,gCAAgC;AAE/E,SAAO,GAAGA,EAAK;AACnB,GAEaT,KAAa,CACtBU,GACA;AAAA,EACI,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,MAAApC;AACJ,MACM;;AACF,OAAAqC,IAAAH,KAAA,gBAAAA,EAAe,SAAf,QAAAG,EAAqB,MAAM;AACrB,UAAA,EAAE,MAAAC,EAAS,IAAAJ,GACXK,IAAU,IAAIhB,EAAYe,EAAK,IAAI;AAEzC,WAAKA,EAAK,KAAK,OAAO,UAClBC,EAAQ,gBAAgBC,EAAaL,GAAQ,QAAQ,CAAC,GAGtDC,KACAG,EAAQ,oBAAoBH,CAAM,GAGlCpC,KACCuC,EAAgB,QAAQvC,CAAI,GAG1ByC,EAAAC,EAAA,IACAJ,IADA;AAAA,MAEH,MAAMC,EAAQ,IAAI;AAAA,IAAA;AAAA,EAE1B;AACO,UAAAL,KAAA,gBAAAA,EAAe,SAAQ;AAClC,GAIaS,IAA4B,CACrCb,GACAc,GACAC,MACCC,EAAA;AAGc,GADQ,OADJ,MAAMhB,EAAU,SAAS,YAAY,GAChB,aACzB,WAAW,IAAIc,GAAKC,CAAK;AAC5C,IC9LME,IAAkB,CAAC;AAAA,EACrB,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AACJ,OAKW;AAAA,EACH,IAAIF;AAAA,EACJ,SAAAC;AAAA,EACA,SAASC,EAAM;AAAA,EACf,QAAQA,EAAM;AAAA,IAITC,KAAiB,CAC1BrB,GACAsB,GACAC,MACCP,EAAA;AACD,QAAMQ,IAAoB,CACtBC,GACA7B,GACAzB,GACAuD,IAA2B;AAAA,IACvB,SAAS,CAAC;AAAA,IACV,SAAS9B,EAAM;AAAA,IACf,SAAAzB;AAAA,EAAA,MAEH;AACD,UAAMwD,IAA6B,CAAA;AAEnC,WAAAD,EAAY,UAAU9B,EAAM,QAAQ,MAAM,IAAI,CAACvB,MAAW;;AACtD,YAAMuD,IAAS;AAAA,QACX,OAAOvD,EAAE;AAAA,QACT,WAAWA,EAAE;AAAA,QACb,QAAUA,EAAE,SAASA,EAAE,SAAS;AAAA,QAChC,aAAaA,EAAE,eAAe;AAAA,MAAA;AAGlC,UAAIA,EAAE,MAAM;AACF,cAAAwD,IAAcjC,EAAM,QAAQvB,EAAE;AAChC,QAAAoD,MAAa/D,EAAmB,eACfiE,EAAA,KAAKtD,EAAE,KAAK,EAAE,GACxBuD,EAAA,OAAOtD,GAAwBD,EAAE,MAAM;AAAA,UAC1C,UAASkC,IAAAsB,KAAA,gBAAAA,EAAa,YAAb,gBAAAtB,EAAsB;AAAA,QAAS,CAC3C,KAEDqB,EAAO,OAAOvD,EAAE;AAAA,MAExB;AACO,aAAAuD;AAAA,IAAA,CACV,GAEGH,MAAa/D,EAAmB,gBAChCgE,EAAY,mBAAmBC,IAG5BD;AAAA,EAAA,GAGLI,IAAY,CACdC,GACAC,MAGCC,MAAAjB,EAAA,SAJDe,GACAC,GAGC,GAAAC,IAAA,WAJDrC,GACAwB,GACAc,IAAyB,IACzBX,GACC;;AACD,UAAML,IAAY9C;AAMlB,YAJIwB,EAAM,SAAS,UAAUA,EAAM,KAAK,SAAS,OAAO,OAAKuC,KAAA5B,IAAAX,EAAM,QAAQ,UAAd,gBAAAW,EAAsB,OAAtB,gBAAA4B,EAA0B,QACnF,MAAMtB,EAA0Bb,GAAW,eAAeJ,EAAM,QAAQ,MAAM,GAAG,EAAE,IAG/EA,EAAM,MAAM;AAAA,MAChB,KAAK,QACD;AACI,cAAM,EAAE,QAAAwC,GAAQ,OAAAnE,GAAO,MAAAoE,EAAA,IAASzC,EAAM,SAEhC0C,IAAS,CAAA;AAEf,YAAIZ,IAAc;AAAA,UACd,SAAS,CAAC;AAAA,UACV,SAAS9B,EAAM;AAAA,UACf,SAASwB,EAAM;AAAA,QAAA;AAOf,YAJAgB,MACAV,EAAY,SAASU,KAGrBnE,KAAA,gBAAAA,EAAO,UAAS,GAAG;AACb,gBAAAwD,IAAW9B,GAAYC,CAAK;AAI9B,cAHJ8B,IAAcF,EAAkBC,GAAU7B,GAAOwB,EAAM,IAAIM,CAAW,GAGhEQ,EAAQ,QAAQ;AACZ,kBAAAK,IAAcL,EAAQ,KAAK,CAACM,MAAMA,EAAE,KAAK,SAAS,QAAQ,CAAC,GAC3DC,IAAgBP,EAAQ,KAAK,CAACM,MAAMA,EAAE,KAAK,SAAS,UAAU,CAAC;AAmBrE,gBAjBID,KAAA,QAAAA,EAAa,YACbnB,EAAM,KAAK,SAAS;AAAA,cAChB,SAASmB,EAAY;AAAA,cACrB,OAAOA,EAAY,QAAQ;AAAA,cAC3B,YAAYA,EAAY;AAAA,YAAA,GAE5BA,EAAY,QAAQ,MAAM,QAAQ,CAAClE,MAAW;AAC1C,cAAAqD,EAAY,QAAQ,KAAK;AAAA,gBACrB,OAAOrD,EAAE;AAAA,gBACT,WAAWA,EAAE;AAAA,gBACb,MAAM;AAAA,kBACF,SAAWkD,IAAYA,EAAU,KAAKH,EAAM;AAAA,gBAChD;AAAA,cAAA,CACH;AAAA,YAAA,CACJ,IAGDqB,GAAe;AACT,oBAAAC,IAAiBD,EAAc,QAAQ,MAAM;AAAA,gBAC/C,CAACpE,MAAWA,EAAE,cAAc;AAAA,cAAA;AAEhC,cAAIqE,MACAJ,EAAO;AAAA,gBACHrB,EAAgB;AAAA,kBACZ,WAAAC;AAAA,kBACA,SAAS;AAAA,oBACLpB,EAAgC;AAAA,oBAChC;AAAA,kBACJ;AAAA,kBACA,OAAAsB;AAAA,gBAAA,CACH;AAAA,cAAA,GAELkB,EAAO;AAAA,gBACHrB,EAAgB;AAAA,kBACZ,WAAAC;AAAA,kBACA,SAAS;AAAA,oBACLxD,EAAmB;AAAA,oBACnB,EAAE,MAAMgF,EAAe,MAAM;AAAA,kBACjC;AAAA,kBACA,OAAAtB;AAAA,gBAAA,CACH;AAAA,cAAA;AAAA,YAGb;AAAA,UACJ;AAEAkB,UAAAA,EAAO;AAAA,YACHrB,EAAgB;AAAA,cACZ,WAAAC;AAAA,cACA,SAAS,CAACO,GAAUC,CAAW;AAAA,cAC/B,OAAAN;AAAA,YAAA,CACH;AAAA,UAAA;AAAA,QAET;AAEA,eAAIiB,KACAC,EAAO;AAAA,UACHrB,EAAgB;AAAA,YACZ,WAAAC;AAAA,YACA,SAAS,CAACpB,EAAgC,MAAM,EAAE,MAAMuC,GAAM;AAAA,YAC9D,OAAAjB;AAAA,UAAA,CACH;AAAA,QAAA,GAIFkB;AAAAA,MACX;AAAA,MAEJ,KAAK,QACD;AACI,cAAMA,IAAS,CAAA;AAaX,YAZJA,EAAO;AAAA,UACHrB,EAAgB;AAAA,YACZ,WAAAC;AAAA,YACA,SAAS;AAAA,cACLpB,EAAgC;AAAA,cAChC,EAAE,MAAMF,EAAM,QAAQ,KAAK;AAAA,YAC/B;AAAA,YACA,OAAAwB;AAAA,UAAA,CACH;AAAA,QAAA,GAICc,EAAQ,QAAQ;AAClB,gBAAMS,IAAyBT,EAAQ;AAAA,YACnC,CAACM,MACG;;AAAA,qBAAAA,EAAE,SAAS,YACXjC,IAAAiC,EAAE,eAAF,gBAAAjC,EAAc,WACV;AAAA;AAAA,UAAA,GAGNqC,IAAkBV,EAAQ,KAAK,CAACM,MAAMA,EAAE,KAAK,SAAS,QAAQ,CAAC,GAC/DK,IAAgBX,EAAQ,KAAK,CAACM,MAAMA,EAAE,KAAK,SAAS,UAAU,CAAC,GAC/DM,IAAqBZ,EAAQ;AAAA,YAC/B,CAACM,MAAMA,EAAE,KAAK,SAAS,SAAS,KAAKA,EAAE,SAAS;AAAA,UAAA;AAwCpD,cArCIM,KACAR,EAAO;AAAA,YACHrB,EAAgB;AAAA,cACZ,WAAAC;AAAA,cACA,SAAS;AAAA,gBACLxD,EAAmB;AAAA,gBACnB;AAAA,kBACI,iBAAiBoF,EAAmB,QAAQ;AAAA,kBAC5C,SAAS1B,EAAM;AAAA,kBACf,SAAS0B,EAAmB,QAAQ;AAAA,gBACxC;AAAA,cACJ;AAAA,cACA,OAAA1B;AAAA,YAAA,CACH;AAAA,UAAA,GAILwB,KACAN,EAAO;AAAA,YACHrB,EAAgB;AAAA,cACZ,WAAAC;AAAA,cACA,SAAS;AAAA,gBACLpB,EAAgC;AAAA,gBAChC;AAAA,kBACI,SAAS8C,EAAgB,QAAQ,MAAM,IAAI,CAACvE,OACjC;AAAA,oBACH,OAAOA,EAAE;AAAA,oBACT,WAAWA,EAAE;AAAA,kBAAA,EAEpB;AAAA,gBACL;AAAA,cACJ;AAAA,cACA,OAAA+C;AAAA,YAAA,CACH;AAAA,UAAA,GAILuB,GAAwB;AACxB,kBAAMjB,IAAcF;AAAA,cAChB9D,EAAmB;AAAA,cACnBiF;AAAA,cACAvB,EAAM;AAAA,YAAA;AAGVkB,YAAAA,EAAO;AAAA,cACHrB,EAAgB;AAAA,gBACZ,WAAAC;AAAA,gBACA,SAAS,CAACpB,EAAgC,WAAW,MAAS;AAAA,gBAC9D,OAAAsB;AAAA,cAAA,CACH;AAAA,YAAA,GAGLkB,EAAO;AAAA,cACHrB,EAAgB;AAAA,gBACZ,WAAAC;AAAA,gBACA,SAAS,CAACxD,EAAmB,aAAagE,CAAW;AAAA,gBACrD,OAAAN;AAAA,cAAA,CACH;AAAA,YAAA;AAAA,UAET;AAEA,UAAIyB,MACIA,EAAc,QAAQ,QACtBP,EAAO;AAAA,YACHrB,EAAgB;AAAA,cACZ,WAAAC;AAAA,cACA,OAAAE;AAAA,cACA,SAAS;AAAA,gBACLtB,EAAgC;AAAA,gBAChC;AAAA,kBACI,MAAM+C,EAAc,QAAQ;AAAA,gBAChC;AAAA,cACJ;AAAA,YAAA,CACH;AAAA,UAAA,GAGTP,EAAO;AAAA,YACHrB,EAAgB;AAAA,cACZ,WAAAC;AAAA,cACA,OAAAE;AAAA,cACA,SAAS;AAAA,gBACL1D,EAAmB;AAAA,gBACnB;AAAA,kBACI,SAASmF,EAAc,QAAQ,MAAM,IAAI,CAACxE,OAC/B;AAAA,oBACH,WAAWA,EAAE;AAAA,oBACb,OAAOA,EAAE;AAAA,kBAAA,EAEhB;AAAA,gBACL;AAAA,cACJ;AAAA,YAAA,CACH;AAAA,UAAA;AAAA,QAGb;AACOiE,eAAAA;AAAAA,MACX;AAAA,MAEJ,KAAK;AACM,eAAA;AAAA,UACHrB,EAAgB;AAAA,YACZ,WAAAC;AAAA,YACA,SAAS;AAAA,cACLxD,EAAmB;AAAA,cACnB;AAAA,gBACI,iBAAiBkC,EAAM,QAAQ;AAAA,gBAC/B,SAASwB,EAAM;AAAA,gBACf,SAASxB,EAAM,QAAQ;AAAA,cAC3B;AAAA,YACJ;AAAA,YACA,OAAAwB;AAAA,UAAA,CACH;AAAA,QAAA;AAAA,MAGT,KAAK,yBAAyB;AAC1B,cAAMkB,IAAS;AAAA,UACXrB,EAAgB;AAAA,YACZ,WAAAC;AAAA,YACA,SAAS;AAAA,cACLxD,EAAmB;AAAA,cACnB;AAAA,gBACI,IAAIkC,EAAM,QAAQ,KAAK,GAAG,SAAS;AAAA,gBACnC,QAAQA,EAAM,QAAQ,KAAK;AAAA,gBAC3B,OAAOA,EAAM,QAAQ,KAAK;AAAA,gBAC1B,QAAQA,EAAM,QAAQ,KAAK;AAAA,cAC/B;AAAA,YACJ;AAAA,YACA,OAAAwB;AAAA,UAAA,CACH;AAAA,QAAA;AAGL,gBAACxB,EAAM,QAAQ,WAAW,CAAA,GAAI,QAAQ,CAACmD,MAAgB;AACnDT,UAAAA,EAAO;AAAA,YACHrB,EAAgB;AAAA,cACZ,WAAAC;AAAA,cACA,SAAS;AAAA,gBACLpB,EAAgC;AAAA,gBAChC;AAAA,kBACI,MAAMiD,EAAO;AAAA,gBACjB;AAAA,cACJ;AAAA,cACA,OAAA3B;AAAA,YAAA,CACH;AAAA,UAAA;AAAA,QACL,CACH,GAEMkB;AAAAA,MACX;AAAA,MACA,KAAK;AACM,eAAA;AAAA,UACHrB,EAAgB;AAAA,YACZ,WAAAC;AAAA,YACA,SAAS;AAAA,cACLpB,EAAgC;AAAA,cAChC;AAAA,gBACI,MAAMF,EAAM,QAAQ,KAAK;AAAA,cAC7B;AAAA,YACJ;AAAA,YACA,OAAAwB;AAAA,UAAA,CACH;AAAA,QAAA;AAAA,MAGT,KAAK;AACM,eAAA;AAAA,UACHH,EAAgB;AAAA,YACZ,WAAAC;AAAA,YACA,SAAS;AAAA,cACLpB,EAAgC;AAAA,cAChC;AAAA,gBACI,MAAMF,EAAM,QAAQ,WAAW;AAAA,cACnC;AAAA,YACJ;AAAA,YACA,OAAAwB;AAAA,UAAA,CACH;AAAA,QAAA;AAAA,MAIT;AACI,eAAO;IACf;AAAA,EAAA,IAGE4B,IAAa,CAACpD,MACZ,CAAC,yBAAyB,YAAY,EAAE,SAASA,EAAM,IAAI,KACnDA,EAAM,QAAQ,SAAS,IAAI,OAAO,CAACqD,GAAUC,OAC5CtD,EAAM,QAAQ,oBAGnBqD,EAAI,KAAKtC,EAAAC,EAAA,IACFhB,IADE;AAAA,IAEL,IAAIxB,EAAK;AAAA,IACT,MAAM8E,EAAK,QAAQtD,EAAM;AAAA,IACzB,SAAS;AAAA,MACL,OAAOA,EAAM,QAAQ;AAAA,MACrB,kBAAkBA,EAAM,QAAQ;AAAA,MAChC,SAASsD,EAAK;AAAA,MACd,MAAAA;AAAA,IACJ;AAAA,EAAA,EACH,GACMD,IACR,CAAE,CAAA,IAEFrD,GAKLuD,wBAAc,IAAoB;AAAA,IACpC,CAAC,QAAQ,CAAC;AAAA,IACV,CAAC,QAAQ,CAAC;AAAA,IACV,CAAC,WAAW,CAAC;AAAA,IACb,CAAC,yBAAyB,EAAE;AAAA,EAAA,CAC/B,GAEKb,IAAyB,CAAA,GACzBc,IAAkB9B,EACnB,KAAK,CAAC4B,GAAMG,MAAU;AAInB,QAAIC,IAAYH,EAAQ,IAAID,EAAK,IAAI,KAAK,IACtCK,IAAiBJ,EAAQ,IAAIE,EAAM,IAAI,KAAK;AAChD,WAAOC,IAAYC;AAAA,EAAA,CACtB,EACA,OAAO,CAAC3D,MAAU,CAACA,EAAM,QAAQ,EACjC,OAAsB,CAACqD,GAAKrD,MAElBqD,EAAI,OAAOD,EAAWpD,CAAK,CAAC,GACpC,CAAE,CAAA,GAIH4D,IAA2B,CAAChB,MACvB,OAAOA,EAAE,QAAQ,YAAgB;AAG5C,aAAW5C,KAASwD,GAAiB;AACjC,UAAMK,IAAiBnC,EAAQ;AAAA,MAC3B,CAAC+B,MAAUA,EAAM,aAAazD,EAAM,MAAM,CAAC4D,EAAyBH,CAAK;AAAA,IAAA,GAEvEjC,IAAQrD,EAAY,EAAE,QAAQ,GAAO,CAAA;AAGrC,KADQ,MAAM+D,EAAUlC,GAAOwB,GAAOqC,GAAgBlC,CAAS,GAC/D,QAAQ,CAAC2B,MAAS;AACd,MAAA9B,EAAA,MAAM,KAAK8B,CAAI;AAAA,IAAA,CACxB,GAEG9B,EAAM,MAAM,UACZkB,EAAO,KAAKlB,CAAK;AAAA,EAEzB;AACO,SAAAkB;AACX;AC9cA,MAAMoB,GAAW;AAAA,EAMb,YACYC,GACAC,GACAC,GACA7D,GACV;AAVM,IAAA8D,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AAGI,SAAA,WAAAH,GACA,KAAA,SAAAC,GACA,KAAA,QAAAC,GACA,KAAA,YAAA7D,GAER,KAAK,WAAW5B,KAChB,KAAK,UAAU;EACnB;AAAA,EAEM,MAAM2D,GAAiC;AAAA,WAAAf,EAAA,4BAAjC,EAAE,QAAA+C,KAA+B;AACzC,YAAMC,IAAoB,MAAM,KAAK,MAAM,KAAK,aAAa,GACvDC,IAAmB,MAAM,KAAK,MAAM,KAAK,YAAY,GACrDC,IAAgB,MAAM,KAAK,MAAM,KAAK,SAAS;AASrD,UANK,KAAA,cAAcF,KAAqB,KAAK,aACxC,KAAA,aAAaC,KAAoB,KAAK,YACtC,KAAA,UAAUC,KAAiB,KAAK,SAIjCH;AACA;AAGE,YAAAI,IAAW,KAAK;AAEf,aADiB,MAAM,KAAK,aAAaA,CAAQ;AAAA,IAE5D;AAAA;AAAA,EAEM,YAAYhD,GAAiB;AAAA,WAAAH,EAAA;AAC/B,YAAMmD,IAAW;AAAA,QACb,SAAS,EAAE,QAAQhD,EAAQ;AAAA,QAC3B,aAAa,KAAK;AAAA,QAClB,UAAU,KAAK;AAAA,MAAA;AAIZ,aADQ,MAAM,KAAK,aAAagD,CAAQ;AAAA,IAEnD;AAAA;AAAA,EAEM,aAAa;AAAA,WAAAnD,EAAA;AACf,aAAO,KAAK,aAAa;AAAA,QACrB,QAAQ;AAAA,UACJ,KAAK;AAAA,UACL,SAAS;AAAA,YACL,OAAO;AAAA,UACX;AAAA,QACJ;AAAA,QACA,aAAa,KAAK;AAAA,QAClB,UAAU,KAAK;AAAA,MAAA,CAClB;AAAA,IACL;AAAA;AAAA,EAEM,WAAWI,GAAqB;AAAA,WAAAJ,EAAA;;AAC5B,YAAA,EAAE,QAAAoD,EAAO,IAAIhD,EAAM;AACrB,UAAA,IAACb,IAAA6D,EAAO,YAAP,QAAA7D,EAAgB;AAGrB,eAAO,KAAK;AAAA,UACR;AAAA,YACI,QAAQ;AAAA,cACJ,KAAK;AAAA,cACL,SAAS6D,EAAO,QAAQ;AAAA,YAC5B;AAAA,YACA,YAAYA,EAAO;AAAA,YACnB,aAAa,KAAK;AAAA,YAClB,UAAU,KAAK;AAAA,UACnB;AAAA,UACAhD;AAAA,QAAA,EACF,KAAK,CAACiD,MAAa;AACX,gBAAAC,IAAgBlD,EAAM,MAAM,UAAU,CAAC8B,MAASA,EAAK,QAAQ,OAAO,WAAW;AACjF,iBAAAoB,MAAkB,MAAM,CAACD,IAClBjD,IAGJT,EAAAC,EAAA,IACAQ,IADA;AAAA,YAEH,MAAMR,IAAA,IACCQ,EAAM,OACNiD,EAAS,GAAG;AAAA,YAEnB,OAAO;AAAA,cACH,GAAGjD,EAAM,MAAM,MAAM,GAAGkD,CAAa;AAAA,cACrC3D,EAAAC,EAAA,IACOQ,EAAM,MAAMkD,KADnB;AAAA,gBAEI,SAAS;AAAA,kBACLD,EAAS,GAAG,MAAM,GAAG,QAAQ;AAAA,kBAC7BzD,IAAA,IACOQ,EAAM,MAAMkD,GAAe,QAAQ,KACnCD,EAAS,GAAG,MAAM,GAAG,QAAQ;AAAA,gBAExC;AAAA,cACJ;AAAA,cACA,GAAGjD,EAAM,MAAM,MAAMkD,IAAgB,CAAC;AAAA,YAC1C;AAAA,UAAA;AAAA,QACJ,CACH;AAAA,IACL;AAAA;AAAA,EAEM,wBAAwBnE,GAI3B;AAAA,WAAAa,EAAA;AACO,YAAApB,IAAQ,KAAK,QAAQ,KAAK,CAAC4C,MAAMA,EAAE,OAAOrC,EAAK,OAAO,GACtDoE,IAAa3E,KAAA,gBAAAA,EAAO,QAAQO,EAAK;AAEvC,UAAI,EAACoE;AAIL,eAAO,KAAK,aAAa;AAAA,UACrB,QAAQ;AAAA,YACJ,KAAKpE,EAAK;AAAA,YACV,SAASoE;AAAA,UACb;AAAA,UACA,YAAY3E,EAAM;AAAA,UAClB,aAAa,KAAK;AAAA,UAClB,UAAU,KAAK;AAAA,QAAA,CAClB;AAAA,IACL;AAAA;AAAA,EAEM,cAAcgC,GAAgB;AAAA,WAAAZ,EAAA;AAC1B,YAAApB,IAAQ,KAAK,iBAAiBgC,CAAM;AAE1C,UAAI,EAAChC;AAIL,eAAO,KAAK,aAAa;AAAA,UACrB,QAAQ;AAAA,YACJ,KAAKgC;AAAA,YACL,SAAShC,EAAM,QAAQgC;AAAA,UAC3B;AAAA,UACA,YAAYhC,EAAM;AAAA,UAClB,aAAa,KAAK;AAAA,UAClB,UAAU,KAAK;AAAA,QAAA,CAClB;AAAA,IACL;AAAA;AAAA,EAEQ,wBAAwC;AACrC,WAAA;AAAA,MACH,SAAS,EAAE,MAAM,KAAK,SAAS;AAAA,MAC/B,UAAU,KAAK;AAAA,MACf,aAAa,CAAC;AAAA,MACd,QAAQ,KAAK,UAAU,IAAI,SAAS,EAAE;AAAA,IAAA;AAAA,EAE9C;AAAA,EAEc,aAAauE,GAA0B5C,GAA0B;AAAA,WAAAP,EAAA;AACvE,UAAA;AACM,cAAAqD,IAAW,MAAM,MAAM,KAAK,UAAU,KAAK,eAAeF,CAAQ,CAAC;AAErE,YAAA,CAACE,EAAS;AACJ,gBAAAA;AAGJ,cAAAlE,IAAO,MAAMkE,EAAS;AAErB,eAAA,KAAK,eAAelE,GAAMoB,CAAS;AAAA,eACrCiD;AACD,QAAA,QAAQ,IAAI,aAAa,gBACzB,QAAQ,KAAK,iDAAiD;AAElE,YAAIrD,IAAU;AACd,gBACIqD,EAAM,YAAY,qBAClBA,EAAM,YAAY,uDAERrD,IAAA,yCAEP,KAAK,eAAe;AAAA,UACvB,SAAS;AAAA,YACL;AAAA,cACI,IAAI/C,EAAK;AAAA,cACT,MAAM;AAAA,cACN,WAAW,IAAI,KAAK,EAAE,YAAY;AAAA,cAClC,SAAS;AAAA,gBACL,SAAA+C;AAAA,cACJ;AAAA,cACA,SAAS,CAAC;AAAA,cACV,MAAM,CAAC;AAAA,YACX;AAAA,UACJ;AAAA,QAAA,CACH;AAAA,MACL;AAAA,IACJ;AAAA;AAAA,EAEc,eAAehB,GAAsBoB,GAA0B;AAAA,WAAAP,EAAA;AACzE,WAAK,UAAU,KAAK,QAAQ,OAAOb,EAAK,OAAO,GAC/C,KAAK,MAAM,MAAM,KAAK,SAAS,SAAS;AAElC,YAAAsE,IAActE,EAAK,QAAQ,KAAK,CAACqC,MAAMA,EAAE,SAAS,QAAQ;AAEhE,aAAIiC,KACA,KAAK,OAAO,SAAS,yBAAyBA,EAAY,OAAO,GAGjEtE,EAAK,gBACL,KAAK,cAAcA,EAAK,aACxB,KAAK,MAAM,MAAMA,EAAK,aAAa,aAAa,IAGpD,KAAK,aAAaA,EAAK,QAAQ,OAAkC,CAAC8C,GAAKrD,MAC/DA,EAAM,aACCA,EAAM,aAEVqD,GACR,MAAS,GACZ,KAAK,MAAM,MAAM,KAAK,YAAY,YAAY,GAE/B,MAAM5B,GAAe,KAAK,WAAWlB,EAAK,SAASoB,CAAS;AAAA,IAE/E;AAAA;AAAA,EAEQ,eAAe4C,GAA0B;AAC7C,UAAMO,IAAe;AAAA,MACjB,QAAQ;AAAA,MACR,SAAS;AAAA,QACL,QAAQ;AAAA,QACR,gBAAgB;AAAA,MACpB;AAAA,IAAA;AAEJ,WAAAP,EAAS,SAAS,KAAK,UAAU,IAAI,SAAS,EAAE,MACvCA,EAAA,aAAaA,EAAS,cAAc,KAAK,YAC3C,OAAO,OAAO,CAAC,GAAGO,GAAc;AAAA,MACnC,MAAM,KAAK,UAAUP,CAAQ;AAAA,MAC7B,aAAa;AAAA,IAAA,CAChB;AAAA,EACL;AAAA,EAEQ,iBAAiBvC,GAAgB;AAC9B,WAAA,KAAK,QAAQ,KAAK,CAAChC,MAAU,CAAC,CAACA,EAAM,QAAQgC,EAAO;AAAA,EAC/D;AACJ;AAEA,MAAA+C,KAAejB;AC7Of,MAAMkB,GAAM;AAAA,EAOR,YAAoB5E,GAAsB;AANlC,IAAA8D,EAAA,iBAAU;AACV,IAAAA,EAAA,mCAA4B;AAC5B,IAAAA,EAAA,kCAA2B;AAC3B,IAAAA,EAAA,+BAAwB;AACxB,IAAAA,EAAA,iCAA0B;AAEd,SAAA,YAAA9D;AAAA,EAAuB;AAAA,EAEnC,OAAOnC,GAAoB;AAC3B,QAAAiD;AACJ,YAAQjD,GAAM;AAAA,MACV,KAAK;AACD,QAAAiD,IAAM,KAAK;AACX;AAAA,MACJ,KAAK;AACD,QAAAA,IAAM,KAAK;AACX;AAAA,MACJ,KAAK;AACD,QAAAA,IAAM,KAAK;AACX;AAAA,MACJ,KAAK;AACD,QAAAA,IAAM,KAAK;AACX;AAAA,IAIR;AACO,WAAAA;AAAA,EACX;AAAA,EAMM,KAAKjD,GAA8C;AAAA,WAAAmD,EAAA;AAC/C,YAAAF,IAAM,KAAK,OAAOjD,CAAI;AAC5B,UAAI,GAAC,KAAK,WAAW,CAACiD;AAIf,eAAA+D,EAAY,KAAK,WAAW/D,CAAG;AAAA,IAC1C;AAAA;AAAA,EAEM,MAAMX,GAAWtC,GAAoB;AAAA,WAAAmD,EAAA;AACjC,YAAAF,IAAM,KAAK,OAAOjD,CAAI;AAC5B,UAAI,CAAC,KAAK,WAAW,CAACiD;AAClB;AAIJ,OADc,MAAMgE,EAAoB,KAAK,WAAWhE,GAAKiE,EAAgB,SAAS,GAChF5E,CAAI;AAAA,IACd;AAAA;AACJ;AAEA,MAAA6E,KAAeJ;AC1Df,MAAMK,GAAqB;AAAA,EAQvB,YACYjF,GACAkF,GACRjF,GACF;AAXM,IAAA6D,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA,gBAAyB,CAAA;AACzB,IAAAA,EAAA;AAGI,SAAA,YAAA9D,GACA,KAAA,eAAAkF;AAGR,UAAM,EAAE,QAAAtB,EAAO,IAAI,KAAK,UAAU,IAAI,SAAS;AAC/C,SAAK,SAASA,GACT,KAAA,QAAQ,IAAIgB,GAAM5E,CAAS,GAC3B,KAAA,QAAQkF,EAAa,YAAY;AAAA,MAClC,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ;AAAA,IAAA,CACX,GACD,KAAK,OAAOA,EAAa;AACnB,UAAAvB,IAAW5D,GAAwBC,GAAWC,CAAS;AACxD,SAAA,aAAa,IAAIyD,GAAWC,GAAUC,GAAQ,KAAK,OAAO,KAAK,SAAS,GAE7E,KAAK,OAAO,UAAU,yBAAyB,CAACuB,GAAQhF,MAAiC;AACrF,WAAK,sBAAsBA,CAAI;AAAA,IAAA,CAClC,GAED,KAAK,OAAO;AAAA,MACR;AAAA,MACA,CAAOgF,GAAQhF,MAAqEa,EAAA;AAChF,cAAMqD,IAAW,MAAM,KAAK,WAAW,wBAAwBlE,CAAI;AAEnE,QAAIkE,MACMlE,EAAK,cAAc,SAAY,KAAA,iBAAiBA,EAAK,cAAc,KAAK,GAC9E,KAAK,mBAAmBkE,CAAQ;AAAA,MAExC;AAAA,IAAA;AAAA,EAER;AAAA,EAEM,aAAa;AAAA,WAAArD,EAAA;;AACT,YAAAoE,IAAS,KAAK,aAAa,QAAQ,GAEnCC,IAAa,MAAM,KAAK,MAAM,KAAK,MAAM;AAC/C,MAAIA,KAAA,QAAAA,EAAY,SACZ,KAAK,MAAM,OAAO;AAAA,QACd,MAAMA,EAAW,MAAM;AAAA,QACvB,QAAQA,EAAW,MAAM;AAAA,MAAA,CAC5B;AAGL,YAAMC,IAAa,MAAM,KAAK,aAAa,aAAa,GAElDjB,IAAW,MAAM,KAAK,WAAW,MAAM;AAAA,QACzC,UAAQ9D,IAAA,KAAK,aAAa,YAAlB,gBAAAA,EAA2B,WAAU+E;AAAA,MAAA,CAChD;AACD,MAAIjB,KACA,KAAK,mBAAmBA,CAAQ,GAG7Be;IACX;AAAA;AAAA,EAEM,mBAAmBG,GAAwB;AAAA,WAAAvE,EAAA;AAC7C,WAAK,SAAS,KAAK,OAAO,OAAOuE,CAAM,GAChCA,EAAA,QAAQ,CAACnE,MAAU;AACtB,cAAMnD,IAAQmD,EAAM,MAAM,IAAI,CAAC8B,MAASA,EAAK,OAAO;AACpD,QAAI9B,EAAM,SACNA,EAAM,SAAS,KAAK,KAAK,MAAMnD,CAAK,IAEpCmD,EAAM,SAAS,KAAK,MAAM,MAAMnD,CAAK;AAAA,MACzC,CACH;AAAA,IACL;AAAA;AAAA,EAEM,QAAQ2D,GAA4E;AAAA,WAAAZ,EAAA;AACtF,YAAMwE,IAAY,OAAO5D,KAAW,WAAWA,IAASA,EAAO;AAE/D,cAAQ4D,GAAW;AAAA,QACf,KAAK;AACD;AACQ,gBAAA,OAAO5D,KAAW;AAClB;AAEE,kBAAAR,IAAQ,KAAK,OAAO,KAAK,CAACiC;;AAAU,qBAAAA,EAAM,SAAO9C,IAAAqB,EAAO,SAAP,gBAAArB,EAAa;AAAA,aAAO;AAE3E,gBAAIa,GAAO;AACP,oBAAMiD,IAAW,MAAM,KAAK,WAAW,WAAWjD,CAAK;AACvD,kBAAIiD,GAAU;AACV,sBAAMoB,IAAWpB,EAAS,MAAM,IAAI,CAACnB,MAASA,EAAK,OAAO;AACpD,gBAAA9B,EAAA,KAAK,SAASiD,KAAA,gBAAAA,EAAU,KAAK,QAC7BjD,EAAA,OAAO,OAAOqE,CAAQ;AAAA,cAChC;AAAA,YACJ;AAAA,UACJ;AACA;AAAA,QACJ,KAAK;AACD;AACU,kBAAAL,IAAS,KAAK,aAAa,QAAQ,GAEnCf,IAAW,MAAM,KAAK,WAAW,WAAW;AAC3C,YAAAe,KACHf,KACA,KAAK,mBAAmBA,CAAQ;AAAA,UAExC;AACA;AAAA,QACJ;AACI;AACI,YAAI,OAAOzC,KAAW,YAAYA,EAAO,SAChC,KAAA,iBAAiBA,EAAO,KAAK;AAEhC,kBAAAwD,IAAS,KAAK,aAAa,QAAQ,GACnCf,IAAW,MAAM,KAAK,WAAW,cAAcmB,CAAS;AAC9D,YAAInB,KACA,KAAK,mBAAmBA,CAAQ,GAE7Be;UACX;AACA;AAAA,MACR;AAAA,IACJ;AAAA;AAAA,EAEQ,iBAAiBjE,GAAiB;AACtC,UAAMC,IAAQrD,EAAY;AAAA,MACtB,QAAQ;AAAA,MACR,OAAO;AAAA,QACH;AAAA,UACI,IAAIK,EAAK;AAAA,UACT,QAAQ;AAAA,UACR,SAAS,CAAC0B,EAAgC,MAAM,EAAE,MAAMqB,GAAS;AAAA,QACrE;AAAA,MACJ;AAAA,IAAA,CACH;AACI,gBAAA,mBAAmB,CAACC,CAAK,CAAC,GACxBA;AAAA,EACX;AAAA,EAEM,cAAcD,GAAiB;AAAA,WAAAH,EAAA;AAC3B,YAAAoE,IAAS,KAAK,aAAa,QAAQ,GACnCf,IAAW,MAAM,KAAK,WAAW,YAAYlD,CAAO;AAE1D,YAAMN,EAA0B,KAAK,WAAW,UAAUM,CAAO,GAEjE,KAAK,iBAAiBA,CAAO,GAEzBkD,KACA,KAAK,mBAAmBA,CAAQ,GAE7Be;IACX;AAAA;AAAA,EAEc,sBAAsBjF,GAA8B;AAAA,WAAAa,EAAA;AAC9D,UAAIb,EAAK,OAAO;AACZ,cAAMuF,IAAgB;AAAA,UAClB,MAAMvF,EAAK,MAAM;AAAA,UACjB,QAAQA,EAAK,MAAM;AAAA,QAAA;AAElB,aAAA,MAAM,OAAOuF,CAAa,IACjB,MAAMZ;AAAA,UAChB,KAAK;AAAA,UACL;AAAA,UACAC,EAAgB;AAAA,QAAA,GAEd;AAAA,UACF,OAAOW;AAAA,QAAA,CACV;AAAA,MACL;AAAA,IACJ;AAAA;AACJ;AAEA,MAAAC,KAAeV,IC/KTW,KAA6B,CAAO5F,MAAyBgB,EAAA;AAC/D,QAAM6E,IAAW,MAAMC,EAAqB,YAAY9F,CAAS;AAEjE,EAAA+F;AAAA,IACI/F;AAAA,IACAtC,EAAmB;AAAA,IACnB,OAAO;AAAA,EAAA,GAEXqI;AAAA,IACI/F;AAAA,IACAtC,EAAmB;AAAA,IACnB,OAAO;AAAA,EAAA,GAGXqI;AAAA,IACI/F;AAAA,IACAtC,EAAmB;AAAA,IACnB,OAAO;AAAA,EAAA,GAEXqI;AAAA,IACI/F;AAAA,IACAtC,EAAmB;AAAA,IACnB,OAAO;AAAA,EAAA,GAEXqI;AAAA,IACI/F;AAAA,IACAtC,EAAmB;AAAA,IACnB,OAAO;AAAA,EAAA,GAGXmI,EAAS,iBAAiB,qBAAqB,CAACX,GAAcjF,MAAc;AACxE,UAAM+F,IAAW,IAAIf,GAAqBjF,GAAWkF,GAAcjF,CAAS;AAC5E,IAAA+F,EAAS,WAAW;AAEpB,UAAMC,IAAuB,CAAA;AACf,WAAAA,EAAA;AAAA,MACVhG,EAAU,QAAQ,MAAM,4BAA4B,CAACiG,GAAOC,MAAS;AACxD,QAAAH,EAAA,cAAcE,EAAM,IAAI;AAAA,MAAA,CACpC;AAAA,IAAA,GAGSD,EAAA;AAAA,MACVhG,EAAU,QAAQ,MAAM,uBAAuB,CAACiG,GAAOC,OACnDH,EAAS,QAAQE,CAAK,GAEfC,EAAKD,CAAK,EACpB;AAAA,IAAA,GAGSD,EAAA;AAAA,MACVhG,EAAU,QAAQ,OAAO,YAAY,CAACiG,MAAU;AAC5C,cAAM,EAAE,QAAAtC,EAAW,IAAA5D,EAAU,IAAI,SAAS;AACnC,QAAA4D,EAAA,SAAS,yBAAyBsC,CAAK;AAAA,MAAA,CACjD;AAAA,IAAA,GAGSD,EAAA;AAAA,MACVhG,EAAU,QAAQ,OAAO,UAAU,CAACiG,MAAU;AAC1C,cAAM,EAAE,QAAAtC,EAAW,IAAA5D,EAAU,IAAI,SAAS;AACnC,QAAA4D,EAAA,SAAS,+BAA+BsC,CAAK;AAAA,MAAA,CACvD;AAAA,IAAA,GAGE,MAAM;AAEK,MAAAD,EAAA,QAAQ,CAACG,MAAgB;AACvB,QAAAA;MAAA,CACf;AAAA,IAAA;AAAA,EACL,CACH;AACL,IAEAC,KAAeT;"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { K as n } from "./index.4cc04b4e.js";
1
+ import { K as n } from "./index.a97894e5.js";
2
2
  import "@telia-ace/widget-conversation";
3
3
  import "@telia-ace/widget-services";
4
4
  import "@telia-ace/widget-utilities";
@@ -1,11 +1,11 @@
1
- import o from "@emotion/styled";
2
- import { useDispatch as l, SymbolBadge as r, Button as a, borderTabStyle as i } from "@telia-ace/knowledge-widget-ui";
3
- import n from "react";
4
- import { m as s } from "./styles.a00306c5.js";
1
+ import n from "@emotion/styled";
2
+ import { useDispatch as a, SymbolBadge as r, Button as s, borderTabStyle as i } from "@telia-ace/knowledge-widget-ui";
3
+ import o from "react";
4
+ import { m as l } from "./styles.a00306c5.js";
5
5
  import "@emotion/react";
6
6
  const h = ({ body: e }) => {
7
- const t = l();
8
- return /* @__PURE__ */ n.createElement(m, null, /* @__PURE__ */ n.createElement(
7
+ const t = a();
8
+ return /* @__PURE__ */ o.createElement(m, { className: "humany-bot-no-good-alternative" }, /* @__PURE__ */ o.createElement(
9
9
  c,
10
10
  {
11
11
  onClick: () => {
@@ -14,7 +14,7 @@ const h = ({ body: e }) => {
14
14
  "aria-label": e,
15
15
  title: e
16
16
  },
17
- /* @__PURE__ */ n.createElement(
17
+ /* @__PURE__ */ o.createElement(
18
18
  r,
19
19
  {
20
20
  size: 14,
@@ -24,14 +24,14 @@ const h = ({ body: e }) => {
24
24
  }
25
25
  }
26
26
  ),
27
- /* @__PURE__ */ n.createElement("span", null, e)
27
+ /* @__PURE__ */ o.createElement("span", null, e)
28
28
  ));
29
- }, m = o.div`
29
+ }, m = n.div`
30
30
  display: flex;
31
31
  align-items: center;
32
32
  justify-content: center;
33
- ${s}
34
- `, c = o(a)`
33
+ ${l}
34
+ `, c = n(s)`
35
35
  > i,
36
36
  svg {
37
37
  margin-right: ${(e) => {
@@ -47,4 +47,4 @@ const h = ({ body: e }) => {
47
47
  export {
48
48
  h as default
49
49
  };
50
- //# sourceMappingURL=no-good-alternative.e5e48f22.js.map
50
+ //# sourceMappingURL=no-good-alternative.e9155cb9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-good-alternative.e9155cb9.js","sources":["../src/ui/no-good-alternative.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { borderTabStyle, Button, SymbolBadge, useDispatch } from '@telia-ace/knowledge-widget-ui';\nimport React from 'react';\nimport { messageContentPadding } from './styles';\n\ntype Props = {\n body: string;\n};\nconst NoGoodAlternative: React.FC<Props> = ({ body }) => {\n const dispatch = useDispatch();\n return (\n <Wrapper className=\"humany-bot-no-good-alternative\">\n <StyledButton\n onClick={() => {\n dispatch('action', 'help');\n }}\n aria-label={body}\n title={body}\n >\n <SymbolBadge\n size={14}\n symbol={{\n type: 'FontAwesome',\n content: 'meh-o',\n }}\n />\n <span>{body}</span>\n </StyledButton>\n </Wrapper>\n );\n};\n\nexport default NoGoodAlternative;\n\nconst Wrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n ${messageContentPadding}\n`;\n\nconst StyledButton = styled(Button)`\n > i,\n svg {\n margin-right: ${(p) => p.theme.sizes?.small};\n }\n\n &:focus-visible {\n ${borderTabStyle}\n }\n`;\n"],"names":["NoGoodAlternative","body","dispatch","useDispatch","React","Wrapper","StyledButton","SymbolBadge","styled","messageContentPadding","Button","p","_a","borderTabStyle"],"mappings":";;;;;AAQA,MAAMA,IAAqC,CAAC,EAAE,MAAAC,QAAW;AACrD,QAAMC,IAAWC;AAEb,SAAA,gBAAAC,EAAA,cAACC,GAAQ,EAAA,WAAU,iCACf,GAAA,gBAAAD,EAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACG,SAAS,MAAM;AACX,QAAAJ,EAAS,UAAU,MAAM;AAAA,MAC7B;AAAA,MACA,cAAYD;AAAA,MACZ,OAAOA;AAAA,IAAA;AAAA,IAEP,gBAAAG,EAAA;AAAA,MAACG;AAAA,MAAA;AAAA,QACG,MAAM;AAAA,QACN,QAAQ;AAAA,UACJ,MAAM;AAAA,UACN,SAAS;AAAA,QACb;AAAA,MAAA;AAAA,IACJ;AAAA,IACA,gBAAAH,EAAA,cAAC,cAAMH,CAAK;AAAA,EAAA,CAEpB;AAER,GAIMI,IAAUG,EAAO;AAAA;AAAA;AAAA;AAAA,MAIjBC;AAAA,GAGAH,IAAeE,EAAOE,CAAM;AAAA;AAAA;AAAA,wBAGV,CAACC,MAAM;;AAAA,UAAAC,IAAAD,EAAE,MAAM,UAAR,gBAAAC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA,UAIpCC;AAAA;AAAA;"}
@@ -0,0 +1,67 @@
1
+ var N = Object.defineProperty;
2
+ var n = Object.getOwnPropertySymbols;
3
+ var m = Object.prototype.hasOwnProperty, d = Object.prototype.propertyIsEnumerable;
4
+ var l = (t, i, o) => i in t ? N(t, i, { enumerable: !0, configurable: !0, writable: !0, value: o }) : t[i] = o, f = (t, i) => {
5
+ for (var o in i || (i = {}))
6
+ m.call(i, o) && l(t, o, i[o]);
7
+ if (n)
8
+ for (var o of n(i))
9
+ d.call(i, o) && l(t, o, i[o]);
10
+ return t;
11
+ };
12
+ var c = (t, i) => {
13
+ var o = {};
14
+ for (var e in t)
15
+ m.call(t, e) && i.indexOf(e) < 0 && (o[e] = t[e]);
16
+ if (t != null && n)
17
+ for (var e of n(t))
18
+ i.indexOf(e) < 0 && d.call(t, e) && (o[e] = t[e]);
19
+ return o;
20
+ };
21
+ import b from "@emotion/styled";
22
+ import { NotificationList as y } from "@telia-ace/knowledge-widget-ui";
23
+ import { appendClassNames as L } from "@telia-ace/widget-utilities";
24
+ import g, { useMemo as h } from "react";
25
+ import { m as x } from "./styles.a00306c5.js";
26
+ import "@emotion/react";
27
+ const P = (w) => {
28
+ var s = w, { id: t, header: i, items: o, symbol: e, className: p } = s, u = c(s, ["id", "header", "items", "symbol", "className"]);
29
+ const r = h(() => ({
30
+ id: t,
31
+ title: i,
32
+ symbol: e,
33
+ defaultHeaderOptions: {
34
+ visible: !0
35
+ },
36
+ notifications: o.map((a) => ({
37
+ id: a.id.toString(),
38
+ title: a.title,
39
+ body: a.body,
40
+ modified: a.modified,
41
+ expandable: !0
42
+ }))
43
+ }), [i, o]);
44
+ return r ? /* @__PURE__ */ g.createElement(
45
+ $,
46
+ f({
47
+ className: L("humany-bot-notification-list", p),
48
+ showHeader: !0,
49
+ notificationList: r,
50
+ loading: !1
51
+ }, u)
52
+ ) : null;
53
+ }, $ = b(y)`
54
+ ${x}
55
+ min-width: 10em;
56
+
57
+ span {
58
+ color: ${(t) => {
59
+ var i;
60
+ return (i = t.theme.colors) == null ? void 0 : i.text;
61
+ }};
62
+ }
63
+ `;
64
+ export {
65
+ P as default
66
+ };
67
+ //# sourceMappingURL=notification-list.7fd5ba2b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-list.7fd5ba2b.js","sources":["../src/ui/notification-list.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { NotificationList as NotificationListUi, Symbol } from '@telia-ace/knowledge-widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { useMemo } from 'react';\nimport { messageContentPadding } from './styles';\n\ntype Props = {\n id: string;\n header: string;\n items: any[];\n symbol?: Symbol;\n className?: string;\n};\nconst NotificationList: React.FC<Props> = ({ id, header, items, symbol, className, ...other }) => {\n const list = useMemo(() => {\n return {\n id: id,\n title: header,\n symbol,\n defaultHeaderOptions: {\n visible: true,\n },\n notifications: items.map((item) => ({\n id: item.id.toString(),\n title: item.title,\n body: item.body,\n modified: item.modified,\n expandable: true,\n })),\n };\n }, [header, items]);\n\n if (!list) {\n return null;\n }\n\n return (\n <StyledNotificationListUi\n className={appendClassNames('humany-bot-notification-list', className)}\n showHeader={true}\n notificationList={list}\n loading={false}\n {...other}\n />\n );\n};\n\nexport default NotificationList;\n\nconst StyledNotificationListUi = styled(NotificationListUi)`\n ${messageContentPadding}\n min-width: 10em;\n\n span {\n color: ${(p) => p.theme.colors?.text};\n }\n`;\n"],"names":["NotificationList","_a","_b","id","header","items","symbol","className","other","__objRest","list","useMemo","item","React","StyledNotificationListUi","__spreadValues","appendClassNames","styled","NotificationListUi","messageContentPadding","p"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAaM,MAAAA,IAAoC,CAACC,MAAuD;AAAvD,MAAAC,IAAAD,GAAE,MAAAE,GAAI,QAAAC,GAAQ,OAAAC,GAAO,QAAAC,GAAQ,WAAAC,MAA7BL,GAA2CM,IAAAC,EAA3CP,GAA2C,CAAzC,MAAI,UAAQ,SAAO,UAAQ;AAC9D,QAAAQ,IAAOC,EAAQ,OACV;AAAA,IACH,IAAAR;AAAA,IACA,OAAOC;AAAA,IACP,QAAAE;AAAA,IACA,sBAAsB;AAAA,MAClB,SAAS;AAAA,IACb;AAAA,IACA,eAAeD,EAAM,IAAI,CAACO,OAAU;AAAA,MAChC,IAAIA,EAAK,GAAG,SAAS;AAAA,MACrB,OAAOA,EAAK;AAAA,MACZ,MAAMA,EAAK;AAAA,MACX,UAAUA,EAAK;AAAA,MACf,YAAY;AAAA,IAAA,EACd;AAAA,EAAA,IAEP,CAACR,GAAQC,CAAK,CAAC;AAElB,SAAKK,IAKD,gBAAAG,EAAA;AAAA,IAACC;AAAA,IAAAC,EAAA;AAAA,MACG,WAAWC,EAAiB,gCAAgCT,CAAS;AAAA,MACrE,YAAY;AAAA,MACZ,kBAAkBG;AAAA,MAClB,SAAS;AAAA,OACLF;AAAA,EAAA,IATD;AAYf,GAIMM,IAA2BG,EAAOC,CAAkB;AAAA,MACpDC;AAAA;AAAA;AAAA;AAAA,iBAIW,CAACC,MAAM;;AAAA,UAAAnB,IAAAmB,EAAE,MAAM,WAAR,gBAAAnB,EAAgB;AAAA;AAAA;AAAA;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telia-ace/knowledge-widget-bot-provider",
3
- "version": "0.0.23-next.4",
3
+ "version": "0.0.23-next.6",
4
4
  "description": "Bot Provider Plugin ACE Knowledge Widgets.",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "Telia Company AB",
@@ -21,9 +21,9 @@
21
21
  },
22
22
  "sideEffects": false,
23
23
  "dependencies": {
24
- "@telia-ace/knowledge-data-client": "1.0.9-next.4",
25
- "@telia-ace/knowledge-widget-adapters": "1.0.52-next.4",
26
- "@telia-ace/knowledge-widget-ui": "1.0.48-next.4",
24
+ "@telia-ace/knowledge-data-client": "1.0.9-next.6",
25
+ "@telia-ace/knowledge-widget-adapters": "1.0.52-next.6",
26
+ "@telia-ace/knowledge-widget-ui": "1.0.48-next.6",
27
27
  "@telia-ace/widget-conversation": "^1.0.40-next.2",
28
28
  "@telia-ace/widget-forms": "^1.0.34-next.2",
29
29
  "@telia-ace/widget-services": "^1.0.27-next.2",
@@ -38,7 +38,7 @@
38
38
  "devDependencies": {
39
39
  "@emotion/react": "^11.11.1",
40
40
  "@emotion/styled": "^11.11.0",
41
- "@telia-ace/knowledge-widget-core": "1.0.42-next.4",
41
+ "@telia-ace/knowledge-widget-core": "1.0.42-next.6",
42
42
  "@types/react": "^18.2.19",
43
43
  "@webprovisions/platform": "^1.1.3",
44
44
  "react": "^18.2.0"