@botonic/react 0.20.1-alpha.1 → 0.20.1
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/lib/components/image.js +6 -52
- package/lib/components/image.js.map +1 -1
- package/lib/constants.js +200 -0
- package/lib/constants.js.map +1 -0
- package/lib/contexts.js +57 -0
- package/lib/contexts.js.map +1 -0
- package/lib/dev-app.js +241 -0
- package/lib/dev-app.js.map +1 -0
- package/lib/index.d.ts +239 -0
- package/lib/index.js +131 -0
- package/lib/index.js.map +1 -0
- package/lib/message-utils.js +149 -0
- package/lib/message-utils.js.map +1 -0
- package/lib/msg-to-botonic.js +199 -0
- package/lib/msg-to-botonic.js.map +1 -0
- package/lib/node-app.js +97 -0
- package/lib/node-app.js.map +1 -0
- package/lib/react-bot.js +167 -0
- package/lib/react-bot.js.map +1 -0
- package/lib/util/dom.js +84 -0
- package/lib/util/dom.js.map +1 -0
- package/lib/util/environment.js +42 -0
- package/lib/util/environment.js.map +1 -0
- package/lib/util/error-boundary.js +105 -0
- package/lib/util/error-boundary.js.map +1 -0
- package/lib/util/index.d.ts +9 -0
- package/lib/util/index.js +2 -0
- package/lib/util/index.js.map +1 -0
- package/lib/util/logs.js +28 -0
- package/lib/util/logs.js.map +1 -0
- package/lib/util/objects.js +60 -0
- package/lib/util/objects.js.map +1 -0
- package/lib/util/react.js +75 -0
- package/lib/util/react.js.map +1 -0
- package/lib/util/regexs.js +31 -0
- package/lib/util/regexs.js.map +1 -0
- package/lib/util/webchat.js +92 -0
- package/lib/util/webchat.js.map +1 -0
- package/lib/webchat/actions.js +51 -0
- package/lib/webchat/actions.js.map +1 -0
- package/lib/webchat/components/attachment.js +43 -0
- package/lib/webchat/components/attachment.js.map +1 -0
- package/lib/webchat/components/common.js +33 -0
- package/lib/webchat/components/common.js.map +1 -0
- package/lib/webchat/components/emoji-picker.js +58 -0
- package/lib/webchat/components/emoji-picker.js.map +1 -0
- package/lib/webchat/components/persistent-menu.js +96 -0
- package/lib/webchat/components/persistent-menu.js.map +1 -0
- package/lib/webchat/components/send-button.js +27 -0
- package/lib/webchat/components/send-button.js.map +1 -0
- package/lib/webchat/components/styled-scrollbar.js +55 -0
- package/lib/webchat/components/styled-scrollbar.js.map +1 -0
- package/lib/webchat/components/styled-scrollbar.scss +12 -0
- package/lib/webchat/components/typing-indicator.js +27 -0
- package/lib/webchat/components/typing-indicator.js.map +1 -0
- package/lib/webchat/components/typing-indicator.scss +38 -0
- package/lib/webchat/devices/device-adapter.js +82 -0
- package/lib/webchat/devices/device-adapter.js.map +1 -0
- package/lib/webchat/devices/index.js +32 -0
- package/lib/webchat/devices/index.js.map +1 -0
- package/lib/webchat/devices/scrollbar-controller.js +152 -0
- package/lib/webchat/devices/scrollbar-controller.js.map +1 -0
- package/lib/webchat/devices/webchat-resizer.js +76 -0
- package/lib/webchat/devices/webchat-resizer.js.map +1 -0
- package/lib/webchat/header.js +116 -0
- package/lib/webchat/header.js.map +1 -0
- package/lib/webchat/hooks.js +350 -0
- package/lib/webchat/hooks.js.map +1 -0
- package/lib/webchat/index.d.ts +62 -0
- package/lib/webchat/index.js +32 -0
- package/lib/webchat/index.js.map +1 -0
- package/lib/webchat/message-list.js +88 -0
- package/lib/webchat/message-list.js.map +1 -0
- package/lib/webchat/messages-reducer.js +93 -0
- package/lib/webchat/messages-reducer.js.map +1 -0
- package/lib/webchat/replies.js +78 -0
- package/lib/webchat/replies.js.map +1 -0
- package/lib/webchat/session-view.js +106 -0
- package/lib/webchat/session-view.js.map +1 -0
- package/lib/webchat/use-storage-state-hook.js +29 -0
- package/lib/webchat/use-storage-state-hook.js.map +1 -0
- package/lib/webchat/webchat-dev.js +109 -0
- package/lib/webchat/webchat-dev.js.map +1 -0
- package/lib/webchat/webchat-reducer.js +102 -0
- package/lib/webchat/webchat-reducer.js.map +1 -0
- package/lib/webchat/webchat.js +1041 -0
- package/lib/webchat/webchat.js.map +1 -0
- package/lib/webchat/webview.js +122 -0
- package/lib/webchat/webview.js.map +1 -0
- package/lib/webchat-app.js +643 -0
- package/lib/webchat-app.js.map +1 -0
- package/lib/webchat.template.html +37 -0
- package/lib/webview.js +214 -0
- package/lib/webview.js.map +1 -0
- package/lib/webview.template.html +39 -0
- package/package.json +2 -2
- package/src/components/image.jsx +3 -37
- package/src/index.d.ts +0 -2
- package/src/index.js +0 -1
- package/src/webchat/actions.jsx +0 -1
- package/src/webchat/hooks.js +0 -8
- package/src/webchat/webchat-reducer.js +0 -4
- package/src/webchat/webchat.jsx +0 -18
- package/src/webchat-app.jsx +0 -8
- package/src/webchat/components/portal-modal/backdrop.jsx +0 -38
- package/src/webchat/components/portal-modal/constants.js +0 -7
- package/src/webchat/components/portal-modal/content.jsx +0 -10
- package/src/webchat/components/portal-modal/index.js +0 -5
- package/src/webchat/components/portal-modal/portal-modal-component.jsx +0 -72
- package/src/webchat/components/portal-modal/portal.jsx +0 -21
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/dev-app.jsx"],"names":["DevApp","theme","persistentMenu","coverComponent","blockInputs","enableEmojiPicker","enableAttachments","enableUserInput","enableAnimations","shadowDOM","hostId","storage","storageKey","onInit","onOpen","onClose","onMessage","botOptions","bot","ReactBot","host","optionsAtRuntime","webchatOptions","createRootElement","webchatRef","stringId","session","getString","locale","setLocale","onInitWebchat","onOpenWebchat","onCloseWebchat","onUserInput","dest","getComponent","getReactMountNode","input","lastRoutePath","from","SENDERS","user","message","resp","response","map","r","current","addBotResponse","WebchatApp"],"mappings":"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","sourcesContent":["import merge from 'lodash.merge'\nimport React from 'react'\nimport { render } from 'react-dom'\n\nimport { SENDERS } from './constants'\nimport { ReactBot } from './react-bot'\nimport { onDOMLoaded } from './util/dom'\nimport { WebchatDev } from './webchat/webchat-dev'\nimport { WebchatApp } from './webchat-app'\n\nexport class DevApp extends WebchatApp {\n constructor({\n theme = {},\n persistentMenu,\n coverComponent,\n blockInputs,\n enableEmojiPicker,\n enableAttachments,\n enableUserInput,\n enableAnimations,\n shadowDOM,\n hostId,\n storage,\n storageKey,\n onInit,\n onOpen,\n onClose,\n onMessage,\n ...botOptions\n }) {\n super({\n theme,\n persistentMenu,\n coverComponent,\n blockInputs,\n enableEmojiPicker,\n enableAttachments,\n enableUserInput,\n enableAnimations,\n shadowDOM,\n hostId,\n storage,\n storageKey,\n onInit,\n onOpen,\n onClose,\n onMessage,\n })\n this.bot = new ReactBot({\n ...botOptions,\n })\n }\n\n getComponent(host, optionsAtRuntime = {}) {\n let {\n theme = {},\n persistentMenu,\n coverComponent,\n blockInputs,\n enableEmojiPicker,\n enableAttachments,\n enableUserInput,\n enableAnimations,\n storage,\n storageKey,\n onInit,\n onOpen,\n onClose,\n onMessage,\n hostId,\n ...webchatOptions\n } = optionsAtRuntime\n theme = merge(this.theme, theme)\n persistentMenu = persistentMenu || this.persistentMenu\n coverComponent = coverComponent || this.coverComponent\n blockInputs = blockInputs || this.blockInputs\n enableEmojiPicker = enableEmojiPicker || this.enableEmojiPicker\n enableAttachments = enableAttachments || this.enableAttachments\n enableUserInput = enableUserInput || this.enableUserInput\n enableAnimations = enableAnimations || this.enableAnimations\n storage = storage || this.storage\n storageKey = storageKey || this.storageKey\n this.onInit = onInit || this.onInit\n this.onOpen = onOpen || this.onOpen\n this.onClose = onClose || this.onClose\n this.onMessage = onMessage || this.onMessage\n this.hostId = hostId || this.hostId\n this.createRootElement(host)\n return (\n <WebchatDev\n {...webchatOptions}\n ref={this.webchatRef}\n host={this.host}\n shadowDOM={this.shadowDOM}\n theme={theme}\n persistentMenu={persistentMenu}\n coverComponent={coverComponent}\n blockInputs={blockInputs}\n enableEmojiPicker={enableEmojiPicker}\n enableAttachments={enableAttachments}\n enableUserInput={enableUserInput}\n enableAnimations={enableAnimations}\n storage={storage}\n storageKey={storageKey}\n getString={(stringId, session) => this.bot.getString(stringId, session)}\n setLocale={(locale, session) => this.bot.setLocale(locale, session)}\n onInit={(...args) => this.onInitWebchat(...args)}\n onOpen={(...args) => this.onOpenWebchat(...args)}\n onClose={(...args) => this.onCloseWebchat(...args)}\n onUserInput={(...args) => this.onUserInput(...args)}\n />\n )\n }\n\n render(dest, optionsAtRuntime = {}) {\n onDOMLoaded(() => {\n render(\n this.getComponent(dest, optionsAtRuntime),\n this.getReactMountNode(dest)\n )\n })\n }\n\n async onUserInput({ input, session, lastRoutePath }) {\n this.onMessage &&\n this.onMessage(this, { from: SENDERS.user, message: input })\n const resp = await this.bot.input({ input, session, lastRoutePath })\n this.onMessage &&\n resp.response.map(r =>\n this.onMessage(this, { from: SENDERS.bot, message: r })\n )\n this.webchatRef.current.addBotResponse(resp)\n }\n}\n"],"file":"dev-app.js"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import * as core from '@botonic/core'
|
|
2
|
+
import * as React from 'react'
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
BlockInputOption,
|
|
6
|
+
ButtonProps,
|
|
7
|
+
CoverComponentOptions,
|
|
8
|
+
PersistentMenuTheme,
|
|
9
|
+
ReplyProps,
|
|
10
|
+
ThemeProps,
|
|
11
|
+
WebchatSettingsProps,
|
|
12
|
+
Webview,
|
|
13
|
+
} from './components'
|
|
14
|
+
import { WebchatState } from './webchat'
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* See @botonic/core's Response for the description of the Response's semantics*/
|
|
18
|
+
export interface BotResponse extends core.BotRequest {
|
|
19
|
+
response: [React.ReactNode]
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface Route extends core.Route {
|
|
23
|
+
action?: React.ComponentType<any>
|
|
24
|
+
retryAction?: React.ComponentType<any>
|
|
25
|
+
}
|
|
26
|
+
type Routes = core.Routes<Route>
|
|
27
|
+
|
|
28
|
+
export interface BotOptions extends core.BotOptions {
|
|
29
|
+
routes: Routes
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export class ReactBot extends core.CoreBot {
|
|
33
|
+
renderReactActions({
|
|
34
|
+
actions,
|
|
35
|
+
request: ActionRequest,
|
|
36
|
+
}): Promise<React.ReactNode>
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export class NodeApp {
|
|
40
|
+
constructor(options: Omit<BotOptions, 'renderer'>)
|
|
41
|
+
bot: ReactBot
|
|
42
|
+
input(request: core.BotRequest): Promise<BotResponse>
|
|
43
|
+
renderNode(args): string
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Parameters of the actions' botonicInit method
|
|
47
|
+
export interface ActionRequest {
|
|
48
|
+
defaultDelay: number
|
|
49
|
+
defaultTyping: number
|
|
50
|
+
input: core.Input
|
|
51
|
+
lastRoutePath: string
|
|
52
|
+
params: { [key: string]: string }
|
|
53
|
+
plugins: { [id: string]: core.Plugin }
|
|
54
|
+
session: core.Session
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export class BotonicInputTester {
|
|
58
|
+
constructor(app: NodeApp)
|
|
59
|
+
|
|
60
|
+
text(
|
|
61
|
+
inp: string,
|
|
62
|
+
session?: core.Session,
|
|
63
|
+
lastRoutePath?: string
|
|
64
|
+
): Promise<string>
|
|
65
|
+
|
|
66
|
+
payload(
|
|
67
|
+
inp: string,
|
|
68
|
+
session?: core.Session,
|
|
69
|
+
lastRoutePath?: string
|
|
70
|
+
): Promise<string>
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export class BotonicOutputTester {
|
|
74
|
+
constructor(app: NodeApp)
|
|
75
|
+
|
|
76
|
+
text(out: string, replies?: any): Promise<string>
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface RequestContextInterface extends ActionRequest {
|
|
80
|
+
getString: (stringId: string) => string
|
|
81
|
+
setLocale: (locale: string) => string
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export const RequestContext: React.Context<RequestContextInterface>
|
|
85
|
+
export type RequestContext = React.Context<RequestContextInterface>
|
|
86
|
+
|
|
87
|
+
export interface CustomMessageType {
|
|
88
|
+
customTypeName: string
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function msgToBotonic(
|
|
92
|
+
msg: any,
|
|
93
|
+
customMessageTypes?: CustomMessageType[]
|
|
94
|
+
): React.ReactNode
|
|
95
|
+
|
|
96
|
+
export function msgsToBotonic(
|
|
97
|
+
msgs: any | any[],
|
|
98
|
+
customMessageTypes?: CustomMessageType[]
|
|
99
|
+
): React.ReactNode
|
|
100
|
+
|
|
101
|
+
export interface WebchatArgs {
|
|
102
|
+
blockInputs?: BlockInputOption[]
|
|
103
|
+
coverComponent?: CoverComponentOptions
|
|
104
|
+
defaultDelay?: number
|
|
105
|
+
defaultTyping?: number
|
|
106
|
+
enableAnimations?: boolean
|
|
107
|
+
enableAttachments?: boolean
|
|
108
|
+
enableEmojiPicker?: boolean
|
|
109
|
+
enableUserInput?: boolean
|
|
110
|
+
shadowDOM?: boolean | (() => boolean)
|
|
111
|
+
hostId?: string
|
|
112
|
+
getString?: (stringId: string, session: core.Session) => string
|
|
113
|
+
onClose?: (app: WebchatApp, args: any) => void
|
|
114
|
+
onInit?: (app: WebchatApp, args: any) => void
|
|
115
|
+
onMessage?: (app: WebchatApp, message: WebchatMessage) => void
|
|
116
|
+
onOpen?: (app: WebchatApp, args: any) => void
|
|
117
|
+
onConnectionChange?: (app: WebchatApp, isOnline: boolean) => void
|
|
118
|
+
persistentMenu?: PersistentMenuTheme
|
|
119
|
+
storage?: Storage
|
|
120
|
+
storageKey?: any
|
|
121
|
+
theme?: ThemeProps
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export interface WebchatAppArgs extends WebchatArgs {
|
|
125
|
+
appId?: string
|
|
126
|
+
visibility?: () => boolean
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export interface WebchatMessage {
|
|
130
|
+
ack: 0 | 1
|
|
131
|
+
buttons: ButtonProps[]
|
|
132
|
+
data: any
|
|
133
|
+
delay: number
|
|
134
|
+
display: boolean
|
|
135
|
+
from: 'user' | 'bot'
|
|
136
|
+
id: string
|
|
137
|
+
markdown: boolean
|
|
138
|
+
replies: ReplyProps[]
|
|
139
|
+
timestamp: string
|
|
140
|
+
type: core.InputType
|
|
141
|
+
typing: number
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export interface OnUserInputArgs {
|
|
145
|
+
input: core.Input
|
|
146
|
+
lastRoutePath?: string
|
|
147
|
+
session?: core.Session
|
|
148
|
+
user: core.SessionUser
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export interface OnStateChangeArgs {
|
|
152
|
+
messagesJSON: WebchatMessage[]
|
|
153
|
+
user: core.SessionUser
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export interface MessageInfo {
|
|
157
|
+
data: any | 'typing_on'
|
|
158
|
+
id: string
|
|
159
|
+
type: 'update_webchat_settings' | 'sender_action'
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export interface Event {
|
|
163
|
+
action?: 'update_message_info'
|
|
164
|
+
isError?: boolean
|
|
165
|
+
message?: MessageInfo
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export class WebchatApp {
|
|
169
|
+
constructor(options: WebchatAppArgs)
|
|
170
|
+
addBotMessage(message: WebchatMessage): void
|
|
171
|
+
addBotText(text: string): void
|
|
172
|
+
addUserMessage(message: WebchatMessage): void
|
|
173
|
+
addUserPayload(payload: string): void
|
|
174
|
+
addUserText(text: string): void
|
|
175
|
+
clearMessages(): void
|
|
176
|
+
close(): void
|
|
177
|
+
closeCoverComponent(): void
|
|
178
|
+
getComponent(
|
|
179
|
+
host: HTMLElement,
|
|
180
|
+
optionsAtRuntime?: WebchatAppArgs
|
|
181
|
+
): React.ForwardRefExoticComponent<any>
|
|
182
|
+
getLastMessageUpdate(): string
|
|
183
|
+
getMessages(): WebchatMessage[]
|
|
184
|
+
getVisibility(): Promise<boolean>
|
|
185
|
+
isWebchatVisible({ appId: string }): Promise<boolean>
|
|
186
|
+
onCloseWebchat(args: any): void
|
|
187
|
+
onInitWebchat(args: any): void
|
|
188
|
+
onOpenWebchat(args: any): void
|
|
189
|
+
onServiceEvent(event: Event): void
|
|
190
|
+
onStateChange(args: OnStateChangeArgs): void
|
|
191
|
+
onUserInput(args: OnUserInputArgs): Promise<void>
|
|
192
|
+
open(): void
|
|
193
|
+
openCoverComponent(): void
|
|
194
|
+
render(dest: HTMLElement, optionsAtRuntime: WebchatAppArgs): void
|
|
195
|
+
resendUnsentInputs(): Promise<void>
|
|
196
|
+
resolveWebchatVisibility(optionsAtRuntime: {
|
|
197
|
+
appId: string
|
|
198
|
+
visibility: () => boolean
|
|
199
|
+
}): Promise<boolean>
|
|
200
|
+
setTyping(enable: boolean): void
|
|
201
|
+
toggle(): void
|
|
202
|
+
toggleCoverComponent(): void
|
|
203
|
+
updateMessageInfo(msgId: string, messageInfo: MessageInfo): void
|
|
204
|
+
updateLastMessageDate(date: string): void
|
|
205
|
+
updateUser(user: core.SessionUser): void
|
|
206
|
+
updateWebchatSettings(settings: WebchatSettingsProps): void
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
export interface WebchatContextProps {
|
|
210
|
+
sendText: (text: string) => void
|
|
211
|
+
sendAttachment: (attachment: File) => void
|
|
212
|
+
sendPayload: (payload: string) => void
|
|
213
|
+
sendInput: (input: core.Input) => void
|
|
214
|
+
openWebview: (webviewComponent: Webview) => void
|
|
215
|
+
addMessage: (message: WebchatMessage) => void
|
|
216
|
+
updateMessage: (message: WebchatMessage) => void
|
|
217
|
+
updateReplies: (replies: boolean) => void
|
|
218
|
+
updateLatestInput: (input: core.Input) => void
|
|
219
|
+
closeWebview: () => void
|
|
220
|
+
toggleWebchat: () => void
|
|
221
|
+
getThemeProperty: (property: string, defaultValue?: string) => any
|
|
222
|
+
resolveCase: () => void
|
|
223
|
+
theme: ThemeProps
|
|
224
|
+
webchatState: WebchatState
|
|
225
|
+
updateWebchatDevSettings: (settings: WebchatSettingsProps) => void
|
|
226
|
+
updateUser: (user: core.SessionUser) => void
|
|
227
|
+
}
|
|
228
|
+
export const WebchatContext: React.Context<WebchatContextProps>
|
|
229
|
+
export type WebchatContext = React.Context<WebchatContextProps>
|
|
230
|
+
|
|
231
|
+
export class DevApp extends WebchatApp {
|
|
232
|
+
constructor(args: WebchatAppArgs)
|
|
233
|
+
onUserInput(args: OnUserInputArgs): Promise<void>
|
|
234
|
+
render(dest: HTMLElement, optionsAtRuntime: WebchatAppArgs): void
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
export * from './components'
|
|
238
|
+
export * from './util'
|
|
239
|
+
export * from './webchat'
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
BotonicInputTester: true,
|
|
8
|
+
BotonicOutputTester: true,
|
|
9
|
+
RequestContext: true,
|
|
10
|
+
WebchatContext: true,
|
|
11
|
+
DevApp: true,
|
|
12
|
+
msgsToBotonic: true,
|
|
13
|
+
msgToBotonic: true,
|
|
14
|
+
NodeApp: true,
|
|
15
|
+
staticAsset: true,
|
|
16
|
+
getBotonicApp: true,
|
|
17
|
+
Webchat: true,
|
|
18
|
+
WebchatApp: true,
|
|
19
|
+
WebviewApp: true
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "BotonicInputTester", {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function get() {
|
|
24
|
+
return _botonicTester.BotonicInputTester;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
Object.defineProperty(exports, "BotonicOutputTester", {
|
|
28
|
+
enumerable: true,
|
|
29
|
+
get: function get() {
|
|
30
|
+
return _botonicTester.BotonicOutputTester;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
Object.defineProperty(exports, "DevApp", {
|
|
34
|
+
enumerable: true,
|
|
35
|
+
get: function get() {
|
|
36
|
+
return _devApp.DevApp;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
Object.defineProperty(exports, "NodeApp", {
|
|
40
|
+
enumerable: true,
|
|
41
|
+
get: function get() {
|
|
42
|
+
return _nodeApp.NodeApp;
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
Object.defineProperty(exports, "RequestContext", {
|
|
46
|
+
enumerable: true,
|
|
47
|
+
get: function get() {
|
|
48
|
+
return _contexts.RequestContext;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
Object.defineProperty(exports, "Webchat", {
|
|
52
|
+
enumerable: true,
|
|
53
|
+
get: function get() {
|
|
54
|
+
return _index.Webchat;
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
Object.defineProperty(exports, "WebchatApp", {
|
|
58
|
+
enumerable: true,
|
|
59
|
+
get: function get() {
|
|
60
|
+
return _webchatApp.WebchatApp;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
Object.defineProperty(exports, "WebchatContext", {
|
|
64
|
+
enumerable: true,
|
|
65
|
+
get: function get() {
|
|
66
|
+
return _contexts.WebchatContext;
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
Object.defineProperty(exports, "WebviewApp", {
|
|
70
|
+
enumerable: true,
|
|
71
|
+
get: function get() {
|
|
72
|
+
return _webview.WebviewApp;
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
Object.defineProperty(exports, "getBotonicApp", {
|
|
76
|
+
enumerable: true,
|
|
77
|
+
get: function get() {
|
|
78
|
+
return _index.getBotonicApp;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
Object.defineProperty(exports, "msgToBotonic", {
|
|
82
|
+
enumerable: true,
|
|
83
|
+
get: function get() {
|
|
84
|
+
return _msgToBotonic.msgToBotonic;
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
Object.defineProperty(exports, "msgsToBotonic", {
|
|
88
|
+
enumerable: true,
|
|
89
|
+
get: function get() {
|
|
90
|
+
return _msgToBotonic.msgsToBotonic;
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
Object.defineProperty(exports, "staticAsset", {
|
|
94
|
+
enumerable: true,
|
|
95
|
+
get: function get() {
|
|
96
|
+
return _environment.staticAsset;
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
var _botonicTester = require("./botonic-tester");
|
|
101
|
+
|
|
102
|
+
var _components = require("./components");
|
|
103
|
+
|
|
104
|
+
Object.keys(_components).forEach(function (key) {
|
|
105
|
+
if (key === "default" || key === "__esModule") return;
|
|
106
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
107
|
+
if (key in exports && exports[key] === _components[key]) return;
|
|
108
|
+
Object.defineProperty(exports, key, {
|
|
109
|
+
enumerable: true,
|
|
110
|
+
get: function get() {
|
|
111
|
+
return _components[key];
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
var _contexts = require("./contexts");
|
|
117
|
+
|
|
118
|
+
var _devApp = require("./dev-app");
|
|
119
|
+
|
|
120
|
+
var _msgToBotonic = require("./msg-to-botonic");
|
|
121
|
+
|
|
122
|
+
var _nodeApp = require("./node-app");
|
|
123
|
+
|
|
124
|
+
var _environment = require("./util/environment");
|
|
125
|
+
|
|
126
|
+
var _index = require("./webchat/index.js");
|
|
127
|
+
|
|
128
|
+
var _webchatApp = require("./webchat-app");
|
|
129
|
+
|
|
130
|
+
var _webview = require("./webview");
|
|
131
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA","sourcesContent":["export { BotonicInputTester, BotonicOutputTester } from './botonic-tester'\nexport * from './components'\nexport { RequestContext, WebchatContext } from './contexts'\nexport { DevApp } from './dev-app'\nexport { msgsToBotonic, msgToBotonic } from './msg-to-botonic'\nexport { NodeApp } from './node-app'\nexport { staticAsset } from './util/environment'\nexport { getBotonicApp, Webchat } from './webchat/index.js'\nexport { WebchatApp } from './webchat-app'\nexport { WebviewApp } from './webview'\n"],"file":"index.js"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.readDataURL = exports.isVideo = exports.isText = exports.isPostback = exports.isOfType = exports.isMedia = exports.isLocation = exports.isImage = exports.isDocument = exports.isCustom = exports.isContact = exports.isCarousel = exports.isButtonMessage = exports.isAudio = exports.isAllowedSize = exports.getMediaType = exports.getFullMimeWhitelist = exports.INPUT_MEDIA_TYPES = void 0;
|
|
9
|
+
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
|
|
12
|
+
var _core = require("@botonic/core");
|
|
13
|
+
|
|
14
|
+
var _constants = require("./constants");
|
|
15
|
+
|
|
16
|
+
var isOfType = function isOfType(msgType, type) {
|
|
17
|
+
return msgType === type;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
exports.isOfType = isOfType;
|
|
21
|
+
|
|
22
|
+
var isText = function isText(msg) {
|
|
23
|
+
return isOfType(msg.type, _core.INPUT.TEXT);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
exports.isText = isText;
|
|
27
|
+
|
|
28
|
+
var isPostback = function isPostback(msg) {
|
|
29
|
+
return isOfType(msg.type, _core.INPUT.POSTBACK);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
exports.isPostback = isPostback;
|
|
33
|
+
|
|
34
|
+
var isAudio = function isAudio(msg) {
|
|
35
|
+
return isOfType(msg.type, _core.INPUT.AUDIO);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
exports.isAudio = isAudio;
|
|
39
|
+
|
|
40
|
+
var isImage = function isImage(msg) {
|
|
41
|
+
return isOfType(msg.type, _core.INPUT.IMAGE);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
exports.isImage = isImage;
|
|
45
|
+
|
|
46
|
+
var isVideo = function isVideo(msg) {
|
|
47
|
+
return isOfType(msg.type, _core.INPUT.VIDEO);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
exports.isVideo = isVideo;
|
|
51
|
+
|
|
52
|
+
var isDocument = function isDocument(msg) {
|
|
53
|
+
return isOfType(msg.type, _core.INPUT.DOCUMENT);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
exports.isDocument = isDocument;
|
|
57
|
+
|
|
58
|
+
var isLocation = function isLocation(msg) {
|
|
59
|
+
return isOfType(msg.type, _core.INPUT.LOCATION);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
exports.isLocation = isLocation;
|
|
63
|
+
|
|
64
|
+
var isContact = function isContact(msg) {
|
|
65
|
+
return isOfType(msg.type, _core.INPUT.CONTACT);
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
exports.isContact = isContact;
|
|
69
|
+
|
|
70
|
+
var isCarousel = function isCarousel(msg) {
|
|
71
|
+
return isOfType(msg.type, _core.INPUT.CAROUSEL);
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
exports.isCarousel = isCarousel;
|
|
75
|
+
|
|
76
|
+
var isCustom = function isCustom(msg) {
|
|
77
|
+
return isOfType(msg.type, _core.INPUT.CUSTOM);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
exports.isCustom = isCustom;
|
|
81
|
+
|
|
82
|
+
var isButtonMessage = function isButtonMessage(msg) {
|
|
83
|
+
return isOfType(msg.type, _core.INPUT.BUTTON_MESSAGE);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
exports.isButtonMessage = isButtonMessage;
|
|
87
|
+
var INPUT_MEDIA_TYPES = [_core.INPUT.AUDIO, _core.INPUT.IMAGE, _core.INPUT.VIDEO, _core.INPUT.DOCUMENT];
|
|
88
|
+
exports.INPUT_MEDIA_TYPES = INPUT_MEDIA_TYPES;
|
|
89
|
+
|
|
90
|
+
var isMedia = function isMedia(message) {
|
|
91
|
+
return INPUT_MEDIA_TYPES.some(function (type) {
|
|
92
|
+
return isOfType(message.type, type);
|
|
93
|
+
});
|
|
94
|
+
}; // TODO: Centralize handling attachments in class
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
exports.isMedia = isMedia;
|
|
98
|
+
|
|
99
|
+
var readDataURL = function readDataURL(file) {
|
|
100
|
+
return new Promise(function (resolve, reject) {
|
|
101
|
+
var reader = new FileReader();
|
|
102
|
+
reader.readAsDataURL(file);
|
|
103
|
+
|
|
104
|
+
reader.onload = function () {
|
|
105
|
+
return resolve(reader.result);
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
reader.onerror = function (error) {
|
|
109
|
+
return reject(error);
|
|
110
|
+
};
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
exports.readDataURL = readDataURL;
|
|
115
|
+
|
|
116
|
+
var isAllowedSize = function isAllowedSize(fileSize) {
|
|
117
|
+
var maxAllowedBytesSize = _constants.MAX_ALLOWED_SIZE_MB * 1024 * 1024;
|
|
118
|
+
if (fileSize > maxAllowedBytesSize) return false;
|
|
119
|
+
return true;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
exports.isAllowedSize = isAllowedSize;
|
|
123
|
+
|
|
124
|
+
var getMediaType = function getMediaType(fileType) {
|
|
125
|
+
return Object.entries(_constants.MIME_WHITELIST).filter(function (_ref) {
|
|
126
|
+
var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
|
|
127
|
+
_ = _ref2[0],
|
|
128
|
+
formatsForType = _ref2[1];
|
|
129
|
+
|
|
130
|
+
return formatsForType.includes(fileType);
|
|
131
|
+
}).map(function (_ref3) {
|
|
132
|
+
var _ref4 = (0, _slicedToArray2["default"])(_ref3, 2),
|
|
133
|
+
type = _ref4[0],
|
|
134
|
+
_ = _ref4[1];
|
|
135
|
+
|
|
136
|
+
return type;
|
|
137
|
+
})[0];
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
exports.getMediaType = getMediaType;
|
|
141
|
+
|
|
142
|
+
var getFullMimeWhitelist = function getFullMimeWhitelist() {
|
|
143
|
+
return Object.values(_constants.MIME_WHITELIST).map(function (acceptedFormatsForType) {
|
|
144
|
+
return acceptedFormatsForType.join(',');
|
|
145
|
+
});
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
exports.getFullMimeWhitelist = getFullMimeWhitelist;
|
|
149
|
+
//# sourceMappingURL=message-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/message-utils.js"],"names":["isOfType","msgType","type","isText","msg","INPUT","TEXT","isPostback","POSTBACK","isAudio","AUDIO","isImage","IMAGE","isVideo","VIDEO","isDocument","DOCUMENT","isLocation","LOCATION","isContact","CONTACT","isCarousel","CAROUSEL","isCustom","CUSTOM","isButtonMessage","BUTTON_MESSAGE","INPUT_MEDIA_TYPES","isMedia","message","some","readDataURL","file","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","result","onerror","error","isAllowedSize","fileSize","maxAllowedBytesSize","MAX_ALLOWED_SIZE_MB","getMediaType","fileType","Object","entries","MIME_WHITELIST","filter","_","formatsForType","includes","map","getFullMimeWhitelist","values","acceptedFormatsForType","join"],"mappings":"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","sourcesContent":["import { INPUT } from '@botonic/core'\n\nimport { MAX_ALLOWED_SIZE_MB, MIME_WHITELIST } from './constants'\n\nexport const isOfType = (msgType, type) => msgType === type\n\nexport const isText = msg => isOfType(msg.type, INPUT.TEXT)\nexport const isPostback = msg => isOfType(msg.type, INPUT.POSTBACK)\nexport const isAudio = msg => isOfType(msg.type, INPUT.AUDIO)\nexport const isImage = msg => isOfType(msg.type, INPUT.IMAGE)\nexport const isVideo = msg => isOfType(msg.type, INPUT.VIDEO)\nexport const isDocument = msg => isOfType(msg.type, INPUT.DOCUMENT)\nexport const isLocation = msg => isOfType(msg.type, INPUT.LOCATION)\nexport const isContact = msg => isOfType(msg.type, INPUT.CONTACT)\nexport const isCarousel = msg => isOfType(msg.type, INPUT.CAROUSEL)\nexport const isCustom = msg => isOfType(msg.type, INPUT.CUSTOM)\nexport const isButtonMessage = msg => isOfType(msg.type, INPUT.BUTTON_MESSAGE)\n\nexport const INPUT_MEDIA_TYPES = [\n INPUT.AUDIO,\n INPUT.IMAGE,\n INPUT.VIDEO,\n INPUT.DOCUMENT,\n]\n\nexport const isMedia = message =>\n INPUT_MEDIA_TYPES.some(type => isOfType(message.type, type))\n\n// TODO: Centralize handling attachments in class\n\nexport const readDataURL = file =>\n new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.readAsDataURL(file)\n reader.onload = () => resolve(reader.result)\n reader.onerror = error => reject(error)\n })\n\nexport const isAllowedSize = fileSize => {\n const maxAllowedBytesSize = MAX_ALLOWED_SIZE_MB * 1024 * 1024\n if (fileSize > maxAllowedBytesSize) return false\n return true\n}\n\nexport const getMediaType = fileType => {\n return Object.entries(MIME_WHITELIST)\n .filter(([_, formatsForType]) => formatsForType.includes(fileType))\n .map(([type, _]) => type)[0]\n}\n\nexport const getFullMimeWhitelist = () =>\n Object.values(MIME_WHITELIST).map(acceptedFormatsForType =>\n acceptedFormatsForType.join(',')\n )\n"],"file":"message-utils.js"}
|