@telia-ace/knowledge-widget-bot-provider 0.0.1-alpha.53 → 0.0.1-alpha.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/contact-method-list.fa7c8f40.js +88 -0
- package/dist/contact-method-list.fa7c8f40.js.map +1 -0
- package/dist/contact-method.23cd338c.js +116 -0
- package/dist/contact-method.23cd338c.js.map +1 -0
- package/dist/feedback-list.911dcc3c.js +70 -0
- package/dist/feedback-list.911dcc3c.js.map +1 -0
- package/dist/index.1161f855.js +664 -0
- package/dist/index.1161f855.js.map +1 -0
- package/dist/index.js +4 -1
- package/dist/no-good-alternative.ae1f1e39.js +46 -0
- package/dist/no-good-alternative.ae1f1e39.js.map +1 -0
- package/dist/notification-list.976cfcb5.js +62 -0
- package/dist/notification-list.976cfcb5.js.map +1 -0
- package/dist/styles.4d9197a0.js +15 -0
- package/dist/styles.4d9197a0.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/utils.d.ts +1 -1
- package/package.json +13 -9
- package/dist/contact-method-list.js +0 -111
- package/dist/contact-method-list.js.map +0 -1
- package/dist/contact-method.js +0 -154
- package/dist/contact-method.js.map +0 -1
- package/dist/feedback-list.js +0 -72
- package/dist/feedback-list.js.map +0 -1
- package/dist/index2.js +0 -914
- package/dist/index2.js.map +0 -1
- package/dist/no-good-alternative.js +0 -46
- package/dist/no-good-alternative.js.map +0 -1
- package/dist/notification-list.js +0 -74
- package/dist/notification-list.js.map +0 -1
- package/dist/styles.js +0 -13
- package/dist/styles.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.1161f855.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';\r\n\r\nexport enum CustomMessageTypes {\r\n ContactMethod = 'ace-knowledge-bot-contact-method',\r\n ContactList = 'ace-knowledge-bot-contact-list',\r\n FeedbackList = 'ace-knowledge-bot-feedback-list',\r\n NotificationList = 'ace-knowledge-bot-notification-list',\r\n NoGoodAlternative = 'ace-knowledge-bot-no-good-alternative',\r\n}\r\n\r\ntype LooseObject = { [key: string]: any };\r\n\r\nexport interface ActionItem {\r\n label: string;\r\n actionKey: string;\r\n data?: any;\r\n}\r\n\r\nexport interface MessageGroup {\r\n id: string;\r\n isUser: boolean;\r\n items: MessageGroupItem[];\r\n writer?: any;\r\n meta: { [key: string]: any };\r\n}\r\n\r\nexport interface MessageGroupItem {\r\n id: string;\r\n groupId: string;\r\n isUser: boolean;\r\n message: [ConversationMessageListItemType | CustomMessageTypes, any];\r\n}\r\n\r\nexport interface ClientEnvelope {\r\n command?: LooseObject;\r\n action?: {\r\n key: string;\r\n content: any;\r\n };\r\n globalState?: LooseObject;\r\n localState?: LooseObject;\r\n clientId?: string;\r\n funnel?: string;\r\n}\r\n\r\nexport interface ServerEnvelope {\r\n clientId?: string | undefined;\r\n entries: ServerEntry[];\r\n globalState?: GlobalState;\r\n resolveCommand?: string;\r\n clientEnvelope?: ClientEnvelope;\r\n}\r\n\r\nexport interface GlobalState {\r\n completedInteractionsCount: number;\r\n lastQuestion?: string;\r\n lastBotGuide: number;\r\n lastGuideTitle?: string;\r\n site: string;\r\n invincibleParameters: object;\r\n}\r\n\r\nexport interface ServerEntry {\r\n id: string;\r\n type: string;\r\n content: any;\r\n actions: { [key: string]: any };\r\n tags: string[];\r\n relation?: string;\r\n timestamp: string;\r\n localState?: { [key: string]: any };\r\n}\r\n\r\nexport interface ListContent {\r\n header?: string;\r\n actions: ActionItem[];\r\n contactMethodIds?: string[];\r\n entryId: string;\r\n groupId: string;\r\n}\r\n","import { ContactMethodType } from '@telia-ace/knowledge-widget-adapters';\r\nimport { ConversationMessageListItemType } from '@telia-ace/widget-conversation';\r\nimport { FormBuilder, submitButton } from '@telia-ace/widget-forms';\r\nimport { Symbol } from '@telia-ace/widget-ui';\r\nimport { uuid } from '@telia-ace/widget-utilities';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { CustomMessageTypes, MessageGroup, MessageGroupItem } from './types';\r\n\r\nconst convertLegacySymbol = (symbol?: { type: string; content: string }): Symbol | undefined => {\r\n if (symbol) {\r\n const { type, content } = symbol;\r\n if (type && content) {\r\n return { type, content };\r\n }\r\n }\r\n};\r\n\r\nexport const createGroup = ({\r\n isUser,\r\n items = [],\r\n meta = {},\r\n}: {\r\n isUser: boolean;\r\n items?: Partial<MessageGroupItem>[];\r\n meta?: MessageGroup['meta'];\r\n}) => {\r\n const groupId = uuid();\r\n\r\n const group = {\r\n id: groupId,\r\n isUser,\r\n items: items.map((i) => {\r\n return {\r\n id: i.id || uuid(),\r\n isUser: isUser,\r\n groupId: groupId,\r\n message: i.message || [],\r\n };\r\n }),\r\n meta,\r\n } as MessageGroup;\r\n\r\n return group;\r\n};\r\n\r\nexport const contactMethodFromLegacy = (\r\n {\r\n id,\r\n title,\r\n defaultIcon,\r\n exits: [exit],\r\n exitType,\r\n confirmationText,\r\n expandFormAutomatically,\r\n form,\r\n description,\r\n }: any,\r\n options: {\r\n validation?: any;\r\n guideId?: string;\r\n } = {}\r\n): any => {\r\n const { adapter } = exit || { Adapter: {} };\r\n const { clientName = '', settings: adapterSettings = {}, customClientName = '' } = adapter;\r\n const { validation } = options;\r\n\r\n const settings: any = {\r\n id: id.toString(),\r\n title: title,\r\n description: description,\r\n symbol: convertLegacySymbol(defaultIcon),\r\n clientName: clientName === 'custom.adapter' ? customClientName : clientName,\r\n expanded: true,\r\n inline: true,\r\n body: {},\r\n };\r\n\r\n if (clientName.indexOf('phone') > -1 || clientName.indexOf('freetext') > -1) {\r\n const { displayTextBeforeClick, textBeforeClick } = adapterSettings;\r\n if (displayTextBeforeClick === 'true') {\r\n settings.expanded = false;\r\n settings.title = textBeforeClick;\r\n }\r\n\r\n if (clientName.indexOf('phone.text') > -1) {\r\n settings.body.phoneNumber = adapterSettings.phoneNumber;\r\n } else {\r\n settings.body.freetext = adapterSettings.freetext;\r\n }\r\n }\r\n\r\n if (\r\n clientName.indexOf('chat.popup') > -1 ||\r\n clientName.indexOf('link') > -1 ||\r\n (clientName === 'custom.adapter' && exitType === 'custom')\r\n ) {\r\n settings.body = adapterSettings;\r\n settings.body.confirmationFallback = confirmationText;\r\n }\r\n\r\n if (clientName.indexOf('ace') > -1) {\r\n settings.body = adapterSettings;\r\n }\r\n\r\n if (form && form.hasValueComponents) {\r\n if (validation) {\r\n settings.body.form = FormBuilder.fromLegacyForm(id.toString(), form, validation).get();\r\n } else {\r\n settings.body.form = FormBuilder.fromLegacyForm(id.toString(), form).get();\r\n }\r\n if (!expandFormAutomatically) {\r\n settings.expanded = settings.inline = false;\r\n }\r\n\r\n settings.body = updateForm(settings, { submit: 'Submit' });\r\n }\r\n\r\n if (options.guideId) {\r\n settings.body.guideId = options.guideId;\r\n }\r\n\r\n return settings;\r\n};\r\n\r\nexport const getListType = (state: any) => {\r\n if (state?.$type === 'Humany.Matching.Bots.Conversations.GuideListState, Humany.Matching') {\r\n return ConversationMessageListItemType.LinkList;\r\n } else if (\r\n state?.$type ===\r\n 'Humany.Matching.Bots.Conversations.States.GuideFeedbackState, Humany.Matching'\r\n ) {\r\n return CustomMessageTypes.FeedbackList;\r\n } else if (\r\n state?.$type === 'Humany.Matching.Bots.Conversations.States.ContactState, Humany.Matching'\r\n ) {\r\n return CustomMessageTypes.ContactList;\r\n } else return ConversationMessageListItemType.ButtonList;\r\n};\r\n\r\nexport const getKnowledgeBotEndpoint = (\r\n container: Container,\r\n component: any /*: ComponentNodeController */\r\n) => {\r\n const { knowledgeBotEndpoint } = component.properties();\r\n\r\n if (knowledgeBotEndpoint) {\r\n return `${knowledgeBotEndpoint}/conversations`;\r\n }\r\n\r\n const { data } = container.get('$settings');\r\n\r\n if (!data || !data.projection) throw new Error('Missing Knowledge Bot endpoint');\r\n\r\n return `${data.projection}/conversations`;\r\n};\r\n\r\nexport const updateForm = (\r\n contactMethod: ContactMethodType,\r\n {\r\n submit,\r\n errors,\r\n meta,\r\n }: { submit: string; errors?: { [key: string]: string }; meta?: { [key: string]: string } }\r\n): any => {\r\n if (contactMethod?.body?.form) {\r\n const { body } = contactMethod;\r\n const builder = new FormBuilder(body.form);\r\n\r\n if (!body.form.layout.submit) {\r\n builder.createComponent(submitButton(submit, 'submit'));\r\n }\r\n\r\n if (errors) {\r\n builder.setValidationErrors(errors);\r\n }\r\n\r\n if (meta) {\r\n (builder as any).setMeta(meta);\r\n }\r\n\r\n return {\r\n ...body,\r\n form: builder.get(),\r\n };\r\n }\r\n return contactMethod?.body || {};\r\n};\r\n","import { ConversationMessageListItemType } from '@telia-ace/widget-conversation';\r\nimport { uuid } from '@telia-ace/widget-utilities';\r\nimport {\r\n ActionItem,\r\n CustomMessageTypes,\r\n ListContent,\r\n MessageGroup,\r\n MessageGroupItem,\r\n ServerEntry,\r\n} from './types';\r\nimport { contactMethodFromLegacy, createGroup, getListType } from './utils';\r\n\r\nconst createGroupItem = ({\r\n messageId,\r\n message,\r\n group,\r\n}: {\r\n messageId: string;\r\n message: MessageGroupItem['message'];\r\n group: MessageGroup;\r\n}) => {\r\n return {\r\n id: messageId,\r\n message,\r\n groupId: group.id,\r\n isUser: group.isUser,\r\n };\r\n};\r\n\r\nexport const processEntries = async (entries: ServerEntry[], prevGroup?: MessageGroup) => {\r\n const createListContent = (\r\n listType: string,\r\n entry: ServerEntry,\r\n groupId: string,\r\n listContent: ListContent = {\r\n actions: [],\r\n entryId: entry.id,\r\n groupId,\r\n }\r\n ) => {\r\n const contactMethodIds: string[] = [];\r\n\r\n listContent.actions = entry.content.items.map((i: any) => {\r\n const action = {\r\n label: i.title,\r\n actionKey: i.actionKey,\r\n symbol: !!i.symbol ? i.symbol : undefined,\r\n } as ActionItem;\r\n\r\n if (i.data) {\r\n const entryAction = entry.actions[i.actionKey];\r\n if (listType === CustomMessageTypes.ContactList) {\r\n contactMethodIds.push(i.data.id);\r\n action.data = contactMethodFromLegacy(i.data, {\r\n guideId: entryAction?.guideId?.toString(),\r\n });\r\n } else {\r\n action.data = i.data;\r\n }\r\n }\r\n return action;\r\n });\r\n\r\n if (listType === CustomMessageTypes.ContactList) {\r\n listContent.contactMethodIds = contactMethodIds;\r\n }\r\n\r\n return listContent;\r\n };\r\n\r\n const transform = async (\r\n entry: ServerEntry,\r\n group: MessageGroup,\r\n related: ServerEntry[] = [],\r\n prevGroup?: MessageGroup\r\n ) => {\r\n const messageId = uuid();\r\n\r\n switch (entry.type) {\r\n case 'List':\r\n {\r\n const { header, items, html } = entry.content;\r\n\r\n const result = [];\r\n\r\n let listContent = {\r\n actions: [],\r\n entryId: entry.id,\r\n groupId: group.id,\r\n } as ListContent;\r\n\r\n if (header) {\r\n listContent.header = header;\r\n }\r\n\r\n if (items?.length > 0) {\r\n const listType = getListType(entry.localState);\r\n listContent = createListContent(listType, entry, group.id, listContent);\r\n\r\n // entry has related entries\r\n if (!!related.length) {\r\n const pagingEntry = related.find((e) => e.tags.includes('paging'));\r\n const fallbackEntry = related.find((e) => e.tags.includes('fallback'));\r\n\r\n if (pagingEntry?.content) {\r\n group.meta.paging = {\r\n actions: pagingEntry.actions,\r\n items: pagingEntry.content.items,\r\n localState: pagingEntry.localState,\r\n };\r\n pagingEntry.content.items.forEach((i: any) => {\r\n listContent.actions.push({\r\n label: i.title,\r\n actionKey: i.actionKey,\r\n data: {\r\n groupId: !!prevGroup ? prevGroup.id : group.id,\r\n },\r\n });\r\n });\r\n }\r\n\r\n if (fallbackEntry) {\r\n const fallbackAction = fallbackEntry.content.items.find(\r\n (i: any) => i.actionKey === 'help'\r\n );\r\n if (fallbackAction) {\r\n result.push(\r\n createGroupItem({\r\n messageId,\r\n message: [\r\n ConversationMessageListItemType.Separator,\r\n undefined,\r\n ],\r\n group,\r\n })\r\n );\r\n result.push(\r\n createGroupItem({\r\n messageId,\r\n message: [\r\n CustomMessageTypes.NoGoodAlternative,\r\n { body: fallbackAction.title },\r\n ],\r\n group,\r\n })\r\n );\r\n }\r\n }\r\n }\r\n\r\n result.unshift(\r\n createGroupItem({\r\n messageId,\r\n message: [listType, listContent],\r\n group,\r\n })\r\n );\r\n }\r\n\r\n if (html) {\r\n result.unshift(\r\n createGroupItem({\r\n messageId,\r\n message: [ConversationMessageListItemType.HTML, { body: html }],\r\n group,\r\n })\r\n );\r\n }\r\n\r\n return result;\r\n }\r\n break;\r\n case 'Text':\r\n {\r\n const result = [];\r\n result.push(\r\n createGroupItem({\r\n messageId,\r\n message: [\r\n ConversationMessageListItemType.HTML,\r\n { body: entry.content.html },\r\n ],\r\n group,\r\n })\r\n );\r\n\r\n // embedded contact methods\r\n if (!!related.length) {\r\n const contactMethodListEntry = related.find(\r\n (e) =>\r\n e.type === 'List' &&\r\n e.localState?.$type ===\r\n 'Humany.Matching.Bots.Conversations.States.ContactState, Humany.Matching'\r\n );\r\n\r\n const dialogListEntry = related.find((e) => e.tags.includes('dialog'));\r\n const feedbackEntry = related.find((e) => e.tags.includes('feedback'));\r\n\r\n if (dialogListEntry) {\r\n result.push(\r\n createGroupItem({\r\n messageId,\r\n message: [\r\n ConversationMessageListItemType.ButtonList,\r\n {\r\n actions: dialogListEntry.content.items.map((i: any) => {\r\n return {\r\n label: i.title,\r\n actionKey: i.actionKey,\r\n };\r\n }),\r\n },\r\n ],\r\n group,\r\n })\r\n );\r\n }\r\n\r\n if (contactMethodListEntry) {\r\n const listContent = createListContent(\r\n CustomMessageTypes.ContactList,\r\n contactMethodListEntry,\r\n group.id\r\n );\r\n\r\n result.push(\r\n createGroupItem({\r\n messageId,\r\n message: [ConversationMessageListItemType.Separator, undefined],\r\n group,\r\n })\r\n );\r\n\r\n result.push(\r\n createGroupItem({\r\n messageId,\r\n message: [CustomMessageTypes.ContactList, listContent],\r\n group,\r\n })\r\n );\r\n }\r\n\r\n if (feedbackEntry) {\r\n if (feedbackEntry.content.html) {\r\n result.push(\r\n createGroupItem({\r\n messageId,\r\n group,\r\n message: [\r\n ConversationMessageListItemType.HTML,\r\n {\r\n body: feedbackEntry.content.html,\r\n },\r\n ],\r\n })\r\n );\r\n }\r\n result.push(\r\n createGroupItem({\r\n messageId,\r\n group,\r\n message: [\r\n CustomMessageTypes.FeedbackList,\r\n {\r\n actions: feedbackEntry.content.items.map((i: any) => {\r\n return {\r\n actionKey: i.actionKey,\r\n label: i.title,\r\n };\r\n }),\r\n },\r\n ],\r\n })\r\n );\r\n }\r\n }\r\n return result;\r\n }\r\n break;\r\n case 'Contact': {\r\n return [\r\n createGroupItem({\r\n messageId,\r\n message: [\r\n CustomMessageTypes.ContactMethod,\r\n {\r\n contactMethodId: entry.content.id,\r\n groupId: group.id,\r\n guideId: entry.content.guideId,\r\n },\r\n ],\r\n group,\r\n }),\r\n ];\r\n }\r\n case 'CategorizedNoticeList': {\r\n const result = [\r\n createGroupItem({\r\n messageId,\r\n message: [\r\n CustomMessageTypes.NotificationList,\r\n {\r\n id: entry.content.item.id.toString(),\r\n header: entry.content.item.title,\r\n items: entry.content.item.listNotices,\r\n symbol: entry.content.item.defaultIcon,\r\n },\r\n ],\r\n group,\r\n }),\r\n ];\r\n\r\n (entry.content.notices || []).forEach((notice: any) => {\r\n result.push(\r\n createGroupItem({\r\n messageId,\r\n message: [\r\n ConversationMessageListItemType.HTML,\r\n {\r\n body: notice.body,\r\n },\r\n ],\r\n group,\r\n })\r\n );\r\n });\r\n\r\n return result;\r\n }\r\n case 'footerNotice': {\r\n return [\r\n createGroupItem({\r\n messageId,\r\n message: [\r\n ConversationMessageListItemType.HTML,\r\n {\r\n body: entry.content.item.body,\r\n },\r\n ],\r\n group,\r\n }),\r\n ];\r\n }\r\n case 'Error': {\r\n return [\r\n createGroupItem({\r\n messageId,\r\n message: [\r\n ConversationMessageListItemType.HTML,\r\n {\r\n body: entry.content.message || 'Something went wrong.',\r\n },\r\n ],\r\n group,\r\n }),\r\n ];\r\n }\r\n\r\n default:\r\n return [];\r\n }\r\n };\r\n\r\n const splitEntry = (entry: ServerEntry): ServerEntry | ServerEntry[] => {\r\n if (['CategorizedNoticeList', 'NoticeList'].includes(entry.type)) {\r\n return (entry.content.items || []).reduce((acc: any, item: any) => {\r\n if (!entry.content.isInitialNotices) {\r\n return acc;\r\n }\r\n acc.push({\r\n ...entry,\r\n id: uuid(),\r\n type: item.type || entry.type,\r\n content: {\r\n $type: entry.content.$type,\r\n isInitialNotices: entry.content.isInitialNotices,\r\n notices: item.notices,\r\n item,\r\n },\r\n });\r\n return acc;\r\n }, []);\r\n }\r\n return entry;\r\n };\r\n\r\n // map of in which order the messages should be displayed\r\n // lower numbers will be displayed above higher\r\n const sortMap = new Map<string, number>([\r\n ['Text', 1],\r\n ['List', 2],\r\n ['Contact', 3],\r\n ['CategorizedNoticeList', 10],\r\n ]);\r\n\r\n const result: MessageGroup[] = [];\r\n const filteredEntries = entries\r\n .sort((item, other) => {\r\n // sort the entries based on it's types sort value\r\n const defaultSortValue = 20;\r\n\r\n var sortValue = sortMap.get(item.type) || defaultSortValue;\r\n var sortValueOther = sortMap.get(other.type) || defaultSortValue;\r\n return sortValue - sortValueOther;\r\n })\r\n .filter((entry) => !entry.relation) // remove any \"relation entries\"\r\n .reduce<ServerEntry[]>((acc, entry) => {\r\n // some entries needs to be splitted into seperate groups\r\n return acc.concat(splitEntry(entry));\r\n }, []);\r\n\r\n for (const entry of filteredEntries) {\r\n const relatedEntries = entries.filter((other) => other.relation === entry.id);\r\n const group = createGroup({ isUser: false });\r\n\r\n const items = await transform(entry, group, relatedEntries, prevGroup);\r\n items.forEach((item) => {\r\n group.items.push(item);\r\n });\r\n\r\n if (group.items.length) {\r\n result.push(group);\r\n }\r\n }\r\n return result;\r\n};\r\n","import { uuid } from '@telia-ace/widget-utilities';\r\nimport { Container, EventManager } from '@webprovisions/platform';\r\nimport { processEntries } from './entry-handler';\r\nimport Store from './store';\r\nimport { ClientEnvelope, MessageGroup, ServerEntry, ServerEnvelope } from './types';\r\n\r\nclass HttpClient {\r\n private globalState: any;\r\n private clientId: string;\r\n private entries: ServerEntry[];\r\n\r\n constructor(\r\n private endpoint: string,\r\n private events: EventManager,\r\n private store: Store,\r\n private container: Container\r\n ) {\r\n this.clientId = uuid();\r\n this.entries = [];\r\n }\r\n\r\n async start() {\r\n const storedMessages = await this.store.read();\r\n\r\n // if there are a session stored, rehydrate the messages\r\n // otherwise create a new session\r\n if (storedMessages && storedMessages.length > 0) {\r\n const storedGlobalState = this.store.readGlobalState();\r\n this.globalState = storedGlobalState;\r\n return storedMessages;\r\n } else {\r\n const envelope = this.createInitialEnvelope();\r\n const initialResponse = await this.postEnvelope(envelope);\r\n return initialResponse;\r\n }\r\n }\r\n\r\n async sendMessage(message: string) {\r\n const envelope = {\r\n command: { phrase: message },\r\n globalState: this.globalState,\r\n clientId: this.clientId,\r\n };\r\n\r\n const result = await this.postEnvelope(envelope);\r\n return result;\r\n }\r\n\r\n async helpAction() {\r\n return this.postEnvelope({\r\n action: {\r\n key: 'help',\r\n content: {\r\n $type: 'Humany.Matching.Bots.Conversations.Actions.Help, Humany.Matching',\r\n },\r\n },\r\n globalState: this.globalState,\r\n clientId: this.clientId,\r\n });\r\n }\r\n\r\n async nextAction(group: MessageGroup) {\r\n const { paging } = group.meta;\r\n if (!paging.actions?.next) {\r\n return;\r\n }\r\n return this.postEnvelope(\r\n {\r\n action: {\r\n key: 'next',\r\n content: paging.actions.next,\r\n },\r\n localState: paging.localState,\r\n globalState: this.globalState,\r\n clientId: this.clientId,\r\n },\r\n group\r\n ).then((response) => {\r\n const listItemIndex = group.items.findIndex((item) => item.message[0] === 'link-list');\r\n if (listItemIndex === -1 || !response) {\r\n return group;\r\n }\r\n\r\n return {\r\n ...group,\r\n meta: {\r\n ...group.meta,\r\n ...response[0].meta,\r\n },\r\n items: [\r\n ...group.items.slice(0, listItemIndex),\r\n {\r\n ...group.items[listItemIndex],\r\n message: [\r\n response[0].items[0].message[0],\r\n {\r\n ...group.items[listItemIndex].message[1],\r\n ...response[0].items[0].message[1],\r\n },\r\n ],\r\n },\r\n ...group.items.slice(listItemIndex + 1),\r\n ],\r\n };\r\n });\r\n }\r\n\r\n async showContactMethodAction(data: {\r\n contactMethod: any;\r\n actionKey: string;\r\n entryId: string;\r\n }) {\r\n const entry = this.entries.find((e) => e.id === data.entryId);\r\n const actionItem = entry?.actions[data.actionKey];\r\n\r\n if (!actionItem) {\r\n return;\r\n }\r\n\r\n return this.postEnvelope({\r\n action: {\r\n key: data.actionKey,\r\n content: actionItem,\r\n },\r\n localState: entry.localState,\r\n globalState: this.globalState,\r\n clientId: this.clientId,\r\n });\r\n }\r\n\r\n async defaultAction(action: string) {\r\n const entry = this.getEntryOfAction(action);\r\n\r\n if (!entry) {\r\n return;\r\n }\r\n\r\n return this.postEnvelope({\r\n action: {\r\n key: action,\r\n content: entry.actions[action],\r\n },\r\n localState: entry.localState,\r\n globalState: this.globalState,\r\n clientId: this.clientId,\r\n });\r\n }\r\n\r\n private createInitialEnvelope(): ClientEnvelope {\r\n return {\r\n command: { site: this.endpoint },\r\n clientId: this.clientId,\r\n globalState: {},\r\n funnel: this.container.get('$widget').name,\r\n };\r\n }\r\n\r\n private async postEnvelope(envelope: ClientEnvelope, prevGroup?: MessageGroup) {\r\n try {\r\n const response = await fetch(this.endpoint, this.getHttpOptions(envelope));\r\n\r\n if (!response.ok) {\r\n throw response;\r\n }\r\n\r\n const data = await response.json();\r\n\r\n return this.handleResponse(data, prevGroup);\r\n } catch (error: any) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n console.warn('Something went wrong when posting the envelope.');\r\n }\r\n let message = 'Something went wrong';\r\n\r\n if (error.message === 'Failed to fetch') {\r\n message = 'Lost connection... Please try again.';\r\n }\r\n return this.handleResponse({\r\n entries: [\r\n {\r\n id: uuid(),\r\n type: 'Error',\r\n timestamp: new Date().toISOString(),\r\n content: {\r\n message,\r\n },\r\n actions: {},\r\n tags: [],\r\n },\r\n ],\r\n });\r\n }\r\n }\r\n\r\n private async handleResponse(data: ServerEnvelope, prevGroup?: MessageGroup) {\r\n this.entries = this.entries.concat(data.entries);\r\n\r\n const widgetEntry = data.entries.find((e) => e.type === 'Widget');\r\n\r\n if (widgetEntry) {\r\n this.events.dispatch('provider:widget-entry', widgetEntry.content);\r\n }\r\n\r\n if (data.globalState) {\r\n this.globalState = data.globalState;\r\n }\r\n const groups = await processEntries(data.entries, prevGroup);\r\n return groups;\r\n }\r\n\r\n private getHttpOptions(envelope: ClientEnvelope) {\r\n const fetchOptions = {\r\n method: 'POST',\r\n headers: {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n };\r\n envelope.funnel = this.container.get('$widget').name;\r\n return Object.assign({}, fetchOptions, {\r\n body: JSON.stringify(envelope),\r\n credentials: 'same-origin' as RequestCredentials,\r\n });\r\n }\r\n\r\n private getEntryOfAction(action: string) {\r\n return this.entries.find((entry) => !!entry.actions[action]);\r\n }\r\n}\r\n\r\nexport default HttpClient;\r\n","import { createStorageWriter, readStorage, StorageCategory } from '@telia-ace/widget-services';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { GlobalState, MessageGroup } from './types';\r\n\r\nclass Store {\r\n private enabled = false; // set whether or not to store data\r\n private sessionMessageStorageVariable: string = 'knowledge-bot-messages';\r\n private botProviderGlobalStateKey = 'bot-provider-global-state';\r\n private botProviderMetaStateKey = 'bot-provider-conversation-meta';\r\n\r\n constructor(private container: Container) {}\r\n\r\n async readGlobalState() {\r\n if (!this.enabled) {\r\n return undefined;\r\n }\r\n const state: GlobalState | undefined = await readStorage(\r\n this.container,\r\n this.botProviderGlobalStateKey\r\n );\r\n return state;\r\n }\r\n\r\n async readMetaState() {\r\n if (!this.enabled) {\r\n return;\r\n }\r\n return readStorage(this.container, this.botProviderMetaStateKey);\r\n }\r\n\r\n async write(groups: MessageGroup[]) {\r\n if (!this.enabled) {\r\n return;\r\n }\r\n return createStorageWriter(\r\n this.container,\r\n this.sessionMessageStorageVariable,\r\n StorageCategory.Necessary\r\n ).then((write) => {\r\n return write(groups);\r\n });\r\n }\r\n\r\n async read() {\r\n if (!this.enabled) {\r\n return [];\r\n }\r\n return readStorage<MessageGroup[]>(this.container, this.sessionMessageStorageVariable).then(\r\n (groups) => {\r\n return groups || [];\r\n }\r\n );\r\n }\r\n}\r\n\r\nexport default Store;\r\n","import { ComponentNodeController } from '@telia-ace/knowledge-widget-core';\r\nimport { ConversationMessageListItemType } from '@telia-ace/widget-conversation';\r\nimport { createStorageWriter, StorageCategory } from '@telia-ace/widget-services';\r\nimport { uuid } from '@telia-ace/widget-utilities';\r\nimport { Container, EventManager, Widget } from '@webprovisions/platform';\r\nimport HttpClient from './http-client';\r\nimport Store from './store';\r\nimport { MessageGroup, ServerEntry } from './types';\r\nimport { createGroup, getKnowledgeBotEndpoint } from './utils';\r\n\r\nclass KnowledgeBotProvider {\r\n private agent: any;\r\n private user: any;\r\n private httpClient: HttpClient;\r\n private events: EventManager;\r\n private groups: MessageGroup[] = [];\r\n private store: Store;\r\n\r\n constructor(\r\n private container: Container,\r\n private conversation: any,\r\n component: ComponentNodeController\r\n ) {\r\n const { events } = this.container.get('$widget') as Widget;\r\n this.events = events;\r\n this.store = new Store(container);\r\n this.agent = conversation.createAgent({\r\n name: '',\r\n avatar: undefined,\r\n });\r\n this.user = conversation.user;\r\n const endpoint = getKnowledgeBotEndpoint(container, component);\r\n this.httpClient = new HttpClient(endpoint, events, this.store, this.container);\r\n\r\n this.events.subscribe('provider:widget-entry', (_event, data: ServerEntry['content']) => {\r\n this.onWidgetEntryReceived(data);\r\n });\r\n\r\n this.events.subscribe(\r\n 'provider:open-contact-method',\r\n async (_event, data: { contactMethod: any; entryId: string; actionKey: string }) => {\r\n const response = await this.httpClient.showContactMethodAction(data);\r\n\r\n if (response) {\r\n if (!!data.contactMethod.title) this.printUserMessage(data.contactMethod.title);\r\n this.onMessagesReceived(response);\r\n }\r\n }\r\n );\r\n }\r\n\r\n async initialize() {\r\n const loader = this.conversation.loading();\r\n\r\n const storedMeta: any = await this.store.readMetaState();\r\n if (storedMeta?.agent) {\r\n this.agent.update({\r\n name: storedMeta.agent.name,\r\n avatar: storedMeta.agent.avatar,\r\n });\r\n }\r\n\r\n const response = await this.httpClient.start();\r\n if (response) {\r\n this.onMessagesReceived(response);\r\n }\r\n\r\n loader();\r\n }\r\n\r\n async onMessagesReceived(groups: MessageGroup[]) {\r\n this.groups = this.groups.concat(groups);\r\n await this.store.write(this.groups);\r\n groups.forEach((group) => {\r\n const items = group.items.map((item) => item.message);\r\n if (group.isUser) {\r\n group.writer = this.user.print(items);\r\n } else {\r\n group.writer = this.agent.print(items);\r\n }\r\n });\r\n }\r\n\r\n async onInput(action: string | { [key: string]: any; actionKey: string; label?: string }) {\r\n const actionKey = typeof action === 'string' ? action : action.actionKey;\r\n\r\n switch (actionKey) {\r\n case 'next':\r\n {\r\n if (typeof action === 'string') {\r\n return;\r\n }\r\n const group = this.groups.find((other) => other.id === action.data?.groupId);\r\n\r\n if (group) {\r\n const response = await this.httpClient.nextAction(group);\r\n if (response) {\r\n const combined = response.items.map((item) => item.message);\r\n group.meta.paging = response?.meta.paging;\r\n group.writer.update(combined);\r\n }\r\n }\r\n }\r\n break;\r\n case 'help':\r\n {\r\n const loader = this.conversation.loading();\r\n\r\n const response = await this.httpClient.helpAction();\r\n loader();\r\n if (response) {\r\n this.onMessagesReceived(response);\r\n }\r\n }\r\n break;\r\n default:\r\n {\r\n if (typeof action !== 'string' && action.label) {\r\n this.printUserMessage(action.label);\r\n }\r\n const loader = this.conversation.loading();\r\n const response = await this.httpClient.defaultAction(actionKey);\r\n if (response) {\r\n this.onMessagesReceived(response);\r\n }\r\n loader();\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private printUserMessage(message: string) {\r\n const group = createGroup({\r\n isUser: true,\r\n items: [\r\n {\r\n id: uuid(),\r\n isUser: true,\r\n message: [ConversationMessageListItemType.HTML, { body: message }],\r\n },\r\n ],\r\n });\r\n this.onMessagesReceived([group]);\r\n return group;\r\n }\r\n\r\n async onMessageSend(message: string) {\r\n const loader = this.conversation.loading();\r\n const response = await this.httpClient.sendMessage(message);\r\n\r\n this.printUserMessage(message);\r\n\r\n if (response) {\r\n this.onMessagesReceived(response);\r\n }\r\n loader();\r\n }\r\n\r\n private async onWidgetEntryReceived(data: ServerEntry['content']) {\r\n const agentSettings = {\r\n name: data.agent.name,\r\n avatar: data.agent.avatar,\r\n };\r\n this.agent.update(agentSettings);\r\n const write = await createStorageWriter(\r\n this.container,\r\n 'bot-provider-conversation-meta',\r\n StorageCategory.Necessary\r\n );\r\n write({\r\n agent: agentSettings,\r\n });\r\n }\r\n}\r\n\r\nexport default KnowledgeBotProvider;\r\n","import {\r\n ConversationPlatform,\r\n registerCustomMessageComponent,\r\n} from '@telia-ace/widget-conversation';\r\nimport { Container, Widget } from '@webprovisions/platform';\r\nimport KnowledgeBotProvider from './provider';\r\nimport { CustomMessageTypes } from './types';\r\n\r\nconst KnowledgeBotProviderPlugin = async (container: Container) => {\r\n const platform = await ConversationPlatform.getInstance(container);\r\n\r\n registerCustomMessageComponent(\r\n container,\r\n CustomMessageTypes.ContactList,\r\n import('./ui/contact-method-list')\r\n );\r\n registerCustomMessageComponent(\r\n container,\r\n CustomMessageTypes.ContactMethod,\r\n import('./ui/contact-method')\r\n );\r\n\r\n registerCustomMessageComponent(\r\n container,\r\n CustomMessageTypes.NotificationList,\r\n import('./ui/notification-list')\r\n );\r\n registerCustomMessageComponent(\r\n container,\r\n CustomMessageTypes.NoGoodAlternative,\r\n import('./ui/no-good-alternative')\r\n );\r\n registerCustomMessageComponent(\r\n container,\r\n CustomMessageTypes.FeedbackList,\r\n import('./ui/feedback-list')\r\n );\r\n\r\n platform.registerProvider('ace-knowledge-bot', (conversation, component) => {\r\n const provider = new KnowledgeBotProvider(container, conversation, component);\r\n provider.initialize();\r\n\r\n component.actions.watch('conversation.user-submit', (input, next) => {\r\n provider.onMessageSend(input.text);\r\n });\r\n\r\n component.actions.watch('conversation.action', (input, next) => {\r\n provider.onInput(input);\r\n\r\n return next(input);\r\n });\r\n\r\n component.actions.create('evaluate', (input) => {\r\n const { events } = container.get('$widget') as Widget;\r\n events.dispatch('bot-provider:evaluate', input);\r\n });\r\n\r\n component.actions.create('submit', (input) => {\r\n const { events } = container.get('$widget') as Widget;\r\n events.dispatch('bot-provider:form-submitted', input);\r\n });\r\n });\r\n};\r\n\r\nexport default KnowledgeBotProviderPlugin;\r\n"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import { K as n } from "./index.1161f855.js";
|
|
2
2
|
import "@telia-ace/widget-conversation";
|
|
3
3
|
import "@telia-ace/widget-services";
|
|
4
4
|
import "@telia-ace/widget-utilities";
|
|
5
5
|
import "@telia-ace/widget-forms";
|
|
6
|
+
export {
|
|
7
|
+
n as ConversationPlugin
|
|
8
|
+
};
|
|
6
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { useDispatch as o, SymbolBadge as a, Button as i, borderTabStyle as l } from "@telia-ace/knowledge-widget-ui";
|
|
2
|
+
import n from "react";
|
|
3
|
+
import s, { css as r } from "styled-components";
|
|
4
|
+
import { m } from "./styles.4d9197a0.js";
|
|
5
|
+
const h = ({ body: e }) => {
|
|
6
|
+
const t = o();
|
|
7
|
+
return /* @__PURE__ */ n.createElement(c, null, /* @__PURE__ */ n.createElement(p, {
|
|
8
|
+
onClick: () => {
|
|
9
|
+
t("action", "help");
|
|
10
|
+
},
|
|
11
|
+
"aria-label": e,
|
|
12
|
+
title: e
|
|
13
|
+
}, /* @__PURE__ */ n.createElement(a, {
|
|
14
|
+
size: 14,
|
|
15
|
+
symbol: {
|
|
16
|
+
type: "FontAwesome",
|
|
17
|
+
content: "meh-o"
|
|
18
|
+
}
|
|
19
|
+
}), /* @__PURE__ */ n.createElement("span", null, e)));
|
|
20
|
+
}, c = s.div`
|
|
21
|
+
display: flex;
|
|
22
|
+
align-items: center;
|
|
23
|
+
justify-content: center;
|
|
24
|
+
${m}
|
|
25
|
+
`, p = s(i)`
|
|
26
|
+
> i,
|
|
27
|
+
svg {
|
|
28
|
+
margin-right: ${(e) => {
|
|
29
|
+
var t;
|
|
30
|
+
return (t = e.theme.sizes) == null ? void 0 : t.small;
|
|
31
|
+
}};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
&:focus {
|
|
35
|
+
${(e) => {
|
|
36
|
+
var t;
|
|
37
|
+
return ((t = e.theme.accessibility) == null ? void 0 : t.isTabbing) && r`
|
|
38
|
+
${l}
|
|
39
|
+
`;
|
|
40
|
+
}};
|
|
41
|
+
}
|
|
42
|
+
`;
|
|
43
|
+
export {
|
|
44
|
+
h as default
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=no-good-alternative.ae1f1e39.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-good-alternative.ae1f1e39.js","sources":["../src/ui/no-good-alternative.tsx"],"sourcesContent":["import { borderTabStyle, Button, SymbolBadge, useDispatch } from '@telia-ace/knowledge-widget-ui';\r\nimport React from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport { messageContentPadding } from './styles';\r\n\r\ntype Props = {\r\n body: string;\r\n};\r\nconst NoGoodAlternative: React.FC<Props> = ({ body }) => {\r\n const dispatch = useDispatch();\r\n return (\r\n <Wrapper>\r\n <StyledButton\r\n onClick={() => {\r\n dispatch('action', 'help');\r\n }}\r\n aria-label={body}\r\n title={body}\r\n >\r\n <SymbolBadge\r\n size={14}\r\n symbol={{\r\n type: 'FontAwesome',\r\n content: 'meh-o',\r\n }}\r\n />\r\n <span>{body}</span>\r\n </StyledButton>\r\n </Wrapper>\r\n );\r\n};\r\n\r\nexport default NoGoodAlternative;\r\n\r\nconst Wrapper = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n ${messageContentPadding}\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n > i,\r\n svg {\r\n margin-right: ${(p) => p.theme.sizes?.small};\r\n }\r\n\r\n &:focus {\r\n ${(p) =>\r\n p.theme.accessibility?.isTabbing &&\r\n css`\r\n ${borderTabStyle}\r\n `};\r\n }\r\n`;\r\n"],"names":[],"mappings":";;;;AAQM,MAAA,IAAqC,CAAC,EAAE,cAAW;AACrD,QAAM,IAAW;AAEb,SAAA,kBAAA,cAAC,SACI,kBAAA,cAAA,GAAA;AAAA,IACG,SAAS,MAAM;AACX,QAAS,UAAU,MAAM;AAAA,IAC7B;AAAA,IACA,cAAY;AAAA,IACZ,OAAO;AAAA,EAAA,GAEN,kBAAA,cAAA,GAAA;AAAA,IACG,MAAM;AAAA,IACN,QAAQ;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACb;AAAA,EAAA,CACJ,GACA,kBAAA,cAAC,QAAM,MAAA,CAAK,CAChB,CACJ;AAER,GAIM,IAAU,EAAO;AAAA;AAAA;AAAA;AAAA,MAIjB;AAAA,GAGA,IAAe,EAAO,CAAM;AAAA;AAAA;AAAA,wBAGV,CAAC,MAAM;;AAAA,gBAAE,MAAM,UAAR,kBAAe;AAAA;AAAA;AAAA;AAAA;AAAA,UAIpC,CAAC,MAAA;;AACC,iBAAE,MAAM,kBAAR,kBAAuB,cACvB;AAAA,kBACM;AAAA;AAAA;AAAA;AAAA;"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
var L = Object.defineProperty;
|
|
2
|
+
var r = Object.getOwnPropertySymbols;
|
|
3
|
+
var l = Object.prototype.hasOwnProperty, f = Object.prototype.propertyIsEnumerable;
|
|
4
|
+
var d = (t, i, o) => i in t ? L(t, i, { enumerable: !0, configurable: !0, writable: !0, value: o }) : t[i] = o, m = (t, i) => {
|
|
5
|
+
for (var o in i || (i = {}))
|
|
6
|
+
l.call(i, o) && d(t, o, i[o]);
|
|
7
|
+
if (r)
|
|
8
|
+
for (var o of r(i))
|
|
9
|
+
f.call(i, o) && d(t, o, i[o]);
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
var c = (t, i) => {
|
|
13
|
+
var o = {};
|
|
14
|
+
for (var e in t)
|
|
15
|
+
l.call(t, e) && i.indexOf(e) < 0 && (o[e] = t[e]);
|
|
16
|
+
if (t != null && r)
|
|
17
|
+
for (var e of r(t))
|
|
18
|
+
i.indexOf(e) < 0 && f.call(t, e) && (o[e] = t[e]);
|
|
19
|
+
return o;
|
|
20
|
+
};
|
|
21
|
+
import { NotificationList as b } from "@telia-ace/knowledge-widget-ui";
|
|
22
|
+
import g, { useMemo as y } from "react";
|
|
23
|
+
import N from "styled-components";
|
|
24
|
+
import { m as x } from "./styles.4d9197a0.js";
|
|
25
|
+
const E = (h) => {
|
|
26
|
+
var a = h, { id: t, header: i, items: o, symbol: e, className: u } = a, p = c(a, ["id", "header", "items", "symbol", "className"]);
|
|
27
|
+
const s = y(() => ({
|
|
28
|
+
id: t,
|
|
29
|
+
title: i,
|
|
30
|
+
symbol: e,
|
|
31
|
+
defaultHeaderOptions: {
|
|
32
|
+
visible: !0
|
|
33
|
+
},
|
|
34
|
+
notifications: o.map((n) => ({
|
|
35
|
+
id: n.id.toString(),
|
|
36
|
+
title: n.title,
|
|
37
|
+
body: n.body,
|
|
38
|
+
modified: n.modified,
|
|
39
|
+
expandable: !0
|
|
40
|
+
}))
|
|
41
|
+
}), [i, o]);
|
|
42
|
+
return s ? /* @__PURE__ */ g.createElement($, m({
|
|
43
|
+
className: u,
|
|
44
|
+
showHeader: !0,
|
|
45
|
+
notificationList: s,
|
|
46
|
+
loading: !1
|
|
47
|
+
}, p)) : null;
|
|
48
|
+
}, $ = N(b)`
|
|
49
|
+
${x}
|
|
50
|
+
min-width: 10em;
|
|
51
|
+
|
|
52
|
+
span {
|
|
53
|
+
color: ${(t) => {
|
|
54
|
+
var i;
|
|
55
|
+
return (i = t.theme.colors) == null ? void 0 : i.text;
|
|
56
|
+
}};
|
|
57
|
+
}
|
|
58
|
+
`;
|
|
59
|
+
export {
|
|
60
|
+
E as default
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=notification-list.976cfcb5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification-list.976cfcb5.js","sources":["../src/ui/notification-list.tsx"],"sourcesContent":["import { NotificationList as NotificationListUi, Symbol } from '@telia-ace/knowledge-widget-ui';\r\nimport React, { useMemo } from 'react';\r\nimport styled from 'styled-components';\r\nimport { messageContentPadding } from './styles';\r\n\r\ntype Props = {\r\n id: string;\r\n header: string;\r\n items: any[];\r\n symbol?: Symbol;\r\n className?: string;\r\n};\r\nconst NotificationList: React.FC<Props> = ({ id, header, items, symbol, className, ...other }) => {\r\n const list = useMemo(() => {\r\n return {\r\n id: id,\r\n title: header,\r\n symbol,\r\n defaultHeaderOptions: {\r\n visible: true,\r\n },\r\n notifications: items.map((item) => ({\r\n id: item.id.toString(),\r\n title: item.title,\r\n body: item.body,\r\n modified: item.modified,\r\n expandable: true,\r\n })),\r\n };\r\n }, [header, items]);\r\n\r\n if (!list) {\r\n return null;\r\n }\r\n\r\n return (\r\n <StyledNotificationListUi\r\n className={className}\r\n showHeader={true}\r\n notificationList={list}\r\n loading={false}\r\n {...other}\r\n />\r\n );\r\n};\r\n\r\nexport default NotificationList;\r\n\r\nconst StyledNotificationListUi = styled(NotificationListUi)`\r\n ${messageContentPadding}\r\n min-width: 10em;\r\n\r\n span {\r\n color: ${(p) => p.theme.colors?.text};\r\n }\r\n`;\r\n"],"names":["NotificationListUi"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAYM,MAAA,IAAoC,CAAC,MAAuD;AAAvD,aAAE,SAAI,WAAQ,UAAO,WAAQ,iBAA7B,GAA2C,MAA3C,GAA2C,CAAzC,MAAI,UAAQ,SAAO,UAAQ;AAC9D,QAAA,IAAO,EAAQ,MACV;AAAA,IACH;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA,sBAAsB;AAAA,MAClB,SAAS;AAAA,IACb;AAAA,IACA,eAAe,EAAM,IAAI,CAAC,MAAU;AAAA,MAChC,IAAI,EAAK,GAAG,SAAS;AAAA,MACrB,OAAO,EAAK;AAAA,MACZ,MAAM,EAAK;AAAA,MACX,UAAU,EAAK;AAAA,MACf,YAAY;AAAA,IAAA,EACd;AAAA,EAAA,IAEP,CAAC,GAAQ,CAAK,CAAC;AAElB,SAAK,IAKA,kBAAA,cAAA,GAAA;AAAA,IACG;AAAA,IACA,YAAY;AAAA,IACZ,kBAAkB;AAAA,IAClB,SAAS;AAAA,KACL,EACR,IAVO;AAYf,GAIM,IAA2B,EAAOA,CAAkB;AAAA,MACpD;AAAA;AAAA;AAAA;AAAA,iBAIW,CAAC,MAAM;;AAAA,gBAAE,MAAM,WAAR,kBAAgB;AAAA;AAAA;AAAA;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { css as m } from "styled-components";
|
|
2
|
+
const a = m`
|
|
3
|
+
margin: ${(s) => {
|
|
4
|
+
var e;
|
|
5
|
+
return (e = s.theme.sizes) == null ? void 0 : e.normal;
|
|
6
|
+
}} 0;
|
|
7
|
+
padding: 0 ${(s) => {
|
|
8
|
+
var e;
|
|
9
|
+
return (e = s.theme.sizes) == null ? void 0 : e.normal;
|
|
10
|
+
}};
|
|
11
|
+
`;
|
|
12
|
+
export {
|
|
13
|
+
a as m
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=styles.4d9197a0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.4d9197a0.js","sources":["../src/ui/styles.tsx"],"sourcesContent":["import { css } from 'styled-components';\r\n\r\nexport const messageContentPadding = css`\r\n margin: ${(p) => p.theme.sizes?.normal} 0;\r\n padding: 0 ${(p) => p.theme.sizes?.normal};\r\n`;\r\n"],"names":[],"mappings":";AAEO,MAAM,IAAwB;AAAA,cACvB,CAAC,MAAM;;AAAA,gBAAE,MAAM,UAAR,kBAAe;AAAA;AAAA,iBACnB,CAAC,MAAM;;AAAA,gBAAE,MAAM,UAAR,kBAAe;AAAA;AAAA;"}
|
package/dist/types.d.ts
CHANGED
package/dist/utils.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export declare const createGroup: ({ isUser, items, meta, }: {
|
|
|
11
11
|
}) => MessageGroup;
|
|
12
12
|
export declare const contactMethodFromLegacy: ({ id, title, defaultIcon, exits: [exit], exitType, confirmationText, expandFormAutomatically, form, description, }: any, options?: {
|
|
13
13
|
validation?: any;
|
|
14
|
-
guideId?: string;
|
|
14
|
+
guideId?: string | undefined;
|
|
15
15
|
}) => any;
|
|
16
16
|
export declare const getListType: (state: any) => ConversationMessageListItemType.LinkList | ConversationMessageListItemType.ButtonList | CustomMessageTypes.ContactList | CustomMessageTypes.FeedbackList;
|
|
17
17
|
export declare const getKnowledgeBotEndpoint: (container: Container, component: any) => string;
|
package/package.json
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telia-ace/knowledge-widget-bot-provider",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.56",
|
|
4
4
|
"description": "Bot Provider Plugin ACE Knowledge Widgets.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
6
|
"author": "Telia Company AB",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"telia"
|
|
9
9
|
],
|
|
10
|
-
"
|
|
10
|
+
"exports": {
|
|
11
|
+
"development": "./src/index.ts",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"type": "module",
|
|
11
15
|
"types": "dist/index.d.ts",
|
|
12
16
|
"files": [
|
|
13
17
|
"LICENSE.txt",
|
|
@@ -24,12 +28,12 @@
|
|
|
24
28
|
},
|
|
25
29
|
"sideEffects": false,
|
|
26
30
|
"dependencies": {
|
|
27
|
-
"@telia-ace/knowledge-widget-adapters": "^1.0.
|
|
28
|
-
"@telia-ace/knowledge-widget-types-grid": "^1.0.
|
|
29
|
-
"@telia-ace/knowledge-widget-ui": "^1.0.
|
|
30
|
-
"@telia-ace/widget-conversation": "^1.0.
|
|
31
|
-
"@telia-ace/widget-forms": "^1.0.
|
|
32
|
-
"@telia-ace/widget-services": "^1.0.
|
|
31
|
+
"@telia-ace/knowledge-widget-adapters": "^1.0.23",
|
|
32
|
+
"@telia-ace/knowledge-widget-types-grid": "^1.0.23",
|
|
33
|
+
"@telia-ace/knowledge-widget-ui": "^1.0.20",
|
|
34
|
+
"@telia-ace/widget-conversation": "^1.0.24",
|
|
35
|
+
"@telia-ace/widget-forms": "^1.0.18",
|
|
36
|
+
"@telia-ace/widget-services": "^1.0.11",
|
|
33
37
|
"@telia-ace/widget-utilities": "^1.0.2",
|
|
34
38
|
"@webprovisions/bootstrapping": "^1.0.12"
|
|
35
39
|
},
|
|
@@ -40,5 +44,5 @@
|
|
|
40
44
|
"devDependencies": {
|
|
41
45
|
"@types/uuid": "^8.3.4"
|
|
42
46
|
},
|
|
43
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "25ba427459b76aaec250d8618cfeeeb19676e347"
|
|
44
48
|
}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defProps = Object.defineProperties;
|
|
3
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
-
var __spreadValues = (a, b) => {
|
|
9
|
-
for (var prop in b || (b = {}))
|
|
10
|
-
if (__hasOwnProp.call(b, prop))
|
|
11
|
-
__defNormalProp(a, prop, b[prop]);
|
|
12
|
-
if (__getOwnPropSymbols)
|
|
13
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
-
if (__propIsEnum.call(b, prop))
|
|
15
|
-
__defNormalProp(a, prop, b[prop]);
|
|
16
|
-
}
|
|
17
|
-
return a;
|
|
18
|
-
};
|
|
19
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
-
import { ContactList, ContactMethod as ContactMethod$1 } from "@telia-ace/knowledge-widget-adapters";
|
|
21
|
-
import { useDispatch, useContainer } from "@telia-ace/knowledge-widget-ui";
|
|
22
|
-
import React, { useState, useMemo } from "react";
|
|
23
|
-
import styled from "styled-components";
|
|
24
|
-
import ContactMethod from "./contact-method.js";
|
|
25
|
-
import "@telia-ace/knowledge-widget-types-grid";
|
|
26
|
-
import "@telia-ace/widget-forms";
|
|
27
|
-
import "./index2.js";
|
|
28
|
-
import "@telia-ace/widget-conversation";
|
|
29
|
-
import "@telia-ace/widget-services";
|
|
30
|
-
import "@telia-ace/widget-utilities";
|
|
31
|
-
const ContactMethodList = ({ actions, entryId, groupId }) => {
|
|
32
|
-
const dispatch = useDispatch();
|
|
33
|
-
const container = useContainer();
|
|
34
|
-
const [expanded, setExpanded] = useState([]);
|
|
35
|
-
const items = useMemo(() => {
|
|
36
|
-
return actions.map((action) => {
|
|
37
|
-
return __spreadProps(__spreadValues({}, action.data), {
|
|
38
|
-
onClick: (_event, data) => {
|
|
39
|
-
if (data.inline && !data.expanded) {
|
|
40
|
-
setExpanded([...expanded, data.id]);
|
|
41
|
-
} else {
|
|
42
|
-
const { events } = container.get("$widget");
|
|
43
|
-
events.dispatch("provider:open-contact-method", {
|
|
44
|
-
entryId,
|
|
45
|
-
contactMethod: data,
|
|
46
|
-
actionKey: action.actionKey
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
}, [actions, container, entryId, expanded]);
|
|
53
|
-
if (!items.length) {
|
|
54
|
-
return null;
|
|
55
|
-
}
|
|
56
|
-
return /* @__PURE__ */ React.createElement(StyledContactList, {
|
|
57
|
-
contactMethods: items,
|
|
58
|
-
dispatch,
|
|
59
|
-
itemRenderer: (cm, props) => {
|
|
60
|
-
const isExpanded = expanded.includes(cm.id) || cm.expanded;
|
|
61
|
-
if (isExpanded && cm.inline) {
|
|
62
|
-
return /* @__PURE__ */ React.createElement(StyledContactMethod, {
|
|
63
|
-
contactMethodId: cm.id,
|
|
64
|
-
groupId,
|
|
65
|
-
guideId: cm.body.guideId
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
return /* @__PURE__ */ React.createElement(StyledGenericContactMethod, __spreadValues(__spreadValues({}, cm), props));
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
};
|
|
72
|
-
const StyledContactList = styled(ContactList)`
|
|
73
|
-
> ul > li {
|
|
74
|
-
a {
|
|
75
|
-
display: flex;
|
|
76
|
-
align-items: center;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
&:not(:last-child) {
|
|
80
|
-
${(p) => p.theme.border && `border-bottom: ${p.theme.border};`}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
`;
|
|
84
|
-
const StyledContactMethod = styled(ContactMethod)`
|
|
85
|
-
i {
|
|
86
|
-
margin: 0 ${(p) => {
|
|
87
|
-
var _a;
|
|
88
|
-
return (_a = p.theme.sizes) == null ? void 0 : _a.medium;
|
|
89
|
-
}} 0 0;
|
|
90
|
-
display: flex;
|
|
91
|
-
justify-content: center;
|
|
92
|
-
align-items: center;
|
|
93
|
-
}
|
|
94
|
-
`;
|
|
95
|
-
const StyledGenericContactMethod = styled(ContactMethod$1)`
|
|
96
|
-
padding: ${(p) => {
|
|
97
|
-
var _a;
|
|
98
|
-
return (_a = p.theme.sizes) == null ? void 0 : _a.medium;
|
|
99
|
-
}};
|
|
100
|
-
i {
|
|
101
|
-
margin: 0 ${(p) => {
|
|
102
|
-
var _a;
|
|
103
|
-
return (_a = p.theme.sizes) == null ? void 0 : _a.medium;
|
|
104
|
-
}} 0 0;
|
|
105
|
-
display: flex;
|
|
106
|
-
justify-content: center;
|
|
107
|
-
align-items: center;
|
|
108
|
-
}
|
|
109
|
-
`;
|
|
110
|
-
export { ContactMethodList as default };
|
|
111
|
-
//# sourceMappingURL=contact-method-list.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contact-method-list.js","sources":["../src/ui/contact-method-list.tsx"],"sourcesContent":["import {\r\n ContactList,\r\n ContactMethod as GenericContactMethod,\r\n} from '@telia-ace/knowledge-widget-adapters';\r\nimport { useContainer, useDispatch } from '@telia-ace/knowledge-widget-ui';\r\nimport React, { useMemo, useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport { ActionItem } from '../types';\r\nimport ContactMethod from './contact-method';\r\n\r\ntype Props = {\r\n actions: ActionItem[];\r\n contactMethodIds?: string[];\r\n entryId: string;\r\n groupId: string;\r\n};\r\nconst ContactMethodList: React.FC<Props> = ({ actions, entryId, groupId }) => {\r\n const dispatch = useDispatch();\r\n const container = useContainer();\r\n const [expanded, setExpanded] = useState<string[]>([]);\r\n\r\n const items = useMemo<any[]>(() => {\r\n return actions.map((action) => {\r\n return {\r\n ...action.data,\r\n onClick: (_event: any, data: any) => {\r\n if (data.inline && !data.expanded) {\r\n setExpanded([...expanded, data.id]);\r\n } else {\r\n const { events } = container.get('$widget');\r\n events.dispatch('provider:open-contact-method', {\r\n entryId,\r\n contactMethod: data,\r\n actionKey: action.actionKey,\r\n });\r\n }\r\n },\r\n };\r\n });\r\n }, [actions, container, entryId, expanded]);\r\n\r\n if (!items.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <StyledContactList\r\n contactMethods={items}\r\n dispatch={dispatch}\r\n itemRenderer={(cm: any, props: any) => {\r\n const isExpanded = expanded.includes(cm.id) || cm.expanded;\r\n if (isExpanded && cm.inline) {\r\n return (\r\n <StyledContactMethod\r\n contactMethodId={cm.id}\r\n groupId={groupId}\r\n guideId={cm.body.guideId}\r\n />\r\n );\r\n }\r\n return <StyledGenericContactMethod {...cm} {...props} />;\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default ContactMethodList;\r\n\r\nconst StyledContactList = styled(ContactList)`\r\n > ul > li {\r\n a {\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n &:not(:last-child) {\r\n ${(p) => p.theme.border && `border-bottom: ${p.theme.border};`}\r\n }\r\n }\r\n`;\r\n\r\nconst StyledContactMethod = styled(ContactMethod)`\r\n i {\r\n margin: 0 ${(p) => p.theme.sizes?.medium} 0 0;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n`;\r\nconst StyledGenericContactMethod = styled(GenericContactMethod)`\r\n padding: ${(p) => p.theme.sizes?.medium};\r\n i {\r\n margin: 0 ${(p) => p.theme.sizes?.medium} 0 0;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n`;\r\n"],"names":["GenericContactMethod"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAM,oBAAqC,CAAC,EAAE,SAAS,SAAS,cAAc;AAC1E,QAAM,WAAW;AACjB,QAAM,YAAY;AAClB,QAAM,CAAC,UAAU,eAAe,SAAmB,CAAE,CAAA;AAE/C,QAAA,QAAQ,QAAe,MAAM;AACxB,WAAA,QAAQ,IAAI,CAAC,WAAW;AACpB,aAAA,iCACA,OAAO,OADP;AAAA,QAEH,SAAS,CAAC,QAAa,SAAc;AACjC,cAAI,KAAK,UAAU,CAAC,KAAK,UAAU;AAC/B,wBAAY,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;AAAA,UAAA,OAC/B;AACH,kBAAM,EAAE,WAAW,UAAU,IAAI,SAAS;AAC1C,mBAAO,SAAS,gCAAgC;AAAA,cAC5C;AAAA,cACA,eAAe;AAAA,cACf,WAAW,OAAO;AAAA,YAAA,CACrB;AAAA,UACL;AAAA,QACJ;AAAA,MAAA;AAAA,IACJ,CACH;AAAA,KACF,CAAC,SAAS,WAAW,SAAS,QAAQ,CAAC;AAEtC,MAAA,CAAC,MAAM,QAAQ;AACR,WAAA;AAAA,EACX;AAEA,SACK,sBAAA,cAAA,mBAAA;AAAA,IACG,gBAAgB;AAAA,IAChB;AAAA,IACA,cAAc,CAAC,IAAS,UAAe;AACnC,YAAM,aAAa,SAAS,SAAS,GAAG,EAAE,KAAK,GAAG;AAC9C,UAAA,cAAc,GAAG,QAAQ;AACzB,eACK,sBAAA,cAAA,qBAAA;AAAA,UACG,iBAAiB,GAAG;AAAA,UACpB;AAAA,UACA,SAAS,GAAG,KAAK;AAAA,QAAA,CACrB;AAAA,MAER;AACA,aAAQ,sBAAA,cAAA,4BAAA,kCAA+B,KAAQ,MAAO;AAAA,IAC1D;AAAA,EAAA,CACJ;AAER;AAIA,MAAM,oBAAoB,OAAO,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQ9B,CAAC,MAAM,EAAE,MAAM,UAAU,kBAAkB,EAAE,MAAM;AAAA;AAAA;AAAA;AAKjE,MAAM,sBAAsB,OAAO,aAAa;AAAA;AAAA,oBAE5B,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAM1C,MAAM,6BAA6B,OAAOA,eAAoB;AAAA,eAC/C,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA;AAAA,oBAEjB,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;"}
|
package/dist/contact-method.js
DELETED
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defProps = Object.defineProperties;
|
|
3
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
-
var __spreadValues = (a, b) => {
|
|
9
|
-
for (var prop in b || (b = {}))
|
|
10
|
-
if (__hasOwnProp.call(b, prop))
|
|
11
|
-
__defNormalProp(a, prop, b[prop]);
|
|
12
|
-
if (__getOwnPropSymbols)
|
|
13
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
-
if (__propIsEnum.call(b, prop))
|
|
15
|
-
__defNormalProp(a, prop, b[prop]);
|
|
16
|
-
}
|
|
17
|
-
return a;
|
|
18
|
-
};
|
|
19
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
-
var __async = (__this, __arguments, generator) => {
|
|
21
|
-
return new Promise((resolve, reject) => {
|
|
22
|
-
var fulfilled = (value) => {
|
|
23
|
-
try {
|
|
24
|
-
step(generator.next(value));
|
|
25
|
-
} catch (e) {
|
|
26
|
-
reject(e);
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
var rejected = (value) => {
|
|
30
|
-
try {
|
|
31
|
-
step(generator.throw(value));
|
|
32
|
-
} catch (e) {
|
|
33
|
-
reject(e);
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
37
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
38
|
-
});
|
|
39
|
-
};
|
|
40
|
-
import { ContactMethod as ContactMethod$1 } from "@telia-ace/knowledge-widget-adapters";
|
|
41
|
-
import { DataType } from "@telia-ace/knowledge-widget-types-grid";
|
|
42
|
-
import { useContainer, useDispatch } from "@telia-ace/knowledge-widget-ui";
|
|
43
|
-
import { FormBuilder } from "@telia-ace/widget-forms";
|
|
44
|
-
import React, { useState, useRef, useEffect, useCallback } from "react";
|
|
45
|
-
import styled from "styled-components";
|
|
46
|
-
import { u as updateForm } from "./index2.js";
|
|
47
|
-
import "@telia-ace/widget-conversation";
|
|
48
|
-
import "@telia-ace/widget-services";
|
|
49
|
-
import "@telia-ace/widget-utilities";
|
|
50
|
-
const ContactMethod = ({ contactMethodId, guideId, groupId, className }) => {
|
|
51
|
-
const [contactMethod, setContactMethod] = useState();
|
|
52
|
-
const container = useContainer();
|
|
53
|
-
const dispatch = useDispatch();
|
|
54
|
-
const mountedRef = useRef(true);
|
|
55
|
-
useEffect(() => {
|
|
56
|
-
const { events } = container.get("$widget");
|
|
57
|
-
const unsubscribe = events.subscribe("bot-provider:form-submitted", (_, data) => __async(this, null, function* () {
|
|
58
|
-
var _a;
|
|
59
|
-
if (((_a = data.form.meta) == null ? void 0 : _a.groupId) !== groupId) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
const platform = yield container.getAsync("contactMethods");
|
|
63
|
-
const updatedMethod = __spreadProps(__spreadValues({}, contactMethod), {
|
|
64
|
-
body: __spreadProps(__spreadValues({}, contactMethod.body), {
|
|
65
|
-
form: data.form
|
|
66
|
-
})
|
|
67
|
-
});
|
|
68
|
-
const { errors, valid, errorTypes } = yield platform.validate(updatedMethod);
|
|
69
|
-
if (!valid) {
|
|
70
|
-
const builder = new FormBuilder(contactMethod.body.form);
|
|
71
|
-
setContactMethod(void 0);
|
|
72
|
-
builder.setValidationErrors(errors);
|
|
73
|
-
updatedMethod.body = __spreadProps(__spreadValues({}, updatedMethod.body), {
|
|
74
|
-
form: builder.get()
|
|
75
|
-
});
|
|
76
|
-
setContactMethod(__spreadValues({}, updatedMethod));
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
const result = yield platform.submit(updatedMethod);
|
|
80
|
-
updatedMethod.confirmation = result;
|
|
81
|
-
setContactMethod(updatedMethod);
|
|
82
|
-
}));
|
|
83
|
-
const unsubscribeEvaluate = events.subscribe("bot-provider:evaluate", (_, data) => __async(this, null, function* () {
|
|
84
|
-
if (data.id != contactMethodId) {
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
const platform = yield container.getAsync("contactMethods");
|
|
88
|
-
const updatedForm = yield platform.evaluate(contactMethod);
|
|
89
|
-
let updatedMethod = __spreadProps(__spreadValues({}, contactMethod), {
|
|
90
|
-
body: __spreadProps(__spreadValues({}, contactMethod.body), {
|
|
91
|
-
form: updatedForm
|
|
92
|
-
})
|
|
93
|
-
});
|
|
94
|
-
const updatedBody = updateForm(updatedMethod, {
|
|
95
|
-
submit: "Submit",
|
|
96
|
-
errors: {},
|
|
97
|
-
meta: { groupId }
|
|
98
|
-
});
|
|
99
|
-
updatedMethod = __spreadProps(__spreadValues({}, updatedMethod), {
|
|
100
|
-
body: updatedBody
|
|
101
|
-
});
|
|
102
|
-
setContactMethod(updatedMethod);
|
|
103
|
-
}));
|
|
104
|
-
return () => {
|
|
105
|
-
unsubscribe();
|
|
106
|
-
unsubscribeEvaluate();
|
|
107
|
-
};
|
|
108
|
-
}, [container, contactMethod, setContactMethod]);
|
|
109
|
-
const fetchContactMethod = useCallback((id) => __async(this, null, function* () {
|
|
110
|
-
const dataClient = yield container.getAsync("dataClient");
|
|
111
|
-
const cm = yield dataClient.fetch(DataType.ContactMethod, {
|
|
112
|
-
contactMethodId: id,
|
|
113
|
-
guideId
|
|
114
|
-
});
|
|
115
|
-
const body = updateForm(cm, {
|
|
116
|
-
submit: "Submit",
|
|
117
|
-
errors: {},
|
|
118
|
-
meta: { groupId }
|
|
119
|
-
});
|
|
120
|
-
cm.body = body;
|
|
121
|
-
cm.body.guideId = guideId;
|
|
122
|
-
if (!mountedRef.current) {
|
|
123
|
-
return null;
|
|
124
|
-
}
|
|
125
|
-
setContactMethod(cm);
|
|
126
|
-
}), [mountedRef]);
|
|
127
|
-
useEffect(() => {
|
|
128
|
-
fetchContactMethod(contactMethodId);
|
|
129
|
-
return () => {
|
|
130
|
-
mountedRef.current = false;
|
|
131
|
-
};
|
|
132
|
-
}, [contactMethodId, fetchContactMethod]);
|
|
133
|
-
if (!contactMethod) {
|
|
134
|
-
return null;
|
|
135
|
-
}
|
|
136
|
-
return /* @__PURE__ */ React.createElement(StyledGenericContactMethod, __spreadProps(__spreadValues({}, contactMethod), {
|
|
137
|
-
body: contactMethod.body,
|
|
138
|
-
inline: true,
|
|
139
|
-
expanded: true,
|
|
140
|
-
dispatch,
|
|
141
|
-
className
|
|
142
|
-
}));
|
|
143
|
-
};
|
|
144
|
-
const StyledGenericContactMethod = styled(ContactMethod$1)`
|
|
145
|
-
padding: ${(p) => {
|
|
146
|
-
var _a;
|
|
147
|
-
return (_a = p.theme.sizes) == null ? void 0 : _a.normal;
|
|
148
|
-
}} ${(p) => {
|
|
149
|
-
var _a;
|
|
150
|
-
return (_a = p.theme.sizes) == null ? void 0 : _a.medium;
|
|
151
|
-
}};
|
|
152
|
-
`;
|
|
153
|
-
export { ContactMethod as default };
|
|
154
|
-
//# sourceMappingURL=contact-method.js.map
|