@seamly/web-ui 19.0.0-beta.2 → 19.1.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/build/dist/lib/index.debug.js +152 -64
- package/build/dist/lib/index.debug.min.js +1 -1
- package/build/dist/lib/index.debug.min.js.LICENSE.txt +40 -8
- package/build/dist/lib/index.js +595 -462
- package/build/dist/lib/index.min.js +1 -1
- package/build/dist/lib/standalone.js +716 -490
- package/build/dist/lib/standalone.min.js +1 -1
- package/build/dist/lib/storage.js +8 -1
- package/build/dist/lib/storage.min.js +1 -1
- package/build/dist/lib/style-guide.js +1920 -1814
- package/build/dist/lib/style-guide.min.js +1 -1
- package/package.json +1 -1
- package/src/javascripts/api/errors/seamly-base-error.js +10 -0
- package/src/javascripts/api/errors/seamly-configuration-error.js +4 -6
- package/src/javascripts/api/errors/seamly-general-error.js +4 -6
- package/src/javascripts/api/errors/seamly-offline-error.js +4 -6
- package/src/javascripts/api/errors/seamly-session-expired-error.js +4 -6
- package/src/javascripts/api/errors/seamly-unauthorized-error.js +4 -6
- package/src/javascripts/api/errors/seamly-unavailable-error.js +17 -0
- package/src/javascripts/api/index.js +10 -11
- package/src/javascripts/domains/app/actions.js +33 -24
- package/src/javascripts/domains/app/index.js +2 -1
- package/src/javascripts/domains/config/reducer.js +1 -0
- package/src/javascripts/domains/config/selectors.js +1 -1
- package/src/javascripts/domains/errors/index.js +32 -0
- package/src/javascripts/domains/i18n/actions.js +9 -24
- package/src/javascripts/domains/i18n/reducer.js +15 -3
- package/src/javascripts/domains/i18n/utils.js +2 -7
- package/src/javascripts/domains/interrupt/middleware.js +12 -9
- package/src/javascripts/domains/interrupt/reducer.js +10 -9
- package/src/javascripts/domains/store/index.js +7 -2
- package/src/javascripts/domains/store/state-reducer.js +10 -6
- package/src/javascripts/domains/visibility/actions.js +73 -0
- package/src/javascripts/domains/visibility/constants.js +8 -0
- package/src/javascripts/domains/visibility/hooks.js +24 -0
- package/src/javascripts/domains/visibility/index.js +8 -0
- package/src/javascripts/domains/visibility/reducer.js +19 -0
- package/src/javascripts/domains/visibility/selectors.js +9 -0
- package/src/javascripts/domains/visibility/utils.js +42 -0
- package/src/javascripts/index.js +3 -12
- package/src/javascripts/lib/engine/index.js +1 -0
- package/src/javascripts/lib/redux-helpers/index.js +45 -13
- package/src/javascripts/lib/store/providers/session-storage.js +6 -1
- package/src/javascripts/style-guide/components/app.js +1 -1
- package/src/javascripts/style-guide/components/static-core.js +6 -1
- package/src/javascripts/style-guide/states.js +48 -21
- package/src/javascripts/ui/components/conversation/conversation.js +2 -2
- package/src/javascripts/ui/components/conversation/event/hooks/use-text-rendering.js +1 -8
- package/src/javascripts/ui/components/conversation/event/text.js +19 -13
- package/src/javascripts/ui/components/core/seamly-core.js +3 -0
- package/src/javascripts/ui/components/core/seamly-event-subscriber.js +3 -3
- package/src/javascripts/ui/components/core/seamly-initializer.js +2 -6
- package/src/javascripts/ui/components/core/seamly-instance-functions-loader.js +2 -3
- package/src/javascripts/ui/components/core/seamly-new-notifications.js +2 -2
- package/src/javascripts/ui/components/core/seamly-read-state.js +2 -2
- package/src/javascripts/ui/components/entry/toggle-button.js +2 -2
- package/src/javascripts/ui/components/layout/agent-info.js +2 -2
- package/src/javascripts/ui/components/layout/app-frame.js +2 -3
- package/src/javascripts/ui/components/layout/chat-frame.js +2 -2
- package/src/javascripts/ui/components/layout/modal-wrapper.js +3 -6
- package/src/javascripts/ui/components/layout/view.js +3 -6
- package/src/javascripts/ui/hooks/seamly-hooks.js +0 -2
- package/src/javascripts/ui/hooks/use-seamly-chat.js +3 -5
- package/src/javascripts/ui/hooks/use-seamly-commands.js +7 -29
- package/src/javascripts/ui/hooks/use-seamly-idle-detach-countdown.js +2 -2
- package/src/javascripts/ui/utils/general-utils.js +0 -9
- package/src/javascripts/ui/utils/seamly-utils.js +0 -66
- package/src/javascripts/ui/hooks/use-seamly-stored-visibility.js +0 -31
- package/src/javascripts/ui/hooks/use-seamly-visibility.js +0 -98
|
@@ -149,6 +149,17 @@ eval("\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it;\n\
|
|
|
149
149
|
|
|
150
150
|
/***/ }),
|
|
151
151
|
|
|
152
|
+
/***/ "./src/javascripts/api/errors/seamly-base-error.js":
|
|
153
|
+
/*!*********************************************************!*\
|
|
154
|
+
!*** ./src/javascripts/api/errors/seamly-base-error.js ***!
|
|
155
|
+
\*********************************************************/
|
|
156
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
157
|
+
|
|
158
|
+
"use strict";
|
|
159
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SeamlyBaseError)\n/* harmony export */ });\nclass SeamlyBaseError extends Error {\n constructor(originalError, ...params) {\n super(...params);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Object.getPrototypeOf(this));\n }\n\n this.originalError = originalError;\n }\n\n}\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/api/errors/seamly-base-error.js?");
|
|
160
|
+
|
|
161
|
+
/***/ }),
|
|
162
|
+
|
|
152
163
|
/***/ "./src/javascripts/api/errors/seamly-configuration-error.js":
|
|
153
164
|
/*!******************************************************************!*\
|
|
154
165
|
!*** ./src/javascripts/api/errors/seamly-configuration-error.js ***!
|
|
@@ -156,7 +167,7 @@ eval("\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it;\n\
|
|
|
156
167
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
157
168
|
|
|
158
169
|
"use strict";
|
|
159
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SeamlyConfigurationError)\n/* harmony export */ });\nclass SeamlyConfigurationError extends
|
|
170
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SeamlyConfigurationError)\n/* harmony export */ });\n/* harmony import */ var _seamly_base_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./seamly-base-error */ \"./src/javascripts/api/errors/seamly-base-error.js\");\n\nclass SeamlyConfigurationError extends _seamly_base_error__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n constructor(originalError, ...params) {\n super(originalError, ...params);\n this.name = 'SeamlyConfigurationError';\n this.langKey = 'errors.configError';\n }\n\n}\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/api/errors/seamly-configuration-error.js?");
|
|
160
171
|
|
|
161
172
|
/***/ }),
|
|
162
173
|
|
|
@@ -167,7 +178,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
167
178
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
168
179
|
|
|
169
180
|
"use strict";
|
|
170
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SeamlyGeneralError)\n/* harmony export */ });\nclass SeamlyGeneralError extends
|
|
181
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SeamlyGeneralError)\n/* harmony export */ });\n/* harmony import */ var _seamly_base_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./seamly-base-error */ \"./src/javascripts/api/errors/seamly-base-error.js\");\n\nclass SeamlyGeneralError extends _seamly_base_error__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n constructor(originalError, ...params) {\n super(originalError, ...params);\n this.name = 'SeamlyGeneralError';\n this.langKey = 'errors.general';\n this.action = 'reset';\n }\n\n}\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/api/errors/seamly-general-error.js?");
|
|
171
182
|
|
|
172
183
|
/***/ }),
|
|
173
184
|
|
|
@@ -178,7 +189,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
178
189
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
179
190
|
|
|
180
191
|
"use strict";
|
|
181
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SeamlyOfflineError)\n/* harmony export */ });\nclass SeamlyOfflineError extends
|
|
192
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SeamlyOfflineError)\n/* harmony export */ });\n/* harmony import */ var _seamly_base_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./seamly-base-error */ \"./src/javascripts/api/errors/seamly-base-error.js\");\n\nclass SeamlyOfflineError extends _seamly_base_error__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n constructor(originalError, ...params) {\n super(originalError, ...params);\n this.name = 'SeamlyOfflineError';\n this.langKey = 'errors.seamlyOffline';\n }\n\n}\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/api/errors/seamly-offline-error.js?");
|
|
182
193
|
|
|
183
194
|
/***/ }),
|
|
184
195
|
|
|
@@ -189,7 +200,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
189
200
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
190
201
|
|
|
191
202
|
"use strict";
|
|
192
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SeamlySessionExpiredError)\n/* harmony export */ });\nclass SeamlySessionExpiredError extends
|
|
203
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SeamlySessionExpiredError)\n/* harmony export */ });\n/* harmony import */ var _seamly_base_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./seamly-base-error */ \"./src/javascripts/api/errors/seamly-base-error.js\");\n\nclass SeamlySessionExpiredError extends _seamly_base_error__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n constructor(originalError, ...params) {\n super(originalError, ...params);\n this.name = 'SeamlySessionExpiredError';\n this.action = 'reset';\n }\n\n}\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/api/errors/seamly-session-expired-error.js?");
|
|
193
204
|
|
|
194
205
|
/***/ }),
|
|
195
206
|
|
|
@@ -200,7 +211,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
200
211
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
201
212
|
|
|
202
213
|
"use strict";
|
|
203
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SeamlyUnauthorizedError)\n/* harmony export */ });\nclass SeamlyUnauthorizedError extends
|
|
214
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SeamlyUnauthorizedError)\n/* harmony export */ });\n/* harmony import */ var _seamly_base_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./seamly-base-error */ \"./src/javascripts/api/errors/seamly-base-error.js\");\n\nclass SeamlyUnauthorizedError extends _seamly_base_error__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n constructor(originalError, ...params) {\n super(originalError, ...params);\n this.name = 'SeamlyUnauthorizedError';\n this.langKey = 'errors.general';\n this.action = 'reset';\n }\n\n}\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/api/errors/seamly-unauthorized-error.js?");
|
|
215
|
+
|
|
216
|
+
/***/ }),
|
|
217
|
+
|
|
218
|
+
/***/ "./src/javascripts/api/errors/seamly-unavailable-error.js":
|
|
219
|
+
/*!****************************************************************!*\
|
|
220
|
+
!*** ./src/javascripts/api/errors/seamly-unavailable-error.js ***!
|
|
221
|
+
\****************************************************************/
|
|
222
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
223
|
+
|
|
224
|
+
"use strict";
|
|
225
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SeamlyUnavailableError)\n/* harmony export */ });\n/**\n * This error is used to alert the user that there's a problem with the connection\n * when initialising the application because of a connection issue on either the server\n * or the client side.\n */\nclass SeamlyUnavailableError extends Error {\n constructor(params) {\n super(params);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, SeamlyUnavailableError);\n }\n\n this.name = 'SeamlyUnavailableError';\n this.langKey = 'errors.seamlyUnavailable';\n }\n\n}\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/api/errors/seamly-unavailable-error.js?");
|
|
204
226
|
|
|
205
227
|
/***/ }),
|
|
206
228
|
|
|
@@ -222,7 +244,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
222
244
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
223
245
|
|
|
224
246
|
"use strict";
|
|
225
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"API\": () => (/* binding */ API)\n/* harmony export */ });\n/* harmony import */ var xstream__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! xstream */ \"./node_modules/xstream/index.js\");\n/* harmony import */ var xstream__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(xstream__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var superagent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! superagent */ \"./node_modules/superagent/lib/client.js\");\n/* harmony import */ var superagent__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(superagent__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config */ \"./src/javascripts/config.js\");\n/* harmony import */ var _lib_store_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../lib/store/index */ \"./src/javascripts/lib/store/index.js\");\n/* harmony import */ var _lib_id__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../lib/id */ \"./src/javascripts/lib/id.js\");\n/* harmony import */ var _producer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./producer */ \"./src/javascripts/api/producer.js\");\n/* harmony import */ var _lib_store_providers_session_storage__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../lib/store/providers/session-storage */ \"./src/javascripts/lib/store/providers/session-storage.js\");\n/* harmony import */ var _event_producer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./event-producer */ \"./src/javascripts/api/event-producer.js\");\n/* harmony import */ var _errors_seamly_session_expired_error__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./errors/seamly-session-expired-error */ \"./src/javascripts/api/errors/seamly-session-expired-error.js\");\n/* harmony import */ var _errors_seamly_configuration_error__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./errors/seamly-configuration-error */ \"./src/javascripts/api/errors/seamly-configuration-error.js\");\n/* harmony import */ var _errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./errors/seamly-general-error */ \"./src/javascripts/api/errors/seamly-general-error.js\");\n/* harmony import */ var _errors_seamly_unauthorized_error__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./errors/seamly-unauthorized-error */ \"./src/javascripts/api/errors/seamly-unauthorized-error.js\");\n/* harmony import */ var _lib_debug__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../lib/debug */ \"./src/javascripts/lib/debug.js\");\n/* harmony import */ var _lib_debug__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_lib_debug__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _ui_utils_general_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../ui/utils/general-utils */ \"./src/javascripts/ui/utils/general-utils.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst log = _lib_debug__WEBPACK_IMPORTED_MODULE_12___default()('seamly');\nconst DOMAIN = 'api.seamly-app.com';\nconst TRANSLATIONS_VERSION = 1;\n\nfunction buildPayload(command, payload) {\n if (command !== 'message') {\n return payload;\n }\n\n const {\n type,\n body\n } = payload;\n let {\n transactionId\n } = payload;\n\n if (!transactionId) {\n transactionId = (0,_lib_id__WEBPACK_IMPORTED_MODULE_4__.randomId)();\n }\n\n return {\n type,\n body,\n transactionId\n };\n}\n/**\n * Tries to get the time zone key directly from the operating system for those\n * environments that support the ECMAScript Internationalization API.\n *\n * Based on https://github.com/pellepim/jstimezonedetect/blob/master/jstz.main.js\n */\n\n\nfunction getTimeZone() {\n if (!Intl || typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {\n return null;\n }\n\n const format = Intl.DateTimeFormat();\n\n if (typeof format === 'undefined' || typeof format.resolvedOptions === 'undefined') {\n return null;\n }\n\n const timezone = format.resolvedOptions().timeZone; // Ensure we get a valid timezone\n\n if (timezone && (timezone.indexOf('/') > -1 || timezone === 'UTC')) {\n return timezone;\n } else {\n return null;\n }\n}\n\nfunction getEnvironment() {\n return {\n screenResolution: `${window.screen.width}x${window.screen.height}`,\n userAgent: navigator.userAgent,\n currentUrl: window.location.toString(),\n timezone: getTimeZone()\n };\n}\n\nclass API {\n /**\n * Creates an instance of API.\n * @param {Object} [config={}]\n * @param {string} config.key Api key\n * @param {string} config.domain Domain to connect to\n * @param {string} config.secure Connect securely\n * @param {string} config.externalId Unique visitor identifier (optional)\n * @memberof API\n */\n constructor({\n namespace,\n config = {},\n locale\n }) {\n this.store = (0,_lib_store_index__WEBPACK_IMPORTED_MODULE_3__.objectStore)(`${namespace}.connection${locale ? '.' + locale : ''}`, config.storageProvider || _lib_store_providers_session_storage__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n this.connectionInfo = {\n apiKey: config.key,\n domain: config.domain || DOMAIN,\n secure: config.secure !== false ? config.secure || true : false\n };\n this.sendEnvironment = config.sendEnvironment !== undefined ? config.sendEnvironment : true;\n this.connected = false;\n this.configReady = false;\n this.externalId = config.externalId;\n this.internalProducer = new _event_producer__WEBPACK_IMPORTED_MODULE_7__[\"default\"]('API');\n this.internal$ = xstream__WEBPACK_IMPORTED_MODULE_0___default().create(this.internalProducer).flatten();\n this.connection$ = this.internal$.filter(event => event.type === 'connection');\n this.connection$.subscribe({\n next: ({\n connected,\n ready\n }) => {\n this.connected = connected;\n this.ready = ready;\n }\n });\n this.URLS = {};\n }\n\n getAccessToken() {\n return this.store.get('accessToken');\n }\n\n setAccessToken(accessToken) {\n this.store.set('accessToken', accessToken);\n }\n\n getConversationUrl() {\n return this.store.get('conversationUrl');\n }\n\n setConversationUrl(url) {\n this.store.set('conversationUrl', url);\n }\n\n hasConversation() {\n return !!this.getConversationUrl();\n }\n\n getChannelName() {\n return this.store.get('channelName');\n }\n\n setChannelName(name) {\n this.store.set('channelName', name);\n }\n\n clearStore() {\n this.store.delete('accessToken');\n this.store.delete('conversationUrl');\n this.store.delete('channelName');\n }\n\n getUrlPrefix(protocol) {\n const realProtocol = this.connectionInfo.secure ? `${protocol}s` : protocol;\n return `${realProtocol}://${this.connectionInfo.domain}`;\n }\n\n updateUrls({\n _links: responseLinks\n }) {\n this.URLS = Object.entries(responseLinks).filter(([key]) => key !== 'self').reduce((urls, [key, {\n href\n }]) => {\n return _objectSpread(_objectSpread({}, urls), {}, {\n [key]: href\n });\n }, this.URLS);\n }\n\n async reset() {\n await this.disconnect();\n this.clearStore();\n return this.getConfig();\n }\n\n async disconnect() {\n if (this.conversationProducer) {\n await this.conversationProducer.disconnect();\n }\n\n this.connected = false;\n this.configReady = false;\n }\n\n async createConversation() {\n try {\n const request = superagent__WEBPACK_IMPORTED_MODULE_1___default().post(`${this.getUrlPrefix('http')}${this.URLS.conversations}`).set('Content-Type', 'application/json').query({\n v: _config__WEBPACK_IMPORTED_MODULE_2__.apiVersion\n }) // withCredentials() is necessary to allow browsers to save received\n // cookies in CORS requests.\n .withCredentials().send({\n authorizationRequired: true,\n externalId: this.externalId || undefined\n });\n const {\n body\n } = await request;\n const {\n conversation\n } = body;\n\n const initialState = _objectSpread({}, conversation);\n\n delete initialState.accessToken;\n delete initialState.channelName;\n this.setAccessToken(conversation.accessToken);\n this.setChannelName(conversation.channelName);\n this.updateUrls(body);\n this.setConversationUrl(this.URLS.conversation);\n return initialState;\n } catch (error) {\n if (error.status >= 500) {\n throw new _errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_10__[\"default\"]();\n }\n\n throw error;\n }\n }\n\n async getConversation() {\n if (!this.hasConversation()) {\n return null;\n }\n\n try {\n const {\n body\n } = await superagent__WEBPACK_IMPORTED_MODULE_1___default().get(`${this.getUrlPrefix('http')}${this.URLS.history}`).set('Authorization', `Bearer ${this.getAccessToken()}`).query({\n v: _config__WEBPACK_IMPORTED_MODULE_2__.apiVersion\n });\n this.updateUrls(body);\n const {\n messages,\n participants,\n activeServiceSessionId,\n activeServiceSettings,\n serviceData,\n ui,\n translation\n } = body.history;\n return {\n events: messages.map(([type, msg]) => {\n return {\n type,\n payload: _objectSpread(_objectSpread({}, msg), {}, {\n type: type === 'participant' ? type : msg.type\n })\n };\n }),\n participants,\n activeServiceSessionId,\n activeServiceSettings,\n serviceData,\n resumeConversationPrompt: ui ? Boolean(ui.resumeConversationPrompt) : false,\n translation\n };\n } catch (error) {\n if (error.status === 401) {\n throw new _errors_seamly_unauthorized_error__WEBPACK_IMPORTED_MODULE_11__[\"default\"]();\n }\n\n if (error.status === 404) {\n throw new _errors_seamly_session_expired_error__WEBPACK_IMPORTED_MODULE_8__[\"default\"]();\n }\n\n if (error.status >= 500) {\n throw new _errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_10__[\"default\"]();\n }\n\n throw error;\n }\n }\n\n async connect() {\n this.connected = false;\n let conversationInitialState = null;\n\n if (!this.hasConversation()) {\n conversationInitialState = await this.createConversation();\n }\n\n this.conversationProducer = new _producer__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`${this.getUrlPrefix('ws')}${this.URLS.socket}`, this.getChannelName(), this.getAccessToken());\n this.internalProducer.emit(xstream__WEBPACK_IMPORTED_MODULE_0___default().create(this.conversationProducer)); // Send environment\n\n if (this.sendEnvironment) {\n this.send('context', {\n environment: this.sendEnvironment === true ? getEnvironment() : this.sendEnvironment\n }, false);\n }\n\n return conversationInitialState;\n }\n\n uploadFile(file, progressCallback, successCallback, errorCallback) {\n const formData = new FormData();\n formData.append('upload', file);\n const req = superagent__WEBPACK_IMPORTED_MODULE_1___default().post(`${this.getUrlPrefix('http')}${this.URLS.uploads}`).set('Authorization', `Bearer ${this.getAccessToken()}`).send(formData);\n req.on('progress', function (e) {\n const {\n direction,\n percent\n } = e;\n\n if (direction === 'upload' && typeof progressCallback === 'function') {\n progressCallback(percent);\n }\n });\n req.then(uploadResponse => {\n if (successCallback) {\n successCallback(uploadResponse);\n }\n }).catch(err => {\n if (errorCallback) {\n errorCallback(err.response);\n } else {\n throw err;\n }\n });\n return req;\n }\n\n getAccountConfig() {\n return superagent__WEBPACK_IMPORTED_MODULE_1___default().post(`${this.getUrlPrefix('http')}/client/${this.connectionInfo.apiKey}/configs`).set('Content-Type', 'application/json').query({\n v: _config__WEBPACK_IMPORTED_MODULE_2__.apiVersion\n }).then(({\n body\n }) => {\n this.updateUrls(body);\n return body.config;\n }).catch(error => {\n if (error.status === 404) {\n throw new _errors_seamly_configuration_error__WEBPACK_IMPORTED_MODULE_9__[\"default\"]();\n }\n\n if (error.status >= 500) {\n throw new _errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_10__[\"default\"]();\n }\n\n throw error;\n });\n }\n\n getConversationIntitialState() {\n return superagent__WEBPACK_IMPORTED_MODULE_1___default().get(`${this.getUrlPrefix('http')}${this.getConversationUrl()}`).set('Authorization', `Bearer ${this.getAccessToken()}`).query({\n v: _config__WEBPACK_IMPORTED_MODULE_2__.apiVersion\n }).then(({\n body\n }) => {\n this.updateUrls(body);\n return (0,_ui_utils_general_utils__WEBPACK_IMPORTED_MODULE_13__.omit)(body.conversation, ['accessToken', 'channelName']);\n }).catch(error => {\n if (error.status === 401) {\n throw new _errors_seamly_unauthorized_error__WEBPACK_IMPORTED_MODULE_11__[\"default\"]();\n }\n\n if (error.status === 404) {\n throw new _errors_seamly_session_expired_error__WEBPACK_IMPORTED_MODULE_8__[\"default\"]();\n }\n\n if (error.status >= 500) {\n throw new _errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_10__[\"default\"]();\n }\n\n throw error;\n });\n }\n\n async getConfig() {\n const config = await this.getAccountConfig();\n this.configReady = true;\n return config;\n }\n\n async getTranslations(locale) {\n try {\n const url = `${this.getUrlPrefix('http')}${this.URLS.translations}`.replace('{version}', String(TRANSLATIONS_VERSION)).replace('{locale}', locale);\n const request = superagent__WEBPACK_IMPORTED_MODULE_1___default().get(url);\n const {\n body\n } = await request;\n return body.translations;\n } catch (error) {\n if (error.status >= 500) {\n throw new _errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_10__[\"default\"]();\n }\n\n throw error;\n }\n }\n\n send(command, payload, waitForReady = true) {\n if (!this.connected || waitForReady && !this.ready) {\n // Wait for connection\n this.connection$.filter(e => waitForReady ? e.connected && e.ready : e.connected).take(1).subscribe({\n next: () => this.send(command, payload, waitForReady)\n });\n return;\n }\n\n log('[SEND]', command, payload);\n this.conversationProducer.push(command, buildPayload(command, payload), 10000);\n }\n\n sendContext(context = {}) {\n const {\n locale,\n variables\n } = context;\n const payload = {};\n\n if (locale) {\n if (typeof locale !== 'string') {\n throw new Error('Locale must be a string');\n }\n\n payload.locale = locale;\n }\n\n if (variables) {\n if (typeof variables !== 'object') {\n throw new Error('Variables must be an object');\n }\n\n payload.variables = variables;\n } // If we have empty context don't send context message\n\n\n if (Object.keys(payload).length === 0 && payload.constructor === Object) {\n return;\n }\n\n this.send('context', payload, false);\n }\n\n stream() {\n return this.internal$.filter(event => event.type !== 'connection');\n }\n\n}\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/api/index.js?");
|
|
247
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"API\": () => (/* binding */ API)\n/* harmony export */ });\n/* harmony import */ var xstream__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! xstream */ \"./node_modules/xstream/index.js\");\n/* harmony import */ var xstream__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(xstream__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var superagent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! superagent */ \"./node_modules/superagent/lib/client.js\");\n/* harmony import */ var superagent__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(superagent__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config */ \"./src/javascripts/config.js\");\n/* harmony import */ var _lib_store_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../lib/store/index */ \"./src/javascripts/lib/store/index.js\");\n/* harmony import */ var _lib_id__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../lib/id */ \"./src/javascripts/lib/id.js\");\n/* harmony import */ var _producer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./producer */ \"./src/javascripts/api/producer.js\");\n/* harmony import */ var _lib_store_providers_session_storage__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../lib/store/providers/session-storage */ \"./src/javascripts/lib/store/providers/session-storage.js\");\n/* harmony import */ var _event_producer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./event-producer */ \"./src/javascripts/api/event-producer.js\");\n/* harmony import */ var _errors_seamly_session_expired_error__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./errors/seamly-session-expired-error */ \"./src/javascripts/api/errors/seamly-session-expired-error.js\");\n/* harmony import */ var _errors_seamly_configuration_error__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./errors/seamly-configuration-error */ \"./src/javascripts/api/errors/seamly-configuration-error.js\");\n/* harmony import */ var _errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./errors/seamly-general-error */ \"./src/javascripts/api/errors/seamly-general-error.js\");\n/* harmony import */ var _errors_seamly_unauthorized_error__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./errors/seamly-unauthorized-error */ \"./src/javascripts/api/errors/seamly-unauthorized-error.js\");\n/* harmony import */ var _lib_debug__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../lib/debug */ \"./src/javascripts/lib/debug.js\");\n/* harmony import */ var _lib_debug__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_lib_debug__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _ui_utils_general_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../ui/utils/general-utils */ \"./src/javascripts/ui/utils/general-utils.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst log = _lib_debug__WEBPACK_IMPORTED_MODULE_12___default()('seamly');\nconst DOMAIN = 'api.seamly-app.com';\nconst TRANSLATIONS_VERSION = 1;\n\nfunction buildPayload(command, payload) {\n if (command !== 'message') {\n return payload;\n }\n\n const {\n type,\n body\n } = payload;\n let {\n transactionId\n } = payload;\n\n if (!transactionId) {\n transactionId = (0,_lib_id__WEBPACK_IMPORTED_MODULE_4__.randomId)();\n }\n\n return {\n type,\n body,\n transactionId\n };\n}\n/**\n * Tries to get the time zone key directly from the operating system for those\n * environments that support the ECMAScript Internationalization API.\n *\n * Based on https://github.com/pellepim/jstimezonedetect/blob/master/jstz.main.js\n */\n\n\nfunction getTimeZone() {\n if (!Intl || typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {\n return null;\n }\n\n const format = Intl.DateTimeFormat();\n\n if (typeof format === 'undefined' || typeof format.resolvedOptions === 'undefined') {\n return null;\n }\n\n const timezone = format.resolvedOptions().timeZone; // Ensure we get a valid timezone\n\n if (timezone && (timezone.indexOf('/') > -1 || timezone === 'UTC')) {\n return timezone;\n } else {\n return null;\n }\n}\n\nfunction getEnvironment() {\n return {\n screenResolution: `${window.screen.width}x${window.screen.height}`,\n userAgent: navigator.userAgent,\n currentUrl: window.location.toString(),\n timezone: getTimeZone()\n };\n}\n\nclass API {\n /**\n * Creates an instance of API.\n * @param {Object} [config={}]\n * @param {string} config.key Api key\n * @param {string} config.domain Domain to connect to\n * @param {string} config.secure Connect securely\n * @param {string} config.externalId Unique visitor identifier (optional)\n * @memberof API\n */\n constructor({\n namespace,\n config = {},\n locale\n }) {\n this.store = (0,_lib_store_index__WEBPACK_IMPORTED_MODULE_3__.objectStore)(`${namespace}.connection${locale ? '.' + locale : ''}`, config.storageProvider || _lib_store_providers_session_storage__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n this.connectionInfo = {\n apiKey: config.key,\n domain: config.domain || DOMAIN,\n secure: config.secure !== false ? config.secure || true : false\n };\n this.sendEnvironment = config.sendEnvironment !== undefined ? config.sendEnvironment : true;\n this.connected = false;\n this.configReady = false;\n this.externalId = config.externalId;\n this.internalProducer = new _event_producer__WEBPACK_IMPORTED_MODULE_7__[\"default\"]('API');\n this.internal$ = xstream__WEBPACK_IMPORTED_MODULE_0___default().create(this.internalProducer).flatten();\n this.connection$ = this.internal$.filter(event => event.type === 'connection');\n this.connection$.subscribe({\n next: ({\n connected,\n ready\n }) => {\n this.connected = connected;\n this.ready = ready;\n }\n });\n this.URLS = {};\n }\n\n getAccessToken() {\n return this.store.get('accessToken');\n }\n\n setAccessToken(accessToken) {\n this.store.set('accessToken', accessToken);\n }\n\n getConversationUrl() {\n return this.store.get('conversationUrl');\n }\n\n setConversationUrl(url) {\n this.store.set('conversationUrl', url);\n }\n\n hasConversation() {\n return !!this.getConversationUrl();\n }\n\n getChannelName() {\n return this.store.get('channelName');\n }\n\n setChannelName(name) {\n this.store.set('channelName', name);\n }\n\n clearStore() {\n this.store.delete('accessToken');\n this.store.delete('conversationUrl');\n this.store.delete('channelName');\n }\n\n getUrlPrefix(protocol) {\n const realProtocol = this.connectionInfo.secure ? `${protocol}s` : protocol;\n return `${realProtocol}://${this.connectionInfo.domain}`;\n }\n\n updateUrls({\n _links: responseLinks\n }) {\n this.URLS = Object.entries(responseLinks).filter(([key]) => key !== 'self').reduce((urls, [key, {\n href\n }]) => {\n return _objectSpread(_objectSpread({}, urls), {}, {\n [key]: href\n });\n }, this.URLS);\n }\n\n async reset() {\n await this.disconnect();\n this.clearStore();\n return this.getConfig();\n }\n\n async disconnect() {\n if (this.conversationProducer) {\n await this.conversationProducer.disconnect();\n }\n\n this.connected = false;\n this.configReady = false;\n }\n\n async createConversation() {\n try {\n const request = superagent__WEBPACK_IMPORTED_MODULE_1___default().post(`${this.getUrlPrefix('http')}${this.URLS.conversations}`).set('Content-Type', 'application/json').query({\n v: _config__WEBPACK_IMPORTED_MODULE_2__.apiVersion\n }) // withCredentials() is necessary to allow browsers to save received\n // cookies in CORS requests.\n .withCredentials().send({\n externalId: this.externalId || undefined\n });\n const {\n body\n } = await request;\n const {\n conversation\n } = body;\n\n const initialState = _objectSpread({}, conversation);\n\n delete initialState.accessToken;\n delete initialState.channelName;\n this.setAccessToken(conversation.accessToken);\n this.setChannelName(conversation.channelName);\n this.updateUrls(body);\n this.setConversationUrl(this.URLS.conversation);\n return initialState;\n } catch (error) {\n if (error.status >= 500) {\n throw new _errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_10__[\"default\"](error);\n }\n\n throw error;\n }\n }\n\n async getConversation() {\n if (!this.hasConversation()) {\n return null;\n }\n\n try {\n const {\n body\n } = await superagent__WEBPACK_IMPORTED_MODULE_1___default().get(`${this.getUrlPrefix('http')}${this.URLS.history}`).set('Authorization', `Bearer ${this.getAccessToken()}`).query({\n v: _config__WEBPACK_IMPORTED_MODULE_2__.apiVersion\n });\n this.updateUrls(body);\n const {\n messages,\n participants,\n activeServiceSessionId,\n activeServiceSettings,\n serviceData,\n ui,\n translation\n } = body.history;\n return {\n events: messages.map(([type, msg]) => {\n return {\n type,\n payload: _objectSpread(_objectSpread({}, msg), {}, {\n type: type === 'participant' ? type : msg.type\n })\n };\n }),\n participants,\n activeServiceSessionId,\n activeServiceSettings,\n serviceData,\n resumeConversationPrompt: ui ? Boolean(ui.resumeConversationPrompt) : false,\n translation\n };\n } catch (error) {\n if (error.status === 401) {\n throw new _errors_seamly_unauthorized_error__WEBPACK_IMPORTED_MODULE_11__[\"default\"](error);\n }\n\n if (error.status === 404) {\n throw new _errors_seamly_session_expired_error__WEBPACK_IMPORTED_MODULE_8__[\"default\"](error);\n }\n\n if (error.status >= 500) {\n throw new _errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_10__[\"default\"](error);\n }\n\n throw error;\n }\n }\n\n async connect() {\n this.connected = false;\n let conversationInitialState = null;\n\n if (!this.hasConversation()) {\n conversationInitialState = await this.createConversation();\n }\n\n this.conversationProducer = new _producer__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`${this.getUrlPrefix('ws')}${this.URLS.socket}`, this.getChannelName(), this.getAccessToken());\n this.internalProducer.emit(xstream__WEBPACK_IMPORTED_MODULE_0___default().create(this.conversationProducer)); // Send environment\n\n if (this.sendEnvironment) {\n this.send('context', {\n environment: this.sendEnvironment === true ? getEnvironment() : this.sendEnvironment\n }, false);\n }\n\n return conversationInitialState;\n }\n\n uploadFile(file, progressCallback, successCallback, errorCallback) {\n const formData = new FormData();\n formData.append('upload', file);\n const req = superagent__WEBPACK_IMPORTED_MODULE_1___default().post(`${this.getUrlPrefix('http')}${this.URLS.uploads}`).set('Authorization', `Bearer ${this.getAccessToken()}`).send(formData);\n req.on('progress', function (e) {\n const {\n direction,\n percent\n } = e;\n\n if (direction === 'upload' && typeof progressCallback === 'function') {\n progressCallback(percent);\n }\n });\n req.then(uploadResponse => {\n if (successCallback) {\n successCallback(uploadResponse);\n }\n }).catch(err => {\n if (errorCallback) {\n errorCallback(err.response);\n } else {\n throw err;\n }\n });\n return req;\n }\n\n getAccountConfig() {\n return superagent__WEBPACK_IMPORTED_MODULE_1___default().post(`${this.getUrlPrefix('http')}/client/${this.connectionInfo.apiKey}/configs`).set('Content-Type', 'application/json').query({\n v: _config__WEBPACK_IMPORTED_MODULE_2__.apiVersion\n }).then(({\n body\n }) => {\n this.updateUrls(body);\n return body.config;\n }).catch(error => {\n if (error.status === 404) {\n throw new _errors_seamly_configuration_error__WEBPACK_IMPORTED_MODULE_9__[\"default\"](error);\n }\n\n if (error.status >= 500) {\n throw new _errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_10__[\"default\"](error);\n }\n\n throw error;\n });\n }\n\n getConversationIntitialState() {\n return superagent__WEBPACK_IMPORTED_MODULE_1___default().get(`${this.getUrlPrefix('http')}${this.getConversationUrl()}`).set('Authorization', `Bearer ${this.getAccessToken()}`).query({\n v: _config__WEBPACK_IMPORTED_MODULE_2__.apiVersion\n }).then(({\n body\n }) => {\n this.updateUrls(body);\n return (0,_ui_utils_general_utils__WEBPACK_IMPORTED_MODULE_13__.omit)(body.conversation, ['accessToken', 'channelName']);\n }).catch(error => {\n if (error.status === 401) {\n throw new _errors_seamly_unauthorized_error__WEBPACK_IMPORTED_MODULE_11__[\"default\"](error);\n }\n\n if (error.status === 404) {\n throw new _errors_seamly_session_expired_error__WEBPACK_IMPORTED_MODULE_8__[\"default\"](error);\n }\n\n if (error.status >= 500) {\n throw new _errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_10__[\"default\"](error);\n }\n\n throw error;\n });\n }\n\n async getConfig() {\n const config = await this.getAccountConfig();\n this.configReady = true;\n return config;\n }\n\n async getTranslations(locale) {\n try {\n const url = `${this.getUrlPrefix('http')}${this.URLS.translations}`.replace('{version}', String(TRANSLATIONS_VERSION)).replace('{locale}', locale);\n const request = superagent__WEBPACK_IMPORTED_MODULE_1___default().get(url);\n const {\n body\n } = await request;\n return body.translations;\n } catch (error) {\n if (error.status >= 500) {\n throw new _errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_10__[\"default\"](error);\n }\n\n throw error;\n }\n }\n\n send(command, payload, waitForReady = true) {\n if (!this.connected || waitForReady && !this.ready) {\n // Wait for connection\n this.connection$.filter(e => waitForReady ? e.connected && e.ready : e.connected).take(1).subscribe({\n next: () => this.send(command, payload, waitForReady)\n });\n return;\n }\n\n log('[SEND]', command, payload);\n this.conversationProducer.push(command, buildPayload(command, payload), 10000);\n }\n\n sendContext(context = {}) {\n const {\n locale,\n variables\n } = context;\n const payload = {};\n\n if (locale) {\n if (typeof locale !== 'string') {\n throw new Error('Locale must be a string');\n }\n\n payload.locale = locale;\n }\n\n if (variables) {\n if (typeof variables !== 'object') {\n throw new Error('Variables must be an object');\n }\n\n payload.variables = variables;\n } // If we have empty context don't send context message\n\n\n if (Object.keys(payload).length === 0 && payload.constructor === Object) {\n return;\n }\n\n this.send('context', payload, false);\n }\n\n stream() {\n return this.internal$.filter(event => event.type !== 'connection');\n }\n\n}\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/api/index.js?");
|
|
226
248
|
|
|
227
249
|
/***/ }),
|
|
228
250
|
|
|
@@ -255,7 +277,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
255
277
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
256
278
|
|
|
257
279
|
"use strict";
|
|
258
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setHasResponded\": () => (/* binding */ setHasResponded),\n/* harmony export */ \"initialize\": () => (/* binding */ initialize)\n/* harmony export */ });\n/* harmony import */ var _ui_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ui/utils/seamly-utils */ \"./src/javascripts/ui/utils/seamly-utils.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../config */ \"./src/javascripts/domains/config/index.js\");\n/* harmony import */ var
|
|
280
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setHasResponded\": () => (/* binding */ setHasResponded),\n/* harmony export */ \"initialize\": () => (/* binding */ initialize),\n/* harmony export */ \"reset\": () => (/* binding */ reset)\n/* harmony export */ });\n/* harmony import */ var _ui_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../ui/utils/seamly-utils */ \"./src/javascripts/ui/utils/seamly-utils.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../config */ \"./src/javascripts/domains/config/index.js\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _visibility_actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../visibility/actions */ \"./src/javascripts/domains/visibility/actions.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils */ \"./src/javascripts/domains/app/utils.js\");\n/* harmony import */ var _api_errors_seamly_unavailable_error__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../api/errors/seamly-unavailable-error */ \"./src/javascripts/api/errors/seamly-unavailable-error.js\");\n/* harmony import */ var _api_errors_seamly_session_expired_error__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../api/errors/seamly-session-expired-error */ \"./src/javascripts/api/errors/seamly-session-expired-error.js\");\n\n\n\n\n\n\n\nconst setHasResponded = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.createAction)('setHasResponded', hasResponded => ({\n hasResponded\n}));\nconst initialize = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.createThunk)('initialize', async (config, {\n dispatch,\n extra: {\n api\n }\n}) => {\n var _config$context;\n\n dispatch(_config__WEBPACK_IMPORTED_MODULE_1__.Actions.initialize(config));\n let locale = config === null || config === void 0 ? void 0 : (_config$context = config.context) === null || _config$context === void 0 ? void 0 : _config$context.locale;\n\n try {\n const {\n features,\n defaultLocale\n } = await api.getConfig();\n dispatch({\n type: _ui_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_0__.seamlyActions.SET_FEATURES,\n features\n });\n locale = locale || defaultLocale;\n dispatch(_i18n__WEBPACK_IMPORTED_MODULE_2__.Actions.setInitialLocale(locale));\n } catch (e) {\n throw new _api_errors_seamly_unavailable_error__WEBPACK_IMPORTED_MODULE_5__[\"default\"]();\n }\n\n try {\n if (api.hasConversation()) {\n var _initialState$transla;\n\n const initialState = await api.getConversationIntitialState();\n dispatch({\n type: _ui_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_0__.seamlyActions.SET_INITIAL_STATE,\n initialState\n });\n locale = ((_initialState$transla = initialState.translation) === null || _initialState$transla === void 0 ? void 0 : _initialState$transla.locale) || locale;\n\n if ('userResponded' in initialState) {\n dispatch(setHasResponded(initialState.userResponded));\n }\n }\n } catch (e) {\n if (e instanceof _api_errors_seamly_session_expired_error__WEBPACK_IMPORTED_MODULE_6__[\"default\"]) {\n throw e;\n }\n\n throw new _api_errors_seamly_unavailable_error__WEBPACK_IMPORTED_MODULE_5__[\"default\"]();\n } finally {\n await dispatch(_i18n__WEBPACK_IMPORTED_MODULE_2__.Actions.setLocale(locale));\n dispatch(_visibility_actions__WEBPACK_IMPORTED_MODULE_3__.initialize());\n }\n});\nconst reset = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.createAction)('reset', () => {});\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/app/actions.js?");
|
|
259
281
|
|
|
260
282
|
/***/ }),
|
|
261
283
|
|
|
@@ -277,7 +299,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
277
299
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
278
300
|
|
|
279
301
|
"use strict";
|
|
280
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"useUserHasResponded\": () => (/* reexport safe */
|
|
302
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"useUserHasResponded\": () => (/* reexport safe */ _hooks__WEBPACK_IMPORTED_MODULE_2__.useUserHasResponded),\n/* harmony export */ \"Reducer\": () => (/* reexport safe */ _reducer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"Actions\": () => (/* reexport module object */ _actions__WEBPACK_IMPORTED_MODULE_0__),\n/* harmony export */ \"Selectors\": () => (/* reexport module object */ _selectors__WEBPACK_IMPORTED_MODULE_1__)\n/* harmony export */ });\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./actions */ \"./src/javascripts/domains/app/actions.js\");\n/* harmony import */ var _selectors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./selectors */ \"./src/javascripts/domains/app/selectors.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hooks */ \"./src/javascripts/domains/app/hooks.js\");\n/* harmony import */ var _reducer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./reducer */ \"./src/javascripts/domains/app/reducer.js\");\n\n\n\n\n\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/app/index.js?");
|
|
281
303
|
|
|
282
304
|
/***/ }),
|
|
283
305
|
|
|
@@ -365,7 +387,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
365
387
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
366
388
|
|
|
367
389
|
"use strict";
|
|
368
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../config */ \"./src/javascripts/config.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/javascripts/domains/config/utils.js\");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./actions */ \"./src/javascripts/domains/config/actions.js\");\n/* harmony import */ var _ui_utils_general_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../ui/utils/general-utils */ \"./src/javascripts/ui/utils/general-utils.js\");\nconst _excluded = [\"messages\"];\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\nconst initialState = _objectSpread(_objectSpread({}, _config__WEBPACK_IMPORTED_MODULE_0__.defaultConfig), {}, {\n hideOnNoUserResponse: false,\n showDisclaimer: false,\n showFaq: false,\n customComponents: {},\n defaults: {}\n});\n\nconst configKeys = ['hideOnNoUserResponse', 'showDisclaimer', 'showFaq', 'namespace', 'customComponents', 'defaults', 'layoutMode', 'api', 'zIndex', 'context', 'appContainerClassNames', 'messages', 'visible', 'visibilityCallback'];\n\nconst updateState = (state, {\n config\n}) => {\n const _pick = (0,_ui_utils_general_utils__WEBPACK_IMPORTED_MODULE_3__.pick)(config, configKeys),\n {\n messages\n } = _pick,\n partialConfig = _objectWithoutProperties(_pick, _excluded);\n\n let newState = state;\n\n if (Object.keys(partialConfig).length > 0) {\n newState = _objectSpread(_objectSpread({}, newState), partialConfig);\n }\n\n if (messages) {\n newState = _objectSpread(_objectSpread({}, newState), {}, {\n messages: _objectSpread(_objectSpread({}, newState.messages), messages)\n });\n }\n\n return newState;\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_utils__WEBPACK_IMPORTED_MODULE_1__.createReducer)({\n [_actions__WEBPACK_IMPORTED_MODULE_2__.initialize]: (state, action) => {\n return updateState(state, action);\n },\n [_actions__WEBPACK_IMPORTED_MODULE_2__.update]: (state, action) => {\n return updateState(state, action);\n }\n}, initialState));\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/config/reducer.js?");
|
|
390
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../config */ \"./src/javascripts/config.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/javascripts/domains/config/utils.js\");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./actions */ \"./src/javascripts/domains/config/actions.js\");\n/* harmony import */ var _ui_utils_general_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../ui/utils/general-utils */ \"./src/javascripts/ui/utils/general-utils.js\");\nconst _excluded = [\"messages\"];\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\nconst initialState = _objectSpread(_objectSpread({}, _config__WEBPACK_IMPORTED_MODULE_0__.defaultConfig), {}, {\n hideOnNoUserResponse: false,\n showDisclaimer: false,\n showFaq: false,\n customComponents: {},\n defaults: {}\n});\n\nconst configKeys = ['hideOnNoUserResponse', 'showDisclaimer', 'showFaq', 'namespace', 'customComponents', 'defaults', 'layoutMode', 'api', 'zIndex', 'context', 'appContainerClassNames', 'messages', 'visible', 'visibilityCallback', 'errorCallback'];\n\nconst updateState = (state, {\n config\n}) => {\n const _pick = (0,_ui_utils_general_utils__WEBPACK_IMPORTED_MODULE_3__.pick)(config, configKeys),\n {\n messages\n } = _pick,\n partialConfig = _objectWithoutProperties(_pick, _excluded);\n\n let newState = state;\n\n if (Object.keys(partialConfig).length > 0) {\n newState = _objectSpread(_objectSpread({}, newState), partialConfig);\n }\n\n if (messages) {\n newState = _objectSpread(_objectSpread({}, newState), {}, {\n messages: _objectSpread(_objectSpread({}, newState.messages), messages)\n });\n }\n\n return newState;\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_utils__WEBPACK_IMPORTED_MODULE_1__.createReducer)({\n [_actions__WEBPACK_IMPORTED_MODULE_2__.initialize]: (state, action) => {\n return updateState(state, action);\n },\n [_actions__WEBPACK_IMPORTED_MODULE_2__.update]: (state, action) => {\n return updateState(state, action);\n }\n}, initialState));\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/config/reducer.js?");
|
|
369
391
|
|
|
370
392
|
/***/ }),
|
|
371
393
|
|
|
@@ -376,7 +398,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
376
398
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
377
399
|
|
|
378
400
|
"use strict";
|
|
379
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"selectConfig\": () => (/* binding */ selectConfig),\n/* harmony export */ \"selectState\": () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_2__.selectState)\n/* harmony export */ });\n/* harmony import */ var reselect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! reselect */ \"./node_modules/reselect/es/index.js\");\n/* harmony import */ var
|
|
401
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"selectConfig\": () => (/* binding */ selectConfig),\n/* harmony export */ \"selectState\": () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_2__.selectState)\n/* harmony export */ });\n/* harmony import */ var reselect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! reselect */ \"./node_modules/reselect/es/index.js\");\n/* harmony import */ var _visibility_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../visibility/constants */ \"./src/javascripts/domains/visibility/constants.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ \"./src/javascripts/domains/config/utils.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\nconst selectConfig = (0,reselect__WEBPACK_IMPORTED_MODULE_0__.createSelector)(_utils__WEBPACK_IMPORTED_MODULE_2__.selectState, config => {\n let newConfig = _objectSpread({\n visible: (config === null || config === void 0 ? void 0 : config.layoutMode) === 'inline' ? _visibility_constants__WEBPACK_IMPORTED_MODULE_1__.visibilityStates.open : _visibility_constants__WEBPACK_IMPORTED_MODULE_1__.visibilityStates.minimized,\n appContainerClassNames: config.appContainerClassNames || []\n }, config);\n\n if (typeof newConfig.appContainerClassNames === 'function') {\n newConfig = _objectSpread(_objectSpread({}, newConfig), {}, {\n appContainerClassNames: newConfig.appContainerClassNames(newConfig)\n });\n }\n\n return newConfig;\n});\n\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/config/selectors.js?");
|
|
380
402
|
|
|
381
403
|
/***/ }),
|
|
382
404
|
|
|
@@ -391,6 +413,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
391
413
|
|
|
392
414
|
/***/ }),
|
|
393
415
|
|
|
416
|
+
/***/ "./src/javascripts/domains/errors/index.js":
|
|
417
|
+
/*!*************************************************!*\
|
|
418
|
+
!*** ./src/javascripts/domains/errors/index.js ***!
|
|
419
|
+
\*************************************************/
|
|
420
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
421
|
+
|
|
422
|
+
"use strict";
|
|
423
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"catchError\": () => (/* binding */ catchError),\n/* harmony export */ \"createMiddleware\": () => (/* binding */ createMiddleware)\n/* harmony export */ });\n/* harmony import */ var _lib_redux_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/redux-helpers */ \"./src/javascripts/lib/redux-helpers/index.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../config */ \"./src/javascripts/domains/config/index.js\");\n\n\nconst {\n createAction\n} = (0,_lib_redux_helpers__WEBPACK_IMPORTED_MODULE_0__.createDomain)('errors');\nconst catchError = createAction('catch-error', error => ({\n error\n}));\nfunction createMiddleware({\n api: seamlyApi\n}) {\n return ({\n getState\n }) => {\n const handleError = error => {\n const {\n errorCallback,\n namespace,\n api,\n layoutMode\n } = _config__WEBPACK_IMPORTED_MODULE_1__.Selectors.selectConfig(getState());\n errorCallback === null || errorCallback === void 0 ? void 0 : errorCallback(error, {\n namespace,\n api,\n layoutMode,\n conversationUrl: seamlyApi.getConversationUrl()\n });\n };\n\n return next => action => {\n try {\n if (action.error) {\n handleError(action.error);\n }\n\n return next(action);\n } catch (error) {\n handleError(error);\n throw error;\n }\n };\n };\n}\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/errors/index.js?");
|
|
424
|
+
|
|
425
|
+
/***/ }),
|
|
426
|
+
|
|
394
427
|
/***/ "./src/javascripts/domains/forms/actions.js":
|
|
395
428
|
/*!**************************************************!*\
|
|
396
429
|
!*** ./src/javascripts/domains/forms/actions.js ***!
|
|
@@ -486,7 +519,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
486
519
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
487
520
|
|
|
488
521
|
"use strict";
|
|
489
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setInitialLocale\": () => (/* binding */ setInitialLocale),\n/* harmony export */ \"
|
|
522
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setInitialLocale\": () => (/* binding */ setInitialLocale),\n/* harmony export */ \"setLocale\": () => (/* binding */ setLocale)\n/* harmony export */ });\n/* harmony import */ var _lib_mutex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/mutex */ \"./src/javascripts/lib/mutex.js\");\n/* harmony import */ var _selectors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./selectors */ \"./src/javascripts/domains/i18n/selectors.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ \"./src/javascripts/domains/i18n/utils.js\");\n\n\n\nconst setInitialLocale = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.createAction)('setInitialLocale', locale => ({\n locale\n}));\nconst mutex = (0,_lib_mutex__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\nconst setLocale = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.createThunk)('setLocale', async (locale, {\n getState,\n extra: {\n api\n }\n}) => {\n return mutex.runExclusively(() => {\n if (locale === (0,_selectors__WEBPACK_IMPORTED_MODULE_1__.selectLocale)(getState())) {\n return undefined;\n }\n\n return api.getTranslations(locale);\n });\n});\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/i18n/actions.js?");
|
|
490
523
|
|
|
491
524
|
/***/ }),
|
|
492
525
|
|
|
@@ -519,7 +552,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
519
552
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
520
553
|
|
|
521
554
|
"use strict";
|
|
522
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./actions */ \"./src/javascripts/domains/i18n/actions.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/javascripts/domains/i18n/utils.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nconst defaultState = {\n translations: {\n 'errors.configError.message': 'We are sorry this happened, please retry at a later time.',\n 'errors.configError.srText': 'A chat configuration error occurred. Our apologies, please retry at a later time.',\n 'errors.configError.title': 'Chat configuration error.',\n 'errors.general.buttonText': 'Restart chat',\n 'errors.general.message': 'Do you want to start a new chat session?',\n 'errors.general.srText': 'Something went wrong with the chat session. You can restart the chat.',\n 'errors.general.title': 'Something went wrong',\n 'errors.seamlyOffline.message': 'There might be a problem with your or our network connection. The chat session should resume as soon the connection is available again.',\n 'errors.seamlyOffline.srText': 'The chat has connection issues. There might be a problem with your or our network connection. The chat session should resume as soon as the connection is available again.',\n 'errors.seamlyOffline.title': 'Connection issues'\n },\n isLoading: false,\n initialLocale: undefined\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_utils__WEBPACK_IMPORTED_MODULE_1__.createReducer)({\n [_actions__WEBPACK_IMPORTED_MODULE_0__.setInitialLocale]: (state, {\n locale\n }) => _objectSpread(_objectSpread({}, state), {}, {\n initialLocale: locale\n }),\n [_actions__WEBPACK_IMPORTED_MODULE_0__.
|
|
555
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./actions */ \"./src/javascripts/domains/i18n/actions.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/javascripts/domains/i18n/utils.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nconst defaultState = {\n translations: {\n 'errors.configError.message': 'We are sorry this happened, please retry at a later time.',\n 'errors.configError.srText': 'A chat configuration error occurred. Our apologies, please retry at a later time.',\n 'errors.configError.title': 'Chat configuration error.',\n 'errors.general.buttonText': 'Restart chat',\n 'errors.general.message': 'Do you want to start a new chat session?',\n 'errors.general.srText': 'Something went wrong with the chat session. You can restart the chat.',\n 'errors.general.title': 'Something went wrong',\n 'errors.seamlyOffline.message': 'There might be a problem with your or our network connection. The chat session should resume as soon the connection is available again.',\n 'errors.seamlyOffline.srText': 'The chat has connection issues. There might be a problem with your or our network connection. The chat session should resume as soon as the connection is available again.',\n 'errors.seamlyOffline.title': 'Connection issues',\n 'errors.seamlyUnavailable.buttonText': 'Try again',\n 'errors.seamlyUnavailable.message': 'The server could not be reached. Try again in a little while.',\n 'errors.seamlyUnavailable.srText': 'The chat server could not be reached. Try again in a little while.',\n 'errors.seamlyUnavailable.title': 'Server unavailable'\n },\n isLoading: false,\n initialLocale: undefined\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_utils__WEBPACK_IMPORTED_MODULE_1__.createReducer)({\n [_actions__WEBPACK_IMPORTED_MODULE_0__.setInitialLocale]: (state, {\n locale\n }) => _objectSpread(_objectSpread({}, state), {}, {\n initialLocale: locale\n }),\n [_actions__WEBPACK_IMPORTED_MODULE_0__.setLocale.pending]: state => _objectSpread(_objectSpread({}, state), {}, {\n isLoading: true\n }),\n [_actions__WEBPACK_IMPORTED_MODULE_0__.setLocale.fulfilled]: (state, {\n payload: translations,\n meta: {\n arg: locale\n }\n }) => {\n if (!translations) {\n return _objectSpread(_objectSpread({}, state), {}, {\n isLoading: false\n });\n }\n\n return _objectSpread(_objectSpread({}, state), {}, {\n isLoading: false,\n locale,\n translations: Object.keys(translations).sort().reduce((accum, key) => _objectSpread(_objectSpread({}, accum), {}, {\n [key]: translations[key]\n }), {})\n });\n },\n [_actions__WEBPACK_IMPORTED_MODULE_0__.setLocale.rejected]: state => _objectSpread(_objectSpread({}, state), {}, {\n isLoading: false\n })\n}, defaultState));\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/i18n/reducer.js?");
|
|
523
556
|
|
|
524
557
|
/***/ }),
|
|
525
558
|
|
|
@@ -541,7 +574,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
541
574
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
542
575
|
|
|
543
576
|
"use strict";
|
|
544
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createAction\": () => (/* binding */ createAction),\n/* harmony export */ \"
|
|
577
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createAction\": () => (/* binding */ createAction),\n/* harmony export */ \"createThunk\": () => (/* binding */ createThunk),\n/* harmony export */ \"createReducer\": () => (/* binding */ createReducer),\n/* harmony export */ \"selectState\": () => (/* binding */ selectState)\n/* harmony export */ });\n/* harmony import */ var _lib_redux_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/redux-helpers */ \"./src/javascripts/lib/redux-helpers/index.js\");\n\nconst {\n createAction,\n createThunk,\n createReducer,\n selectState\n} = (0,_lib_redux_helpers__WEBPACK_IMPORTED_MODULE_0__.createDomain)('i18n');\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/i18n/utils.js?");
|
|
545
578
|
|
|
546
579
|
/***/ }),
|
|
547
580
|
|
|
@@ -585,7 +618,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
585
618
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
586
619
|
|
|
587
620
|
"use strict";
|
|
588
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ createMiddleware)\n/* harmony export */ });\n/* harmony import */ var _api_errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../api/errors/seamly-general-error */ \"./src/javascripts/api/errors/seamly-general-error.js\");\n/* harmony import */ var _api_errors_seamly_configuration_error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../api/errors/seamly-configuration-error */ \"./src/javascripts/api/errors/seamly-configuration-error.js\");\n/* harmony import */ var _api_errors_seamly_session_expired_error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../api/errors/seamly-session-expired-error */ \"./src/javascripts/api/errors/seamly-session-expired-error.js\");\n/* harmony import */ var _api_errors_seamly_offline_error__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../api/errors/seamly-offline-error */ \"./src/javascripts/api/errors/seamly-offline-error.js\");\n/* harmony import */ var _api_errors_seamly_unauthorized_error__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../api/errors/seamly-unauthorized-error */ \"./src/javascripts/api/errors/seamly-unauthorized-error.js\");\n/* harmony import */ var
|
|
621
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ createMiddleware)\n/* harmony export */ });\n/* harmony import */ var _api_errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../api/errors/seamly-general-error */ \"./src/javascripts/api/errors/seamly-general-error.js\");\n/* harmony import */ var _api_errors_seamly_configuration_error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../api/errors/seamly-configuration-error */ \"./src/javascripts/api/errors/seamly-configuration-error.js\");\n/* harmony import */ var _api_errors_seamly_session_expired_error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../api/errors/seamly-session-expired-error */ \"./src/javascripts/api/errors/seamly-session-expired-error.js\");\n/* harmony import */ var _api_errors_seamly_offline_error__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../api/errors/seamly-offline-error */ \"./src/javascripts/api/errors/seamly-offline-error.js\");\n/* harmony import */ var _api_errors_seamly_unauthorized_error__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../api/errors/seamly-unauthorized-error */ \"./src/javascripts/api/errors/seamly-unauthorized-error.js\");\n/* harmony import */ var _api_errors_seamly_unavailable_error__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../api/errors/seamly-unavailable-error */ \"./src/javascripts/api/errors/seamly-unavailable-error.js\");\n\n\n\n\n\n\nconst handledErrorTypes = [_api_errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_0__[\"default\"], _api_errors_seamly_configuration_error__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _api_errors_seamly_session_expired_error__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _api_errors_seamly_offline_error__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _api_errors_seamly_unauthorized_error__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _api_errors_seamly_unavailable_error__WEBPACK_IMPORTED_MODULE_5__[\"default\"]];\nfunction createMiddleware({\n api\n}) {\n return () => next => action => {\n const {\n error\n } = action;\n\n if (error) {\n if (!handledErrorTypes.some(ErrorType => error instanceof ErrorType)) {\n throw error;\n } else if (error.action === 'reset') {\n // [SMLY-942] We clear the store before a reset to force a new conversation if the page is refreshed before the conversation is reset\n api.disconnect().then(() => {\n api.clearStore();\n });\n }\n }\n\n return next(action);\n };\n}\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/interrupt/middleware.js?");
|
|
589
622
|
|
|
590
623
|
/***/ }),
|
|
591
624
|
|
|
@@ -596,7 +629,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
596
629
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
597
630
|
|
|
598
631
|
"use strict";
|
|
599
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./src/javascripts/domains/interrupt/utils.js\");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./actions */ \"./src/javascripts/domains/interrupt/actions.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nconst initialState = {\n error: undefined\n};\n
|
|
632
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./src/javascripts/domains/interrupt/utils.js\");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./actions */ \"./src/javascripts/domains/interrupt/actions.js\");\n/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../app */ \"./src/javascripts/domains/app/index.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\nconst initialState = {\n error: undefined\n};\n\nconst handleError = (state, {\n error\n}) => _objectSpread(_objectSpread({}, state), {}, {\n error\n});\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_utils__WEBPACK_IMPORTED_MODULE_0__.createReducer)({\n [_actions__WEBPACK_IMPORTED_MODULE_1__.set]: handleError,\n [_app__WEBPACK_IMPORTED_MODULE_2__.Actions.initialize.rejected]: handleError,\n [_actions__WEBPACK_IMPORTED_MODULE_1__.clear]: () => initialState,\n [_app__WEBPACK_IMPORTED_MODULE_2__.Actions.reset]: () => initialState\n}, initialState));\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/interrupt/reducer.js?");
|
|
600
633
|
|
|
601
634
|
/***/ }),
|
|
602
635
|
|
|
@@ -717,7 +750,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
717
750
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
718
751
|
|
|
719
752
|
"use strict";
|
|
720
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createStore\": () => (/* binding */ createStore)\n/* harmony export */ });\n/* harmony import */ var redux_thunk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! redux-thunk */ \"./node_modules/redux-thunk/es/index.js\");\n/* harmony import */ var _redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../redux */ \"./src/javascripts/domains/redux/index.js\");\n/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../app */ \"./src/javascripts/domains/app/index.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config */ \"./src/javascripts/domains/config/index.js\");\n/* harmony import */ var _forms__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../forms */ \"./src/javascripts/domains/forms/index.js\");\n/* harmony import */ var _translations__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../translations */ \"./src/javascripts/domains/translations/index.js\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var
|
|
753
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createStore\": () => (/* binding */ createStore)\n/* harmony export */ });\n/* harmony import */ var redux_thunk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! redux-thunk */ \"./node_modules/redux-thunk/es/index.js\");\n/* harmony import */ var _redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../redux */ \"./src/javascripts/domains/redux/index.js\");\n/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../app */ \"./src/javascripts/domains/app/index.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config */ \"./src/javascripts/domains/config/index.js\");\n/* harmony import */ var _forms__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../forms */ \"./src/javascripts/domains/forms/index.js\");\n/* harmony import */ var _translations__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../translations */ \"./src/javascripts/domains/translations/index.js\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _visibility__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../visibility */ \"./src/javascripts/domains/visibility/index.js\");\n/* harmony import */ var _interrupt__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../interrupt */ \"./src/javascripts/domains/interrupt/index.js\");\n/* harmony import */ var _options__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../options */ \"./src/javascripts/domains/options/index.js\");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../errors */ \"./src/javascripts/domains/errors/index.js\");\n/* harmony import */ var _state_reducer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./state-reducer */ \"./src/javascripts/domains/store/state-reducer.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nfunction createStore({\n initialState,\n api,\n eventBus\n} = {}) {\n const store = (0,_redux__WEBPACK_IMPORTED_MODULE_1__.createReduxStore)({\n reducers: {\n state: _state_reducer__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n [String(_app__WEBPACK_IMPORTED_MODULE_2__.Reducer)]: _app__WEBPACK_IMPORTED_MODULE_2__.Reducer,\n [String(_config__WEBPACK_IMPORTED_MODULE_3__.Reducer)]: _config__WEBPACK_IMPORTED_MODULE_3__.Reducer,\n [String(_forms__WEBPACK_IMPORTED_MODULE_4__.Reducer)]: _forms__WEBPACK_IMPORTED_MODULE_4__.Reducer,\n [String(_translations__WEBPACK_IMPORTED_MODULE_5__.Reducer)]: _translations__WEBPACK_IMPORTED_MODULE_5__.Reducer,\n [String(_i18n__WEBPACK_IMPORTED_MODULE_6__.Reducer)]: _i18n__WEBPACK_IMPORTED_MODULE_6__.Reducer,\n [String(_interrupt__WEBPACK_IMPORTED_MODULE_8__.Reducer)]: _interrupt__WEBPACK_IMPORTED_MODULE_8__.Reducer,\n [String(_visibility__WEBPACK_IMPORTED_MODULE_7__.Reducer)]: _visibility__WEBPACK_IMPORTED_MODULE_7__.Reducer\n },\n initialState,\n middlewares: [(0,_errors__WEBPACK_IMPORTED_MODULE_10__.createMiddleware)({\n api\n }), redux_thunk__WEBPACK_IMPORTED_MODULE_0__[\"default\"].withExtraArgument({\n api,\n eventBus\n }), (0,_config__WEBPACK_IMPORTED_MODULE_3__.createMiddleware)(), (0,_interrupt__WEBPACK_IMPORTED_MODULE_8__.createMiddleware)({\n api\n }), (0,_options__WEBPACK_IMPORTED_MODULE_9__.createMiddleware)({\n api\n }), (0,_translations__WEBPACK_IMPORTED_MODULE_5__.createMiddleware)()]\n });\n return store;\n}\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/store/index.js?");
|
|
721
754
|
|
|
722
755
|
/***/ }),
|
|
723
756
|
|
|
@@ -728,7 +761,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
728
761
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
729
762
|
|
|
730
763
|
"use strict";
|
|
731
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ stateReducer)\n/* harmony export */ });\n/* harmony import */ var _lib_id__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/id */ \"./src/javascripts/lib/id.js\");\n/* harmony import */ var _ui_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../ui/utils/seamly-utils */ \"./src/javascripts/ui/utils/seamly-utils.js\");\n// Legacy state reducer. Do not add new features here but extract/create new reducers as needed\n\n\nconst initialState = {\n events: [],\n initialState: {},\n unreadEvents: 0,\n isLoading: false,\n idleDetachCountdown: {\n hasCountdown: false,\n isActive: false\n },\n resumeConversationPrompt: false,\n
|
|
764
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ stateReducer)\n/* harmony export */ });\n/* harmony import */ var _lib_id__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/id */ \"./src/javascripts/lib/id.js\");\n/* harmony import */ var _ui_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../ui/utils/seamly-utils */ \"./src/javascripts/ui/utils/seamly-utils.js\");\n/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../app */ \"./src/javascripts/domains/app/index.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Legacy state reducer. Do not add new features here but extract/create new reducers as needed\n\n\n\nconst initialState = {\n events: [],\n initialState: {},\n unreadEvents: 0,\n isLoading: false,\n idleDetachCountdown: {\n hasCountdown: false,\n isActive: false\n },\n resumeConversationPrompt: false,\n serviceInfo: {\n activeServiceSessionId: ''\n },\n participantInfo: {\n participants: {},\n currentAgent: ''\n },\n headerTitles: {\n title: null,\n subTitle: ''\n },\n historyLoaded: false,\n skiplinkTargetId: (0,_lib_id__WEBPACK_IMPORTED_MODULE_0__.randomId)(),\n optionsButtonId: (0,_lib_id__WEBPACK_IMPORTED_MODULE_0__.randomId)(),\n cobrowsingContainerId: (0,_lib_id__WEBPACK_IMPORTED_MODULE_0__.randomId)(),\n headerCollapseButtonId: (0,_lib_id__WEBPACK_IMPORTED_MODULE_0__.randomId)(),\n serviceData: {},\n options: {\n features: {},\n panelActive: false,\n optionActive: '',\n userSelectedOptions: {}\n },\n showFileUpload: false,\n currentUploads: [],\n entryMeta: {\n default: _ui_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_1__.entryTypes.text,\n active: _ui_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_1__.entryTypes.text,\n userSelected: null,\n blockAutoEntrySwitch: false,\n options: {},\n optionsOverride: {}\n },\n seamlyContainerElement: null\n};\nfunction stateReducer(state = initialState, action) {\n if (action.type === String(_app__WEBPACK_IMPORTED_MODULE_2__.Actions.reset)) {\n const {\n visible\n } = state;\n return _objectSpread(_objectSpread({}, initialState), {}, {\n visible\n });\n }\n\n return (0,_ui_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_1__.seamlyStateReducer)(state, action);\n}\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/store/state-reducer.js?");
|
|
732
765
|
|
|
733
766
|
/***/ }),
|
|
734
767
|
|
|
@@ -853,6 +886,83 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
853
886
|
|
|
854
887
|
/***/ }),
|
|
855
888
|
|
|
889
|
+
/***/ "./src/javascripts/domains/visibility/actions.js":
|
|
890
|
+
/*!*******************************************************!*\
|
|
891
|
+
!*** ./src/javascripts/domains/visibility/actions.js ***!
|
|
892
|
+
\*******************************************************/
|
|
893
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
894
|
+
|
|
895
|
+
"use strict";
|
|
896
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setFromStorage\": () => (/* binding */ setFromStorage),\n/* harmony export */ \"setVisibility\": () => (/* binding */ setVisibility),\n/* harmony export */ \"initialize\": () => (/* binding */ initialize)\n/* harmony export */ });\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../config */ \"./src/javascripts/domains/config/index.js\");\n/* harmony import */ var _app_selectors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../app/selectors */ \"./src/javascripts/domains/app/selectors.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ \"./src/javascripts/domains/visibility/constants.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ \"./src/javascripts/domains/visibility/utils.js\");\n/* harmony import */ var _selectors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./selectors */ \"./src/javascripts/domains/visibility/selectors.js\");\n/* harmony import */ var _ui_hooks_seamly_state_hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../ui/hooks/seamly-state-hooks */ \"./src/javascripts/ui/hooks/seamly-state-hooks.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\nconst setFromStorage = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.createAction)('setFromStorage', visibility => ({\n visibility\n}));\nconst validVisibilityStates = [_constants__WEBPACK_IMPORTED_MODULE_2__.visibilityStates.open, _constants__WEBPACK_IMPORTED_MODULE_2__.visibilityStates.minimized, _constants__WEBPACK_IMPORTED_MODULE_2__.visibilityStates.hidden];\nconst setVisibility = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.createThunk)('set', (requestedVisibility, {\n getState,\n extra: {\n api,\n eventBus\n }\n}) => {\n const state = getState();\n const previousVisibility = _selectors__WEBPACK_IMPORTED_MODULE_4__.selectVisibility(state);\n const hasResponded = _app_selectors__WEBPACK_IMPORTED_MODULE_1__.selectUserHasResponded(state);\n const hasConversation = api.hasConversation();\n const config = _config__WEBPACK_IMPORTED_MODULE_0__.Selectors.selectConfig(state);\n const {\n visibilityCallback = _utils__WEBPACK_IMPORTED_MODULE_3__.calculateVisibility,\n layoutMode\n } = config;\n const {\n unreadEvents: unreadMessageCount\n } = (0,_ui_hooks_seamly_state_hooks__WEBPACK_IMPORTED_MODULE_5__.selectState)(state);\n const calculatedVisibility = visibilityCallback({\n hasConversation,\n hasResponded,\n previousVisibility,\n requestedVisibility,\n config\n });\n\n if (!validVisibilityStates.includes(calculatedVisibility)) {\n console.error('The visibilityCallback function should return \"open\", \"minimized\" or \"hidden\".');\n return undefined;\n }\n\n if (previousVisibility === calculatedVisibility) {\n return undefined;\n } // Store the user-requested visibility in order to reinitialize after refresh\n\n\n api.store.set(_constants__WEBPACK_IMPORTED_MODULE_2__.StoreKey, _objectSpread(_objectSpread({}, api.store.get(_constants__WEBPACK_IMPORTED_MODULE_2__.StoreKey) || {}), {}, {\n [layoutMode]: requestedVisibility\n }));\n\n if (requestedVisibility) {\n eventBus.emit('ui.visible', requestedVisibility, {\n visibility: requestedVisibility,\n hasConversation,\n hasResponded,\n unreadMessageCount\n });\n }\n\n return calculatedVisibility;\n});\nconst initialize = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.createThunk)('initialize', async (locale, {\n dispatch,\n getState,\n extra: {\n api\n }\n}) => {\n var _api$store$get;\n\n // initialize stored visibility\n const {\n layoutMode\n } = _config__WEBPACK_IMPORTED_MODULE_0__.Selectors.selectConfig(getState());\n const storedVisibility = (_api$store$get = api.store.get(_constants__WEBPACK_IMPORTED_MODULE_2__.StoreKey)) === null || _api$store$get === void 0 ? void 0 : _api$store$get[layoutMode];\n\n if (storedVisibility) {\n dispatch(setFromStorage(storedVisibility));\n }\n\n dispatch(setVisibility(_constants__WEBPACK_IMPORTED_MODULE_2__.visibilityStates.initialize));\n});\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/visibility/actions.js?");
|
|
897
|
+
|
|
898
|
+
/***/ }),
|
|
899
|
+
|
|
900
|
+
/***/ "./src/javascripts/domains/visibility/constants.js":
|
|
901
|
+
/*!*********************************************************!*\
|
|
902
|
+
!*** ./src/javascripts/domains/visibility/constants.js ***!
|
|
903
|
+
\*********************************************************/
|
|
904
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
905
|
+
|
|
906
|
+
"use strict";
|
|
907
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"StoreKey\": () => (/* binding */ StoreKey),\n/* harmony export */ \"visibilityStates\": () => (/* binding */ visibilityStates)\n/* harmony export */ });\nconst StoreKey = 'visibility';\nconst visibilityStates = {\n hidden: 'hidden',\n minimized: 'minimized',\n open: 'open',\n initialize: null\n};\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/visibility/constants.js?");
|
|
908
|
+
|
|
909
|
+
/***/ }),
|
|
910
|
+
|
|
911
|
+
/***/ "./src/javascripts/domains/visibility/hooks.js":
|
|
912
|
+
/*!*****************************************************!*\
|
|
913
|
+
!*** ./src/javascripts/domains/visibility/hooks.js ***!
|
|
914
|
+
\*****************************************************/
|
|
915
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
916
|
+
|
|
917
|
+
"use strict";
|
|
918
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"useVisibility\": () => (/* binding */ useVisibility)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../config */ \"./src/javascripts/domains/config/index.js\");\n/* harmony import */ var _redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../redux */ \"./src/javascripts/domains/redux/index.js\");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./actions */ \"./src/javascripts/domains/visibility/actions.js\");\n/* harmony import */ var _selectors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./selectors */ \"./src/javascripts/domains/visibility/selectors.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./constants */ \"./src/javascripts/domains/visibility/constants.js\");\n\n\n\n\n\n\nconst useVisibility = () => {\n const dispatch = (0,_redux__WEBPACK_IMPORTED_MODULE_2__.useStoreDispatch)();\n const visible = (0,_redux__WEBPACK_IMPORTED_MODULE_2__.useSelector)(_selectors__WEBPACK_IMPORTED_MODULE_4__.selectVisibility);\n const isVisible = visible ? visible !== _constants__WEBPACK_IMPORTED_MODULE_5__.visibilityStates.hidden : false;\n const {\n layoutMode\n } = (0,_config__WEBPACK_IMPORTED_MODULE_1__.useConfig)();\n const isOpen = visible && layoutMode ? visible === _constants__WEBPACK_IMPORTED_MODULE_5__.visibilityStates.open || layoutMode === 'inline' && visible !== _constants__WEBPACK_IMPORTED_MODULE_5__.visibilityStates.hidden : false;\n const setVisibility = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(visibility => dispatch(_actions__WEBPACK_IMPORTED_MODULE_3__.setVisibility(visibility)), [dispatch]);\n return {\n isVisible,\n isOpen,\n visible,\n setVisibility\n };\n};\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/visibility/hooks.js?");
|
|
919
|
+
|
|
920
|
+
/***/ }),
|
|
921
|
+
|
|
922
|
+
/***/ "./src/javascripts/domains/visibility/index.js":
|
|
923
|
+
/*!*****************************************************!*\
|
|
924
|
+
!*** ./src/javascripts/domains/visibility/index.js ***!
|
|
925
|
+
\*****************************************************/
|
|
926
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
927
|
+
|
|
928
|
+
"use strict";
|
|
929
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"useVisibility\": () => (/* reexport safe */ _hooks__WEBPACK_IMPORTED_MODULE_2__.useVisibility),\n/* harmony export */ \"visibilityStates\": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_3__.visibilityStates),\n/* harmony export */ \"Reducer\": () => (/* reexport safe */ _reducer__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ \"calculateVisibility\": () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_5__.calculateVisibility),\n/* harmony export */ \"Actions\": () => (/* reexport module object */ _actions__WEBPACK_IMPORTED_MODULE_0__),\n/* harmony export */ \"Selectors\": () => (/* reexport module object */ _selectors__WEBPACK_IMPORTED_MODULE_1__)\n/* harmony export */ });\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./actions */ \"./src/javascripts/domains/visibility/actions.js\");\n/* harmony import */ var _selectors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./selectors */ \"./src/javascripts/domains/visibility/selectors.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hooks */ \"./src/javascripts/domains/visibility/hooks.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ \"./src/javascripts/domains/visibility/constants.js\");\n/* harmony import */ var _reducer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./reducer */ \"./src/javascripts/domains/visibility/reducer.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils */ \"./src/javascripts/domains/visibility/utils.js\");\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/visibility/index.js?");
|
|
930
|
+
|
|
931
|
+
/***/ }),
|
|
932
|
+
|
|
933
|
+
/***/ "./src/javascripts/domains/visibility/reducer.js":
|
|
934
|
+
/*!*******************************************************!*\
|
|
935
|
+
!*** ./src/javascripts/domains/visibility/reducer.js ***!
|
|
936
|
+
\*******************************************************/
|
|
937
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
938
|
+
|
|
939
|
+
"use strict";
|
|
940
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./src/javascripts/domains/visibility/utils.js\");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./actions */ \"./src/javascripts/domains/visibility/actions.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ \"./src/javascripts/domains/visibility/constants.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\nconst initialState = {\n visibility: _constants__WEBPACK_IMPORTED_MODULE_2__.visibilityStates.initialize\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_utils__WEBPACK_IMPORTED_MODULE_0__.createReducer)({\n [_actions__WEBPACK_IMPORTED_MODULE_1__.setFromStorage]: (state, {\n visibility\n }) => _objectSpread(_objectSpread({}, state), {}, {\n visibility\n }),\n [_actions__WEBPACK_IMPORTED_MODULE_1__.setVisibility.fulfilled]: (state, {\n payload: visibility\n }) => visibility ? _objectSpread(_objectSpread({}, state), {}, {\n visibility\n }) : state\n}, initialState));\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/visibility/reducer.js?");
|
|
941
|
+
|
|
942
|
+
/***/ }),
|
|
943
|
+
|
|
944
|
+
/***/ "./src/javascripts/domains/visibility/selectors.js":
|
|
945
|
+
/*!*********************************************************!*\
|
|
946
|
+
!*** ./src/javascripts/domains/visibility/selectors.js ***!
|
|
947
|
+
\*********************************************************/
|
|
948
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
949
|
+
|
|
950
|
+
"use strict";
|
|
951
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"selectVisibility\": () => (/* binding */ selectVisibility),\n/* harmony export */ \"selectState\": () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_1__.selectState)\n/* harmony export */ });\n/* harmony import */ var reselect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! reselect */ \"./node_modules/reselect/es/index.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./src/javascripts/domains/visibility/utils.js\");\n\n\nconst selectVisibility = (0,reselect__WEBPACK_IMPORTED_MODULE_0__.createSelector)(_utils__WEBPACK_IMPORTED_MODULE_1__.selectState, state => state.visibility);\n\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/visibility/selectors.js?");
|
|
952
|
+
|
|
953
|
+
/***/ }),
|
|
954
|
+
|
|
955
|
+
/***/ "./src/javascripts/domains/visibility/utils.js":
|
|
956
|
+
/*!*****************************************************!*\
|
|
957
|
+
!*** ./src/javascripts/domains/visibility/utils.js ***!
|
|
958
|
+
\*****************************************************/
|
|
959
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
960
|
+
|
|
961
|
+
"use strict";
|
|
962
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createAction\": () => (/* binding */ createAction),\n/* harmony export */ \"createActions\": () => (/* binding */ createActions),\n/* harmony export */ \"createThunk\": () => (/* binding */ createThunk),\n/* harmony export */ \"createReducer\": () => (/* binding */ createReducer),\n/* harmony export */ \"selectState\": () => (/* binding */ selectState),\n/* harmony export */ \"calculateVisibility\": () => (/* binding */ calculateVisibility)\n/* harmony export */ });\n/* harmony import */ var _lib_redux_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/redux-helpers */ \"./src/javascripts/lib/redux-helpers/index.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ \"./src/javascripts/domains/visibility/constants.js\");\n\n\nconst {\n createAction,\n createActions,\n createThunk,\n createReducer,\n selectState\n} = (0,_lib_redux_helpers__WEBPACK_IMPORTED_MODULE_0__.createDomain)('visibility');\nconst calculateVisibility = ({\n hasResponded,\n previousVisibility,\n requestedVisibility,\n config\n}) => {\n const {\n defaults,\n layoutMode,\n hideOnNoUserResponse\n } = config;\n const {\n visible: defaultVisibility\n } = defaults || {}; // Requesting open should override the responded check.\n\n if (layoutMode === 'window' && hideOnNoUserResponse && requestedVisibility !== _constants__WEBPACK_IMPORTED_MODULE_1__.visibilityStates.open) {\n return hasResponded ? requestedVisibility || previousVisibility || _constants__WEBPACK_IMPORTED_MODULE_1__.visibilityStates.open : _constants__WEBPACK_IMPORTED_MODULE_1__.visibilityStates.hidden;\n }\n\n const baseVisibility = layoutMode === 'inline' ? _constants__WEBPACK_IMPORTED_MODULE_1__.visibilityStates.open : _constants__WEBPACK_IMPORTED_MODULE_1__.visibilityStates.minimized;\n return requestedVisibility || previousVisibility || defaultVisibility || baseVisibility;\n};\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/domains/visibility/utils.js?");
|
|
963
|
+
|
|
964
|
+
/***/ }),
|
|
965
|
+
|
|
856
966
|
/***/ "./src/javascripts/index.js":
|
|
857
967
|
/*!**********************************!*\
|
|
858
968
|
!*** ./src/javascripts/index.js ***!
|
|
@@ -860,7 +970,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
860
970
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
861
971
|
|
|
862
972
|
"use strict";
|
|
863
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"AgentInfo\": () => (/* reexport safe */ _ui_components_layout_agent_info__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"AppFrame\": () => (/* reexport safe */ _ui_components_layout_app_frame__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"calculateVisibility\": () => (/* reexport safe */ _ui_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_4__.calculateVisibility),\n/* harmony export */ \"ChatFrame\": () => (/* reexport safe */ _ui_components_layout_chat_frame__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ \"className\": () => (/* reexport safe */ _lib_css__WEBPACK_IMPORTED_MODULE_6__.className),\n/* harmony export */ \"Conversation\": () => (/* reexport safe */ _ui_components_conversation_conversation__WEBPACK_IMPORTED_MODULE_7__[\"default\"]),\n/* harmony export */ \"createReduxStore\": () => (/* reexport safe */ _domains_redux__WEBPACK_IMPORTED_MODULE_8__.createReduxStore),\n/* harmony export */ \"Engine\": () => (/* reexport safe */ _lib_engine__WEBPACK_IMPORTED_MODULE_9__[\"default\"]),\n/* harmony export */ \"EntryContainer\": () => (/* reexport safe */ _ui_components_entry_entry_container__WEBPACK_IMPORTED_MODULE_10__[\"default\"]),\n/* harmony export */ \"EventParticipant\": () => (/* reexport safe */ _ui_components_conversation_event_event_participant__WEBPACK_IMPORTED_MODULE_11__[\"default\"]),\n/* harmony export */ \"eventTypes\": () => (/* reexport safe */ _ui_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_4__.eventTypes),\n/* harmony export */ \"ExternalApi\": () => (/* reexport safe */ _lib_external_api__WEBPACK_IMPORTED_MODULE_12__[\"default\"]),\n/* harmony export */ \"getUrlParams\": () => (/* reexport safe */ _ui_utils_general_utils__WEBPACK_IMPORTED_MODULE_13__.getUrlParams),\n/* harmony export */ \"getUrlSearchString\": () => (/* reexport safe */ _ui_utils_general_utils__WEBPACK_IMPORTED_MODULE_13__.getUrlSearchString),\n/* harmony export */ \"Header\": () => (/* reexport safe */ _ui_components_layout_header__WEBPACK_IMPORTED_MODULE_14__[\"default\"]),\n/* harmony export */ \"Icon\": () => (/* reexport safe */ _ui_components_layout_icon__WEBPACK_IMPORTED_MODULE_15__[\"default\"]),\n/* harmony export */ \"Interrupt\": () => (/* reexport safe */ _ui_components_layout_interrupt__WEBPACK_IMPORTED_MODULE_16__[\"default\"]),\n/* harmony export */ \"MessageContainer\": () => (/* reexport safe */ _ui_components_conversation_message_container__WEBPACK_IMPORTED_MODULE_17__[\"default\"]),\n/* harmony export */ \"randomId\": () => (/* reexport safe */ _lib_id__WEBPACK_IMPORTED_MODULE_18__.randomId),\n/* harmony export */ \"seamlyActions\": () => (/* reexport safe */ _ui_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_4__.seamlyActions),\n/* harmony export */ \"SeamlyApiContext\": () => (/* reexport safe */ _ui_components_core_seamly_api_context__WEBPACK_IMPORTED_MODULE_19__.SeamlyApiContext),\n/* harmony export */ \"SeamlyEventBusContext\": () => (/* reexport safe */ _ui_components_core_seamly_api_context__WEBPACK_IMPORTED_MODULE_19__.SeamlyEventBusContext),\n/* harmony export */ \"SeamlyLiveRegionContext\": () => (/* reexport safe */ _ui_components_core_seamly_live_region_context__WEBPACK_IMPORTED_MODULE_20__.SeamlyLiveRegionContext),\n/* harmony export */ \"StoreProvider\": () => (/* reexport safe */ _domains_redux__WEBPACK_IMPORTED_MODULE_8__.StoreProvider),\n/* harmony export */ \"useChoicePrompt\": () => (/* reexport safe */ _ui_components_conversation_event_choice_prompt__WEBPACK_IMPORTED_MODULE_21__.useChoicePrompt),\n/* harmony export */ \"useDispatch\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_22__.useSeamlyDispatchContext),\n/* harmony export */ \"useSeamlyChat\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_22__.useSeamlyChat),\n/* harmony export */ \"useSeamlyCommands\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_22__.useSeamlyCommands),\n/* harmony export */ \"useSeamlyConfig\": () => (/* reexport safe */ _domains_config__WEBPACK_IMPORTED_MODULE_23__.useConfig),\n/* harmony export */ \"useEvents\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_22__.useEvents),\n/* harmony export */ \"useGeneratedId\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_22__.useGeneratedId),\n/* harmony export */ \"useI18n\": () => (/* reexport safe */ _domains_i18n__WEBPACK_IMPORTED_MODULE_24__.useI18n),\n/* harmony export */ \"useSeamlyEventStream\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_22__.useSeamlyEventStream),\n/* harmony export */ \"useSeamlyIdleDetachCountdown\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_22__.useSeamlyIdleDetachCountdown),\n/* harmony export */ \"useSeamlyMessageContainerClassNames\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_22__.useSeamlyMessageContainerClassNames),\n/* harmony export */ \"useSeamlyOptions\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_22__.useSeamlyOptions),\n/* harmony export */ \"useSeamlyVisibility\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_22__.useSeamlyVisibility),\n/* harmony export */ \"useTranslations\": () => (/* reexport safe */ _domains_translations__WEBPACK_IMPORTED_MODULE_25__.useTranslations),\n/* harmony export */ \"useTranslatedEventData\": () => (/* reexport safe */ _domains_translations__WEBPACK_IMPORTED_MODULE_25__.useTranslatedEventData),\n/* harmony export */ \"useTranslationsContainer\": () => (/* reexport safe */ _domains_translations__WEBPACK_IMPORTED_MODULE_25__.useTranslationsContainer),\n/* harmony export */ \"Text\": () => (/* reexport safe */ _ui_components_conversation_event_text__WEBPACK_IMPORTED_MODULE_26__[\"default\"]),\n/* harmony export */ \"ToggleButton\": () => (/* reexport safe */ _ui_components_entry_toggle_button__WEBPACK_IMPORTED_MODULE_27__[\"default\"]),\n/* harmony export */ \"View\": () => (/* reexport safe */ _ui_components_layout_view__WEBPACK_IMPORTED_MODULE_28__[\"default\"]),\n/* harmony export */ \"visibilityStates\": () => (/* reexport safe */ _ui_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_4__.visibilityStates),\n/* harmony export */ \"API\": () => (/* reexport safe */ _api__WEBPACK_IMPORTED_MODULE_29__.API),\n/* harmony export */ \"SeamlyGeneralError\": () => (/* reexport safe */ _api_errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_30__[\"default\"]),\n/* harmony export */ \"SeamlyConfigurationError\": () => (/* reexport safe */ _api_errors_seamly_configuration_error__WEBPACK_IMPORTED_MODULE_31__[\"default\"]),\n/* harmony export */ \"SeamlySessionExpiredError\": () => (/* reexport safe */ _api_errors_seamly_session_expired_error__WEBPACK_IMPORTED_MODULE_32__[\"default\"]),\n/* harmony export */ \"SeamlyOfflineError\": () => (/* reexport safe */ _api_errors_seamly_offline_error__WEBPACK_IMPORTED_MODULE_33__[\"default\"]),\n/* harmony export */ \"SeamlyUnauthorizedError\": () => (/* reexport safe */ _api_errors_seamly_unauthorized_error__WEBPACK_IMPORTED_MODULE_34__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _lib_preact_debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/preact-debug */ \"./src/javascripts/lib/preact-debug.js\");\n/* harmony import */ var _lib_preact_debug__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lib_preact_debug__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lib_external_api_initialize_api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/external-api/initialize-api */ \"./src/javascripts/lib/external-api/initialize-api.js\");\n/* harmony import */ var _ui_components_layout_agent_info__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ui/components/layout/agent-info */ \"./src/javascripts/ui/components/layout/agent-info.js\");\n/* harmony import */ var _ui_components_layout_app_frame__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ui/components/layout/app-frame */ \"./src/javascripts/ui/components/layout/app-frame.js\");\n/* harmony import */ var _ui_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ui/utils/seamly-utils */ \"./src/javascripts/ui/utils/seamly-utils.js\");\n/* harmony import */ var _ui_components_layout_chat_frame__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ui/components/layout/chat-frame */ \"./src/javascripts/ui/components/layout/chat-frame.js\");\n/* harmony import */ var _lib_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lib/css */ \"./src/javascripts/lib/css.js\");\n/* harmony import */ var _ui_components_conversation_conversation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ui/components/conversation/conversation */ \"./src/javascripts/ui/components/conversation/conversation.js\");\n/* harmony import */ var _domains_redux__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./domains/redux */ \"./src/javascripts/domains/redux/index.js\");\n/* harmony import */ var _lib_engine__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./lib/engine */ \"./src/javascripts/lib/engine/index.js\");\n/* harmony import */ var _ui_components_entry_entry_container__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ui/components/entry/entry-container */ \"./src/javascripts/ui/components/entry/entry-container.js\");\n/* harmony import */ var _ui_components_conversation_event_event_participant__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ui/components/conversation/event/event-participant */ \"./src/javascripts/ui/components/conversation/event/event-participant.js\");\n/* harmony import */ var _lib_external_api__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./lib/external-api */ \"./src/javascripts/lib/external-api/index.js\");\n/* harmony import */ var _ui_utils_general_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ui/utils/general-utils */ \"./src/javascripts/ui/utils/general-utils.js\");\n/* harmony import */ var _ui_components_layout_header__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./ui/components/layout/header */ \"./src/javascripts/ui/components/layout/header.js\");\n/* harmony import */ var _ui_components_layout_icon__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ui/components/layout/icon */ \"./src/javascripts/ui/components/layout/icon.js\");\n/* harmony import */ var _ui_components_layout_interrupt__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./ui/components/layout/interrupt */ \"./src/javascripts/ui/components/layout/interrupt.js\");\n/* harmony import */ var _ui_components_conversation_message_container__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./ui/components/conversation/message-container */ \"./src/javascripts/ui/components/conversation/message-container.js\");\n/* harmony import */ var _lib_id__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./lib/id */ \"./src/javascripts/lib/id.js\");\n/* harmony import */ var _ui_components_core_seamly_api_context__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./ui/components/core/seamly-api-context */ \"./src/javascripts/ui/components/core/seamly-api-context.js\");\n/* harmony import */ var _ui_components_core_seamly_live_region_context__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./ui/components/core/seamly-live-region-context */ \"./src/javascripts/ui/components/core/seamly-live-region-context.js\");\n/* harmony import */ var _ui_components_conversation_event_choice_prompt__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./ui/components/conversation/event/choice-prompt */ \"./src/javascripts/ui/components/conversation/event/choice-prompt.js\");\n/* harmony import */ var _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./ui/hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _domains_config__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./domains/config */ \"./src/javascripts/domains/config/index.js\");\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _domains_translations__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./domains/translations */ \"./src/javascripts/domains/translations/index.js\");\n/* harmony import */ var _ui_components_conversation_event_text__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./ui/components/conversation/event/text */ \"./src/javascripts/ui/components/conversation/event/text.js\");\n/* harmony import */ var _ui_components_entry_toggle_button__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./ui/components/entry/toggle-button */ \"./src/javascripts/ui/components/entry/toggle-button.js\");\n/* harmony import */ var _ui_components_layout_view__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./ui/components/layout/view */ \"./src/javascripts/ui/components/layout/view.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./api */ \"./src/javascripts/api/index.js\");\n/* harmony import */ var _api_errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./api/errors/seamly-general-error */ \"./src/javascripts/api/errors/seamly-general-error.js\");\n/* harmony import */ var _api_errors_seamly_configuration_error__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./api/errors/seamly-configuration-error */ \"./src/javascripts/api/errors/seamly-configuration-error.js\");\n/* harmony import */ var _api_errors_seamly_session_expired_error__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./api/errors/seamly-session-expired-error */ \"./src/javascripts/api/errors/seamly-session-expired-error.js\");\n/* harmony import */ var _api_errors_seamly_offline_error__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./api/errors/seamly-offline-error */ \"./src/javascripts/api/errors/seamly-offline-error.js\");\n/* harmony import */ var _api_errors_seamly_unauthorized_error__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./api/errors/seamly-unauthorized-error */ \"./src/javascripts/api/errors/seamly-unauthorized-error.js\");\n // eslint-disable-line\n// Used by: Client\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_lib_external_api_initialize_api__WEBPACK_IMPORTED_MODULE_1__[\"default\"]); // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: Client\n\n // Used by: Demo\n\n // Used by: Client\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: StyleGuide\n\n // Used by: Client\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n// Used by: StyleGuide\n\n // Used by: Client\n// Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/index.js?");
|
|
973
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"AgentInfo\": () => (/* reexport safe */ _ui_components_layout_agent_info__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"AppFrame\": () => (/* reexport safe */ _ui_components_layout_app_frame__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"calculateVisibility\": () => (/* reexport safe */ _domains_visibility__WEBPACK_IMPORTED_MODULE_4__.calculateVisibility),\n/* harmony export */ \"ChatFrame\": () => (/* reexport safe */ _ui_components_layout_chat_frame__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ \"className\": () => (/* reexport safe */ _lib_css__WEBPACK_IMPORTED_MODULE_6__.className),\n/* harmony export */ \"Conversation\": () => (/* reexport safe */ _ui_components_conversation_conversation__WEBPACK_IMPORTED_MODULE_7__[\"default\"]),\n/* harmony export */ \"createReduxStore\": () => (/* reexport safe */ _domains_redux__WEBPACK_IMPORTED_MODULE_8__.createReduxStore),\n/* harmony export */ \"Engine\": () => (/* reexport safe */ _lib_engine__WEBPACK_IMPORTED_MODULE_9__[\"default\"]),\n/* harmony export */ \"EntryContainer\": () => (/* reexport safe */ _ui_components_entry_entry_container__WEBPACK_IMPORTED_MODULE_10__[\"default\"]),\n/* harmony export */ \"EventParticipant\": () => (/* reexport safe */ _ui_components_conversation_event_event_participant__WEBPACK_IMPORTED_MODULE_11__[\"default\"]),\n/* harmony export */ \"eventTypes\": () => (/* reexport safe */ _ui_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_12__.eventTypes),\n/* harmony export */ \"ExternalApi\": () => (/* reexport safe */ _lib_external_api__WEBPACK_IMPORTED_MODULE_13__[\"default\"]),\n/* harmony export */ \"getUrlParams\": () => (/* reexport safe */ _ui_utils_general_utils__WEBPACK_IMPORTED_MODULE_14__.getUrlParams),\n/* harmony export */ \"getUrlSearchString\": () => (/* reexport safe */ _ui_utils_general_utils__WEBPACK_IMPORTED_MODULE_14__.getUrlSearchString),\n/* harmony export */ \"Header\": () => (/* reexport safe */ _ui_components_layout_header__WEBPACK_IMPORTED_MODULE_15__[\"default\"]),\n/* harmony export */ \"Icon\": () => (/* reexport safe */ _ui_components_layout_icon__WEBPACK_IMPORTED_MODULE_16__[\"default\"]),\n/* harmony export */ \"Interrupt\": () => (/* reexport safe */ _ui_components_layout_interrupt__WEBPACK_IMPORTED_MODULE_17__[\"default\"]),\n/* harmony export */ \"MessageContainer\": () => (/* reexport safe */ _ui_components_conversation_message_container__WEBPACK_IMPORTED_MODULE_18__[\"default\"]),\n/* harmony export */ \"randomId\": () => (/* reexport safe */ _lib_id__WEBPACK_IMPORTED_MODULE_19__.randomId),\n/* harmony export */ \"seamlyActions\": () => (/* reexport safe */ _ui_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_12__.seamlyActions),\n/* harmony export */ \"SeamlyApiContext\": () => (/* reexport safe */ _ui_components_core_seamly_api_context__WEBPACK_IMPORTED_MODULE_20__.SeamlyApiContext),\n/* harmony export */ \"SeamlyEventBusContext\": () => (/* reexport safe */ _ui_components_core_seamly_api_context__WEBPACK_IMPORTED_MODULE_20__.SeamlyEventBusContext),\n/* harmony export */ \"SeamlyLiveRegionContext\": () => (/* reexport safe */ _ui_components_core_seamly_live_region_context__WEBPACK_IMPORTED_MODULE_21__.SeamlyLiveRegionContext),\n/* harmony export */ \"StoreProvider\": () => (/* reexport safe */ _domains_redux__WEBPACK_IMPORTED_MODULE_8__.StoreProvider),\n/* harmony export */ \"useChoicePrompt\": () => (/* reexport safe */ _ui_components_conversation_event_choice_prompt__WEBPACK_IMPORTED_MODULE_22__.useChoicePrompt),\n/* harmony export */ \"useDispatch\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_23__.useSeamlyDispatchContext),\n/* harmony export */ \"useSeamlyChat\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_23__.useSeamlyChat),\n/* harmony export */ \"useSeamlyCommands\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_23__.useSeamlyCommands),\n/* harmony export */ \"useSeamlyConfig\": () => (/* reexport safe */ _domains_config__WEBPACK_IMPORTED_MODULE_24__.useConfig),\n/* harmony export */ \"useEvents\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_23__.useEvents),\n/* harmony export */ \"useGeneratedId\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_23__.useGeneratedId),\n/* harmony export */ \"useI18n\": () => (/* reexport safe */ _domains_i18n__WEBPACK_IMPORTED_MODULE_25__.useI18n),\n/* harmony export */ \"useSeamlyEventStream\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_23__.useSeamlyEventStream),\n/* harmony export */ \"useSeamlyIdleDetachCountdown\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_23__.useSeamlyIdleDetachCountdown),\n/* harmony export */ \"useSeamlyMessageContainerClassNames\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_23__.useSeamlyMessageContainerClassNames),\n/* harmony export */ \"useSeamlyOptions\": () => (/* reexport safe */ _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_23__.useSeamlyOptions),\n/* harmony export */ \"useSeamlyVisibility\": () => (/* reexport safe */ _domains_visibility__WEBPACK_IMPORTED_MODULE_4__.useVisibility),\n/* harmony export */ \"useTranslations\": () => (/* reexport safe */ _domains_translations__WEBPACK_IMPORTED_MODULE_26__.useTranslations),\n/* harmony export */ \"useTranslatedEventData\": () => (/* reexport safe */ _domains_translations__WEBPACK_IMPORTED_MODULE_26__.useTranslatedEventData),\n/* harmony export */ \"useTranslationsContainer\": () => (/* reexport safe */ _domains_translations__WEBPACK_IMPORTED_MODULE_26__.useTranslationsContainer),\n/* harmony export */ \"Text\": () => (/* reexport safe */ _ui_components_conversation_event_text__WEBPACK_IMPORTED_MODULE_27__[\"default\"]),\n/* harmony export */ \"ToggleButton\": () => (/* reexport safe */ _ui_components_entry_toggle_button__WEBPACK_IMPORTED_MODULE_28__[\"default\"]),\n/* harmony export */ \"View\": () => (/* reexport safe */ _ui_components_layout_view__WEBPACK_IMPORTED_MODULE_29__[\"default\"]),\n/* harmony export */ \"visibilityStates\": () => (/* reexport safe */ _domains_visibility__WEBPACK_IMPORTED_MODULE_4__.visibilityStates),\n/* harmony export */ \"API\": () => (/* reexport safe */ _api__WEBPACK_IMPORTED_MODULE_30__.API),\n/* harmony export */ \"SeamlyGeneralError\": () => (/* reexport safe */ _api_errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_31__[\"default\"]),\n/* harmony export */ \"SeamlyOfflineError\": () => (/* reexport safe */ _api_errors_seamly_offline_error__WEBPACK_IMPORTED_MODULE_32__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _lib_preact_debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/preact-debug */ \"./src/javascripts/lib/preact-debug.js\");\n/* harmony import */ var _lib_preact_debug__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lib_preact_debug__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lib_external_api_initialize_api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/external-api/initialize-api */ \"./src/javascripts/lib/external-api/initialize-api.js\");\n/* harmony import */ var _ui_components_layout_agent_info__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ui/components/layout/agent-info */ \"./src/javascripts/ui/components/layout/agent-info.js\");\n/* harmony import */ var _ui_components_layout_app_frame__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ui/components/layout/app-frame */ \"./src/javascripts/ui/components/layout/app-frame.js\");\n/* harmony import */ var _domains_visibility__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./domains/visibility */ \"./src/javascripts/domains/visibility/index.js\");\n/* harmony import */ var _ui_components_layout_chat_frame__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ui/components/layout/chat-frame */ \"./src/javascripts/ui/components/layout/chat-frame.js\");\n/* harmony import */ var _lib_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lib/css */ \"./src/javascripts/lib/css.js\");\n/* harmony import */ var _ui_components_conversation_conversation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ui/components/conversation/conversation */ \"./src/javascripts/ui/components/conversation/conversation.js\");\n/* harmony import */ var _domains_redux__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./domains/redux */ \"./src/javascripts/domains/redux/index.js\");\n/* harmony import */ var _lib_engine__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./lib/engine */ \"./src/javascripts/lib/engine/index.js\");\n/* harmony import */ var _ui_components_entry_entry_container__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ui/components/entry/entry-container */ \"./src/javascripts/ui/components/entry/entry-container.js\");\n/* harmony import */ var _ui_components_conversation_event_event_participant__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ui/components/conversation/event/event-participant */ \"./src/javascripts/ui/components/conversation/event/event-participant.js\");\n/* harmony import */ var _ui_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ui/utils/seamly-utils */ \"./src/javascripts/ui/utils/seamly-utils.js\");\n/* harmony import */ var _lib_external_api__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./lib/external-api */ \"./src/javascripts/lib/external-api/index.js\");\n/* harmony import */ var _ui_utils_general_utils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./ui/utils/general-utils */ \"./src/javascripts/ui/utils/general-utils.js\");\n/* harmony import */ var _ui_components_layout_header__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ui/components/layout/header */ \"./src/javascripts/ui/components/layout/header.js\");\n/* harmony import */ var _ui_components_layout_icon__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./ui/components/layout/icon */ \"./src/javascripts/ui/components/layout/icon.js\");\n/* harmony import */ var _ui_components_layout_interrupt__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./ui/components/layout/interrupt */ \"./src/javascripts/ui/components/layout/interrupt.js\");\n/* harmony import */ var _ui_components_conversation_message_container__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./ui/components/conversation/message-container */ \"./src/javascripts/ui/components/conversation/message-container.js\");\n/* harmony import */ var _lib_id__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./lib/id */ \"./src/javascripts/lib/id.js\");\n/* harmony import */ var _ui_components_core_seamly_api_context__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./ui/components/core/seamly-api-context */ \"./src/javascripts/ui/components/core/seamly-api-context.js\");\n/* harmony import */ var _ui_components_core_seamly_live_region_context__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./ui/components/core/seamly-live-region-context */ \"./src/javascripts/ui/components/core/seamly-live-region-context.js\");\n/* harmony import */ var _ui_components_conversation_event_choice_prompt__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./ui/components/conversation/event/choice-prompt */ \"./src/javascripts/ui/components/conversation/event/choice-prompt.js\");\n/* harmony import */ var _ui_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./ui/hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _domains_config__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./domains/config */ \"./src/javascripts/domains/config/index.js\");\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _domains_translations__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./domains/translations */ \"./src/javascripts/domains/translations/index.js\");\n/* harmony import */ var _ui_components_conversation_event_text__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./ui/components/conversation/event/text */ \"./src/javascripts/ui/components/conversation/event/text.js\");\n/* harmony import */ var _ui_components_entry_toggle_button__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./ui/components/entry/toggle-button */ \"./src/javascripts/ui/components/entry/toggle-button.js\");\n/* harmony import */ var _ui_components_layout_view__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./ui/components/layout/view */ \"./src/javascripts/ui/components/layout/view.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./api */ \"./src/javascripts/api/index.js\");\n/* harmony import */ var _api_errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./api/errors/seamly-general-error */ \"./src/javascripts/api/errors/seamly-general-error.js\");\n/* harmony import */ var _api_errors_seamly_offline_error__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./api/errors/seamly-offline-error */ \"./src/javascripts/api/errors/seamly-offline-error.js\");\n // eslint-disable-line\n// Used by: Client\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_lib_external_api_initialize_api__WEBPACK_IMPORTED_MODULE_1__[\"default\"]); // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: Client\n\n // Used by: Demo\n\n // Used by: Client\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: StyleGuide\n\n // Used by: Client\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n\n // Used by: Client\n// Used by: StyleGuide\n\n // Used by: Client\n// Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n // Used by: StyleGuide\n\n\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/index.js?");
|
|
864
974
|
|
|
865
975
|
/***/ }),
|
|
866
976
|
|
|
@@ -892,7 +1002,7 @@ eval("if (true) {\n module.exports = __webpack_require__(/*! debug */ \"./node_
|
|
|
892
1002
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
893
1003
|
|
|
894
1004
|
"use strict";
|
|
895
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Engine)\n/* harmony export */ });\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact */ \"preact\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var minivents__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! minivents */ \"./node_modules/minivents/dist/minivents.commonjs.min.js\");\n/* harmony import */ var minivents__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(minivents__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _ui_components_chat_app__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../ui/components/chat-app */ \"./src/javascripts/ui/components/chat-app.js\");\n/* harmony import */ var _ui_components_core_seamly_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../ui/components/core/seamly-core */ \"./src/javascripts/ui/components/core/seamly-core.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../api */ \"./src/javascripts/api/index.js\");\n/* harmony import */ var _domains_store__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../domains/store */ \"./src/javascripts/domains/store/index.js\");\n/* harmony import */ var _domains_app__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../domains/app */ \"./src/javascripts/domains/app/index.js\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! preact/jsx-runtime */ \"preact/jsx-runtime\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);\nconst _excluded = [\"namespace\", \"parentElement\", \"showFaq\"],\n _excluded2 = [\"view\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\n\n\n\n\n\nclass Engine {\n constructor(config, externalApi) {\n var _config$context;\n\n const {\n namespace = '',\n parentElement,\n showFaq\n } = config,\n restConfig = _objectWithoutProperties(config, _excluded);\n\n this.config = _objectSpread(_objectSpread({}, restConfig), {}, {\n showFaq: showFaq !== false,\n namespace\n });\n this.namespace = namespace;\n this.parentElement = parentElement;\n this.externalApi = externalApi;\n this.api = new _api__WEBPACK_IMPORTED_MODULE_4__.API({\n namespace: config.namespace,\n config: config.api,\n locale: config === null || config === void 0 ? void 0 : (_config$context = config.context) === null || _config$context === void 0 ? void 0 : _config$context.locale\n });\n this.eventBus = new (minivents__WEBPACK_IMPORTED_MODULE_1___default())();\n this.functions = {};\n this.registerFunctions({\n on: this.eventBus.on,\n off: this.eventBus.off\n });\n this.eventBus.on('function.register', (functionName, fn) => this.registerFunction(functionName, fn));\n this.eventBus.on('function.unregister', (functionName, fn) => this.unregisterFunction(functionName, fn));\n }\n\n async render() {\n const _ref = this.config.customComponents || {},\n {\n view: View\n } = _ref,\n restComponents = _objectWithoutProperties(_ref, _excluded2);\n\n const renderConfig = _objectSpread(_objectSpread({}, this.config), {}, {\n customComponents: Object.keys(restComponents).length ? restComponents : undefined\n });\n\n const store = (0,_domains_store__WEBPACK_IMPORTED_MODULE_5__.createStore)({\n api: this.api\n });\n await store.dispatch(_domains_app__WEBPACK_IMPORTED_MODULE_6__.Actions.initialize(renderConfig));\n\n if (View) {\n (0,preact__WEBPACK_IMPORTED_MODULE_0__.render)((0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_ui_components_core_seamly_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n config: renderConfig,\n eventBus: this.eventBus,\n store: store,\n api: this.api,\n children: (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(View, {})\n }), this.parentElement);\n } else {\n (0,preact__WEBPACK_IMPORTED_MODULE_0__.render)((0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_ui_components_chat_app__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n config: renderConfig,\n eventBus: this.eventBus,\n store: store,\n api: this.api\n }), this.parentElement);\n }\n }\n\n destroy() {\n (0,preact__WEBPACK_IMPORTED_MODULE_0__.render)(null, this.parentElement);\n this.eventBus.off();\n this.api.disconnect();\n delete this.functions;\n }\n\n registerFunctions(functionMap) {\n Object.entries(functionMap).forEach(([functionName, fn]) => {\n this.registerFunction(functionName, fn);\n });\n }\n\n registerFunction(functionName, fn) {\n this.functions[functionName] = this.functions[functionName] || [];\n this.functions[functionName].push(fn);\n this.externalApi.handleActions();\n }\n\n unregisterFunction(functionName, fn) {\n const functions = this.functions[functionName];\n\n if (functions && functions.length) {\n this.functions[functionName] = functions.filter(fn2 => fn2 !== fn);\n }\n }\n\n execFunction(functionName, ...args) {\n const functions = this.functions[functionName];\n\n if (!functions || !functions.length) {\n return false;\n }\n\n functions.forEach(fn => {\n try {\n fn(...args);\n } catch (e) {\n console.error(`Action(${functionName}) failed: `, e);\n }\n });\n return true;\n }\n\n}\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/lib/engine/index.js?");
|
|
1005
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Engine)\n/* harmony export */ });\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact */ \"preact\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var minivents__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! minivents */ \"./node_modules/minivents/dist/minivents.commonjs.min.js\");\n/* harmony import */ var minivents__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(minivents__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _ui_components_chat_app__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../ui/components/chat-app */ \"./src/javascripts/ui/components/chat-app.js\");\n/* harmony import */ var _ui_components_core_seamly_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../ui/components/core/seamly-core */ \"./src/javascripts/ui/components/core/seamly-core.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../api */ \"./src/javascripts/api/index.js\");\n/* harmony import */ var _domains_store__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../domains/store */ \"./src/javascripts/domains/store/index.js\");\n/* harmony import */ var _domains_app__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../domains/app */ \"./src/javascripts/domains/app/index.js\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! preact/jsx-runtime */ \"preact/jsx-runtime\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);\nconst _excluded = [\"namespace\", \"parentElement\", \"showFaq\"],\n _excluded2 = [\"view\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\n\n\n\n\n\nclass Engine {\n constructor(config, externalApi) {\n var _config$context;\n\n const {\n namespace = '',\n parentElement,\n showFaq\n } = config,\n restConfig = _objectWithoutProperties(config, _excluded);\n\n this.config = _objectSpread(_objectSpread({}, restConfig), {}, {\n showFaq: showFaq !== false,\n namespace\n });\n this.namespace = namespace;\n this.parentElement = parentElement;\n this.externalApi = externalApi;\n this.api = new _api__WEBPACK_IMPORTED_MODULE_4__.API({\n namespace: config.namespace,\n config: config.api,\n locale: config === null || config === void 0 ? void 0 : (_config$context = config.context) === null || _config$context === void 0 ? void 0 : _config$context.locale\n });\n this.eventBus = new (minivents__WEBPACK_IMPORTED_MODULE_1___default())();\n this.functions = {};\n this.registerFunctions({\n on: this.eventBus.on,\n off: this.eventBus.off\n });\n this.eventBus.on('function.register', (functionName, fn) => this.registerFunction(functionName, fn));\n this.eventBus.on('function.unregister', (functionName, fn) => this.unregisterFunction(functionName, fn));\n }\n\n async render() {\n const _ref = this.config.customComponents || {},\n {\n view: View\n } = _ref,\n restComponents = _objectWithoutProperties(_ref, _excluded2);\n\n const renderConfig = _objectSpread(_objectSpread({}, this.config), {}, {\n customComponents: Object.keys(restComponents).length ? restComponents : undefined\n });\n\n const store = (0,_domains_store__WEBPACK_IMPORTED_MODULE_5__.createStore)({\n api: this.api,\n eventBus: this.eventBus\n });\n await store.dispatch(_domains_app__WEBPACK_IMPORTED_MODULE_6__.Actions.initialize(renderConfig));\n\n if (View) {\n (0,preact__WEBPACK_IMPORTED_MODULE_0__.render)((0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_ui_components_core_seamly_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n config: renderConfig,\n eventBus: this.eventBus,\n store: store,\n api: this.api,\n children: (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(View, {})\n }), this.parentElement);\n } else {\n (0,preact__WEBPACK_IMPORTED_MODULE_0__.render)((0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_ui_components_chat_app__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n config: renderConfig,\n eventBus: this.eventBus,\n store: store,\n api: this.api\n }), this.parentElement);\n }\n }\n\n destroy() {\n (0,preact__WEBPACK_IMPORTED_MODULE_0__.render)(null, this.parentElement);\n this.eventBus.off();\n this.api.disconnect();\n delete this.functions;\n }\n\n registerFunctions(functionMap) {\n Object.entries(functionMap).forEach(([functionName, fn]) => {\n this.registerFunction(functionName, fn);\n });\n }\n\n registerFunction(functionName, fn) {\n this.functions[functionName] = this.functions[functionName] || [];\n this.functions[functionName].push(fn);\n this.externalApi.handleActions();\n }\n\n unregisterFunction(functionName, fn) {\n const functions = this.functions[functionName];\n\n if (functions && functions.length) {\n this.functions[functionName] = functions.filter(fn2 => fn2 !== fn);\n }\n }\n\n execFunction(functionName, ...args) {\n const functions = this.functions[functionName];\n\n if (!functions || !functions.length) {\n return false;\n }\n\n functions.forEach(fn => {\n try {\n fn(...args);\n } catch (e) {\n console.error(`Action(${functionName}) failed: `, e);\n }\n });\n return true;\n }\n\n}\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/lib/engine/index.js?");
|
|
896
1006
|
|
|
897
1007
|
/***/ }),
|
|
898
1008
|
|
|
@@ -968,7 +1078,7 @@ eval("if (true) {\n module.exports = __webpack_require__(/*! preact/debug */ \"
|
|
|
968
1078
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
969
1079
|
|
|
970
1080
|
"use strict";
|
|
971
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SLICE_DELIMITER\": () => (/* binding */ SLICE_DELIMITER),\n/* harmony export */ \"DOMAIN_DELIMITER\": () => (/* binding */ DOMAIN_DELIMITER),\n/* harmony export */ \"prefixType\": () => (/* binding */ prefixType),\n/* harmony export */ \"createAction\": () => (/* binding */ createAction),\n/* harmony export */ \"createActions\": () => (/* binding */ createActions),\n/* harmony export */ \"createThunk\": () => (/* binding */ createThunk),\n/* harmony export */ \"createReducer\": () => (/* binding */ createReducer),\n/* harmony export */ \"createDomain\": () => (/* binding */ createDomain)\n/* harmony export */ });\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nconst SLICE_DELIMITER = '/';\nconst DOMAIN_DELIMITER = '//';\nfunction prefixType(prefix, fn, delimiter = '/') {\n return (type, ...args) => fn(prefix + delimiter + type, ...args);\n}\nfunction createAction(type, identityReducer = payload => ({\n payload\n})) {\n const action = (...params) => _objectSpread({\n type\n }, identityReducer(...params));\n\n action.toString = () => type.
|
|
1081
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SLICE_DELIMITER\": () => (/* binding */ SLICE_DELIMITER),\n/* harmony export */ \"DOMAIN_DELIMITER\": () => (/* binding */ DOMAIN_DELIMITER),\n/* harmony export */ \"prefixType\": () => (/* binding */ prefixType),\n/* harmony export */ \"createAction\": () => (/* binding */ createAction),\n/* harmony export */ \"createActions\": () => (/* binding */ createActions),\n/* harmony export */ \"createThunk\": () => (/* binding */ createThunk),\n/* harmony export */ \"createReducer\": () => (/* binding */ createReducer),\n/* harmony export */ \"createDomain\": () => (/* binding */ createDomain)\n/* harmony export */ });\n/* harmony import */ var _id__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../id */ \"./src/javascripts/lib/id.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\nconst SLICE_DELIMITER = '/';\nconst DOMAIN_DELIMITER = '//';\nfunction prefixType(prefix, fn, delimiter = '/') {\n return (type, ...args) => fn(prefix + delimiter + type, ...args);\n}\nfunction createAction(type, identityReducer = payload => ({\n payload\n})) {\n const action = (...params) => _objectSpread({\n type\n }, identityReducer(...params));\n\n action.toString = () => String(type);\n\n action.match = obj => (obj === null || obj === void 0 ? void 0 : obj.type) === String(type);\n\n return action;\n}\nfunction createActions(baseType, ...args) {\n const handlers = []; // eslint-disable-next-line consistent-return\n\n args.forEach(arg => {\n const argType = typeof arg;\n\n if (argType === 'string') {\n return handlers.push([arg]);\n }\n\n if (argType !== 'object' || arg instanceof Array) {\n return undefined;\n }\n\n Object.keys(arg).forEach(key => handlers.push([key, arg[key]]));\n });\n const create = prefixType(baseType, createAction, SLICE_DELIMITER);\n return handlers.map(handler => create(...handler));\n}\nfunction createThunk(type, payloadCreator) {\n const [pending, fulfilled, rejected] = createActions(type, {\n pending: (arg, requestId) => ({\n meta: {\n arg,\n requestId,\n status: 'pending'\n }\n }),\n fulfilled: (arg, payload, requestId) => ({\n payload,\n meta: {\n arg,\n requestId,\n status: 'fulfilled'\n }\n }),\n rejected: (arg, error, requestId) => ({\n error,\n meta: {\n arg,\n requestId,\n status: 'rejected',\n error: String(error)\n }\n })\n });\n\n const thunkCreator = arg => (dispatch, getState, extra) => {\n const requestId = (0,_id__WEBPACK_IMPORTED_MODULE_0__.randomId)();\n\n const promise = (async () => {\n let finalAction;\n\n try {\n dispatch(pending(arg, requestId));\n const prms = payloadCreator(arg, {\n dispatch,\n getState,\n extra\n });\n const result = await prms;\n finalAction = fulfilled(arg, result, requestId);\n } catch (error) {\n finalAction = rejected(arg, error, requestId);\n }\n\n dispatch(finalAction);\n return finalAction;\n })();\n\n return Object.assign(promise, {\n type,\n arg,\n requestId\n });\n };\n\n return Object.assign(thunkCreator, {\n type,\n pending,\n fulfilled,\n rejected\n });\n}\nfunction createReducer(domain, handlers = {}, defaultState) {\n const reducer = (state = defaultState, action) => {\n const typeReducer = handlers === null || handlers === void 0 ? void 0 : handlers[action === null || action === void 0 ? void 0 : action.type];\n return typeReducer ? typeReducer(state, action) : state;\n };\n\n reducer.toString = () => domain;\n\n return reducer;\n}\nfunction createDomain(domain) {\n return {\n createAction: prefixType(domain, createAction, DOMAIN_DELIMITER),\n createActions: prefixType(domain, createActions, DOMAIN_DELIMITER),\n createThunk: prefixType(domain, createThunk, DOMAIN_DELIMITER),\n createReducer: (handlers, defaultState) => createReducer(domain, handlers, defaultState),\n selectState: state => state[domain]\n };\n}\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/lib/redux-helpers/index.js?");
|
|
972
1082
|
|
|
973
1083
|
/***/ }),
|
|
974
1084
|
|
|
@@ -1001,7 +1111,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
1001
1111
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1002
1112
|
|
|
1003
1113
|
"use strict";
|
|
1004
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ store)\n/* harmony export */ });\nfunction store(key) {\n const KEY = 'cvco.' + key;\n return {\n get() {\n
|
|
1114
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ store)\n/* harmony export */ });\nfunction store(key) {\n const KEY = 'cvco.' + key;\n return {\n get() {\n const candidates = [KEY, KEY.split('.').slice(0, -1).join('.')];\n let val;\n\n do {\n val = sessionStorage.getItem(candidates[0]);\n } while (candidates.shift() && !val);\n\n return JSON.parse(val);\n },\n\n set(value) {\n if (!value) {\n return;\n }\n\n sessionStorage.setItem(KEY, JSON.stringify(value));\n }\n\n };\n}\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/lib/store/providers/session-storage.js?");
|
|
1005
1115
|
|
|
1006
1116
|
/***/ }),
|
|
1007
1117
|
|
|
@@ -1067,7 +1177,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
1067
1177
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1068
1178
|
|
|
1069
1179
|
"use strict";
|
|
1070
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lib_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../lib/css */ \"./src/javascripts/lib/css.js\");\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _hooks_seamly_state_hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../hooks/seamly-state-hooks */ \"./src/javascripts/ui/hooks/seamly-state-hooks.js\");\n/* harmony import */ var _event_event__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./event/event */ \"./src/javascripts/ui/components/conversation/event/event.js\");\n/* harmony import */ var _loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./loader */ \"./src/javascripts/ui/components/conversation/loader.js\");\n/* harmony import */ var _component_filter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./component-filter */ \"./src/javascripts/ui/components/conversation/component-filter.js\");\n/* harmony import */ var _layout_privacy_disclaimer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../layout/privacy-disclaimer */ \"./src/javascripts/ui/components/layout/privacy-disclaimer.js\");\n/* harmony import */ var
|
|
1180
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lib_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../lib/css */ \"./src/javascripts/lib/css.js\");\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _hooks_seamly_state_hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../hooks/seamly-state-hooks */ \"./src/javascripts/ui/hooks/seamly-state-hooks.js\");\n/* harmony import */ var _event_event__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./event/event */ \"./src/javascripts/ui/components/conversation/event/event.js\");\n/* harmony import */ var _loader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./loader */ \"./src/javascripts/ui/components/conversation/loader.js\");\n/* harmony import */ var _component_filter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./component-filter */ \"./src/javascripts/ui/components/conversation/component-filter.js\");\n/* harmony import */ var _layout_privacy_disclaimer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../layout/privacy-disclaimer */ \"./src/javascripts/ui/components/layout/privacy-disclaimer.js\");\n/* harmony import */ var _domains_visibility__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../domains/visibility */ \"./src/javascripts/domains/visibility/index.js\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! preact/jsx-runtime */ \"preact/jsx-runtime\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst Conversation = () => {\n const {\n t\n } = (0,_domains_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n const appBodyContainer = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const events = (0,_hooks_seamly_state_hooks__WEBPACK_IMPORTED_MODULE_4__.useEvents)();\n const isLoading = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useSeamlyIsLoading)();\n const {\n isOpen\n } = (0,_domains_visibility__WEBPACK_IMPORTED_MODULE_9__.useVisibility)();\n const skiplinkTargetId = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useSkiplink)();\n const focusSkiplinkTarget = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useSkiplinkTargetFocusing)();\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n window.requestAnimationFrame(() => {\n if (appBodyContainer.current) {\n appBodyContainer.current.scrollTop = appBodyContainer.current.scrollHeight;\n }\n });\n }, [events, isLoading, isOpen]);\n\n const renderEvents = () => {\n let prevParticipant = null;\n return events.map(event => {\n const {\n type,\n payload\n } = event;\n const {\n participant,\n fromClient\n } = payload;\n let participantChanged = false;\n\n if (type !== 'participant') {\n const currentParticipant = fromClient ? 'seamly-client-participant' : participant;\n\n if (event.type !== 'info' && prevParticipant !== currentParticipant) {\n participantChanged = true;\n }\n\n prevParticipant = currentParticipant;\n }\n\n return (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_event_event__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n event: event,\n newParticipant: participantChanged\n }, event.payload.id);\n });\n };\n\n const onClickHandler = e => {\n e.preventDefault();\n focusSkiplinkTarget();\n };\n\n return (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.Fragment, {\n children: [isOpen && (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"a\", {\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_1__.className)('skip-link'),\n href: `#${skiplinkTargetId}`,\n onClick: onClickHandler,\n children: t('skiplinkText')\n }), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(\"div\", {\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_1__.className)('app__body'),\n ref: appBodyContainer,\n children: (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(\"div\", {\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_1__.className)('conversation__container'),\n children: [(0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_layout_privacy_disclaimer__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {}), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(\"ol\", {\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_1__.className)('conversation'),\n children: [(0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_component_filter__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n children: renderEvents()\n }), isLoading && (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_loader__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {})]\n })]\n })\n })]\n });\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Conversation);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/components/conversation/conversation.js?");
|
|
1071
1181
|
|
|
1072
1182
|
/***/ }),
|
|
1073
1183
|
|
|
@@ -1276,7 +1386,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
1276
1386
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1277
1387
|
|
|
1278
1388
|
"use strict";
|
|
1279
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"
|
|
1389
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parseRichText\": () => (/* binding */ parseRichText)\n/* harmony export */ });\n/* harmony import */ var mustache__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mustache */ \"./node_modules/mustache/mustache.mjs\");\n\n\nmustache__WEBPACK_IMPORTED_MODULE_0__[\"default\"].escape = function (escapeText) {\n return escapeText;\n};\n\nconst parseLinkVariable = variable => {\n return `<a href='${variable.url}' data-link-id='${variable.id}' ${variable.newTab ? 'target=\"_blank\"' : ''}>${variable.name}</a>`;\n};\n\nfunction parseRichText(text, variables = {}) {\n const view = {};\n Object.entries(variables).forEach(([key, variable]) => {\n switch (variable.type) {\n case 'link':\n view[key] = parseLinkVariable(variable);\n break;\n\n case 'text':\n view[key] = variable.value;\n break;\n }\n }, {}); // Disable escaping as we'll be generating HTML\n\n const oldEscape = mustache__WEBPACK_IMPORTED_MODULE_0__[\"default\"].escape;\n\n mustache__WEBPACK_IMPORTED_MODULE_0__[\"default\"].escape = function (escapeText) {\n return escapeText;\n };\n\n const output = mustache__WEBPACK_IMPORTED_MODULE_0__[\"default\"].render(text, view);\n mustache__WEBPACK_IMPORTED_MODULE_0__[\"default\"].escape = oldEscape;\n return output;\n}\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/components/conversation/event/hooks/use-text-rendering.js?");
|
|
1280
1390
|
|
|
1281
1391
|
/***/ }),
|
|
1282
1392
|
|
|
@@ -1320,7 +1430,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
1320
1430
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1321
1431
|
|
|
1322
1432
|
"use strict";
|
|
1323
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var
|
|
1433
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lib_parse_body__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../lib/parse-body */ \"./src/javascripts/lib/parse-body.js\");\n/* harmony import */ var _hooks_use_event_link_click_handler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hooks/use-event-link-click-handler */ \"./src/javascripts/ui/components/conversation/event/hooks/use-event-link-click-handler.js\");\n/* harmony import */ var _hooks_use_text_rendering__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hooks/use-text-rendering */ \"./src/javascripts/ui/components/conversation/event/hooks/use-text-rendering.js\");\n/* harmony import */ var _message_container__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../message-container */ \"./src/javascripts/ui/components/conversation/message-container.js\");\n/* harmony import */ var _domains_translations__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../../domains/translations */ \"./src/javascripts/domains/translations/index.js\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! preact/jsx-runtime */ \"preact/jsx-runtime\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__);\nconst _excluded = [\"event\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\n\n\n\n\n\nconst Text = _ref => {\n let {\n event\n } = _ref,\n props = _objectWithoutProperties(_ref, _excluded);\n\n const [body] = (0,_domains_translations__WEBPACK_IMPORTED_MODULE_5__.useTranslatedEventData)(event);\n const eventClick = (0,_hooks_use_event_link_click_handler__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(event.payload.id);\n const containerProps = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\n if (!event.payload.fromClient) {\n return {\n bodyProps: {\n dangerouslySetInnerHTML: {\n __html: (0,_hooks_use_text_rendering__WEBPACK_IMPORTED_MODULE_3__.parseRichText)((0,_lib_parse_body__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(body.text), body.variables)\n }\n }\n };\n }\n\n return {\n children: (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"p\", {\n children: body.text\n })\n };\n }, [body, event]);\n return (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_message_container__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _objectSpread(_objectSpread({\n type: \"text\",\n event: event,\n onClick: eventClick\n }, props), containerProps));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Text);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/components/conversation/event/text.js?");
|
|
1324
1434
|
|
|
1325
1435
|
/***/ }),
|
|
1326
1436
|
|
|
@@ -1419,7 +1529,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
1419
1529
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1420
1530
|
|
|
1421
1531
|
"use strict";
|
|
1422
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var
|
|
1532
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _seamly_instance_functions_loader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./seamly-instance-functions-loader */ \"./src/javascripts/ui/components/core/seamly-instance-functions-loader.js\");\n/* harmony import */ var _seamly_read_state__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./seamly-read-state */ \"./src/javascripts/ui/components/core/seamly-read-state.js\");\n/* harmony import */ var _seamly_new_notifications__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./seamly-new-notifications */ \"./src/javascripts/ui/components/core/seamly-new-notifications.js\");\n/* harmony import */ var _seamly_live_region__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./seamly-live-region */ \"./src/javascripts/ui/components/core/seamly-live-region.js\");\n/* harmony import */ var _seamly_idle_detach_counter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./seamly-idle-detach-counter */ \"./src/javascripts/ui/components/core/seamly-idle-detach-counter.js\");\n/* harmony import */ var _seamly_activity_monitor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./seamly-activity-monitor */ \"./src/javascripts/ui/components/core/seamly-activity-monitor.js\");\n/* harmony import */ var _seamly_initializer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./seamly-initializer */ \"./src/javascripts/ui/components/core/seamly-initializer.js\");\n/* harmony import */ var _seamly_event_subscriber__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./seamly-event-subscriber */ \"./src/javascripts/ui/components/core/seamly-event-subscriber.js\");\n/* harmony import */ var _seamly_file_upload__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./seamly-file-upload */ \"./src/javascripts/ui/components/core/seamly-file-upload.js\");\n/* harmony import */ var _seamly_api_context__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./seamly-api-context */ \"./src/javascripts/ui/components/core/seamly-api-context.js\");\n/* harmony import */ var _domains_redux__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../domains/redux */ \"./src/javascripts/domains/redux/index.js\");\n/* harmony import */ var _domains_errors__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../domains/errors */ \"./src/javascripts/domains/errors/index.js\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! preact/jsx-runtime */ \"preact/jsx-runtime\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst SeamlyCore = ({\n store,\n children,\n config,\n eventBus,\n api\n}) => {\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useErrorBoundary)(error => store.dispatch((0,_domains_errors__WEBPACK_IMPORTED_MODULE_12__.catchError)(error)));\n return (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_domains_redux__WEBPACK_IMPORTED_MODULE_11__.StoreProvider, {\n store: store,\n children: (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_seamly_api_context__WEBPACK_IMPORTED_MODULE_10__.SeamlyEventBusContext.Provider, {\n value: eventBus,\n children: (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_seamly_api_context__WEBPACK_IMPORTED_MODULE_10__.SeamlyApiContext.Provider, {\n value: api,\n children: (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(_seamly_live_region__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n children: [(0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_seamly_initializer__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n config: config\n }), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_seamly_event_subscriber__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n eventBus: eventBus\n }), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_seamly_read_state__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_seamly_new_notifications__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_seamly_idle_detach_counter__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {}), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(_seamly_activity_monitor__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n children: [(0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_seamly_instance_functions_loader__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {}), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_seamly_file_upload__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n children: children\n })]\n })]\n })\n })\n })\n });\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SeamlyCore);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/components/core/seamly-core.js?");
|
|
1423
1533
|
|
|
1424
1534
|
/***/ }),
|
|
1425
1535
|
|
|
@@ -1430,7 +1540,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
1430
1540
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1431
1541
|
|
|
1432
1542
|
"use strict";
|
|
1433
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/seamly-utils */ \"./src/javascripts/ui/utils/seamly-utils.js\");\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _api_errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../api/errors/seamly-general-error */ \"./src/javascripts/api/errors/seamly-general-error.js\");\n/* harmony import */ var _api_errors_seamly_session_expired_error__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../api/errors/seamly-session-expired-error */ \"./src/javascripts/api/errors/seamly-session-expired-error.js\");\n/* harmony import */ var _api_errors_seamly_offline_error__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../api/errors/seamly-offline-error */ \"./src/javascripts/api/errors/seamly-offline-error.js\");\n/* harmony import */ var _domains_interrupt__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../domains/interrupt */ \"./src/javascripts/domains/interrupt/index.js\");\n/* harmony import */ var _domains_app__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../domains/app */ \"./src/javascripts/domains/app/index.js\");\nconst _excluded = [\"serviceSettings\"];\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\n\n\n\n\n\n\nconst {\n ADD_EVENT,\n ACK_EVENT,\n SET_IS_LOADING,\n SET_PARTICIPANT,\n SET_HEADER_SUB_TITLE,\n SET_ACTIVE_SERVICE,\n INIT_RESUME_CONVERSATION_PROMPT,\n CLEAR_EVENTS,\n SET_SERVICE_DATA_ITEM,\n SET_FEATURE_ENABLED_STATE,\n SET_SERVICE_ENTRY_METADATA,\n SET_HISTORY\n} = _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_1__.seamlyActions;\nconst EMITTABLE_MESSAGE_TYPES = ['text', 'choice_prompt', 'image', 'video'];\n\nconst SeamlyEventSubscriber = ({\n eventBus\n}) => {\n const {\n t\n } = (0,_domains_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n const api = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useSeamlyApiContext)();\n const dispatch = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useSeamlyDispatchContext)();\n const events = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useEvents)();\n const prevEmittedEventId = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const {\n setUserSelectedOption\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useSeamlyOptions)();\n const {\n initCountdown,\n endCountdown\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useSeamlyIdleDetachCountdown)();\n const {\n emitEvent\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useSeamlyCommands)();\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (api.connectionInfo) {\n const updateParticipant = event => {\n const {\n payload\n } = event;\n\n if (!payload || !payload.participant) {\n return;\n }\n\n const {\n fromClient,\n participant\n } = payload;\n\n if (!fromClient && participant.name) {\n dispatch({\n type: SET_HEADER_SUB_TITLE,\n title: participant.name\n });\n }\n\n dispatch({\n type: SET_PARTICIPANT,\n participant,\n fromClient\n });\n\n if (participant.introduction) {\n dispatch({\n type: ADD_EVENT,\n event\n });\n }\n };\n\n api.stream().subscribe({\n next: event => {\n const {\n type,\n payload\n } = event;\n\n switch (type) {\n case 'ui':\n if (payload.state && payload.state.hasOwnProperty('loading')) {\n dispatch({\n type: SET_IS_LOADING,\n isLoading: payload.state.loading\n });\n }\n\n switch (payload.type) {\n case 'idle_detach_countdown':\n initCountdown(payload.body.duration);\n break;\n\n case 'idle_detach_countdown_elapsed':\n endCountdown(undefined, true);\n break;\n\n case 'resume_conversation_prompt':\n dispatch({\n type: INIT_RESUME_CONVERSATION_PROMPT\n });\n break;\n\n case 'user_first_response':\n dispatch(_domains_app__WEBPACK_IMPORTED_MODULE_8__.Actions.setHasResponded(true));\n eventBus.emit('system.userFirstResponse', payload.body);\n break;\n }\n\n break;\n\n case 'message':\n updateParticipant(payload);\n\n switch (payload.type) {\n case 'text':\n case 'choice_prompt':\n case 'image':\n case 'upload':\n case 'video':\n case 'cta':\n case 'custom':\n case 'carousel':\n case 'card':\n if (payload.service && payload.service.serviceSessionId) {\n dispatch({\n type: SET_ACTIVE_SERVICE,\n activeServiceSessionId: payload.service.serviceSessionId\n });\n }\n\n dispatch({\n type: ADD_EVENT,\n event\n });\n break;\n }\n\n break;\n\n case 'participant':\n updateParticipant(event);\n break;\n\n case 'service_data':\n if (payload.persist) {\n dispatch({\n type: SET_SERVICE_DATA_ITEM,\n payload\n });\n }\n\n break;\n\n case 'ack':\n dispatch({\n type: ACK_EVENT,\n event\n });\n break;\n\n case 'system':\n if (payload.type === 'service_changed') {\n const {\n serviceSettings\n } = payload,\n eventPayload = _objectWithoutProperties(payload, _excluded);\n\n const {\n cobrowsing,\n uploads,\n entry\n } = serviceSettings;\n dispatch({\n type: SET_FEATURE_ENABLED_STATE,\n key: _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_1__.featureKeys.cobrowsing,\n enabled: !!(cobrowsing && cobrowsing.enabled)\n });\n dispatch({\n type: SET_FEATURE_ENABLED_STATE,\n key: _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_1__.featureKeys.uploads,\n enabled: !!(uploads && uploads.enabled)\n });\n setUserSelectedOption(_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_1__.featureKeys.cobrowsing, false);\n dispatch({\n type: SET_SERVICE_ENTRY_METADATA,\n entryMeta: entry\n });\n dispatch({\n type: SET_ACTIVE_SERVICE,\n activeServiceSessionId: payload.serviceSessionId\n });\n emitEvent('system.serviceChanged', eventPayload);\n }\n\n break;\n\n case 'info':\n if (payload.type === 'divider' || payload.type === 'text' || payload.type === 'translation') {\n dispatch({\n type: ADD_EVENT,\n event\n });\n }\n\n break;\n\n case 'error':\n switch (payload.type) {\n case 'find_conversation_erred':\n dispatch(_domains_interrupt__WEBPACK_IMPORTED_MODULE_7__.Actions.set(new _api_errors_seamly_session_expired_error__WEBPACK_IMPORTED_MODULE_5__[\"default\"]()));\n break;\n\n case 'seamly_offline':\n dispatch(_domains_interrupt__WEBPACK_IMPORTED_MODULE_7__.Actions.set(new _api_errors_seamly_offline_error__WEBPACK_IMPORTED_MODULE_6__[\"default\"]()));\n dispatch({\n type: CLEAR_EVENTS\n });\n break;\n\n default:\n dispatch(_domains_interrupt__WEBPACK_IMPORTED_MODULE_7__.Actions.set(new _api_errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_4__[\"default\"]()));\n break;\n }\n\n break;\n\n case 'socket_opened':\n dispatch(_domains_interrupt__WEBPACK_IMPORTED_MODULE_7__.Actions.clear());\n break;\n }\n }\n });\n api.stream().filter(e => e.type === 'message' && EMITTABLE_MESSAGE_TYPES.includes(e.payload.type)).subscribe({\n next: ({\n payload\n }) => {\n // This check dedupes the sending of messages via\n // the bus if a duplicate connection exists in an\n // error situation.\n if (payload.id !== prevEmittedEventId.current) {\n eventBus.emit('message', payload);\n }\n\n prevEmittedEventId.current = payload.id;\n }\n });\n }\n }, [dispatch, api, eventBus, t, setUserSelectedOption, initCountdown, endCountdown, emitEvent]);\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n const subscribe = () => {\n return api.stream().filter(e => e.type === 'sync').subscribe({\n next: event => {\n const {\n payload\n } = event;\n const lastEvent = events[events.length - 1];\n const {\n id: payloadLastEventId\n } = payload.lastEvent;\n\n if (lastEvent && payloadLastEventId === lastEvent.payload.id) {\n return;\n }\n\n api.getConversation().then(history => {\n if (!history) {\n return;\n }\n\n dispatch({\n type: SET_HISTORY,\n history\n });\n }).catch(error => {\n dispatch(_domains_interrupt__WEBPACK_IMPORTED_MODULE_7__.Actions.set(error));\n });\n }\n });\n };\n\n if (api.stream) {\n const subscription = subscribe();\n return () => {\n subscription.unsubscribe();\n };\n }\n\n return () => {};\n }, [api, events, dispatch]);\n return null;\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SeamlyEventSubscriber);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/components/core/seamly-event-subscriber.js?");
|
|
1543
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/seamly-utils */ \"./src/javascripts/ui/utils/seamly-utils.js\");\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _api_errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../api/errors/seamly-general-error */ \"./src/javascripts/api/errors/seamly-general-error.js\");\n/* harmony import */ var _api_errors_seamly_session_expired_error__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../api/errors/seamly-session-expired-error */ \"./src/javascripts/api/errors/seamly-session-expired-error.js\");\n/* harmony import */ var _api_errors_seamly_offline_error__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../api/errors/seamly-offline-error */ \"./src/javascripts/api/errors/seamly-offline-error.js\");\n/* harmony import */ var _domains_interrupt__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../domains/interrupt */ \"./src/javascripts/domains/interrupt/index.js\");\n/* harmony import */ var _domains_app__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../domains/app */ \"./src/javascripts/domains/app/index.js\");\nconst _excluded = [\"serviceSettings\"];\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\n\n\n\n\n\n\nconst {\n ADD_EVENT,\n ACK_EVENT,\n SET_IS_LOADING,\n SET_PARTICIPANT,\n SET_HEADER_SUB_TITLE,\n SET_ACTIVE_SERVICE,\n INIT_RESUME_CONVERSATION_PROMPT,\n CLEAR_EVENTS,\n SET_SERVICE_DATA_ITEM,\n SET_FEATURE_ENABLED_STATE,\n SET_SERVICE_ENTRY_METADATA,\n SET_HISTORY\n} = _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_1__.seamlyActions;\nconst EMITTABLE_MESSAGE_TYPES = ['text', 'choice_prompt', 'image', 'video'];\n\nconst SeamlyEventSubscriber = ({\n eventBus\n}) => {\n const {\n t\n } = (0,_domains_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n const api = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useSeamlyApiContext)();\n const dispatch = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useSeamlyDispatchContext)();\n const events = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useEvents)();\n const prevEmittedEventId = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const {\n setUserSelectedOption\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useSeamlyOptions)();\n const {\n initCountdown,\n endCountdown\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useSeamlyIdleDetachCountdown)();\n const {\n emitEvent\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useSeamlyCommands)();\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (api.connectionInfo) {\n const updateParticipant = event => {\n const {\n payload\n } = event;\n\n if (!payload || !payload.participant) {\n return;\n }\n\n const {\n fromClient,\n participant\n } = payload;\n\n if (!fromClient && participant.name) {\n dispatch({\n type: SET_HEADER_SUB_TITLE,\n title: participant.name\n });\n }\n\n dispatch({\n type: SET_PARTICIPANT,\n participant,\n fromClient\n });\n\n if (participant.introduction) {\n dispatch({\n type: ADD_EVENT,\n event\n });\n }\n };\n\n api.stream().subscribe({\n next: event => {\n const {\n type,\n payload\n } = event;\n\n switch (type) {\n case 'ui':\n if (payload.state && payload.state.hasOwnProperty('loading')) {\n dispatch({\n type: SET_IS_LOADING,\n isLoading: payload.state.loading\n });\n }\n\n switch (payload.type) {\n case 'idle_detach_countdown':\n initCountdown(payload.body.duration);\n break;\n\n case 'idle_detach_countdown_elapsed':\n endCountdown(undefined, true);\n break;\n\n case 'resume_conversation_prompt':\n dispatch({\n type: INIT_RESUME_CONVERSATION_PROMPT\n });\n break;\n\n case 'user_first_response':\n dispatch(_domains_app__WEBPACK_IMPORTED_MODULE_8__.Actions.setHasResponded(true));\n eventBus.emit('system.userFirstResponse', payload.body);\n break;\n }\n\n break;\n\n case 'message':\n updateParticipant(payload);\n\n switch (payload.type) {\n case 'text':\n case 'choice_prompt':\n case 'image':\n case 'upload':\n case 'video':\n case 'cta':\n case 'custom':\n case 'carousel':\n case 'card':\n if (payload.service && payload.service.serviceSessionId) {\n dispatch({\n type: SET_ACTIVE_SERVICE,\n activeServiceSessionId: payload.service.serviceSessionId\n });\n }\n\n dispatch({\n type: ADD_EVENT,\n event\n });\n break;\n }\n\n break;\n\n case 'participant':\n updateParticipant(event);\n break;\n\n case 'service_data':\n if (payload.persist) {\n dispatch({\n type: SET_SERVICE_DATA_ITEM,\n payload\n });\n }\n\n break;\n\n case 'ack':\n dispatch({\n type: ACK_EVENT,\n event\n });\n break;\n\n case 'system':\n if (payload.type === 'service_changed') {\n const {\n serviceSettings\n } = payload,\n eventPayload = _objectWithoutProperties(payload, _excluded);\n\n const {\n cobrowsing,\n uploads,\n entry\n } = serviceSettings;\n dispatch({\n type: SET_FEATURE_ENABLED_STATE,\n key: _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_1__.featureKeys.cobrowsing,\n enabled: !!(cobrowsing && cobrowsing.enabled)\n });\n dispatch({\n type: SET_FEATURE_ENABLED_STATE,\n key: _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_1__.featureKeys.uploads,\n enabled: !!(uploads && uploads.enabled)\n });\n setUserSelectedOption(_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_1__.featureKeys.cobrowsing, false);\n dispatch({\n type: SET_SERVICE_ENTRY_METADATA,\n entryMeta: entry\n });\n dispatch({\n type: SET_ACTIVE_SERVICE,\n activeServiceSessionId: payload.serviceSessionId\n });\n emitEvent('system.serviceChanged', eventPayload);\n }\n\n break;\n\n case 'info':\n if (payload.type === 'divider' || payload.type === 'text' || payload.type === 'translation') {\n dispatch({\n type: ADD_EVENT,\n event\n });\n }\n\n break;\n\n case 'error':\n switch (payload.type) {\n case 'find_conversation_erred':\n dispatch(_domains_interrupt__WEBPACK_IMPORTED_MODULE_7__.Actions.set(new _api_errors_seamly_session_expired_error__WEBPACK_IMPORTED_MODULE_5__[\"default\"](event)));\n break;\n\n case 'seamly_offline':\n dispatch(_domains_interrupt__WEBPACK_IMPORTED_MODULE_7__.Actions.set(new _api_errors_seamly_offline_error__WEBPACK_IMPORTED_MODULE_6__[\"default\"](event)));\n dispatch({\n type: CLEAR_EVENTS\n });\n break;\n\n default:\n dispatch(_domains_interrupt__WEBPACK_IMPORTED_MODULE_7__.Actions.set(new _api_errors_seamly_general_error__WEBPACK_IMPORTED_MODULE_4__[\"default\"](event)));\n break;\n }\n\n break;\n\n case 'socket_opened':\n dispatch(_domains_interrupt__WEBPACK_IMPORTED_MODULE_7__.Actions.clear());\n break;\n }\n }\n });\n api.stream().filter(e => e.type === 'message' && EMITTABLE_MESSAGE_TYPES.includes(e.payload.type)).subscribe({\n next: ({\n payload\n }) => {\n // This check dedupes the sending of messages via\n // the bus if a duplicate connection exists in an\n // error situation.\n if (payload.id !== prevEmittedEventId.current) {\n eventBus.emit('message', payload);\n }\n\n prevEmittedEventId.current = payload.id;\n }\n });\n }\n }, [dispatch, api, eventBus, t, setUserSelectedOption, initCountdown, endCountdown, emitEvent]);\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n const subscribe = () => {\n return api.stream().filter(e => e.type === 'sync').subscribe({\n next: event => {\n const {\n payload\n } = event;\n const lastEvent = events[events.length - 1];\n const {\n id: payloadLastEventId\n } = payload.lastEvent;\n\n if (lastEvent && payloadLastEventId === lastEvent.payload.id) {\n return;\n }\n\n api.getConversation().then(history => {\n if (!history) {\n return;\n }\n\n dispatch({\n type: SET_HISTORY,\n history\n });\n }).catch(error => {\n dispatch(_domains_interrupt__WEBPACK_IMPORTED_MODULE_7__.Actions.set(error));\n });\n }\n });\n };\n\n if (api.stream) {\n const subscription = subscribe();\n return () => {\n subscription.unsubscribe();\n };\n }\n\n return () => {};\n }, [api, events, dispatch]);\n return null;\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SeamlyEventSubscriber);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/components/core/seamly-event-subscriber.js?");
|
|
1434
1544
|
|
|
1435
1545
|
/***/ }),
|
|
1436
1546
|
|
|
@@ -1474,7 +1584,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
1474
1584
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1475
1585
|
|
|
1476
1586
|
"use strict";
|
|
1477
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var
|
|
1587
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _domains_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../domains/config */ \"./src/javascripts/domains/config/index.js\");\n\n\n\n\nconst SeamlyInitializer = () => {\n const {\n initUserSelectedOptions\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyOptions)();\n const seamlyInitialized = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);\n const config = (0,_domains_config__WEBPACK_IMPORTED_MODULE_2__.useConfig)();\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (config.api && !seamlyInitialized.current) {\n seamlyInitialized.current = true;\n initUserSelectedOptions();\n }\n }, [initUserSelectedOptions, config]);\n return null;\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SeamlyInitializer);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/components/core/seamly-initializer.js?");
|
|
1478
1588
|
|
|
1479
1589
|
/***/ }),
|
|
1480
1590
|
|
|
@@ -1485,7 +1595,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
1485
1595
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1486
1596
|
|
|
1487
1597
|
"use strict";
|
|
1488
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var
|
|
1598
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _seamly_api_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./seamly-api-context */ \"./src/javascripts/ui/components/core/seamly-api-context.js\");\n/* harmony import */ var _domains_translations__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../domains/translations */ \"./src/javascripts/domains/translations/index.js\");\n/* harmony import */ var _domains_interrupt__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../domains/interrupt */ \"./src/javascripts/domains/interrupt/index.js\");\n/* harmony import */ var _domains_config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../domains/config */ \"./src/javascripts/domains/config/index.js\");\n/* harmony import */ var _domains_visibility__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../domains/visibility */ \"./src/javascripts/domains/visibility/index.js\");\n\n\n\n\n\n\n\n\nfunction useSeamlyInstanceFunction(functionName, fn, deps = []) {\n const eventBus = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useContext)(_seamly_api_context__WEBPACK_IMPORTED_MODULE_2__.SeamlyEventBusContext);\n const callbackRef = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)();\n callbackRef.current = fn;\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (!deps.every(Boolean)) {\n return undefined;\n }\n\n const callback = (...args) => {\n var _callbackRef$current;\n\n return (_callbackRef$current = callbackRef.current) === null || _callbackRef$current === void 0 ? void 0 : _callbackRef$current.call(callbackRef, ...args);\n };\n\n eventBus.emit('function.register', functionName, callback);\n return () => eventBus.emit('function.unregister', functionName, callback); // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [eventBus, functionName, ...deps]);\n}\n\nconst SeamlyInstanceFunctionsLoader = () => {\n const config = (0,_domains_config__WEBPACK_IMPORTED_MODULE_5__.useConfig)();\n const {\n sendMessage,\n sendContext,\n sendAction\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyCommands)();\n const {\n setVisibility,\n visible\n } = (0,_domains_visibility__WEBPACK_IMPORTED_MODULE_6__.useVisibility)();\n const currentVisibility = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(visible);\n const eventBus = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useContext)(_seamly_api_context__WEBPACK_IMPORTED_MODULE_2__.SeamlyEventBusContext);\n const api = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyApiContext)();\n const unreadCount = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyUnreadCount)();\n const previousUnreadCount = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const previousVisibilityState = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const {\n isInline,\n isResolving\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyLayoutMode)();\n const {\n hasInterrupt\n } = (0,_domains_interrupt__WEBPACK_IMPORTED_MODULE_4__.useInterrupt)();\n const currentConversationUrl = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyConversationUrl)();\n const prevConversationUrl = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const onActivityHandler = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyActivityEventHandler)();\n const {\n enableTranslations,\n disableTranslations\n } = (0,_domains_translations__WEBPACK_IMPORTED_MODULE_3__.useTranslations)();\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n currentVisibility.current = visible;\n }, [visible]);\n useSeamlyInstanceFunction('askText', text => {\n sendMessage({\n body: text\n });\n }, [api === null || api === void 0 ? void 0 : api.send]);\n useSeamlyInstanceFunction('setVariables', variables => {\n sendContext({\n variables\n });\n }, [api === null || api === void 0 ? void 0 : api.send]);\n useSeamlyInstanceFunction('getVisibility', callback => {\n if (callback) {\n callback(currentVisibility.current);\n } else {\n console.warn('A callback function is required for the getVisibility action.');\n }\n });\n useSeamlyInstanceFunction('setVisibility', visibilityState => {\n if (!Object.values(_domains_visibility__WEBPACK_IMPORTED_MODULE_6__.visibilityStates).includes(visibilityState)) {\n console.error('Requested visibility states should be \"open\", \"minimized\" ,\"hidden\" or null.');\n return;\n }\n\n onActivityHandler();\n\n if (config.layoutMode === 'inline' && visibilityState === _domains_visibility__WEBPACK_IMPORTED_MODULE_6__.visibilityStates.minimized) {\n console.warn('Inline chat windows cannot be minimized.');\n } else {\n setVisibility(visibilityState);\n }\n }, [config === null || config === void 0 ? void 0 : config.api]);\n useSeamlyInstanceFunction('sendCustomAction', (actionType, body) => {\n sendAction({\n type: 'custom',\n body: {\n type: actionType,\n body\n }\n });\n }, [api.send]);\n useSeamlyInstanceFunction('setTopic', ({\n name,\n fallbackMessage\n }) => {\n if (name && fallbackMessage) {\n sendAction({\n type: 'set_topic',\n body: {\n name,\n fallbackMessage\n }\n });\n } else {\n console.warn('A name and a fallbackMessage are required for the setTopic action.');\n }\n }, [api.send]);\n useSeamlyInstanceFunction('setTranslation', ({\n enabled,\n locale\n }) => {\n if (enabled) {\n enableTranslations(locale);\n } else {\n disableTranslations();\n }\n }, [api.send]);\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (!isResolving && !hasInterrupt) {\n // Check for app reset\n if (prevConversationUrl.current && prevConversationUrl.current !== currentConversationUrl) {\n eventBus.emit('unreadMessageCount', unreadCount);\n } // Broadcast once on window open\n\n\n if (visible === _domains_visibility__WEBPACK_IMPORTED_MODULE_6__.visibilityStates.open && visible !== previousVisibilityState.current) {\n if (previousUnreadCount.current !== 0) {\n eventBus.emit('unreadMessageCount', 0);\n }\n }\n\n if (visible !== _domains_visibility__WEBPACK_IMPORTED_MODULE_6__.visibilityStates.open && unreadCount !== previousUnreadCount.current) {\n eventBus.emit('unreadMessageCount', unreadCount);\n }\n\n previousVisibilityState.current = visible;\n previousUnreadCount.current = unreadCount;\n prevConversationUrl.current = currentConversationUrl;\n }\n }, [unreadCount, visible, eventBus, isInline, isResolving, hasInterrupt, currentConversationUrl]);\n return null;\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SeamlyInstanceFunctionsLoader);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/components/core/seamly-instance-functions-loader.js?");
|
|
1489
1599
|
|
|
1490
1600
|
/***/ }),
|
|
1491
1601
|
|
|
@@ -1518,7 +1628,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
1518
1628
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1519
1629
|
|
|
1520
1630
|
"use strict";
|
|
1521
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../config */ \"./src/javascripts/config.js\");\n/* harmony import */ var _utils_general_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/general-utils */ \"./src/javascripts/ui/utils/general-utils.js\");\n\n\n\n\n\n\nconst SeamlyNewNotifications = () => {\n const {\n t\n } = (0,_domains_i18n__WEBPACK_IMPORTED_MODULE_1__.useI18n)();\n const events = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_2__.useEvents)();\n const previousEventCount = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(0);\n const previousServerEventCount = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(0);\n const isHistoryLoaded = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyIsHistoryLoaded)();\n const {\n sendPolite\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_2__.useLiveRegion)();\n const {\n isOpen\n } = (0,
|
|
1631
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../config */ \"./src/javascripts/config.js\");\n/* harmony import */ var _utils_general_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/general-utils */ \"./src/javascripts/ui/utils/general-utils.js\");\n/* harmony import */ var _domains_visibility__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../domains/visibility */ \"./src/javascripts/domains/visibility/index.js\");\n\n\n\n\n\n\n\nconst SeamlyNewNotifications = () => {\n const {\n t\n } = (0,_domains_i18n__WEBPACK_IMPORTED_MODULE_1__.useI18n)();\n const events = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_2__.useEvents)();\n const previousEventCount = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(0);\n const previousServerEventCount = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(0);\n const isHistoryLoaded = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyIsHistoryLoaded)();\n const {\n sendPolite\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_2__.useLiveRegion)();\n const {\n isOpen\n } = (0,_domains_visibility__WEBPACK_IMPORTED_MODULE_5__.useVisibility)();\n const prevIsOpen = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const debounceFunc = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const notifyUnread = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\n return (0,_utils_general_utils__WEBPACK_IMPORTED_MODULE_4__.debounce)(eventArray => {\n const serverEventCount = eventArray.filter(({\n payload\n }) => !payload.fromClient && !payload.fromHistory).length;\n\n if (serverEventCount > previousServerEventCount.current) {\n sendPolite(t('message.srNewEventCount', {\n newCount: serverEventCount - previousServerEventCount.current\n }));\n previousServerEventCount.current = serverEventCount;\n }\n }, _config__WEBPACK_IMPORTED_MODULE_3__.newMessageScreenReaderWait);\n }, [sendPolite, t]);\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (events.length > previousEventCount.current) {\n if (isOpen) {\n debounceFunc.current = notifyUnread(events);\n }\n\n previousEventCount.current = events.length;\n }\n }, [events, notifyUnread, isOpen]);\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (prevIsOpen.current && !isOpen && debounceFunc.current) {\n debounceFunc.current(true);\n debounceFunc.current = null;\n }\n }, [isOpen]);\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (isHistoryLoaded) {\n // Ensure that the live region has stabilised if this is\n // an effect of setting this on page load.\n setTimeout(() => {\n sendPolite(t('window.srTexts.onHistoryLoad'));\n }, 500);\n }\n }, [isHistoryLoaded, t, sendPolite]);\n return null;\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SeamlyNewNotifications);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/components/core/seamly-new-notifications.js?");
|
|
1522
1632
|
|
|
1523
1633
|
/***/ }),
|
|
1524
1634
|
|
|
@@ -1529,7 +1639,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
1529
1639
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1530
1640
|
|
|
1531
1641
|
"use strict";
|
|
1532
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/seamly-utils */ \"./src/javascripts/ui/utils/seamly-utils.js\");\n/* harmony import */ var _utils_general_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/general-utils */ \"./src/javascripts/ui/utils/general-utils.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../config */ \"./src/javascripts/config.js\");\n\n\n\n\n\n\nconst {\n SET_EVENTS_READ\n} = _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_3__.seamlyActions;\n\nconst SeamlyReadState = () => {\n const {\n t\n } = (0,_domains_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n const events = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__.useEvents)();\n const dispatch = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyDispatchContext)();\n const {\n isOpen,\n isVisible\n } = (0,
|
|
1642
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/seamly-utils */ \"./src/javascripts/ui/utils/seamly-utils.js\");\n/* harmony import */ var _utils_general_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/general-utils */ \"./src/javascripts/ui/utils/general-utils.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../config */ \"./src/javascripts/config.js\");\n/* harmony import */ var _domains_visibility__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../domains/visibility */ \"./src/javascripts/domains/visibility/index.js\");\n\n\n\n\n\n\n\nconst {\n SET_EVENTS_READ\n} = _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_3__.seamlyActions;\n\nconst SeamlyReadState = () => {\n const {\n t\n } = (0,_domains_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n const events = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__.useEvents)();\n const dispatch = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyDispatchContext)();\n const {\n isOpen,\n isVisible\n } = (0,_domains_visibility__WEBPACK_IMPORTED_MODULE_6__.useVisibility)();\n const {\n sendAction\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyCommands)();\n const unreadCount = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyUnreadCount)();\n const {\n sendPolite\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__.useLiveRegion)();\n const sendLive = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => (0,_utils_general_utils__WEBPACK_IMPORTED_MODULE_4__.debounce)(sendPolite, _config__WEBPACK_IMPORTED_MODULE_5__.unreadScreenReaderWait), [sendPolite]);\n const prevIsVisible = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const cancelSend = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (!isOpen) {\n return;\n }\n\n const unread = events.filter(event => {\n return (0,_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_3__.isUnreadMessage)(event) && event.payload.messageStatus === _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_3__.readStates.received;\n }).map(event => event.payload.id);\n\n if (unread.length > 0) {\n dispatch({\n type: SET_EVENTS_READ,\n ids: unread\n });\n sendAction({\n type: _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_3__.actionTypes.read,\n events: unread\n });\n }\n }, [events, dispatch, isOpen, sendAction]);\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (prevIsVisible.current !== isVisible && !isVisible && cancelSend.current) {\n cancelSend.current();\n }\n\n if (unreadCount !== 0 && !isOpen && isVisible) {\n cancelSend.current = sendLive(t('message.srTextUnreadCount', {\n unreadCount\n }));\n }\n\n prevIsVisible.current = isVisible;\n }, [unreadCount, isOpen, isVisible, sendLive, t]);\n return null;\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SeamlyReadState);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/components/core/seamly-read-state.js?");
|
|
1533
1643
|
|
|
1534
1644
|
/***/ }),
|
|
1535
1645
|
|
|
@@ -1584,7 +1694,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
1584
1694
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1585
1695
|
|
|
1586
1696
|
"use strict";
|
|
1587
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _lib_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../lib/css */ \"./src/javascripts/lib/css.js\");\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _domains_interrupt__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../domains/interrupt */ \"./src/javascripts/domains/interrupt/index.js\");\n/* harmony import */ var
|
|
1697
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _lib_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../lib/css */ \"./src/javascripts/lib/css.js\");\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _domains_interrupt__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../domains/interrupt */ \"./src/javascripts/domains/interrupt/index.js\");\n/* harmony import */ var _domains_visibility__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../domains/visibility */ \"./src/javascripts/domains/visibility/index.js\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! preact/jsx-runtime */ \"preact/jsx-runtime\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\n\n\n\nconst ToggleButton = ({\n onOpenChat\n}) => {\n const {\n t\n } = (0,_domains_i18n__WEBPACK_IMPORTED_MODULE_1__.useI18n)();\n const titleId = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useGeneratedId)();\n const {\n isOpen\n } = (0,_domains_visibility__WEBPACK_IMPORTED_MODULE_5__.useVisibility)();\n const prevIsOpen = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const buttonRef = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const lastEventRef = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)();\n const focusSkiplinkTarget = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useSkiplinkTargetFocusing)();\n const focusIfContained = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useFocusIfSeamlyContainedFocus)();\n const currentAgent = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useSeamlyCurrentAgent)();\n const agentSubtitle = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useSeamlyHeaderData)().subTitle;\n const {\n hasInterrupt\n } = (0,_domains_interrupt__WEBPACK_IMPORTED_MODULE_4__.useInterrupt)();\n const {\n headerCollapseButtonId\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_3__.useSeamlyStateContext)();\n const showAgentInfo = currentAgent && !hasInterrupt;\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n // Because we can close the app from the external API we\n // need to determine if current keyboard focus resides inside\n // the Seamly app first otherwise focus will be hijacked\n if (isOpen === false && prevIsOpen.current === true) {\n focusIfContained(buttonRef.current);\n }\n\n prevIsOpen.current = isOpen;\n }, [isOpen, focusIfContained]);\n\n const handleMouseUp = () => {\n lastEventRef.current = 'mouse';\n };\n\n const handleKeyUp = () => {\n lastEventRef.current = 'key';\n };\n\n const handleClick = () => {\n onOpenChat();\n\n if (lastEventRef.current === 'mouse') {\n // Sets focus on the input when opening through mouse interaction.\n // This avoids focus hijacking for keyboard users.\n // TODO: function is executed before the component is rendered, needs to be fixed.\n focusSkiplinkTarget();\n } else if (lastEventRef.current === 'key') {\n focusIfContained(headerCollapseButtonId);\n }\n };\n\n return (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(\"div\", {\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_2__.className)('toggle-button'),\n children: [(0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(\"div\", {\n id: titleId,\n children: [(0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"p\", {\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_2__.className)('toggle-button__title'),\n children: showAgentInfo ? t('toggleButton.resumeTitle') : t('toggleButton.title')\n }), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"p\", {\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_2__.className)('toggle-button__subtitle'),\n children: showAgentInfo ? agentSubtitle : t('toggleButton.subtitle')\n })]\n }), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"button\", {\n type: \"button\",\n \"aria-labelledby\": titleId,\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_2__.className)('toggle-button__button'),\n ref: buttonRef,\n onMouseUp: handleMouseUp,\n onKeyUp: handleKeyUp,\n onClick: handleClick\n })]\n });\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ToggleButton);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/components/entry/toggle-button.js?");
|
|
1588
1698
|
|
|
1589
1699
|
/***/ }),
|
|
1590
1700
|
|
|
@@ -1705,7 +1815,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
1705
1815
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1706
1816
|
|
|
1707
1817
|
"use strict";
|
|
1708
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _icon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./icon */ \"./src/javascripts/ui/components/layout/icon.js\");\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _lib_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../lib/css */ \"./src/javascripts/lib/css.js\");\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _domains_interrupt__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../domains/interrupt */ \"./src/javascripts/domains/interrupt/index.js\");\n/* harmony import */ var _domains_config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../domains/config */ \"./src/javascripts/domains/config/index.js\");\n/* harmony import */ var
|
|
1818
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _icon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./icon */ \"./src/javascripts/ui/components/layout/icon.js\");\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _lib_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../lib/css */ \"./src/javascripts/lib/css.js\");\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _domains_interrupt__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../domains/interrupt */ \"./src/javascripts/domains/interrupt/index.js\");\n/* harmony import */ var _domains_config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../domains/config */ \"./src/javascripts/domains/config/index.js\");\n/* harmony import */ var _domains_visibility__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../domains/visibility */ \"./src/javascripts/domains/visibility/index.js\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! preact/jsx-runtime */ \"preact/jsx-runtime\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);\n\n\n\n\n\n\n\n\n\n\nconst AgentInfo = () => {\n const {\n t\n } = (0,_domains_i18n__WEBPACK_IMPORTED_MODULE_3__.useI18n)();\n const {\n title,\n subTitle\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyHeaderData)();\n const unreadMessageCount = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyUnreadCount)();\n const {\n isOpen\n } = (0,_domains_visibility__WEBPACK_IMPORTED_MODULE_6__.useVisibility)();\n const currentAgent = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyCurrentAgent)();\n const {\n hasInterrupt\n } = (0,_domains_interrupt__WEBPACK_IMPORTED_MODULE_4__.useInterrupt)();\n const {\n defaults\n } = (0,_domains_config__WEBPACK_IMPORTED_MODULE_5__.useConfig)();\n const {\n startChatIcon\n } = defaults || {};\n const avatar = currentAgent && !hasInterrupt ? currentAgent.avatar : null;\n const displaySubtitle = hasInterrupt ? '' : subTitle;\n const classNames = ['message-count'];\n\n if (isOpen) {\n classNames.push('message-count__hide');\n }\n\n if (unreadMessageCount === 0) {\n classNames.push('message-count__empty');\n }\n\n return (avatar || displaySubtitle || !isOpen) && (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(\"div\", {\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_2__.className)('agent-info'),\n children: [(0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(\"div\", {\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_2__.className)('agent-info__graphic'),\n children: [avatar || startChatIcon ? (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"img\", {\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_2__.className)(avatar ? 'avatar' : 'icon'),\n src: avatar || startChatIcon,\n alt: \"\"\n }) : (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_icon__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n name: \"avatar\",\n size: \"32\"\n }), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"span\", {\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_2__.className)(classNames),\n \"aria-hidden\": \"true\",\n children: unreadMessageCount\n })]\n }), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(\"div\", {\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_2__.className)('agent-info__body'),\n children: [(0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"p\", {\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_2__.className)('agent-info__heading'),\n children: title ?? t('header.title')\n }), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"p\", {\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_2__.className)('agent-info__text'),\n children: displaySubtitle\n })]\n })]\n });\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AgentInfo);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/components/layout/agent-info.js?");
|
|
1709
1819
|
|
|
1710
1820
|
/***/ }),
|
|
1711
1821
|
|
|
@@ -1716,7 +1826,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
1716
1826
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1717
1827
|
|
|
1718
1828
|
"use strict";
|
|
1719
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lib_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../lib/css */ \"./src/javascripts/lib/css.js\");\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _faq_faq__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../faq/faq */ \"./src/javascripts/ui/components/faq/faq.js\");\n/* harmony import */ var
|
|
1829
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lib_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../lib/css */ \"./src/javascripts/lib/css.js\");\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _faq_faq__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../faq/faq */ \"./src/javascripts/ui/components/faq/faq.js\");\n/* harmony import */ var _domains_config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../domains/config */ \"./src/javascripts/domains/config/index.js\");\n/* harmony import */ var _domains_app__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../domains/app */ \"./src/javascripts/domains/app/index.js\");\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _domains_visibility__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../domains/visibility */ \"./src/javascripts/domains/visibility/index.js\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! preact/jsx-runtime */ \"preact/jsx-runtime\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\n\n\n\n\n\n\nconst AppFrame = ({\n children\n}) => {\n const [, setSeamlyContainerElement] = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyContainerElement)();\n const {\n isOpen,\n isVisible,\n setVisibility\n } = (0,_domains_visibility__WEBPACK_IMPORTED_MODULE_7__.useVisibility)();\n const {\n zIndex,\n showFaq\n } = (0,_domains_config__WEBPACK_IMPORTED_MODULE_4__.useConfig)();\n const {\n isModal,\n isInline\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyLayoutMode)();\n const appContainerClassNames = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyAppContainerClassNames)();\n const userResponded = (0,_domains_app__WEBPACK_IMPORTED_MODULE_5__.useUserHasResponded)();\n const {\n locale\n } = (0,_domains_i18n__WEBPACK_IMPORTED_MODULE_6__.useI18n)();\n const containerElementRef = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(container => {\n setSeamlyContainerElement(container);\n }, [setSeamlyContainerElement]);\n const blockLang = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\n if (locale) {\n const htmlElementLang = document.querySelector('html').getAttribute('lang');\n\n if (htmlElementLang !== locale) {\n return locale;\n }\n }\n\n return undefined;\n }, [locale]);\n const classNames = ['app', ...appContainerClassNames];\n\n if (!isOpen) {\n classNames.push('app--collapsed');\n }\n\n if (userResponded) {\n classNames.push('app--user-responded');\n }\n\n const onKeyDownHandler = e => {\n if (e.code && e.code === 'Escape' || e.keyCode === 27) if (!isInline && isOpen) {\n setVisibility(_domains_visibility__WEBPACK_IMPORTED_MODULE_7__.visibilityStates.minimized);\n }\n };\n\n const onClickHandler = e => {\n if (isModal) {\n e.stopPropagation();\n }\n };\n\n return isVisible && (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(\"section\", {\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_1__.className)(classNames),\n onKeyDown: onKeyDownHandler,\n onClick: onClickHandler,\n lang: blockLang,\n tabIndex: \"-1\",\n ref: containerElementRef,\n style: {\n zIndex\n },\n \"data-nosnippet\": true,\n children: [(0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(\"div\", {\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_1__.className)('app-wrapper'),\n children: children\n }), showFaq && (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_faq_faq__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {})]\n });\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AppFrame);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/components/layout/app-frame.js?");
|
|
1720
1830
|
|
|
1721
1831
|
/***/ }),
|
|
1722
1832
|
|
|
@@ -1727,7 +1837,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
1727
1837
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1728
1838
|
|
|
1729
1839
|
"use strict";
|
|
1730
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _lib_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../lib/css */ \"./src/javascripts/lib/css.js\");\n/* harmony import */ var
|
|
1840
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _lib_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../lib/css */ \"./src/javascripts/lib/css.js\");\n/* harmony import */ var _warnings_cobrowsing_active_frame__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../warnings/cobrowsing-active-frame */ \"./src/javascripts/ui/components/warnings/cobrowsing-active-frame.js\");\n/* harmony import */ var _app_options__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../app-options */ \"./src/javascripts/ui/components/app-options/index.js\");\n/* harmony import */ var _domains_translations__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../domains/translations */ \"./src/javascripts/domains/translations/index.js\");\n/* harmony import */ var _domains_interrupt__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../domains/interrupt */ \"./src/javascripts/domains/interrupt/index.js\");\n/* harmony import */ var _domains_visibility__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../domains/visibility */ \"./src/javascripts/domains/visibility/index.js\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! preact/jsx-runtime */ \"preact/jsx-runtime\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\nfunction ChatFrame({\n children,\n interruptComponent: InterruptComponent\n}) {\n const {\n hasInterrupt,\n meta\n } = (0,_domains_interrupt__WEBPACK_IMPORTED_MODULE_4__.useInterrupt)();\n const {\n isOpen\n } = (0,_domains_visibility__WEBPACK_IMPORTED_MODULE_5__.useVisibility)();\n\n const getContent = () => {\n if (hasInterrupt) {\n if (isOpen) {\n return (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(InterruptComponent, _objectSpread({}, meta));\n }\n\n return null;\n }\n\n return children;\n };\n\n return (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.Fragment, {\n children: [(0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_warnings_cobrowsing_active_frame__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {}), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_domains_translations__WEBPACK_IMPORTED_MODULE_3__.ChatStatus, {}), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(\"div\", {\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_0__.className)('app__container'),\n children: getContent()\n }), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_app_options__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {})]\n });\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ChatFrame);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/components/layout/chat-frame.js?");
|
|
1731
1841
|
|
|
1732
1842
|
/***/ }),
|
|
1733
1843
|
|
|
@@ -1771,7 +1881,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
1771
1881
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1772
1882
|
|
|
1773
1883
|
"use strict";
|
|
1774
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var focus_trap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! focus-trap */ \"./node_modules/focus-trap/dist/focus-trap.esm.js\");\n/* harmony import */ var _widgets_in_out_transition__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../widgets/in-out-transition */ \"./src/javascripts/ui/components/widgets/in-out-transition.js\");\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _lib_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../lib/css */ \"./src/javascripts/lib/css.js\");\n/* harmony import */ var _utils_general_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/general-utils */ \"./src/javascripts/ui/utils/general-utils.js\");\n/* harmony import */ var
|
|
1884
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var focus_trap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! focus-trap */ \"./node_modules/focus-trap/dist/focus-trap.esm.js\");\n/* harmony import */ var _widgets_in_out_transition__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../widgets/in-out-transition */ \"./src/javascripts/ui/components/widgets/in-out-transition.js\");\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _lib_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../lib/css */ \"./src/javascripts/lib/css.js\");\n/* harmony import */ var _utils_general_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/general-utils */ \"./src/javascripts/ui/utils/general-utils.js\");\n/* harmony import */ var _domains_visibility__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../domains/visibility */ \"./src/javascripts/domains/visibility/index.js\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! preact/jsx-runtime */ \"preact/jsx-runtime\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);\n\n\n\n\n\n\n\n\n\n\nconst ModalWrapper = ({\n children\n}) => {\n const {\n t\n } = (0,_domains_i18n__WEBPACK_IMPORTED_MODULE_3__.useI18n)();\n const {\n isModal\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyLayoutMode)();\n const {\n isOpen,\n setVisibility\n } = (0,_domains_visibility__WEBPACK_IMPORTED_MODULE_6__.useVisibility)();\n const container = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const focusTrap = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n\n const onInTransitionCompleteHandler = () => {\n focusTrap.current = (0,focus_trap__WEBPACK_IMPORTED_MODULE_8__.createFocusTrap)(container.current);\n focusTrap.current.activate();\n };\n\n const onOutTransitionCompleteHandler = () => {\n if (focusTrap.current) {\n focusTrap.current.deactivate();\n focusTrap.current = null;\n }\n };\n\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (!isModal) {\n return null;\n }\n\n let disposeAriaHider;\n\n if (isOpen) {\n disposeAriaHider = (0,_utils_general_utils__WEBPACK_IMPORTED_MODULE_5__.createAriaHider)(); // As the chat window is housed in a container we have to remove the\n // aria-hidden the aria hider places on the container.\n\n container.current.parentElement.removeAttribute('aria-hidden');\n }\n\n return () => {\n if (disposeAriaHider) {\n disposeAriaHider();\n disposeAriaHider = null;\n }\n };\n }, [isOpen, isModal]);\n\n const onClickHandler = () => {\n setVisibility(_domains_visibility__WEBPACK_IMPORTED_MODULE_6__.visibilityStates.minimized);\n };\n\n return isModal ? (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_widgets_in_out_transition__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n isActive: isOpen,\n transitionStartState: _widgets_in_out_transition__WEBPACK_IMPORTED_MODULE_1__.transitionStartStates.rendered,\n onInTransitionComplete: onInTransitionCompleteHandler,\n onOutTransitionComplete: onOutTransitionCompleteHandler,\n children: (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(\"div\", {\n className: (0,_lib_css__WEBPACK_IMPORTED_MODULE_4__.className)('modal-overlay'),\n role: \"dialog\",\n \"aria-modal\": \"true\",\n \"aria-label\": t('window.srModalLayoutLabel'),\n onClick: onClickHandler,\n ref: container,\n children: children\n })\n }) : children;\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ModalWrapper);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/components/layout/modal-wrapper.js?");
|
|
1775
1885
|
|
|
1776
1886
|
/***/ }),
|
|
1777
1887
|
|
|
@@ -1793,7 +1903,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
1793
1903
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1794
1904
|
|
|
1795
1905
|
"use strict";
|
|
1796
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _modal_wrapper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modal-wrapper */ \"./src/javascripts/ui/components/layout/modal-wrapper.js\");\n/* harmony import */ var _app_frame__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app-frame */ \"./src/javascripts/ui/components/layout/app-frame.js\");\n/* harmony import */ var _chat_frame__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chat-frame */ \"./src/javascripts/ui/components/layout/chat-frame.js\");\n/* harmony import */ var _entry_toggle_button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../entry/toggle-button */ \"./src/javascripts/ui/components/entry/toggle-button.js\");\n/* harmony import */ var _agent_info__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./agent-info */ \"./src/javascripts/ui/components/layout/agent-info.js\");\n/* harmony import */ var _header__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./header */ \"./src/javascripts/ui/components/layout/header.js\");\n/* harmony import */ var _conversation_conversation__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../conversation/conversation */ \"./src/javascripts/ui/components/conversation/conversation.js\");\n/* harmony import */ var _entry_entry_container__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../entry/entry-container */ \"./src/javascripts/ui/components/entry/entry-container.js\");\n/* harmony import */ var _interrupt__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./interrupt */ \"./src/javascripts/ui/components/layout/interrupt.js\");\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var
|
|
1906
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _modal_wrapper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modal-wrapper */ \"./src/javascripts/ui/components/layout/modal-wrapper.js\");\n/* harmony import */ var _app_frame__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app-frame */ \"./src/javascripts/ui/components/layout/app-frame.js\");\n/* harmony import */ var _chat_frame__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chat-frame */ \"./src/javascripts/ui/components/layout/chat-frame.js\");\n/* harmony import */ var _entry_toggle_button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../entry/toggle-button */ \"./src/javascripts/ui/components/entry/toggle-button.js\");\n/* harmony import */ var _agent_info__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./agent-info */ \"./src/javascripts/ui/components/layout/agent-info.js\");\n/* harmony import */ var _header__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./header */ \"./src/javascripts/ui/components/layout/header.js\");\n/* harmony import */ var _conversation_conversation__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../conversation/conversation */ \"./src/javascripts/ui/components/conversation/conversation.js\");\n/* harmony import */ var _entry_entry_container__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../entry/entry-container */ \"./src/javascripts/ui/components/entry/entry-container.js\");\n/* harmony import */ var _interrupt__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./interrupt */ \"./src/javascripts/ui/components/layout/interrupt.js\");\n/* harmony import */ var _hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../hooks/seamly-hooks */ \"./src/javascripts/ui/hooks/seamly-hooks.js\");\n/* harmony import */ var _domains_visibility__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../domains/visibility */ \"./src/javascripts/domains/visibility/index.js\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! preact/jsx-runtime */ \"preact/jsx-runtime\");\n/* harmony import */ var preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst View = () => {\n const {\n isVisible\n } = (0,_domains_visibility__WEBPACK_IMPORTED_MODULE_10__.useVisibility)();\n const {\n openChat,\n closeChat\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_9__.useSeamlyChat)();\n const {\n isModal\n } = (0,_hooks_seamly_hooks__WEBPACK_IMPORTED_MODULE_9__.useSeamlyLayoutMode)();\n return isVisible && (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_modal_wrapper__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n children: (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_app_frame__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n children: [!isModal && (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_entry_toggle_button__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n onOpenChat: openChat\n }), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_header__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n onCloseChat: closeChat,\n children: (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_agent_info__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {})\n }), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_chat_frame__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n interruptComponent: _interrupt__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n children: [(0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_conversation_conversation__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {}), (0,preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_entry_entry_container__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {})]\n })]\n })\n });\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (View);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/components/layout/view.js?");
|
|
1797
1907
|
|
|
1798
1908
|
/***/ }),
|
|
1799
1909
|
|
|
@@ -2035,7 +2145,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2035
2145
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2036
2146
|
|
|
2037
2147
|
"use strict";
|
|
2038
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"useLastMessageEventId\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useLastMessageEventId),\n/* harmony export */ \"useEntryTextLimit\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useEntryTextLimit),\n/* harmony export */ \"useSeamlyCurrentAgent\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyCurrentAgent),\n/* harmony export */ \"useEvents\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useEvents),\n/* harmony export */ \"useSeamlyHeaderData\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyHeaderData),\n/* harmony export */ \"useSeamlyIsHistoryLoaded\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyIsHistoryLoaded),\n/* harmony export */ \"useSeamlyIsLoading\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyIsLoading),\n/* harmony export */ \"useSeamlyLayoutMode\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyLayoutMode),\n/* harmony export */ \"useSeamlyParticipant\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyParticipant),\n/* harmony export */ \"useSeamlyServiceData\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyServiceData),\n/* harmony export */ \"useSeamlyServiceInfo\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyServiceInfo),\n/* harmony export */ \"useSeamlyStateContext\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyStateContext),\n/* harmony export */ \"useSeamlyUnreadCount\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyUnreadCount),\n/* harmony export */ \"useSkiplink\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSkiplink),\n/* harmony export */ \"useSeamlyApiContext\": () => (/* reexport safe */ _seamly_api_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyApiContext),\n/* harmony export */ \"useSeamlyConversationUrl\": () => (/* reexport safe */ _seamly_api_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyConversationUrl),\n/* harmony export */ \"useSeamlyDispatchContext\": () => (/* reexport safe */ _use_seamly_dispatch__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"useSeamlyAppContainerClassNames\": () => (/* reexport safe */ _component_helper_hooks__WEBPACK_IMPORTED_MODULE_4__.useSeamlyAppContainerClassNames),\n/* harmony export */ \"useSeamlyMessageContainerClassNames\": () => (/* reexport safe */ _component_helper_hooks__WEBPACK_IMPORTED_MODULE_4__.useSeamlyMessageContainerClassNames),\n/* harmony export */ \"useCobrowsingContainer\": () => (/* reexport safe */ _component_helper_hooks__WEBPACK_IMPORTED_MODULE_4__.useCobrowsingContainer),\n/* harmony export */ \"useSeamlyOptions\": () => (/* reexport safe */ _seamly_option_hooks__WEBPACK_IMPORTED_MODULE_5__.useSeamlyOptions),\n/* harmony export */ \"useOptionButton\": () => (/* reexport safe */ _seamly_option_hooks__WEBPACK_IMPORTED_MODULE_5__.useOptionButton),\n/* harmony export */ \"useFileUploadMeta\": () => (/* reexport safe */ _file_upload_hooks__WEBPACK_IMPORTED_MODULE_6__.useFileUploadMeta),\n/* harmony export */ \"useFileUploads\": () => (/* reexport safe */ _file_upload_hooks__WEBPACK_IMPORTED_MODULE_6__.useFileUploads),\n/* harmony export */ \"useSeamlyCommands\": () => (/* reexport safe */ _use_seamly_commands__WEBPACK_IMPORTED_MODULE_7__[\"default\"]),\n/* harmony export */ \"useLiveRegion\": () => (/* reexport safe */ _live_region_hooks__WEBPACK_IMPORTED_MODULE_8__.useLiveRegion),\n/* harmony export */ \"useSeamlyLiveRegionContext\": () => (/* reexport safe */ _live_region_hooks__WEBPACK_IMPORTED_MODULE_8__.useSeamlyLiveRegionContext),\n/* harmony export */ \"useSeamlyActivityEventHandler\": () => (/* reexport safe */ _use_seamly_activity_event_handler__WEBPACK_IMPORTED_MODULE_9__[\"default\"]),\n/* harmony export */ \"useSeamlyTyping\": () => (/* reexport safe */ _seamly_entry_hooks__WEBPACK_IMPORTED_MODULE_10__.useSeamlyTyping),\n/* harmony export */ \"useSeamlyEntry\": () => (/* reexport safe */ _seamly_entry_hooks__WEBPACK_IMPORTED_MODULE_10__.useSeamlyEntry),\n/* harmony export */ \"useForceUpdate\": () => (/* reexport safe */ _utility_hooks__WEBPACK_IMPORTED_MODULE_11__.useForceUpdate),\n/* harmony export */ \"useGeneratedId\": () => (/* reexport safe */ _utility_hooks__WEBPACK_IMPORTED_MODULE_11__.useGeneratedId),\n/* harmony export */ \"useStableCallback\": () => (/* reexport safe */ _utility_hooks__WEBPACK_IMPORTED_MODULE_11__.useStableCallback),\n/* harmony export */ \"useElementFocusingById\": () => (/* reexport safe */ _focus_helper_hooks__WEBPACK_IMPORTED_MODULE_12__.useElementFocusingById),\n/* harmony export */ \"useSkiplinkTargetFocusing\": () => (/* reexport safe */ _focus_helper_hooks__WEBPACK_IMPORTED_MODULE_12__.useSkiplinkTargetFocusing),\n/* harmony export */ \"useFocusIfSeamlyContainedFocus\": () => (/* reexport safe */ _focus_helper_hooks__WEBPACK_IMPORTED_MODULE_12__.useFocusIfSeamlyContainedFocus),\n/* harmony export */ \"useSeamlyContainerElement\": () => (/* reexport safe */ _focus_helper_hooks__WEBPACK_IMPORTED_MODULE_12__.useSeamlyContainerElement),\n/* harmony export */ \"useSeamlyChat\": () => (/* reexport safe */ _use_seamly_chat__WEBPACK_IMPORTED_MODULE_13__[\"default\"]),\n/* harmony export */ \"useSeamlyStoredVisibility\": () => (/* reexport safe */ _use_seamly_stored_visibility__WEBPACK_IMPORTED_MODULE_14__[\"default\"]),\n/* harmony export */ \"useSeamlyVisibility\": () => (/* reexport safe */ _use_seamly_visibility__WEBPACK_IMPORTED_MODULE_15__[\"default\"]),\n/* harmony export */ \"useSeamlyIdleDetachCountdown\": () => (/* reexport safe */ _use_seamly_idle_detach_countdown__WEBPACK_IMPORTED_MODULE_16__[\"default\"]),\n/* harmony export */ \"useSeamlyResumeConversationPrompt\": () => (/* reexport safe */ _use_seamly_resume_conversation_prompt__WEBPACK_IMPORTED_MODULE_17__[\"default\"]),\n/* harmony export */ \"useSeamlyEventStream\": () => (/* binding */ useSeamlyEventStream)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _seamly_api_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./seamly-api-hooks */ \"./src/javascripts/ui/hooks/seamly-api-hooks.js\");\n/* harmony import */ var _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./seamly-state-hooks */ \"./src/javascripts/ui/hooks/seamly-state-hooks.js\");\n/* harmony import */ var _use_seamly_dispatch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./use-seamly-dispatch */ \"./src/javascripts/ui/hooks/use-seamly-dispatch.js\");\n/* harmony import */ var _component_helper_hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./component-helper-hooks */ \"./src/javascripts/ui/hooks/component-helper-hooks.js\");\n/* harmony import */ var _seamly_option_hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./seamly-option-hooks */ \"./src/javascripts/ui/hooks/seamly-option-hooks.js\");\n/* harmony import */ var _file_upload_hooks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./file-upload-hooks */ \"./src/javascripts/ui/hooks/file-upload-hooks.js\");\n/* harmony import */ var _use_seamly_commands__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./use-seamly-commands */ \"./src/javascripts/ui/hooks/use-seamly-commands.js\");\n/* harmony import */ var _live_region_hooks__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./live-region-hooks */ \"./src/javascripts/ui/hooks/live-region-hooks.js\");\n/* harmony import */ var _use_seamly_activity_event_handler__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./use-seamly-activity-event-handler */ \"./src/javascripts/ui/hooks/use-seamly-activity-event-handler.js\");\n/* harmony import */ var _seamly_entry_hooks__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./seamly-entry-hooks */ \"./src/javascripts/ui/hooks/seamly-entry-hooks.js\");\n/* harmony import */ var _utility_hooks__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utility-hooks */ \"./src/javascripts/ui/hooks/utility-hooks.js\");\n/* harmony import */ var _focus_helper_hooks__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./focus-helper-hooks */ \"./src/javascripts/ui/hooks/focus-helper-hooks.js\");\n/* harmony import */ var _use_seamly_chat__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./use-seamly-chat */ \"./src/javascripts/ui/hooks/use-seamly-chat.js\");\n/* harmony import */ var _use_seamly_stored_visibility__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./use-seamly-stored-visibility */ \"./src/javascripts/ui/hooks/use-seamly-stored-visibility.js\");\n/* harmony import */ var _use_seamly_visibility__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./use-seamly-visibility */ \"./src/javascripts/ui/hooks/use-seamly-visibility.js\");\n/* harmony import */ var _use_seamly_idle_detach_countdown__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./use-seamly-idle-detach-countdown */ \"./src/javascripts/ui/hooks/use-seamly-idle-detach-countdown.js\");\n/* harmony import */ var _use_seamly_resume_conversation_prompt__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./use-seamly-resume-conversation-prompt */ \"./src/javascripts/ui/hooks/use-seamly-resume-conversation-prompt.js\");\n // Import extracted hooks here for use inside this file\n\n // Export extracted hooks here,\n// although this is a redundant, it prevents a bazillion code changes for now.\n// TODO: Remove exports and import them from the correct files\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // This hook isn't used within the core\n// But it is used in implementations\n// and imported directly from this file\n// Please do not remove\n\nconst useSeamlyEventStream = (nextFn, filterFn) => {\n const api = (0,_seamly_api_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyApiContext)();\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (api.stream) {\n if (filterFn) {\n api.stream().filter(filterFn).subscribe({\n next: nextFn\n });\n } else {\n api.stream().subscribe({\n next: nextFn\n });\n }\n }\n }, [api, nextFn, filterFn]);\n};\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/hooks/seamly-hooks.js?");
|
|
2148
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"useLastMessageEventId\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useLastMessageEventId),\n/* harmony export */ \"useEntryTextLimit\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useEntryTextLimit),\n/* harmony export */ \"useSeamlyCurrentAgent\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyCurrentAgent),\n/* harmony export */ \"useEvents\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useEvents),\n/* harmony export */ \"useSeamlyHeaderData\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyHeaderData),\n/* harmony export */ \"useSeamlyIsHistoryLoaded\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyIsHistoryLoaded),\n/* harmony export */ \"useSeamlyIsLoading\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyIsLoading),\n/* harmony export */ \"useSeamlyLayoutMode\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyLayoutMode),\n/* harmony export */ \"useSeamlyParticipant\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyParticipant),\n/* harmony export */ \"useSeamlyServiceData\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyServiceData),\n/* harmony export */ \"useSeamlyServiceInfo\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyServiceInfo),\n/* harmony export */ \"useSeamlyStateContext\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyStateContext),\n/* harmony export */ \"useSeamlyUnreadCount\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyUnreadCount),\n/* harmony export */ \"useSkiplink\": () => (/* reexport safe */ _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSkiplink),\n/* harmony export */ \"useSeamlyApiContext\": () => (/* reexport safe */ _seamly_api_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyApiContext),\n/* harmony export */ \"useSeamlyConversationUrl\": () => (/* reexport safe */ _seamly_api_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyConversationUrl),\n/* harmony export */ \"useSeamlyDispatchContext\": () => (/* reexport safe */ _use_seamly_dispatch__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"useSeamlyAppContainerClassNames\": () => (/* reexport safe */ _component_helper_hooks__WEBPACK_IMPORTED_MODULE_4__.useSeamlyAppContainerClassNames),\n/* harmony export */ \"useSeamlyMessageContainerClassNames\": () => (/* reexport safe */ _component_helper_hooks__WEBPACK_IMPORTED_MODULE_4__.useSeamlyMessageContainerClassNames),\n/* harmony export */ \"useCobrowsingContainer\": () => (/* reexport safe */ _component_helper_hooks__WEBPACK_IMPORTED_MODULE_4__.useCobrowsingContainer),\n/* harmony export */ \"useSeamlyOptions\": () => (/* reexport safe */ _seamly_option_hooks__WEBPACK_IMPORTED_MODULE_5__.useSeamlyOptions),\n/* harmony export */ \"useOptionButton\": () => (/* reexport safe */ _seamly_option_hooks__WEBPACK_IMPORTED_MODULE_5__.useOptionButton),\n/* harmony export */ \"useFileUploadMeta\": () => (/* reexport safe */ _file_upload_hooks__WEBPACK_IMPORTED_MODULE_6__.useFileUploadMeta),\n/* harmony export */ \"useFileUploads\": () => (/* reexport safe */ _file_upload_hooks__WEBPACK_IMPORTED_MODULE_6__.useFileUploads),\n/* harmony export */ \"useSeamlyCommands\": () => (/* reexport safe */ _use_seamly_commands__WEBPACK_IMPORTED_MODULE_7__[\"default\"]),\n/* harmony export */ \"useLiveRegion\": () => (/* reexport safe */ _live_region_hooks__WEBPACK_IMPORTED_MODULE_8__.useLiveRegion),\n/* harmony export */ \"useSeamlyLiveRegionContext\": () => (/* reexport safe */ _live_region_hooks__WEBPACK_IMPORTED_MODULE_8__.useSeamlyLiveRegionContext),\n/* harmony export */ \"useSeamlyActivityEventHandler\": () => (/* reexport safe */ _use_seamly_activity_event_handler__WEBPACK_IMPORTED_MODULE_9__[\"default\"]),\n/* harmony export */ \"useSeamlyTyping\": () => (/* reexport safe */ _seamly_entry_hooks__WEBPACK_IMPORTED_MODULE_10__.useSeamlyTyping),\n/* harmony export */ \"useSeamlyEntry\": () => (/* reexport safe */ _seamly_entry_hooks__WEBPACK_IMPORTED_MODULE_10__.useSeamlyEntry),\n/* harmony export */ \"useForceUpdate\": () => (/* reexport safe */ _utility_hooks__WEBPACK_IMPORTED_MODULE_11__.useForceUpdate),\n/* harmony export */ \"useGeneratedId\": () => (/* reexport safe */ _utility_hooks__WEBPACK_IMPORTED_MODULE_11__.useGeneratedId),\n/* harmony export */ \"useStableCallback\": () => (/* reexport safe */ _utility_hooks__WEBPACK_IMPORTED_MODULE_11__.useStableCallback),\n/* harmony export */ \"useElementFocusingById\": () => (/* reexport safe */ _focus_helper_hooks__WEBPACK_IMPORTED_MODULE_12__.useElementFocusingById),\n/* harmony export */ \"useSkiplinkTargetFocusing\": () => (/* reexport safe */ _focus_helper_hooks__WEBPACK_IMPORTED_MODULE_12__.useSkiplinkTargetFocusing),\n/* harmony export */ \"useFocusIfSeamlyContainedFocus\": () => (/* reexport safe */ _focus_helper_hooks__WEBPACK_IMPORTED_MODULE_12__.useFocusIfSeamlyContainedFocus),\n/* harmony export */ \"useSeamlyContainerElement\": () => (/* reexport safe */ _focus_helper_hooks__WEBPACK_IMPORTED_MODULE_12__.useSeamlyContainerElement),\n/* harmony export */ \"useSeamlyChat\": () => (/* reexport safe */ _use_seamly_chat__WEBPACK_IMPORTED_MODULE_13__[\"default\"]),\n/* harmony export */ \"useSeamlyIdleDetachCountdown\": () => (/* reexport safe */ _use_seamly_idle_detach_countdown__WEBPACK_IMPORTED_MODULE_14__[\"default\"]),\n/* harmony export */ \"useSeamlyResumeConversationPrompt\": () => (/* reexport safe */ _use_seamly_resume_conversation_prompt__WEBPACK_IMPORTED_MODULE_15__[\"default\"]),\n/* harmony export */ \"useSeamlyEventStream\": () => (/* binding */ useSeamlyEventStream)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _seamly_api_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./seamly-api-hooks */ \"./src/javascripts/ui/hooks/seamly-api-hooks.js\");\n/* harmony import */ var _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./seamly-state-hooks */ \"./src/javascripts/ui/hooks/seamly-state-hooks.js\");\n/* harmony import */ var _use_seamly_dispatch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./use-seamly-dispatch */ \"./src/javascripts/ui/hooks/use-seamly-dispatch.js\");\n/* harmony import */ var _component_helper_hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./component-helper-hooks */ \"./src/javascripts/ui/hooks/component-helper-hooks.js\");\n/* harmony import */ var _seamly_option_hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./seamly-option-hooks */ \"./src/javascripts/ui/hooks/seamly-option-hooks.js\");\n/* harmony import */ var _file_upload_hooks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./file-upload-hooks */ \"./src/javascripts/ui/hooks/file-upload-hooks.js\");\n/* harmony import */ var _use_seamly_commands__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./use-seamly-commands */ \"./src/javascripts/ui/hooks/use-seamly-commands.js\");\n/* harmony import */ var _live_region_hooks__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./live-region-hooks */ \"./src/javascripts/ui/hooks/live-region-hooks.js\");\n/* harmony import */ var _use_seamly_activity_event_handler__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./use-seamly-activity-event-handler */ \"./src/javascripts/ui/hooks/use-seamly-activity-event-handler.js\");\n/* harmony import */ var _seamly_entry_hooks__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./seamly-entry-hooks */ \"./src/javascripts/ui/hooks/seamly-entry-hooks.js\");\n/* harmony import */ var _utility_hooks__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utility-hooks */ \"./src/javascripts/ui/hooks/utility-hooks.js\");\n/* harmony import */ var _focus_helper_hooks__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./focus-helper-hooks */ \"./src/javascripts/ui/hooks/focus-helper-hooks.js\");\n/* harmony import */ var _use_seamly_chat__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./use-seamly-chat */ \"./src/javascripts/ui/hooks/use-seamly-chat.js\");\n/* harmony import */ var _use_seamly_idle_detach_countdown__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./use-seamly-idle-detach-countdown */ \"./src/javascripts/ui/hooks/use-seamly-idle-detach-countdown.js\");\n/* harmony import */ var _use_seamly_resume_conversation_prompt__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./use-seamly-resume-conversation-prompt */ \"./src/javascripts/ui/hooks/use-seamly-resume-conversation-prompt.js\");\n // Import extracted hooks here for use inside this file\n\n // Export extracted hooks here,\n// although this is a redundant, it prevents a bazillion code changes for now.\n// TODO: Remove exports and import them from the correct files\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // This hook isn't used within the core\n// But it is used in implementations\n// and imported directly from this file\n// Please do not remove\n\nconst useSeamlyEventStream = (nextFn, filterFn) => {\n const api = (0,_seamly_api_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyApiContext)();\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (api.stream) {\n if (filterFn) {\n api.stream().filter(filterFn).subscribe({\n next: nextFn\n });\n } else {\n api.stream().subscribe({\n next: nextFn\n });\n }\n }\n }, [api, nextFn, filterFn]);\n};\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/hooks/seamly-hooks.js?");
|
|
2039
2149
|
|
|
2040
2150
|
/***/ }),
|
|
2041
2151
|
|
|
@@ -2101,7 +2211,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2101
2211
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2102
2212
|
|
|
2103
2213
|
"use strict";
|
|
2104
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _use_seamly_dispatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./use-seamly-dispatch */ \"./src/javascripts/ui/hooks/use-seamly-dispatch.js\");\n/* harmony import */ var _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./seamly-state-hooks */ \"./src/javascripts/ui/hooks/seamly-state-hooks.js\");\n/* harmony import */ var _use_seamly_commands__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./use-seamly-commands */ \"./src/javascripts/ui/hooks/use-seamly-commands.js\");\n/* harmony import */ var _seamly_api_hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./seamly-api-hooks */ \"./src/javascripts/ui/hooks/seamly-api-hooks.js\");\n/* harmony import */ var _live_region_hooks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./live-region-hooks */ \"./src/javascripts/ui/hooks/live-region-hooks.js\");\n/* harmony import */ var
|
|
2214
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _use_seamly_dispatch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./use-seamly-dispatch */ \"./src/javascripts/ui/hooks/use-seamly-dispatch.js\");\n/* harmony import */ var _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./seamly-state-hooks */ \"./src/javascripts/ui/hooks/seamly-state-hooks.js\");\n/* harmony import */ var _use_seamly_commands__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./use-seamly-commands */ \"./src/javascripts/ui/hooks/use-seamly-commands.js\");\n/* harmony import */ var _seamly_api_hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./seamly-api-hooks */ \"./src/javascripts/ui/hooks/seamly-api-hooks.js\");\n/* harmony import */ var _live_region_hooks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./live-region-hooks */ \"./src/javascripts/ui/hooks/live-region-hooks.js\");\n/* harmony import */ var _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/seamly-utils */ \"./src/javascripts/ui/utils/seamly-utils.js\");\n/* harmony import */ var _domains_visibility__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../domains/visibility */ \"./src/javascripts/domains/visibility/index.js\");\n\n\n\n\n\n\n\n\n\nconst {\n SET_IS_LOADING\n} = _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_7__.seamlyActions;\n\nconst useSeamlyChat = () => {\n const {\n t\n } = (0,_domains_i18n__WEBPACK_IMPORTED_MODULE_1__.useI18n)();\n const {\n isOpen,\n isVisible,\n setVisibility\n } = (0,_domains_visibility__WEBPACK_IMPORTED_MODULE_8__.useVisibility)();\n const dispatch = (0,_use_seamly_dispatch__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n const events = (0,_seamly_state_hooks__WEBPACK_IMPORTED_MODULE_3__.useEvents)();\n const spinnerTimeout = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const {\n start,\n connect,\n apiConfigReady\n } = (0,_use_seamly_commands__WEBPACK_IMPORTED_MODULE_4__[\"default\"])();\n const hasConversation = (0,_seamly_api_hooks__WEBPACK_IMPORTED_MODULE_5__.useSeamlyHasConversation)();\n const prevIsOpen = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const prevIsVisible = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const {\n sendAssertive\n } = (0,_live_region_hooks__WEBPACK_IMPORTED_MODULE_6__.useLiveRegion)();\n const connectCalled = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);\n const hasEvents = events.length > 0;\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (isVisible) {\n // Wait for the live containers to stabilise in the DOM before injecting\n // the message or some screen readers will swallow it.\n setTimeout(() => {\n sendAssertive(t('window.srTexts.onLoad'));\n }, 500);\n }\n }, [isVisible, sendAssertive, t]);\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (isVisible !== prevIsVisible.current) {\n prevIsOpen.current = isOpen;\n prevIsVisible.current = isVisible;\n return;\n }\n\n if (prevIsOpen.current !== null) {\n if (isOpen) {\n sendAssertive(t('window.srTexts.onOpen'));\n } else {\n sendAssertive(t('window.srTexts.onClose'));\n }\n }\n\n prevIsOpen.current = isOpen;\n prevIsVisible.current = isVisible;\n }, [isOpen, isVisible, sendAssertive, t]);\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n // This delays the start of the loading inidicator we set when we initialise\n // the application. This is done to only avoid BSOD on initial load if DCX is slow.\n spinnerTimeout.current = setTimeout(() => {\n dispatch({\n type: SET_IS_LOADING,\n isLoading: true\n });\n }, 500);\n }, [dispatch]);\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (hasEvents) {\n clearTimeout(spinnerTimeout.current);\n dispatch({\n type: SET_IS_LOADING,\n isLoading: false\n });\n }\n }, [hasEvents, dispatch]);\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n // This is needed to reset the ref to allow connect to happen again.\n // Mostly due to Interrupt situations and a reset being called.\n if (!hasConversation || !apiConfigReady) {\n connectCalled.current = false;\n }\n }, [hasConversation, apiConfigReady]);\n (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n // We don't connect minimised or hidden window interfaces unless\n // they had been connected before.\n // We also keep track of whether connect was called before to avoid\n // multiple in-flight connection processes.\n if (!isOpen && !hasConversation || connectCalled.current || !apiConfigReady) {\n return;\n }\n\n if (hasConversation) {\n // We deactivate the extra startup loading spinner when a conversation is available\n // We also stop setting the loading indicator in the first place to avoid a flash.\n clearTimeout(spinnerTimeout.current);\n dispatch({\n type: SET_IS_LOADING,\n isLoading: false\n });\n }\n\n connect().then(() => {\n start();\n });\n connectCalled.current = true;\n }, [isOpen, hasConversation, apiConfigReady, start, connect, dispatch]);\n\n const openChat = () => {\n setVisibility(_domains_visibility__WEBPACK_IMPORTED_MODULE_8__.visibilityStates.open);\n };\n\n const closeChat = () => {\n setVisibility(_domains_visibility__WEBPACK_IMPORTED_MODULE_8__.visibilityStates.minimized);\n };\n\n return {\n openChat,\n closeChat\n };\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useSeamlyChat);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/hooks/use-seamly-chat.js?");
|
|
2105
2215
|
|
|
2106
2216
|
/***/ }),
|
|
2107
2217
|
|
|
@@ -2112,7 +2222,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2112
2222
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2113
2223
|
|
|
2114
2224
|
"use strict";
|
|
2115
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _seamly_api_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./seamly-api-hooks */ \"./src/javascripts/ui/hooks/seamly-api-hooks.js\");\n/* harmony import */ var _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./seamly-state-hooks */ \"./src/javascripts/ui/hooks/seamly-state-hooks.js\");\n/* harmony import */ var _use_seamly_dispatch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./use-seamly-dispatch */ \"./src/javascripts/ui/hooks/use-seamly-dispatch.js\");\n/* harmony import */ var _components_core_seamly_api_context__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/core/seamly-api-context */ \"./src/javascripts/ui/components/core/seamly-api-context.js\");\n/* harmony import */ var _lib_id__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../lib/id */ \"./src/javascripts/lib/id.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../config */ \"./src/javascripts/config.js\");\n/* harmony import */ var _utils_general_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/general-utils */ \"./src/javascripts/ui/utils/general-utils.js\");\n/* harmony import */ var _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/seamly-utils */ \"./src/javascripts/ui/utils/seamly-utils.js\");\n/* harmony import */ var _utility_hooks__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utility-hooks */ \"./src/javascripts/ui/hooks/utility-hooks.js\");\n/* harmony import */ var _domains_interrupt__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../domains/interrupt */ \"./src/javascripts/domains/interrupt/index.js\");\n/* harmony import */ var _domains_config__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../domains/config */ \"./src/javascripts/domains/config/index.js\");\n/* harmony import */ var _domains_app__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../domains/app */ \"./src/javascripts/domains/app/index.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst {\n ADD_EVENT,\n CLEAR_EVENTS,\n SET_IS_LOADING,\n CLEAR_PARTICIPANTS,\n SET_HEADER_SUB_TITLE,\n SET_INITIAL_STATE,\n CLEAR_FEATURES,\n SET_FEATURES,\n RESET_UPLOAD_STATE,\n RESET_ENTRY_STATE\n} = _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_8__.seamlyActions;\n\nconst useSeamlyCommands = () => {\n const api = (0,_seamly_api_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyApiContext)();\n const appConfig = (0,_domains_config__WEBPACK_IMPORTED_MODULE_11__.useConfig)();\n const dispatch = (0,_use_seamly_dispatch__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n const eventBus = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useContext)(_components_core_seamly_api_context__WEBPACK_IMPORTED_MODULE_4__.SeamlyEventBusContext);\n const hasResponded = (0,_domains_app__WEBPACK_IMPORTED_MODULE_12__.useUserHasResponded)();\n const hasConversation = (0,_seamly_api_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyHasConversation)();\n const {\n visible: visibility\n } = (0,_seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyStateContext)();\n const unreadMessageCount = (0,_seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyUnreadCount)();\n const emitEvent = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)((...args) => {\n eventBus.emit(...args);\n }, [eventBus]);\n const start = (0,_utility_hooks__WEBPACK_IMPORTED_MODULE_9__.useStableCallback)(() => {\n api.sendContext(appConfig.context || {});\n emitEvent('ui.beforeStart', {\n visibility,\n hasConversation,\n hasResponded,\n unreadMessageCount\n });\n api.send('start');\n emitEvent('ui.start', {\n visibility,\n hasConversation,\n hasResponded,\n unreadMessageCount\n });\n }, [api, appConfig, emitEvent, hasResponded, hasConversation, visibility, unreadMessageCount]);\n const reset = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n dispatch(_domains_interrupt__WEBPACK_IMPORTED_MODULE_10__.Actions.clear());\n dispatch({\n type: CLEAR_EVENTS\n });\n dispatch({\n type: SET_IS_LOADING,\n isLoading: true\n });\n dispatch({\n type: CLEAR_PARTICIPANTS\n });\n dispatch({\n type: RESET_UPLOAD_STATE\n });\n dispatch({\n type: RESET_ENTRY_STATE\n });\n dispatch({\n type: CLEAR_FEATURES\n });\n const {\n agentName\n } = appConfig.defaults || {};\n dispatch({\n type: SET_HEADER_SUB_TITLE,\n title: agentName || ''\n });\n\n try {\n const {\n features\n } = await api.reset();\n dispatch({\n type: SET_FEATURES,\n features\n });\n dispatch({\n type: SET_INITIAL_STATE,\n initialState: {}\n });\n } catch (error) {\n dispatch(_domains_interrupt__WEBPACK_IMPORTED_MODULE_10__.Actions.set(error));\n }\n }, [api, dispatch, appConfig]);\n const getMessageBase = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(type => ({\n type,\n id: (0,_lib_id__WEBPACK_IMPORTED_MODULE_5__.randomId)(),\n transactionId: (0,_lib_id__WEBPACK_IMPORTED_MODULE_5__.randomId)(),\n participant: _config__WEBPACK_IMPORTED_MODULE_6__.userParticipantId,\n fromClient: true,\n occurredAt: Date.now() * 1000,\n meta: {}\n }), []);\n const getTextMessageBase = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(bodyText => {\n const base = getMessageBase('text');\n return _objectSpread(_objectSpread({}, base), {}, {\n body: {\n text: bodyText\n }\n });\n }, [getMessageBase]);\n const sendMessage = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n body,\n config = {}\n }) => {\n if (body.trim() === '') {\n return;\n }\n\n const message = _objectSpread(_objectSpread({}, getTextMessageBase(body)), config);\n\n const sanitizedText = (0,_utils_general_utils__WEBPACK_IMPORTED_MODULE_7__.sanitizeText)(body);\n\n const sanitizedMessage = _objectSpread(_objectSpread({}, message), {}, {\n body: {\n text: sanitizedText\n }\n });\n\n api.send('message', message);\n emitEvent('message', message);\n dispatch({\n type: ADD_EVENT,\n event: {\n type: 'message',\n payload: sanitizedMessage\n }\n });\n }, [api, dispatch, emitEvent, getTextMessageBase]);\n const addMessageBubble = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(text => {\n dispatch({\n type: ADD_EVENT,\n event: {\n type: 'message',\n payload: getTextMessageBase(text)\n }\n });\n }, [dispatch, getTextMessageBase]);\n const addUploadBubble = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)((id, transactionId, occurredAt, contentType, filename, filesize, url) => {\n dispatch({\n type: ADD_EVENT,\n event: {\n type: 'message',\n payload: {\n type: 'upload',\n id,\n transactionId,\n participant: _config__WEBPACK_IMPORTED_MODULE_6__.userParticipantId,\n fromClient: true,\n occurredAt,\n meta: {},\n body: {\n contentType,\n filename,\n filesize,\n url\n }\n }\n }\n });\n }, [dispatch]);\n const addDivider = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(subtype => {\n const payload = {\n body: {\n subtype,\n type: 'divider'\n },\n fromClient: false,\n fromHistory: true,\n id: (0,_lib_id__WEBPACK_IMPORTED_MODULE_5__.randomId)(),\n transactionId: (0,_lib_id__WEBPACK_IMPORTED_MODULE_5__.randomId)(),\n type: 'divider'\n };\n dispatch({\n type: ADD_EVENT,\n event: {\n type: 'info',\n payload\n }\n });\n }, [dispatch]);\n const sendInfo = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n type,\n subtype\n }) => {\n const info = {\n type,\n subtype,\n id: (0,_lib_id__WEBPACK_IMPORTED_MODULE_5__.randomId)(),\n transactionId: (0,_lib_id__WEBPACK_IMPORTED_MODULE_5__.randomId)(),\n participant: _config__WEBPACK_IMPORTED_MODULE_6__.userParticipantId,\n fromClient: true\n };\n api.send('info', info);\n }, [api]);\n const sendAction = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(body => {\n if (!body) {\n return;\n }\n\n api.send('action', body);\n const {\n type\n } = body;\n\n if (type !== _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_8__.actionTypes.typing && type !== _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_8__.actionTypes.read) {\n emitEvent(`action.${type}`, body);\n }\n }, [api, emitEvent]);\n const sendContext = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(context => {\n api.sendContext(context);\n }, [api]);\n const connect = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {\n if (api.connected) {\n return Promise.reject(new Error('The API is already connected'));\n }\n\n return api.connect().then(initialState => {\n if (initialState) {\n dispatch({\n type: SET_INITIAL_STATE,\n initialState\n });\n }\n }).catch(error => {\n dispatch(_domains_interrupt__WEBPACK_IMPORTED_MODULE_10__.Actions.set(error));\n });\n }, [api, dispatch]);\n return {\n connect,\n start,\n sendMessage,\n sendInfo,\n sendAction,\n sendContext,\n reset,\n emitEvent,\n addMessageBubble,\n addUploadBubble,\n addDivider,\n apiConfigReady: api.configReady\n };\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useSeamlyCommands);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/hooks/use-seamly-commands.js?");
|
|
2225
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _seamly_api_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./seamly-api-hooks */ \"./src/javascripts/ui/hooks/seamly-api-hooks.js\");\n/* harmony import */ var _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./seamly-state-hooks */ \"./src/javascripts/ui/hooks/seamly-state-hooks.js\");\n/* harmony import */ var _use_seamly_dispatch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./use-seamly-dispatch */ \"./src/javascripts/ui/hooks/use-seamly-dispatch.js\");\n/* harmony import */ var _components_core_seamly_api_context__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/core/seamly-api-context */ \"./src/javascripts/ui/components/core/seamly-api-context.js\");\n/* harmony import */ var _lib_id__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../lib/id */ \"./src/javascripts/lib/id.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../config */ \"./src/javascripts/config.js\");\n/* harmony import */ var _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/seamly-utils */ \"./src/javascripts/ui/utils/seamly-utils.js\");\n/* harmony import */ var _utility_hooks__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utility-hooks */ \"./src/javascripts/ui/hooks/utility-hooks.js\");\n/* harmony import */ var _domains_interrupt__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../domains/interrupt */ \"./src/javascripts/domains/interrupt/index.js\");\n/* harmony import */ var _domains_config__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../domains/config */ \"./src/javascripts/domains/config/index.js\");\n/* harmony import */ var _domains_app__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../domains/app */ \"./src/javascripts/domains/app/index.js\");\n/* harmony import */ var _domains_visibility__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../domains/visibility */ \"./src/javascripts/domains/visibility/index.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst {\n ADD_EVENT,\n SET_IS_LOADING,\n SET_HEADER_SUB_TITLE,\n SET_INITIAL_STATE,\n SET_FEATURES\n} = _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_7__.seamlyActions;\n\nconst useSeamlyCommands = () => {\n const api = (0,_seamly_api_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyApiContext)();\n const appConfig = (0,_domains_config__WEBPACK_IMPORTED_MODULE_10__.useConfig)();\n const dispatch = (0,_use_seamly_dispatch__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n const eventBus = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useContext)(_components_core_seamly_api_context__WEBPACK_IMPORTED_MODULE_4__.SeamlyEventBusContext);\n const hasResponded = (0,_domains_app__WEBPACK_IMPORTED_MODULE_11__.useUserHasResponded)();\n const hasConversation = (0,_seamly_api_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyHasConversation)();\n const {\n visible: visibility\n } = (0,_domains_visibility__WEBPACK_IMPORTED_MODULE_12__.useVisibility)();\n const unreadMessageCount = (0,_seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyUnreadCount)();\n const emitEvent = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)((...args) => {\n eventBus.emit(...args);\n }, [eventBus]);\n const start = (0,_utility_hooks__WEBPACK_IMPORTED_MODULE_8__.useStableCallback)(() => {\n api.sendContext(appConfig.context || {});\n emitEvent('ui.beforeStart', {\n visibility,\n hasConversation,\n hasResponded,\n unreadMessageCount\n });\n api.send('start');\n emitEvent('ui.start', {\n visibility,\n hasConversation,\n hasResponded,\n unreadMessageCount\n });\n }, [api, appConfig, emitEvent, hasResponded, hasConversation, visibility, unreadMessageCount]);\n const reset = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n dispatch(_domains_app__WEBPACK_IMPORTED_MODULE_11__.Actions.reset());\n dispatch(_domains_interrupt__WEBPACK_IMPORTED_MODULE_9__.Actions.clear());\n dispatch({\n type: SET_IS_LOADING,\n isLoading: true\n });\n const {\n agentName\n } = appConfig.defaults || {};\n dispatch({\n type: SET_HEADER_SUB_TITLE,\n title: agentName || ''\n });\n\n try {\n const {\n features\n } = await api.reset();\n dispatch({\n type: SET_FEATURES,\n features\n });\n dispatch({\n type: SET_INITIAL_STATE,\n initialState: {}\n });\n } catch (error) {\n dispatch(_domains_interrupt__WEBPACK_IMPORTED_MODULE_9__.Actions.set(error));\n }\n }, [api, dispatch, appConfig]);\n const getMessageBase = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(type => ({\n type,\n id: (0,_lib_id__WEBPACK_IMPORTED_MODULE_5__.randomId)(),\n transactionId: (0,_lib_id__WEBPACK_IMPORTED_MODULE_5__.randomId)(),\n participant: _config__WEBPACK_IMPORTED_MODULE_6__.userParticipantId,\n fromClient: true,\n occurredAt: Date.now() * 1000,\n meta: {}\n }), []);\n const getTextMessageBase = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(bodyText => {\n const base = getMessageBase('text');\n return _objectSpread(_objectSpread({}, base), {}, {\n body: {\n text: bodyText\n }\n });\n }, [getMessageBase]);\n const sendMessage = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n body,\n config = {}\n }) => {\n if (body.trim() === '') {\n return;\n }\n\n const message = _objectSpread(_objectSpread({}, getTextMessageBase(body)), config);\n\n api.send('message', message);\n emitEvent('message', message);\n dispatch({\n type: ADD_EVENT,\n event: {\n type: 'message',\n payload: message\n }\n });\n }, [api, dispatch, emitEvent, getTextMessageBase]);\n const addMessageBubble = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(text => {\n dispatch({\n type: ADD_EVENT,\n event: {\n type: 'message',\n payload: getTextMessageBase(text)\n }\n });\n }, [dispatch, getTextMessageBase]);\n const addUploadBubble = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)((id, transactionId, occurredAt, contentType, filename, filesize, url) => {\n dispatch({\n type: ADD_EVENT,\n event: {\n type: 'message',\n payload: {\n type: 'upload',\n id,\n transactionId,\n participant: _config__WEBPACK_IMPORTED_MODULE_6__.userParticipantId,\n fromClient: true,\n occurredAt,\n meta: {},\n body: {\n contentType,\n filename,\n filesize,\n url\n }\n }\n }\n });\n }, [dispatch]);\n const addDivider = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(subtype => {\n const payload = {\n body: {\n subtype,\n type: 'divider'\n },\n fromClient: false,\n fromHistory: true,\n id: (0,_lib_id__WEBPACK_IMPORTED_MODULE_5__.randomId)(),\n transactionId: (0,_lib_id__WEBPACK_IMPORTED_MODULE_5__.randomId)(),\n type: 'divider'\n };\n dispatch({\n type: ADD_EVENT,\n event: {\n type: 'info',\n payload\n }\n });\n }, [dispatch]);\n const sendInfo = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n type,\n subtype\n }) => {\n const info = {\n type,\n subtype,\n id: (0,_lib_id__WEBPACK_IMPORTED_MODULE_5__.randomId)(),\n transactionId: (0,_lib_id__WEBPACK_IMPORTED_MODULE_5__.randomId)(),\n participant: _config__WEBPACK_IMPORTED_MODULE_6__.userParticipantId,\n fromClient: true\n };\n api.send('info', info);\n }, [api]);\n const sendAction = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(body => {\n if (!body) {\n return;\n }\n\n api.send('action', body);\n const {\n type\n } = body;\n\n if (type !== _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_7__.actionTypes.typing && type !== _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_7__.actionTypes.read) {\n emitEvent(`action.${type}`, body);\n }\n }, [api, emitEvent]);\n const sendContext = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(context => {\n api.sendContext(context);\n }, [api]);\n const connect = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {\n if (api.connected) {\n return Promise.reject(new Error('The API is already connected'));\n }\n\n return api.connect().then(initialState => {\n if (initialState) {\n dispatch({\n type: SET_INITIAL_STATE,\n initialState\n });\n }\n }).catch(error => {\n dispatch(_domains_interrupt__WEBPACK_IMPORTED_MODULE_9__.Actions.set(error));\n });\n }, [api, dispatch]);\n return {\n connect,\n start,\n sendMessage,\n sendInfo,\n sendAction,\n sendContext,\n reset,\n emitEvent,\n addMessageBubble,\n addUploadBubble,\n addDivider,\n apiConfigReady: api.configReady\n };\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useSeamlyCommands);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/hooks/use-seamly-commands.js?");
|
|
2116
2226
|
|
|
2117
2227
|
/***/ }),
|
|
2118
2228
|
|
|
@@ -2134,7 +2244,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2134
2244
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2135
2245
|
|
|
2136
2246
|
"use strict";
|
|
2137
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _use_seamly_dispatch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-seamly-dispatch */ \"./src/javascripts/ui/hooks/use-seamly-dispatch.js\");\n/* harmony import */ var _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./seamly-state-hooks */ \"./src/javascripts/ui/hooks/seamly-state-hooks.js\");\n/* harmony import */ var _use_seamly_commands__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./use-seamly-commands */ \"./src/javascripts/ui/hooks/use-seamly-commands.js\");\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _live_region_hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./live-region-hooks */ \"./src/javascripts/ui/hooks/live-region-hooks.js\");\n/* harmony import */ var _utils_general_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/general-utils */ \"./src/javascripts/ui/utils/general-utils.js\");\n/* harmony import */ var _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/seamly-utils */ \"./src/javascripts/ui/utils/seamly-utils.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../config */ \"./src/javascripts/config.js\");\n/* harmony import */ var
|
|
2247
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _use_seamly_dispatch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-seamly-dispatch */ \"./src/javascripts/ui/hooks/use-seamly-dispatch.js\");\n/* harmony import */ var _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./seamly-state-hooks */ \"./src/javascripts/ui/hooks/seamly-state-hooks.js\");\n/* harmony import */ var _use_seamly_commands__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./use-seamly-commands */ \"./src/javascripts/ui/hooks/use-seamly-commands.js\");\n/* harmony import */ var _domains_i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../domains/i18n */ \"./src/javascripts/domains/i18n/index.js\");\n/* harmony import */ var _live_region_hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./live-region-hooks */ \"./src/javascripts/ui/hooks/live-region-hooks.js\");\n/* harmony import */ var _utils_general_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/general-utils */ \"./src/javascripts/ui/utils/general-utils.js\");\n/* harmony import */ var _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/seamly-utils */ \"./src/javascripts/ui/utils/seamly-utils.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../config */ \"./src/javascripts/config.js\");\n/* harmony import */ var _domains_visibility__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../domains/visibility */ \"./src/javascripts/domains/visibility/index.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\nconst {\n CLEAR_IDLE_DETACH_COUNTDOWN,\n INIT_IDLE_DETACH_COUNTDOWN,\n DECREMENT_IDLE_DETACH_COUNTDOWN_COUNTER,\n STOP_IDLE_DETACH_COUNTDOWN_COUNTER\n} = _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_7__.seamlyActions;\n\nconst useSeamlyIdleDetachCountdown = () => {\n const dispatch = (0,_use_seamly_dispatch__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n const {\n idleDetachCountdown\n } = (0,_seamly_state_hooks__WEBPACK_IMPORTED_MODULE_2__.useSeamlyStateContext)();\n const {\n isOpen: isSeamlyOpen\n } = (0,_domains_visibility__WEBPACK_IMPORTED_MODULE_9__.useVisibility)();\n const stableState = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)({});\n stableState.current = {\n hasCountdown: idleDetachCountdown.hasCountdown,\n isActive: idleDetachCountdown.isActive,\n remaining: idleDetachCountdown.remaining,\n wasStopped: idleDetachCountdown.wasStopped,\n isOpen: isSeamlyOpen\n };\n const {\n emitEvent,\n sendAction\n } = (0,_use_seamly_commands__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n const {\n t\n } = (0,_domains_i18n__WEBPACK_IMPORTED_MODULE_4__.useI18n)();\n const {\n sendAssertive,\n sendPolite\n } = (0,_live_region_hooks__WEBPACK_IMPORTED_MODULE_5__.useLiveRegion)();\n const sendAssertiveIfOpen = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(text => {\n const {\n isOpen\n } = stableState.current;\n\n if (isOpen) {\n sendAssertive(text);\n }\n }, [sendAssertive]);\n const sendPoliteIfOpen = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(text => {\n const {\n isOpen\n } = stableState.current;\n\n if (isOpen) {\n sendPolite(text);\n }\n }, [sendPolite]);\n const initCountdown = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(milliseconds => {\n const delaySeconds = (0,_utils_general_utils__WEBPACK_IMPORTED_MODULE_6__.millisecondsToSeconds)(milliseconds);\n const delayTime = (0,_utils_general_utils__WEBPACK_IMPORTED_MODULE_6__.getTimeFromSeconds)(delaySeconds);\n dispatch({\n type: INIT_IDLE_DETACH_COUNTDOWN,\n delaySeconds,\n delayTime\n });\n emitEvent('idleTimer.start');\n sendAssertiveIfOpen(`${t('idleDetachWarning.countdownTitle')} ${t('idleDetachWarning.countdownText')} ${t('idleDetachWarning.countdownTimer', delayTime)}`);\n }, [dispatch, emitEvent, sendAssertiveIfOpen, t]);\n const endCountdown = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)((continueChat, isServerAction) => {\n const {\n hasCountdown,\n wasStopped\n } = stableState.current;\n\n if (!hasCountdown) {\n return;\n }\n\n if (!continueChat) {\n if (!isServerAction) {\n sendAction({\n type: _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_7__.actionTypes.detachService\n });\n }\n\n sendAssertiveIfOpen(t('idleDetachWarning.notifyTransferText'));\n }\n\n if (!wasStopped) {\n emitEvent('idleTimer.stop');\n }\n\n dispatch({\n type: CLEAR_IDLE_DETACH_COUNTDOWN\n });\n }, [dispatch, sendAction, emitEvent, sendAssertiveIfOpen, t]);\n const decrementCountdown = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {\n const {\n remaining\n } = stableState.current;\n\n if (remaining <= 0) {\n return;\n }\n\n const newRemaining = remaining - 1;\n\n if (newRemaining % _config__WEBPACK_IMPORTED_MODULE_8__.screenReaderDebounceDelaySeconds === 0) {\n sendAssertiveIfOpen(`${t('idleDetachWarning.countdownText')} ${t('idleDetachWarning.countdownTimer', (0,_utils_general_utils__WEBPACK_IMPORTED_MODULE_6__.getTimeFromSeconds)(newRemaining))}`);\n }\n\n dispatch({\n type: DECREMENT_IDLE_DETACH_COUNTDOWN_COUNTER\n });\n }, [dispatch, sendAssertiveIfOpen, t]);\n const stopCountdown = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {\n const {\n isActive,\n remaining\n } = stableState.current;\n\n if (!isActive) {\n return;\n }\n\n dispatch({\n type: STOP_IDLE_DETACH_COUNTDOWN_COUNTER\n });\n\n if (remaining) {\n emitEvent('idleTimer.stop');\n sendPoliteIfOpen(t('idleDetachWarning.srCountDownStoppedText'));\n }\n }, [dispatch, emitEvent, sendPoliteIfOpen, t]);\n return _objectSpread(_objectSpread({}, idleDetachCountdown), {}, {\n initCountdown,\n endCountdown,\n decrementCountdown,\n stopCountdown\n });\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useSeamlyIdleDetachCountdown);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/hooks/use-seamly-idle-detach-countdown.js?");
|
|
2138
2248
|
|
|
2139
2249
|
/***/ }),
|
|
2140
2250
|
|
|
@@ -2149,28 +2259,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2149
2259
|
|
|
2150
2260
|
/***/ }),
|
|
2151
2261
|
|
|
2152
|
-
/***/ "./src/javascripts/ui/hooks/use-seamly-stored-visibility.js":
|
|
2153
|
-
/*!******************************************************************!*\
|
|
2154
|
-
!*** ./src/javascripts/ui/hooks/use-seamly-stored-visibility.js ***!
|
|
2155
|
-
\******************************************************************/
|
|
2156
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2157
|
-
|
|
2158
|
-
"use strict";
|
|
2159
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _seamly_api_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./seamly-api-hooks */ \"./src/javascripts/ui/hooks/seamly-api-hooks.js\");\n/* harmony import */ var _domains_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../domains/config */ \"./src/javascripts/domains/config/index.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\nconst useSeamlyStoredVisibility = () => {\n const {\n layoutMode\n } = (0,_domains_config__WEBPACK_IMPORTED_MODULE_2__.useConfig)();\n const key = 'visibility';\n const {\n get,\n set\n } = (0,_seamly_api_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyObjectStore)();\n let storedVisibilityObj = {};\n const savedVisibility = get ? get(key) : {};\n\n if (savedVisibility) {\n storedVisibilityObj = savedVisibility;\n }\n\n const setStoredVisibility = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(state => {\n const saved = get ? get(key) : {};\n set(key, _objectSpread(_objectSpread({}, saved), {}, {\n [layoutMode]: state\n }));\n }, [set, get, layoutMode]);\n return [layoutMode ? storedVisibilityObj[layoutMode] : null, set && layoutMode ? setStoredVisibility : null];\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useSeamlyStoredVisibility);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/hooks/use-seamly-stored-visibility.js?");
|
|
2160
|
-
|
|
2161
|
-
/***/ }),
|
|
2162
|
-
|
|
2163
|
-
/***/ "./src/javascripts/ui/hooks/use-seamly-visibility.js":
|
|
2164
|
-
/*!***********************************************************!*\
|
|
2165
|
-
!*** ./src/javascripts/ui/hooks/use-seamly-visibility.js ***!
|
|
2166
|
-
\***********************************************************/
|
|
2167
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2168
|
-
|
|
2169
|
-
"use strict";
|
|
2170
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact/hooks */ \"preact/hooks\");\n/* harmony import */ var preact_hooks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(preact_hooks__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _seamly_state_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./seamly-state-hooks */ \"./src/javascripts/ui/hooks/seamly-state-hooks.js\");\n/* harmony import */ var _use_seamly_commands__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./use-seamly-commands */ \"./src/javascripts/ui/hooks/use-seamly-commands.js\");\n/* harmony import */ var _use_seamly_dispatch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./use-seamly-dispatch */ \"./src/javascripts/ui/hooks/use-seamly-dispatch.js\");\n/* harmony import */ var _seamly_api_hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./seamly-api-hooks */ \"./src/javascripts/ui/hooks/seamly-api-hooks.js\");\n/* harmony import */ var _use_seamly_stored_visibility__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./use-seamly-stored-visibility */ \"./src/javascripts/ui/hooks/use-seamly-stored-visibility.js\");\n/* harmony import */ var _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/seamly-utils */ \"./src/javascripts/ui/utils/seamly-utils.js\");\n/* harmony import */ var _domains_config__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../domains/config */ \"./src/javascripts/domains/config/index.js\");\n/* harmony import */ var _domains_app__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../domains/app */ \"./src/javascripts/domains/app/index.js\");\n\n\n\n\n\n\n\n\n\nconst {\n SET_VISIBILITY\n} = _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_6__.seamlyActions;\n\nconst useSeamlyVisibility = () => {\n const config = (0,_domains_config__WEBPACK_IMPORTED_MODULE_7__.useConfig)();\n const {\n layoutMode,\n visibilityCallback\n } = config;\n const {\n visible\n } = (0,_seamly_state_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyStateContext)();\n const {\n emitEvent\n } = (0,_use_seamly_commands__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n const dispatch = (0,_use_seamly_dispatch__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n const [storedVisibility, setStoredVisibility] = (0,_use_seamly_stored_visibility__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n const hasResponded = (0,_domains_app__WEBPACK_IMPORTED_MODULE_8__.useUserHasResponded)();\n const hasConversation = (0,_seamly_api_hooks__WEBPACK_IMPORTED_MODULE_4__.useSeamlyHasConversation)();\n const unreadMessageCount = (0,_seamly_state_hooks__WEBPACK_IMPORTED_MODULE_1__.useSeamlyUnreadCount)();\n const isVisible = visible ? visible !== _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_6__.visibilityStates.hidden : false;\n const isOpen = visible && layoutMode ? visible === _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_6__.visibilityStates.open || layoutMode === 'inline' && visible !== _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_6__.visibilityStates.hidden : false;\n const setVisibility = (0,preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(visibility => {\n const visibilityFn = visibilityCallback || _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_6__.calculateVisibility;\n const requestedVisibility = visibilityFn({\n hasConversation,\n hasResponded,\n previousVisibility: storedVisibility || null,\n requestedVisibility: visibility,\n config\n });\n\n if (![_utils_seamly_utils__WEBPACK_IMPORTED_MODULE_6__.visibilityStates.open, _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_6__.visibilityStates.minimized, _utils_seamly_utils__WEBPACK_IMPORTED_MODULE_6__.visibilityStates.hidden].includes(requestedVisibility)) {\n console.error('The visibilityCallback function should return \"open\", \"minimized\" or \"hidden\".');\n return;\n }\n\n if (requestedVisibility !== visible) {\n if (setStoredVisibility) {\n setStoredVisibility(requestedVisibility);\n } // Don't broadcast the init visibility state\n\n\n if (visibility) {\n emitEvent('ui.visible', requestedVisibility, {\n visibility: requestedVisibility,\n hasConversation,\n hasResponded,\n unreadMessageCount\n });\n }\n\n dispatch({\n type: SET_VISIBILITY,\n visible: requestedVisibility\n });\n }\n }, [visible, emitEvent, dispatch, hasConversation, hasResponded, storedVisibility, visibilityCallback, config, setStoredVisibility, unreadMessageCount]);\n return {\n isVisible,\n isOpen,\n visible,\n setVisibility\n };\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useSeamlyVisibility);\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/hooks/use-seamly-visibility.js?");
|
|
2171
|
-
|
|
2172
|
-
/***/ }),
|
|
2173
|
-
|
|
2174
2262
|
/***/ "./src/javascripts/ui/hooks/use-single-file-upload.js":
|
|
2175
2263
|
/*!************************************************************!*\
|
|
2176
2264
|
!*** ./src/javascripts/ui/hooks/use-single-file-upload.js ***!
|
|
@@ -2211,7 +2299,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2211
2299
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2212
2300
|
|
|
2213
2301
|
"use strict";
|
|
2214
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"debounce\": () => (/* binding */ debounce),\n/* harmony export */ \"elementMatch\": () => (/* binding */ elementMatch),\n/* harmony export */ \"closestElement\": () => (/* binding */ closestElement),\n/* harmony export */ \"createAriaHider\": () => (/* binding */ createAriaHider),\n/* harmony export */ \"propIsTrue\": () => (/* binding */ propIsTrue),\n/* harmony export */ \"millisecondsToSeconds\": () => (/* binding */ millisecondsToSeconds),\n/* harmony export */ \"microsecondsToMilliseconds\": () => (/* binding */ microsecondsToMilliseconds),\n/* harmony export */ \"
|
|
2302
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"debounce\": () => (/* binding */ debounce),\n/* harmony export */ \"elementMatch\": () => (/* binding */ elementMatch),\n/* harmony export */ \"closestElement\": () => (/* binding */ closestElement),\n/* harmony export */ \"createAriaHider\": () => (/* binding */ createAriaHider),\n/* harmony export */ \"propIsTrue\": () => (/* binding */ propIsTrue),\n/* harmony export */ \"millisecondsToSeconds\": () => (/* binding */ millisecondsToSeconds),\n/* harmony export */ \"microsecondsToMilliseconds\": () => (/* binding */ microsecondsToMilliseconds),\n/* harmony export */ \"getTimeFromSeconds\": () => (/* binding */ getTimeFromSeconds),\n/* harmony export */ \"formatBytes\": () => (/* binding */ formatBytes),\n/* harmony export */ \"getUrlParams\": () => (/* binding */ getUrlParams),\n/* harmony export */ \"getUrlSearchString\": () => (/* binding */ getUrlSearchString),\n/* harmony export */ \"keyCodes\": () => (/* binding */ keyCodes),\n/* harmony export */ \"keyNames\": () => (/* binding */ keyNames),\n/* harmony export */ \"getKey\": () => (/* binding */ getKey),\n/* harmony export */ \"focusElement\": () => (/* binding */ focusElement),\n/* harmony export */ \"runIfElementContainsOrHasFocus\": () => (/* binding */ runIfElementContainsOrHasFocus),\n/* harmony export */ \"getRelativeDate\": () => (/* binding */ getRelativeDate),\n/* harmony export */ \"pick\": () => (/* binding */ pick),\n/* harmony export */ \"omit\": () => (/* binding */ omit)\n/* harmony export */ });\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nconst debounce = (func, wait) => {\n let timeout;\n return function (...args) {\n const context = this;\n let isCancelled = false;\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n timeout = null;\n\n if (!isCancelled) {\n func.apply(context, args);\n }\n\n isCancelled = false;\n }, wait);\n return runInstant => {\n isCancelled = true;\n\n if (runInstant) {\n func.apply(context, args);\n }\n };\n };\n};\nconst elementMatch = (el, match) => {\n if (el.matches) {\n el.matches(match);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(match);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(match);\n }\n\n return false;\n};\nconst closestElement = (el, match) => {\n if (el.closest) {\n return el.closest(match);\n }\n\n let foundElement = el;\n\n do {\n if (elementMatch(foundElement, match)) {\n break;\n }\n\n foundElement = foundElement.parentElement || foundElement.parentNode;\n } while (foundElement !== null && foundElement.nodeType === 1);\n\n return foundElement !== null && foundElement.nodeType === 1 ? foundElement : null;\n};\nconst createAriaHider = () => {\n const originalValues = [];\n const rootNodes = [];\n document.querySelectorAll('body > *:not([role=\"dialog\"])').forEach(node => {\n const attr = node.getAttribute('aria-hidden');\n const alreadyHidden = attr !== null && attr !== 'false';\n\n if (alreadyHidden) {\n return;\n }\n\n originalValues.push(attr);\n rootNodes.push(node);\n node.setAttribute('aria-hidden', 'true');\n });\n return () => {\n rootNodes.forEach((node, index) => {\n const originalValue = originalValues[index];\n\n if (originalValue === null) {\n node.removeAttribute('aria-hidden');\n } else {\n node.setAttribute('aria-hidden', originalValue);\n }\n });\n };\n};\nconst propIsTrue = prop => prop === 'true' || prop === true;\nconst millisecondsToSeconds = milliseconds => {\n return Math.ceil(milliseconds / 1000);\n};\nconst microsecondsToMilliseconds = microseconds => {\n return Math.ceil(microseconds / 1000);\n};\nconst getTimeFromSeconds = seconds => {\n const minutes = Math.floor(seconds / 60);\n const secondsPartial = seconds - minutes * 60;\n return {\n minutes,\n seconds: secondsPartial\n };\n};\nconst formatBytes = (bytes, decimals = 2) => {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n};\nconst getUrlParams = () => {\n const {\n search\n } = window.location;\n\n if (!search) {\n return {};\n }\n\n const hashes = search.slice(search.indexOf('?') + 1).split('&');\n return hashes.reduce((acc, hash) => {\n const [key, val] = hash.split('=');\n return _objectSpread(_objectSpread({}, acc), {}, {\n [key]: decodeURIComponent(val)\n });\n }, {});\n};\nconst getUrlSearchString = params => {\n return Object.keys(params).reduce((search, key) => `${search}${search ? '&' : ''}${key}=${encodeURIComponent(params[key])}`, '');\n};\nconst keyCodes = {\n 27: 'Escape',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown'\n};\nconst keyNames = {\n Escape: 'Escape',\n End: 'End',\n Home: 'Home',\n ArrowLeft: 'ArrowLeft',\n ArrowUp: 'ArrowUp',\n ArrowRight: 'ArrowRight',\n ArrowDown: 'ArrowDown'\n};\nconst getKey = e => e.code ? keyNames[e.code] : keyCodes[e.keyCode];\nconst focusElement = el => {\n if (el) {\n el.focus();\n }\n};\nconst runIfElementContainsOrHasFocus = (el, callback) => {\n if (el && (el.contains(document.activeElement) || el === document.activeElement)) {\n callback();\n }\n}; // Compare two dates to decide which relative date to return\n\nconst getRelativeDate = (date, currentDate) => {\n const msMidnightToday = new Date(currentDate).setHours(0, 0, 0, 0);\n const msDate = date.getTime();\n const dayInMs = 86400000;\n\n if (msDate >= msMidnightToday + dayInMs) {\n // Future date\n return date;\n } else if (msDate > msMidnightToday) {\n // Today\n return 'today';\n } else if (msDate > msMidnightToday - dayInMs) {\n // Yesterday\n return 'yesterday';\n } else {\n // Older date\n return date;\n }\n};\nconst pick = (obj, keys) => keys.reduce((accum, key) => {\n if (key in obj) accum[key] = obj[key];\n return accum;\n}, {});\nconst omit = (obj, keys) => Object.keys(obj).reduce((accum, key) => {\n if (!keys.includes(key)) accum[key] = obj[key];\n return accum;\n}, {});\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/utils/general-utils.js?");
|
|
2215
2303
|
|
|
2216
2304
|
/***/ }),
|
|
2217
2305
|
|
|
@@ -2222,7 +2310,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2222
2310
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2223
2311
|
|
|
2224
2312
|
"use strict";
|
|
2225
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"eventTypes\": () => (/* binding */ eventTypes),\n/* harmony export */ \"payloadTypes\": () => (/* binding */ payloadTypes),\n/* harmony export */ \"entryTypes\": () => (/* binding */ entryTypes),\n/* harmony export */ \"visibilityStates\": () => (/* binding */ visibilityStates),\n/* harmony export */ \"readStates\": () => (/* binding */ readStates),\n/* harmony export */ \"actionTypes\": () => (/* binding */ actionTypes),\n/* harmony export */ \"dismissTypes\": () => (/* binding */ dismissTypes),\n/* harmony export */ \"ariaLiveLevels\": () => (/* binding */ ariaLiveLevels),\n/* harmony export */ \"dividerKeys\": () => (/* binding */ dividerKeys),\n/* harmony export */ \"featureKeys\": () => (/* binding */ featureKeys),\n/* harmony export */ \"seamlyActions\": () => (/* binding */ seamlyActions),\n/* harmony export */ \"cardTypes\": () => (/* binding */ cardTypes),\n/* harmony export */ \"isUnreadMessage\": () => (/* binding */ isUnreadMessage),\n/* harmony export */ \"mergeHistory\": () => (/* binding */ mergeHistory),\n/* harmony export */ \"seamlyStateReducer\": () => (/* binding */ seamlyStateReducer),\n/* harmony export */ \"calculateVisibility\": () => (/* binding */ calculateVisibility)\n/* harmony export */ });\n/* harmony import */ var _general_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./general-utils */ \"./src/javascripts/ui/utils/general-utils.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\nconst eventTypes = {\n info: 'info',\n message: 'message',\n participant: 'participant',\n system: 'system'\n};\nconst payloadTypes = {\n choicePrompt: 'choice_prompt',\n text: 'text',\n image: 'image',\n video: 'video',\n participant: 'participant',\n divider: 'divider',\n translation: 'translation',\n message: 'message',\n countdown: 'countdown',\n upload: 'upload',\n cta: 'cta'\n};\nconst entryTypes = {\n text: 'text',\n upload: 'upload'\n};\nconst visibilityStates = {\n hidden: 'hidden',\n minimized: 'minimized',\n open: 'open',\n initialize: null\n};\nconst readStates = {\n received: 'received',\n read: 'read'\n};\nconst actionTypes = {\n pickChoice: 'pick_choice',\n navigate: 'navigate',\n custom: 'custom',\n typing: 'typing',\n read: 'read',\n detachService: 'detach_service',\n interactivityUpdate: 'interactivity_update',\n dismiss: 'dismiss',\n sendTranscript: 'send_transcript',\n setTranslation: 'set_translation',\n clickCta: 'click_cta',\n clickCard: 'click_card'\n};\nconst dismissTypes = {\n resumeConversationPrompt: 'resume_conversation_prompt'\n};\nconst ariaLiveLevels = {\n assertive: 'assertive',\n polite: 'polite'\n};\nconst dividerKeys = {\n new_topic: 'newTopic',\n new_translation: 'newTranslation'\n};\nconst featureKeys = {\n cobrowsing: 'cobrowsing',\n sendTranscript: 'sendTranscript',\n typingPeekahead: 'typingPeekahead',\n uploads: 'uploads'\n};\nconst seamlyActions = {\n ADD_EVENT: 'ADD_EVENT',\n CLEAR_EVENTS: 'CLEAR_EVENTS',\n SET_HISTORY: 'SET_HISTORY',\n SET_EVENTS_READ: 'SET_EVENTS_READ',\n ACK_EVENT: 'ACK_EVENT',\n SET_IS_LOADING: 'SET_IS_LOADING',\n CLEAR_PARTICIPANTS: 'CLEAR_PARTICIPANTS',\n SET_PARTICIPANT: 'SET_PARTICIPANT',\n SET_HEADER_TITLE: 'SET_HEADER_TITLE',\n SET_HEADER_SUB_TITLE: 'SET_HEADER_SUB_TITLE',\n SET_VISIBILITY: 'SET_VISIBILITY',\n RESET_HISTORY_LOADED_FLAG: 'RESET_HISTORY_LOADED_FLAG',\n SET_ACTIVE_SERVICE: 'SET_ACTIVE_SERVICE',\n INIT_IDLE_DETACH_COUNTDOWN: 'INIT_IDLE_DETACH_COUNTDOWN',\n DECREMENT_IDLE_DETACH_COUNTDOWN_COUNTER: 'DECREMENT_IDLE_DETACH_COUNTDOWN_COUNTER',\n STOP_IDLE_DETACH_COUNTDOWN_COUNTER: 'STOP_IDLE_DETACH_COUNTDOWN_COUNTER',\n CLEAR_IDLE_DETACH_COUNTDOWN: 'CLEAR_IDLE_DETACH_COUNTDOWN',\n INIT_RESUME_CONVERSATION_PROMPT: 'INIT_RESUME_CONVERSATION_PROMPT',\n CLEAR_RESUME_CONVERSATION_PROMPT: 'CLEAR_RESUME_CONVERSATION_PROMPT',\n SET_SERVICE_DATA_ITEM: 'SET_SERVICE_DATA_ITEM',\n SET_FEATURES: 'SET_FEATURES',\n SET_FEATURE_ENABLED_STATE: 'SET_FEATURE_ENABLED_STATE',\n CLEAR_FEATURES: 'CLEAR_FEATURES',\n SET_INITIAL_STATE: 'SET_INITIAL_STATE',\n SET_USER_SELECTED_OPTIONS: 'SET_USER_SELECTED_OPTIONS',\n SET_USER_SELECTED_OPTION: 'SET_USER_SELECTED_OPTION',\n SHOW_OPTION: 'SHOW_OPTION',\n HIDE_OPTION: 'HIDE_OPTION',\n SET_SERVICE_ENTRY_METADATA: 'SET_SERVICE_ENTRY_METADATA',\n SET_BLOCK_AUTO_ENTRY_SWITCH: 'SET_BLOCK_AUTO_ENTRY_SWITCH',\n SET_ACTIVE_ENTRY_TYPE: 'SET_ACTIVE_ENTRY_TYPE',\n SET_USER_ENTRY_TYPE: 'SET_USER_ENTRY_TYPE',\n REGISTER_UPLOAD: 'REGISTER_UPLOAD',\n SET_UPLOAD_PROGRESS: 'SET_UPLOAD_PROGRESS',\n SET_UPLOAD_COMPLETE: 'SET_UPLOAD_COMPLETE',\n SET_UPLOAD_ERROR: 'SET_UPLOAD_ERROR',\n CLEAR_UPLOAD: 'CLEAR_UPLOAD',\n CLEAR_ALL_UPLOADS: 'CLEAR_ALL_UPLOADS',\n RESET_UPLOAD_STATE: 'RESET_UPLOAD_STATE',\n RESET_ENTRY_STATE: 'RESET_ENTRY_STATE',\n SET_SEAMLY_CONTAINER_ELEMENT: 'SET_SEAMLY_CONTAINER_ELEMENT'\n};\nconst cardTypes = {\n ask: 'ask',\n navigate: 'navigate',\n topic: 'topic'\n};\nconst {\n ADD_EVENT,\n CLEAR_EVENTS,\n SET_HISTORY,\n SET_EVENTS_READ,\n ACK_EVENT,\n SET_IS_LOADING,\n CLEAR_PARTICIPANTS,\n SET_PARTICIPANT,\n SET_HEADER_TITLE,\n SET_HEADER_SUB_TITLE,\n SET_VISIBILITY,\n RESET_HISTORY_LOADED_FLAG,\n SET_ACTIVE_SERVICE,\n INIT_IDLE_DETACH_COUNTDOWN,\n DECREMENT_IDLE_DETACH_COUNTDOWN_COUNTER,\n STOP_IDLE_DETACH_COUNTDOWN_COUNTER,\n CLEAR_IDLE_DETACH_COUNTDOWN,\n INIT_RESUME_CONVERSATION_PROMPT,\n CLEAR_RESUME_CONVERSATION_PROMPT,\n SET_SERVICE_DATA_ITEM,\n SET_FEATURES,\n SET_FEATURE_ENABLED_STATE,\n CLEAR_FEATURES,\n SET_INITIAL_STATE,\n SET_USER_SELECTED_OPTION,\n SET_USER_SELECTED_OPTIONS,\n SHOW_OPTION,\n HIDE_OPTION,\n SET_BLOCK_AUTO_ENTRY_SWITCH,\n SET_USER_ENTRY_TYPE,\n SET_ACTIVE_ENTRY_TYPE,\n SET_SERVICE_ENTRY_METADATA,\n REGISTER_UPLOAD,\n SET_UPLOAD_PROGRESS,\n SET_UPLOAD_COMPLETE,\n SET_UPLOAD_ERROR,\n CLEAR_UPLOAD,\n CLEAR_ALL_UPLOADS,\n RESET_UPLOAD_STATE,\n RESET_ENTRY_STATE,\n SET_SEAMLY_CONTAINER_ELEMENT\n} = seamlyActions;\nconst isUnreadMessage = ({\n type,\n payload\n}) => type === eventTypes.message && !payload.fromClient || type === eventTypes.info && payload.type === payloadTypes.text;\n\nconst orderHistory = events => {\n return events.sort(({\n payload: {\n occurredAt: occurredAtA\n }\n }, {\n payload: {\n occurredAt: occurredAtB\n }\n }) => occurredAtA - occurredAtB);\n};\n\nconst mergeHistory = (stateEvents, historyEvents) => {\n const newHistoryEvents = historyEvents.filter(historyEvent => // Deduplicate the event streams\n !stateEvents.find(stateEvent => stateEvent.payload.id === historyEvent.payload.id) && // Remove all non displayable participant messages\n !(historyEvent.type === 'participant' && !historyEvent.payload.participant.introduction)) // Reverse is done here because the server sends the history in the order\n // newest to oldest. In the case of exactly the same occurredAt timestamps\n // these messages will be shown in the wrong order if not reversed. For\n // the normal merging logic there is no added effect.\n .reverse();\n return orderHistory([...newHistoryEvents, ...stateEvents]);\n};\n\nconst participantReducer = (state, action) => {\n switch (action.type) {\n case CLEAR_PARTICIPANTS:\n return {\n participants: {},\n currentAgent: ''\n };\n\n case SET_PARTICIPANT:\n const {\n participants\n } = state;\n const {\n id,\n avatar,\n name,\n introduction\n } = action.participant;\n const oldParticipant = participants[id];\n\n const newParticipants = _objectSpread(_objectSpread({}, participants), {}, {\n [id]: oldParticipant ? _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, oldParticipant), avatar ? {\n avatar\n } : {}), name ? {\n name\n } : {}), introduction ? {\n introduction\n } : {}) : action.participant\n });\n\n return _objectSpread(_objectSpread({}, state), {}, {\n participants: newParticipants,\n currentAgent: state.currentAgent !== id && !action.fromClient ? id : state.currentAgent\n });\n\n default:\n return state;\n }\n};\n\nconst headerTitlesReducer = (state, action) => {\n switch (action.type) {\n case SET_HEADER_TITLE:\n return _objectSpread(_objectSpread({}, state), {}, {\n title: action.title\n });\n\n case SET_HEADER_SUB_TITLE:\n return _objectSpread(_objectSpread({}, state), {}, {\n subTitle: action.title\n });\n\n default:\n return state;\n }\n};\n\nconst calculateNewEntryMeta = (entryMeta, payload) => {\n const {\n entry\n } = payload;\n const {\n blockAutoEntrySwitch\n } = entryMeta;\n\n if (!entry) {\n return _objectSpread(_objectSpread({}, entryMeta), {}, {\n optionsOverride: {}\n });\n }\n\n const {\n type,\n options\n } = entry;\n let newActive = entryMeta.active;\n\n if (!blockAutoEntrySwitch && type !== entryMeta.userSelected) {\n newActive = type;\n }\n\n return _objectSpread(_objectSpread({}, entryMeta), {}, {\n active: newActive,\n optionsOverride: _objectSpread(_objectSpread({}, entryMeta.optionsOverride), {}, {\n [type]: options || {}\n })\n });\n};\n\nconst seamlyStateReducer = (state, action) => {\n switch (action.type) {\n case ADD_EVENT:\n const {\n type: eventType,\n payload\n } = action.event;\n const accountHasUploads = state.options.features.hasOwnProperty(featureKeys.uploads);\n const newEntryMeta = calculateNewEntryMeta(state.entryMeta, payload);\n\n let newOptions = _objectSpread({}, state.options); // This enabled override of the service enabled value for uploads.\n // If a message is sent with entry of type upload it will temporarily\n // override service value and enable uploads.\n\n\n if (accountHasUploads && (eventType === eventTypes.message || eventType === eventTypes.participant) && !payload.fromClient) {\n const {\n type: entryType\n } = payload.entry || {};\n newOptions = _objectSpread(_objectSpread({}, newOptions), {}, {\n features: _objectSpread(_objectSpread({}, newOptions.features), {}, {\n uploads: _objectSpread(_objectSpread({}, newOptions.features.uploads), {}, {\n enabledFromEntry: entryType === entryTypes.upload\n })\n })\n });\n }\n\n const incrementUnread = isUnreadMessage(action.event); // We check for duplicated and ignore them as in some error of the websocket\n // a duplicate join can be active for a while until the server connection\n // times out.\n\n const eventExists = state.events.find(e => e.payload.id === payload.id);\n\n if (eventExists) {\n return state;\n }\n\n return _objectSpread(_objectSpread({}, state), {}, {\n entryMeta: !accountHasUploads && newEntryMeta.active === entryTypes.upload ? _objectSpread({}, state.entryMeta) : newEntryMeta,\n options: newOptions,\n unreadEvents: incrementUnread ? state.unreadEvents + 1 : state.unreadEvents,\n events: [...state.events, _objectSpread(_objectSpread({}, action.event), {}, {\n // The payload spread should be done after adding the message\n // status to enable overriding the status when setting\n // event optimistically.\n payload: _objectSpread(_objectSpread({}, incrementUnread && {\n messageStatus: payload.fromClient ? readStates.read : readStates.received\n }), payload)\n })]\n });\n\n case ACK_EVENT:\n // If any ACKs are sent without transactionID the conversation crashes.\n // Ensure that this edge case is handled gracefully.\n if (!action.event.payload.transactionId) {\n console.warn('ACK received without transaction ID.');\n return state;\n }\n\n const matchedEvent = state.events.find(m => m.payload.transactionId === action.event.payload.transactionId);\n const {\n id,\n occurredAt\n } = action.event.payload;\n return matchedEvent ? _objectSpread(_objectSpread({}, state), {}, {\n events: orderHistory(state.events.map(m => m.payload.id === matchedEvent.payload.id ? _objectSpread(_objectSpread({}, m), {}, {\n payload: _objectSpread(_objectSpread({}, m.payload), {}, {\n id,\n occurredAt\n })\n }) : m))\n }) : state;\n\n case CLEAR_EVENTS:\n return _objectSpread(_objectSpread({}, state), {}, {\n unreadEvents: 0,\n events: []\n });\n\n case SET_EVENTS_READ:\n return _objectSpread(_objectSpread({}, state), {}, {\n unreadEvents: 0,\n events: state.events.map(event => {\n if (action.ids.indexOf(event.payload.id) !== -1) {\n return _objectSpread(_objectSpread({}, event), {}, {\n payload: _objectSpread(_objectSpread({}, event.payload), event.payload.messageStatus === readStates.received && {\n messageStatus: readStates.read\n })\n });\n }\n\n return event;\n })\n });\n\n case SET_HISTORY:\n const {\n events: history,\n participants,\n activeServiceSessionId,\n activeServiceSettings = {},\n serviceData,\n resumeConversationPrompt\n } = action.history;\n const events = mergeHistory(state.events, history);\n\n const mergedParticipants = _objectSpread(_objectSpread({}, state.participantInfo.participants), participants);\n\n const lastParticipantEvent = events.slice().reverse().find(m => (m.type === 'message' || m.type === 'participant') && !m.payload.fromClient);\n let lastParticipantId = null;\n\n if (lastParticipantEvent) {\n if (lastParticipantEvent.type === 'message') {\n lastParticipantId = lastParticipantEvent.payload.participant;\n }\n\n if (lastParticipantEvent.type === 'participant') {\n lastParticipantId = lastParticipantEvent.payload.participant.id;\n }\n }\n\n const {\n cobrowsing,\n entry,\n uploads\n } = activeServiceSettings;\n const historyNewEntryMeta = calculateNewEntryMeta(_objectSpread(_objectSpread(_objectSpread({}, state.entryMeta), entry), {}, {\n active: entry.default || payloadTypes.text,\n options: _objectSpread({}, entry && entry.options ? entry.options : {})\n }), events[events.length - 1].payload);\n\n let newFeatures = _objectSpread({}, state.options.features); // Only set cobrowsing if it was initialised by the account config.\n\n\n if (newFeatures.hasOwnProperty(featureKeys.cobrowsing)) {\n newFeatures = _objectSpread(_objectSpread({}, newFeatures), {}, {\n cobrowsing: {\n enabled: !!(cobrowsing && cobrowsing.enabled)\n }\n });\n }\n\n const newFeaturesHasUpload = newFeatures.hasOwnProperty(featureKeys.uploads); // Only set uploads if it was initialised by the account config.\n\n if (newFeaturesHasUpload) {\n const {\n payload: lastParticipantEventPayload\n } = lastParticipantEvent;\n const {\n type: entryType\n } = lastParticipantEventPayload.entry || {};\n newFeatures = _objectSpread(_objectSpread({}, newFeatures), {}, {\n uploads: {\n enabled: !!(uploads && uploads.enabled),\n enabledFromEntry: entryType === entryTypes.upload\n }\n });\n }\n\n const returnState = _objectSpread(_objectSpread({}, state), {}, {\n unreadEvents: events.filter(event => event.type === 'message' && event.payload.messageStatus === readStates.received).length,\n events: events.filter(e => e.type !== 'participant' || !!e.payload.participant.introduction),\n participantInfo: _objectSpread(_objectSpread(_objectSpread({}, state.participantInfo), lastParticipantId ? participantReducer(state.participantInfo, {\n type: SET_PARTICIPANT,\n participant: mergedParticipants[lastParticipantId]\n }) : {}), {}, {\n participants: mergedParticipants\n }),\n historyLoaded: true,\n serviceInfo: _objectSpread(_objectSpread({}, state.serviceInfo), {}, {\n activeServiceSessionId\n }),\n serviceData: serviceData || {},\n options: _objectSpread(_objectSpread({}, state.options), {}, {\n features: newFeatures\n }),\n entryMeta: !newFeaturesHasUpload && historyNewEntryMeta.active === entryTypes.upload ? _objectSpread({}, state.entryMeta) : historyNewEntryMeta,\n resumeConversationPrompt: resumeConversationPrompt || false\n });\n\n if (lastParticipantId) {\n returnState.headerTitles = headerTitlesReducer(state.headerTitles, {\n type: SET_HEADER_SUB_TITLE,\n title: mergedParticipants[lastParticipantId].name\n });\n }\n\n return returnState;\n\n case RESET_HISTORY_LOADED_FLAG:\n return _objectSpread(_objectSpread({}, state), {}, {\n historyLoaded: false\n });\n\n case SET_IS_LOADING:\n return _objectSpread(_objectSpread({}, state), {}, {\n isLoading: action.isLoading\n });\n\n case INIT_IDLE_DETACH_COUNTDOWN:\n const {\n delaySeconds,\n delayTime\n } = action;\n return _objectSpread(_objectSpread({}, state), {}, {\n idleDetachCountdown: {\n hasCountdown: true,\n isActive: true,\n wasStopped: false,\n count: delaySeconds,\n remaining: delaySeconds,\n timer: delayTime\n }\n });\n\n case DECREMENT_IDLE_DETACH_COUNTDOWN_COUNTER:\n const {\n idleDetachCountdown\n } = state;\n const {\n remaining: prevRemaining\n } = idleDetachCountdown;\n const remaining = prevRemaining - 1;\n return _objectSpread(_objectSpread({}, state), {}, {\n idleDetachCountdown: _objectSpread(_objectSpread({}, state.idleDetachCountdown), {}, {\n remaining,\n timer: (0,_general_utils__WEBPACK_IMPORTED_MODULE_0__.getTimeFromSeconds)(remaining)\n })\n });\n\n case STOP_IDLE_DETACH_COUNTDOWN_COUNTER:\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n idleDetachCountdown: _objectSpread(_objectSpread({}, state.idleDetachCountdown), {}, {\n isActive: false,\n wasStopped: true\n })\n });\n }\n\n case CLEAR_IDLE_DETACH_COUNTDOWN:\n return _objectSpread(_objectSpread({}, state), {}, {\n idleDetachCountdown: {\n hasCountdown: false,\n isActive: false\n }\n });\n\n case INIT_RESUME_CONVERSATION_PROMPT:\n return _objectSpread(_objectSpread({}, state), {}, {\n resumeConversationPrompt: true\n });\n\n case CLEAR_RESUME_CONVERSATION_PROMPT:\n return _objectSpread(_objectSpread({}, state), {}, {\n resumeConversationPrompt: false\n });\n\n case SET_VISIBILITY:\n return _objectSpread(_objectSpread({}, state), {}, {\n visible: action.visible\n });\n\n case SET_PARTICIPANT:\n case CLEAR_PARTICIPANTS:\n return _objectSpread(_objectSpread({}, state), {}, {\n participantInfo: participantReducer(state.participantInfo, action)\n });\n\n case SET_ACTIVE_SERVICE:\n if (state.serviceInfo.activeServiceSessionId !== action.activeServiceSessionId) {\n return _objectSpread(_objectSpread({}, state), {}, {\n serviceInfo: _objectSpread(_objectSpread({}, state.serviceInfo), {}, {\n activeServiceSessionId: action.activeServiceSessionId\n })\n });\n }\n\n return state;\n\n case SET_HEADER_TITLE:\n case SET_HEADER_SUB_TITLE:\n return _objectSpread(_objectSpread({}, state), {}, {\n headerTitles: headerTitlesReducer(state.headerTitles, action)\n });\n\n case SET_INITIAL_STATE:\n return _objectSpread(_objectSpread({}, state), {}, {\n initialState: action.initialState\n });\n\n case SET_SERVICE_DATA_ITEM:\n return _objectSpread(_objectSpread({}, state), {}, {\n serviceData: _objectSpread(_objectSpread({}, state.serviceData), {}, {\n [action.payload.type]: action.payload\n })\n });\n\n case SET_FEATURES:\n return _objectSpread(_objectSpread({}, state), {}, {\n options: _objectSpread(_objectSpread({}, state.options), {}, {\n features: action.features\n })\n });\n\n case SET_FEATURE_ENABLED_STATE:\n // Only set cobrowsing if it already exists in the object.\n // Otherwise we may set if for accounts not allowing it at all.\n return state.options.features.hasOwnProperty(action.key) ? _objectSpread(_objectSpread({}, state), {}, {\n options: _objectSpread(_objectSpread({}, state.options), {}, {\n features: _objectSpread(_objectSpread({}, state.options.features), {}, {\n [action.key]: _objectSpread(_objectSpread({}, state.options.features[action.key] || {}), {}, {\n enabled: action.enabled\n })\n })\n })\n }) : state;\n\n case CLEAR_FEATURES:\n return _objectSpread(_objectSpread({}, state), {}, {\n options: _objectSpread(_objectSpread({}, state.options), {}, {\n features: {}\n })\n });\n\n case SHOW_OPTION:\n return _objectSpread(_objectSpread({}, state), {}, {\n options: _objectSpread(_objectSpread({}, state.options), {}, {\n panelActive: true,\n optionActive: action.optionName\n })\n });\n\n case HIDE_OPTION:\n return _objectSpread(_objectSpread({}, state), {}, {\n options: _objectSpread(_objectSpread({}, state.options), {}, {\n panelActive: false,\n optionActive: ''\n })\n });\n\n case SET_USER_SELECTED_OPTIONS:\n return _objectSpread(_objectSpread({}, state), {}, {\n options: _objectSpread(_objectSpread({}, state.options), {}, {\n userSelectedOptions: action.options\n })\n });\n\n case SET_USER_SELECTED_OPTION:\n const {\n option,\n value\n } = action;\n return _objectSpread(_objectSpread({}, state), {}, {\n options: _objectSpread(_objectSpread({}, state.options), {}, {\n userSelectedOptions: _objectSpread(_objectSpread({}, state.options.userSelectedOptions), {}, {\n [option]: value\n })\n })\n });\n\n case SET_BLOCK_AUTO_ENTRY_SWITCH:\n const {\n value: blockAutoEntrySwitch\n } = action;\n return _objectSpread(_objectSpread({}, state), {}, {\n entryMeta: _objectSpread(_objectSpread({}, state.entryMeta), {}, {\n blockAutoEntrySwitch\n })\n });\n\n case SET_SERVICE_ENTRY_METADATA:\n const {\n entryMeta\n } = action;\n return _objectSpread(_objectSpread({}, state), {}, {\n entryMeta: _objectSpread(_objectSpread(_objectSpread({}, state.entryMeta), entryMeta), {}, {\n active: entryMeta.default,\n options: _objectSpread({}, entryMeta.options || {}),\n overrideOptions: {}\n })\n });\n\n case SET_ACTIVE_ENTRY_TYPE:\n const {\n entryType: active\n } = action;\n return _objectSpread(_objectSpread({}, state), {}, {\n entryMeta: _objectSpread(_objectSpread({}, state.entryMeta), {}, {\n active\n })\n });\n\n case SET_USER_ENTRY_TYPE:\n const {\n entryType: userSelected\n } = action;\n return _objectSpread(_objectSpread({}, state), {}, {\n entryMeta: _objectSpread(_objectSpread({}, state.entryMeta), {}, {\n userSelected\n })\n });\n\n case REGISTER_UPLOAD:\n return _objectSpread(_objectSpread({}, state), {}, {\n currentUploads: [...state.currentUploads, {\n id: action.fileId,\n name: action.fileName,\n progress: 1,\n uploading: true,\n complete: false,\n error: '',\n uploadHandle: action.uploadHandle\n }]\n });\n\n case SET_UPLOAD_PROGRESS:\n return _objectSpread(_objectSpread({}, state), {}, {\n currentUploads: state.currentUploads.map(fileUpload => {\n if (fileUpload.id === action.fileId) {\n return _objectSpread(_objectSpread({}, fileUpload), {}, {\n progress: action.progress,\n uploading: action.progress !== 100,\n uploadHandle: action.progress === 100 ? null : fileUpload.uploadHandle\n });\n }\n\n return fileUpload;\n })\n });\n\n case SET_UPLOAD_ERROR:\n return _objectSpread(_objectSpread({}, state), {}, {\n currentUploads: state.currentUploads.map(fileUpload => {\n if (fileUpload.id === action.fileId) {\n return _objectSpread(_objectSpread({}, fileUpload), {}, {\n error: action.errorText,\n progress: 0,\n uploading: false,\n uploadHandle: null\n });\n }\n\n return fileUpload;\n })\n });\n\n case SET_UPLOAD_COMPLETE:\n return _objectSpread(_objectSpread({}, state), {}, {\n currentUploads: state.currentUploads.map(fileUpload => {\n if (fileUpload.id === action.fileId) {\n return _objectSpread(_objectSpread({}, fileUpload), {}, {\n complete: true\n });\n }\n\n return fileUpload;\n })\n });\n\n case CLEAR_UPLOAD:\n return _objectSpread(_objectSpread({}, state), {}, {\n currentUploads: state.currentUploads.filter(fileUpload => fileUpload.id !== action.fileId)\n });\n\n case CLEAR_ALL_UPLOADS:\n return _objectSpread(_objectSpread({}, state), {}, {\n currentUploads: []\n });\n\n case RESET_UPLOAD_STATE:\n return _objectSpread(_objectSpread({}, state), {}, {\n showFileUpload: false,\n currentUploads: []\n });\n\n case RESET_ENTRY_STATE:\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n entryMeta: {\n default: payloadTypes.text,\n active: payloadTypes.text,\n userSelected: null,\n blockAutoEntrySwitch: false,\n options: {},\n optionsOverride: {}\n }\n });\n }\n\n case SET_SEAMLY_CONTAINER_ELEMENT:\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n seamlyContainerElement: action.element\n });\n }\n\n default:\n return state;\n }\n};\nconst calculateVisibility = ({\n hasResponded,\n previousVisibility,\n requestedVisibility,\n config\n}) => {\n const {\n defaults,\n layoutMode,\n hideOnNoUserResponse\n } = config;\n const {\n visible: defaultVisibility\n } = defaults || {}; // Requesting open should override the responded check.\n\n if (layoutMode === 'window' && hideOnNoUserResponse && requestedVisibility !== visibilityStates.open) {\n return hasResponded ? requestedVisibility || previousVisibility || visibilityStates.open : visibilityStates.hidden;\n }\n\n const baseVisibility = layoutMode === 'inline' ? visibilityStates.open : visibilityStates.minimized;\n return requestedVisibility || previousVisibility || defaultVisibility || baseVisibility;\n};\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/utils/seamly-utils.js?");
|
|
2313
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"eventTypes\": () => (/* binding */ eventTypes),\n/* harmony export */ \"payloadTypes\": () => (/* binding */ payloadTypes),\n/* harmony export */ \"entryTypes\": () => (/* binding */ entryTypes),\n/* harmony export */ \"readStates\": () => (/* binding */ readStates),\n/* harmony export */ \"actionTypes\": () => (/* binding */ actionTypes),\n/* harmony export */ \"dismissTypes\": () => (/* binding */ dismissTypes),\n/* harmony export */ \"ariaLiveLevels\": () => (/* binding */ ariaLiveLevels),\n/* harmony export */ \"dividerKeys\": () => (/* binding */ dividerKeys),\n/* harmony export */ \"featureKeys\": () => (/* binding */ featureKeys),\n/* harmony export */ \"seamlyActions\": () => (/* binding */ seamlyActions),\n/* harmony export */ \"cardTypes\": () => (/* binding */ cardTypes),\n/* harmony export */ \"isUnreadMessage\": () => (/* binding */ isUnreadMessage),\n/* harmony export */ \"mergeHistory\": () => (/* binding */ mergeHistory),\n/* harmony export */ \"seamlyStateReducer\": () => (/* binding */ seamlyStateReducer)\n/* harmony export */ });\n/* harmony import */ var _general_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./general-utils */ \"./src/javascripts/ui/utils/general-utils.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\nconst eventTypes = {\n info: 'info',\n message: 'message',\n participant: 'participant',\n system: 'system'\n};\nconst payloadTypes = {\n choicePrompt: 'choice_prompt',\n text: 'text',\n image: 'image',\n video: 'video',\n participant: 'participant',\n divider: 'divider',\n translation: 'translation',\n message: 'message',\n countdown: 'countdown',\n upload: 'upload',\n cta: 'cta'\n};\nconst entryTypes = {\n text: 'text',\n upload: 'upload'\n};\nconst readStates = {\n received: 'received',\n read: 'read'\n};\nconst actionTypes = {\n pickChoice: 'pick_choice',\n navigate: 'navigate',\n custom: 'custom',\n typing: 'typing',\n read: 'read',\n detachService: 'detach_service',\n interactivityUpdate: 'interactivity_update',\n dismiss: 'dismiss',\n sendTranscript: 'send_transcript',\n setTranslation: 'set_translation',\n clickCta: 'click_cta',\n clickCard: 'click_card'\n};\nconst dismissTypes = {\n resumeConversationPrompt: 'resume_conversation_prompt'\n};\nconst ariaLiveLevels = {\n assertive: 'assertive',\n polite: 'polite'\n};\nconst dividerKeys = {\n new_topic: 'newTopic',\n new_translation: 'newTranslation'\n};\nconst featureKeys = {\n cobrowsing: 'cobrowsing',\n sendTranscript: 'sendTranscript',\n typingPeekahead: 'typingPeekahead',\n uploads: 'uploads'\n};\nconst seamlyActions = {\n ADD_EVENT: 'ADD_EVENT',\n CLEAR_EVENTS: 'CLEAR_EVENTS',\n SET_HISTORY: 'SET_HISTORY',\n SET_EVENTS_READ: 'SET_EVENTS_READ',\n ACK_EVENT: 'ACK_EVENT',\n SET_IS_LOADING: 'SET_IS_LOADING',\n CLEAR_PARTICIPANTS: 'CLEAR_PARTICIPANTS',\n SET_PARTICIPANT: 'SET_PARTICIPANT',\n SET_HEADER_TITLE: 'SET_HEADER_TITLE',\n SET_HEADER_SUB_TITLE: 'SET_HEADER_SUB_TITLE',\n RESET_HISTORY_LOADED_FLAG: 'RESET_HISTORY_LOADED_FLAG',\n SET_ACTIVE_SERVICE: 'SET_ACTIVE_SERVICE',\n INIT_IDLE_DETACH_COUNTDOWN: 'INIT_IDLE_DETACH_COUNTDOWN',\n DECREMENT_IDLE_DETACH_COUNTDOWN_COUNTER: 'DECREMENT_IDLE_DETACH_COUNTDOWN_COUNTER',\n STOP_IDLE_DETACH_COUNTDOWN_COUNTER: 'STOP_IDLE_DETACH_COUNTDOWN_COUNTER',\n CLEAR_IDLE_DETACH_COUNTDOWN: 'CLEAR_IDLE_DETACH_COUNTDOWN',\n INIT_RESUME_CONVERSATION_PROMPT: 'INIT_RESUME_CONVERSATION_PROMPT',\n CLEAR_RESUME_CONVERSATION_PROMPT: 'CLEAR_RESUME_CONVERSATION_PROMPT',\n SET_SERVICE_DATA_ITEM: 'SET_SERVICE_DATA_ITEM',\n SET_FEATURES: 'SET_FEATURES',\n SET_FEATURE_ENABLED_STATE: 'SET_FEATURE_ENABLED_STATE',\n CLEAR_FEATURES: 'CLEAR_FEATURES',\n SET_INITIAL_STATE: 'SET_INITIAL_STATE',\n SET_USER_SELECTED_OPTIONS: 'SET_USER_SELECTED_OPTIONS',\n SET_USER_SELECTED_OPTION: 'SET_USER_SELECTED_OPTION',\n SHOW_OPTION: 'SHOW_OPTION',\n HIDE_OPTION: 'HIDE_OPTION',\n SET_SERVICE_ENTRY_METADATA: 'SET_SERVICE_ENTRY_METADATA',\n SET_BLOCK_AUTO_ENTRY_SWITCH: 'SET_BLOCK_AUTO_ENTRY_SWITCH',\n SET_ACTIVE_ENTRY_TYPE: 'SET_ACTIVE_ENTRY_TYPE',\n SET_USER_ENTRY_TYPE: 'SET_USER_ENTRY_TYPE',\n REGISTER_UPLOAD: 'REGISTER_UPLOAD',\n SET_UPLOAD_PROGRESS: 'SET_UPLOAD_PROGRESS',\n SET_UPLOAD_COMPLETE: 'SET_UPLOAD_COMPLETE',\n SET_UPLOAD_ERROR: 'SET_UPLOAD_ERROR',\n CLEAR_UPLOAD: 'CLEAR_UPLOAD',\n CLEAR_ALL_UPLOADS: 'CLEAR_ALL_UPLOADS',\n SET_SEAMLY_CONTAINER_ELEMENT: 'SET_SEAMLY_CONTAINER_ELEMENT'\n};\nconst cardTypes = {\n ask: 'ask',\n navigate: 'navigate',\n topic: 'topic'\n};\nconst {\n ADD_EVENT,\n CLEAR_EVENTS,\n SET_HISTORY,\n SET_EVENTS_READ,\n ACK_EVENT,\n SET_IS_LOADING,\n CLEAR_PARTICIPANTS,\n SET_PARTICIPANT,\n SET_HEADER_TITLE,\n SET_HEADER_SUB_TITLE,\n RESET_HISTORY_LOADED_FLAG,\n SET_ACTIVE_SERVICE,\n INIT_IDLE_DETACH_COUNTDOWN,\n DECREMENT_IDLE_DETACH_COUNTDOWN_COUNTER,\n STOP_IDLE_DETACH_COUNTDOWN_COUNTER,\n CLEAR_IDLE_DETACH_COUNTDOWN,\n INIT_RESUME_CONVERSATION_PROMPT,\n CLEAR_RESUME_CONVERSATION_PROMPT,\n SET_SERVICE_DATA_ITEM,\n SET_FEATURES,\n SET_FEATURE_ENABLED_STATE,\n CLEAR_FEATURES,\n SET_INITIAL_STATE,\n SET_USER_SELECTED_OPTION,\n SET_USER_SELECTED_OPTIONS,\n SHOW_OPTION,\n HIDE_OPTION,\n SET_BLOCK_AUTO_ENTRY_SWITCH,\n SET_USER_ENTRY_TYPE,\n SET_ACTIVE_ENTRY_TYPE,\n SET_SERVICE_ENTRY_METADATA,\n REGISTER_UPLOAD,\n SET_UPLOAD_PROGRESS,\n SET_UPLOAD_COMPLETE,\n SET_UPLOAD_ERROR,\n CLEAR_UPLOAD,\n CLEAR_ALL_UPLOADS,\n SET_SEAMLY_CONTAINER_ELEMENT\n} = seamlyActions;\nconst isUnreadMessage = ({\n type,\n payload\n}) => type === eventTypes.message && !payload.fromClient || type === eventTypes.info && payload.type === payloadTypes.text;\n\nconst orderHistory = events => {\n return events.sort(({\n payload: {\n occurredAt: occurredAtA\n }\n }, {\n payload: {\n occurredAt: occurredAtB\n }\n }) => occurredAtA - occurredAtB);\n};\n\nconst mergeHistory = (stateEvents, historyEvents) => {\n const newHistoryEvents = historyEvents.filter(historyEvent => // Deduplicate the event streams\n !stateEvents.find(stateEvent => stateEvent.payload.id === historyEvent.payload.id) && // Remove all non displayable participant messages\n !(historyEvent.type === 'participant' && !historyEvent.payload.participant.introduction)) // Reverse is done here because the server sends the history in the order\n // newest to oldest. In the case of exactly the same occurredAt timestamps\n // these messages will be shown in the wrong order if not reversed. For\n // the normal merging logic there is no added effect.\n .reverse();\n return orderHistory([...newHistoryEvents, ...stateEvents]);\n};\n\nconst participantReducer = (state, action) => {\n switch (action.type) {\n case CLEAR_PARTICIPANTS:\n return {\n participants: {},\n currentAgent: ''\n };\n\n case SET_PARTICIPANT:\n const {\n participants\n } = state;\n const {\n id,\n avatar,\n name,\n introduction\n } = action.participant;\n const oldParticipant = participants[id];\n\n const newParticipants = _objectSpread(_objectSpread({}, participants), {}, {\n [id]: oldParticipant ? _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, oldParticipant), avatar ? {\n avatar\n } : {}), name ? {\n name\n } : {}), introduction ? {\n introduction\n } : {}) : action.participant\n });\n\n return _objectSpread(_objectSpread({}, state), {}, {\n participants: newParticipants,\n currentAgent: state.currentAgent !== id && !action.fromClient ? id : state.currentAgent\n });\n\n default:\n return state;\n }\n};\n\nconst headerTitlesReducer = (state, action) => {\n switch (action.type) {\n case SET_HEADER_TITLE:\n return _objectSpread(_objectSpread({}, state), {}, {\n title: action.title\n });\n\n case SET_HEADER_SUB_TITLE:\n return _objectSpread(_objectSpread({}, state), {}, {\n subTitle: action.title\n });\n\n default:\n return state;\n }\n};\n\nconst calculateNewEntryMeta = (entryMeta, payload) => {\n const {\n entry\n } = payload;\n const {\n blockAutoEntrySwitch\n } = entryMeta;\n\n if (!entry) {\n return _objectSpread(_objectSpread({}, entryMeta), {}, {\n optionsOverride: {}\n });\n }\n\n const {\n type,\n options\n } = entry;\n let newActive = entryMeta.active;\n\n if (!blockAutoEntrySwitch && type !== entryMeta.userSelected) {\n newActive = type;\n }\n\n return _objectSpread(_objectSpread({}, entryMeta), {}, {\n active: newActive,\n optionsOverride: _objectSpread(_objectSpread({}, entryMeta.optionsOverride), {}, {\n [type]: options || {}\n })\n });\n};\n\nconst seamlyStateReducer = (state, action) => {\n switch (action.type) {\n case ADD_EVENT:\n const {\n type: eventType,\n payload\n } = action.event;\n const accountHasUploads = state.options.features.hasOwnProperty(featureKeys.uploads);\n const newEntryMeta = calculateNewEntryMeta(state.entryMeta, payload);\n\n let newOptions = _objectSpread({}, state.options); // This enabled override of the service enabled value for uploads.\n // If a message is sent with entry of type upload it will temporarily\n // override service value and enable uploads.\n\n\n if (accountHasUploads && (eventType === eventTypes.message || eventType === eventTypes.participant) && !payload.fromClient) {\n const {\n type: entryType\n } = payload.entry || {};\n newOptions = _objectSpread(_objectSpread({}, newOptions), {}, {\n features: _objectSpread(_objectSpread({}, newOptions.features), {}, {\n uploads: _objectSpread(_objectSpread({}, newOptions.features.uploads), {}, {\n enabledFromEntry: entryType === entryTypes.upload\n })\n })\n });\n }\n\n const incrementUnread = isUnreadMessage(action.event); // We check for duplicated and ignore them as in some error of the websocket\n // a duplicate join can be active for a while until the server connection\n // times out.\n\n const eventExists = state.events.find(e => e.payload.id === payload.id);\n\n if (eventExists) {\n return state;\n }\n\n return _objectSpread(_objectSpread({}, state), {}, {\n entryMeta: !accountHasUploads && newEntryMeta.active === entryTypes.upload ? _objectSpread({}, state.entryMeta) : newEntryMeta,\n options: newOptions,\n unreadEvents: incrementUnread ? state.unreadEvents + 1 : state.unreadEvents,\n events: [...state.events, _objectSpread(_objectSpread({}, action.event), {}, {\n // The payload spread should be done after adding the message\n // status to enable overriding the status when setting\n // event optimistically.\n payload: _objectSpread(_objectSpread({}, incrementUnread && {\n messageStatus: payload.fromClient ? readStates.read : readStates.received\n }), payload)\n })]\n });\n\n case ACK_EVENT:\n // If any ACKs are sent without transactionID the conversation crashes.\n // Ensure that this edge case is handled gracefully.\n if (!action.event.payload.transactionId) {\n console.warn('ACK received without transaction ID.');\n return state;\n }\n\n const matchedEvent = state.events.find(m => m.payload.transactionId === action.event.payload.transactionId);\n const {\n id,\n occurredAt\n } = action.event.payload;\n return matchedEvent ? _objectSpread(_objectSpread({}, state), {}, {\n events: orderHistory(state.events.map(m => m.payload.id === matchedEvent.payload.id ? _objectSpread(_objectSpread({}, m), {}, {\n payload: _objectSpread(_objectSpread({}, m.payload), {}, {\n id,\n occurredAt\n })\n }) : m))\n }) : state;\n\n case CLEAR_EVENTS:\n return _objectSpread(_objectSpread({}, state), {}, {\n unreadEvents: 0,\n events: []\n });\n\n case SET_EVENTS_READ:\n return _objectSpread(_objectSpread({}, state), {}, {\n unreadEvents: 0,\n events: state.events.map(event => {\n if (action.ids.indexOf(event.payload.id) !== -1) {\n return _objectSpread(_objectSpread({}, event), {}, {\n payload: _objectSpread(_objectSpread({}, event.payload), event.payload.messageStatus === readStates.received && {\n messageStatus: readStates.read\n })\n });\n }\n\n return event;\n })\n });\n\n case SET_HISTORY:\n const {\n events: history,\n participants,\n activeServiceSessionId,\n activeServiceSettings = {},\n serviceData,\n resumeConversationPrompt\n } = action.history;\n const events = mergeHistory(state.events, history);\n\n const mergedParticipants = _objectSpread(_objectSpread({}, state.participantInfo.participants), participants);\n\n const lastParticipantEvent = events.slice().reverse().find(m => (m.type === 'message' || m.type === 'participant') && !m.payload.fromClient);\n let lastParticipantId = null;\n\n if (lastParticipantEvent) {\n if (lastParticipantEvent.type === 'message') {\n lastParticipantId = lastParticipantEvent.payload.participant;\n }\n\n if (lastParticipantEvent.type === 'participant') {\n lastParticipantId = lastParticipantEvent.payload.participant.id;\n }\n }\n\n const {\n cobrowsing,\n entry,\n uploads\n } = activeServiceSettings;\n const historyNewEntryMeta = calculateNewEntryMeta(_objectSpread(_objectSpread(_objectSpread({}, state.entryMeta), entry), {}, {\n active: entry.default || payloadTypes.text,\n options: _objectSpread({}, entry && entry.options ? entry.options : {})\n }), events[events.length - 1].payload);\n\n let newFeatures = _objectSpread({}, state.options.features); // Only set cobrowsing if it was initialised by the account config.\n\n\n if (newFeatures.hasOwnProperty(featureKeys.cobrowsing)) {\n newFeatures = _objectSpread(_objectSpread({}, newFeatures), {}, {\n cobrowsing: {\n enabled: !!(cobrowsing && cobrowsing.enabled)\n }\n });\n }\n\n const newFeaturesHasUpload = newFeatures.hasOwnProperty(featureKeys.uploads); // Only set uploads if it was initialised by the account config.\n\n if (newFeaturesHasUpload) {\n const {\n payload: lastParticipantEventPayload\n } = lastParticipantEvent;\n const {\n type: entryType\n } = lastParticipantEventPayload.entry || {};\n newFeatures = _objectSpread(_objectSpread({}, newFeatures), {}, {\n uploads: {\n enabled: !!(uploads && uploads.enabled),\n enabledFromEntry: entryType === entryTypes.upload\n }\n });\n }\n\n const returnState = _objectSpread(_objectSpread({}, state), {}, {\n unreadEvents: events.filter(event => event.type === 'message' && event.payload.messageStatus === readStates.received).length,\n events: events.filter(e => e.type !== 'participant' || !!e.payload.participant.introduction),\n participantInfo: _objectSpread(_objectSpread(_objectSpread({}, state.participantInfo), lastParticipantId ? participantReducer(state.participantInfo, {\n type: SET_PARTICIPANT,\n participant: mergedParticipants[lastParticipantId]\n }) : {}), {}, {\n participants: mergedParticipants\n }),\n historyLoaded: true,\n serviceInfo: _objectSpread(_objectSpread({}, state.serviceInfo), {}, {\n activeServiceSessionId\n }),\n serviceData: serviceData || {},\n options: _objectSpread(_objectSpread({}, state.options), {}, {\n features: newFeatures\n }),\n entryMeta: !newFeaturesHasUpload && historyNewEntryMeta.active === entryTypes.upload ? _objectSpread({}, state.entryMeta) : historyNewEntryMeta,\n resumeConversationPrompt: resumeConversationPrompt || false\n });\n\n if (lastParticipantId) {\n returnState.headerTitles = headerTitlesReducer(state.headerTitles, {\n type: SET_HEADER_SUB_TITLE,\n title: mergedParticipants[lastParticipantId].name\n });\n }\n\n return returnState;\n\n case RESET_HISTORY_LOADED_FLAG:\n return _objectSpread(_objectSpread({}, state), {}, {\n historyLoaded: false\n });\n\n case SET_IS_LOADING:\n return _objectSpread(_objectSpread({}, state), {}, {\n isLoading: action.isLoading\n });\n\n case INIT_IDLE_DETACH_COUNTDOWN:\n const {\n delaySeconds,\n delayTime\n } = action;\n return _objectSpread(_objectSpread({}, state), {}, {\n idleDetachCountdown: {\n hasCountdown: true,\n isActive: true,\n wasStopped: false,\n count: delaySeconds,\n remaining: delaySeconds,\n timer: delayTime\n }\n });\n\n case DECREMENT_IDLE_DETACH_COUNTDOWN_COUNTER:\n const {\n idleDetachCountdown\n } = state;\n const {\n remaining: prevRemaining\n } = idleDetachCountdown;\n const remaining = prevRemaining - 1;\n return _objectSpread(_objectSpread({}, state), {}, {\n idleDetachCountdown: _objectSpread(_objectSpread({}, state.idleDetachCountdown), {}, {\n remaining,\n timer: (0,_general_utils__WEBPACK_IMPORTED_MODULE_0__.getTimeFromSeconds)(remaining)\n })\n });\n\n case STOP_IDLE_DETACH_COUNTDOWN_COUNTER:\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n idleDetachCountdown: _objectSpread(_objectSpread({}, state.idleDetachCountdown), {}, {\n isActive: false,\n wasStopped: true\n })\n });\n }\n\n case CLEAR_IDLE_DETACH_COUNTDOWN:\n return _objectSpread(_objectSpread({}, state), {}, {\n idleDetachCountdown: {\n hasCountdown: false,\n isActive: false\n }\n });\n\n case INIT_RESUME_CONVERSATION_PROMPT:\n return _objectSpread(_objectSpread({}, state), {}, {\n resumeConversationPrompt: true\n });\n\n case CLEAR_RESUME_CONVERSATION_PROMPT:\n return _objectSpread(_objectSpread({}, state), {}, {\n resumeConversationPrompt: false\n });\n\n case SET_PARTICIPANT:\n case CLEAR_PARTICIPANTS:\n return _objectSpread(_objectSpread({}, state), {}, {\n participantInfo: participantReducer(state.participantInfo, action)\n });\n\n case SET_ACTIVE_SERVICE:\n if (state.serviceInfo.activeServiceSessionId !== action.activeServiceSessionId) {\n return _objectSpread(_objectSpread({}, state), {}, {\n serviceInfo: _objectSpread(_objectSpread({}, state.serviceInfo), {}, {\n activeServiceSessionId: action.activeServiceSessionId\n })\n });\n }\n\n return state;\n\n case SET_HEADER_TITLE:\n case SET_HEADER_SUB_TITLE:\n return _objectSpread(_objectSpread({}, state), {}, {\n headerTitles: headerTitlesReducer(state.headerTitles, action)\n });\n\n case SET_INITIAL_STATE:\n return _objectSpread(_objectSpread({}, state), {}, {\n initialState: action.initialState\n });\n\n case SET_SERVICE_DATA_ITEM:\n return _objectSpread(_objectSpread({}, state), {}, {\n serviceData: _objectSpread(_objectSpread({}, state.serviceData), {}, {\n [action.payload.type]: action.payload\n })\n });\n\n case SET_FEATURES:\n return _objectSpread(_objectSpread({}, state), {}, {\n options: _objectSpread(_objectSpread({}, state.options), {}, {\n features: action.features\n })\n });\n\n case SET_FEATURE_ENABLED_STATE:\n // Only set cobrowsing if it already exists in the object.\n // Otherwise we may set if for accounts not allowing it at all.\n return state.options.features.hasOwnProperty(action.key) ? _objectSpread(_objectSpread({}, state), {}, {\n options: _objectSpread(_objectSpread({}, state.options), {}, {\n features: _objectSpread(_objectSpread({}, state.options.features), {}, {\n [action.key]: _objectSpread(_objectSpread({}, state.options.features[action.key] || {}), {}, {\n enabled: action.enabled\n })\n })\n })\n }) : state;\n\n case CLEAR_FEATURES:\n return _objectSpread(_objectSpread({}, state), {}, {\n options: _objectSpread(_objectSpread({}, state.options), {}, {\n features: {}\n })\n });\n\n case SHOW_OPTION:\n return _objectSpread(_objectSpread({}, state), {}, {\n options: _objectSpread(_objectSpread({}, state.options), {}, {\n panelActive: true,\n optionActive: action.optionName\n })\n });\n\n case HIDE_OPTION:\n return _objectSpread(_objectSpread({}, state), {}, {\n options: _objectSpread(_objectSpread({}, state.options), {}, {\n panelActive: false,\n optionActive: ''\n })\n });\n\n case SET_USER_SELECTED_OPTIONS:\n return _objectSpread(_objectSpread({}, state), {}, {\n options: _objectSpread(_objectSpread({}, state.options), {}, {\n userSelectedOptions: action.options\n })\n });\n\n case SET_USER_SELECTED_OPTION:\n const {\n option,\n value\n } = action;\n return _objectSpread(_objectSpread({}, state), {}, {\n options: _objectSpread(_objectSpread({}, state.options), {}, {\n userSelectedOptions: _objectSpread(_objectSpread({}, state.options.userSelectedOptions), {}, {\n [option]: value\n })\n })\n });\n\n case SET_BLOCK_AUTO_ENTRY_SWITCH:\n const {\n value: blockAutoEntrySwitch\n } = action;\n return _objectSpread(_objectSpread({}, state), {}, {\n entryMeta: _objectSpread(_objectSpread({}, state.entryMeta), {}, {\n blockAutoEntrySwitch\n })\n });\n\n case SET_SERVICE_ENTRY_METADATA:\n const {\n entryMeta\n } = action;\n return _objectSpread(_objectSpread({}, state), {}, {\n entryMeta: _objectSpread(_objectSpread(_objectSpread({}, state.entryMeta), entryMeta), {}, {\n active: entryMeta.default,\n options: _objectSpread({}, entryMeta.options || {}),\n overrideOptions: {}\n })\n });\n\n case SET_ACTIVE_ENTRY_TYPE:\n const {\n entryType: active\n } = action;\n return _objectSpread(_objectSpread({}, state), {}, {\n entryMeta: _objectSpread(_objectSpread({}, state.entryMeta), {}, {\n active\n })\n });\n\n case SET_USER_ENTRY_TYPE:\n const {\n entryType: userSelected\n } = action;\n return _objectSpread(_objectSpread({}, state), {}, {\n entryMeta: _objectSpread(_objectSpread({}, state.entryMeta), {}, {\n userSelected\n })\n });\n\n case REGISTER_UPLOAD:\n return _objectSpread(_objectSpread({}, state), {}, {\n currentUploads: [...state.currentUploads, {\n id: action.fileId,\n name: action.fileName,\n progress: 1,\n uploading: true,\n complete: false,\n error: '',\n uploadHandle: action.uploadHandle\n }]\n });\n\n case SET_UPLOAD_PROGRESS:\n return _objectSpread(_objectSpread({}, state), {}, {\n currentUploads: state.currentUploads.map(fileUpload => {\n if (fileUpload.id === action.fileId) {\n return _objectSpread(_objectSpread({}, fileUpload), {}, {\n progress: action.progress,\n uploading: action.progress !== 100,\n uploadHandle: action.progress === 100 ? null : fileUpload.uploadHandle\n });\n }\n\n return fileUpload;\n })\n });\n\n case SET_UPLOAD_ERROR:\n return _objectSpread(_objectSpread({}, state), {}, {\n currentUploads: state.currentUploads.map(fileUpload => {\n if (fileUpload.id === action.fileId) {\n return _objectSpread(_objectSpread({}, fileUpload), {}, {\n error: action.errorText,\n progress: 0,\n uploading: false,\n uploadHandle: null\n });\n }\n\n return fileUpload;\n })\n });\n\n case SET_UPLOAD_COMPLETE:\n return _objectSpread(_objectSpread({}, state), {}, {\n currentUploads: state.currentUploads.map(fileUpload => {\n if (fileUpload.id === action.fileId) {\n return _objectSpread(_objectSpread({}, fileUpload), {}, {\n complete: true\n });\n }\n\n return fileUpload;\n })\n });\n\n case CLEAR_UPLOAD:\n return _objectSpread(_objectSpread({}, state), {}, {\n currentUploads: state.currentUploads.filter(fileUpload => fileUpload.id !== action.fileId)\n });\n\n case CLEAR_ALL_UPLOADS:\n return _objectSpread(_objectSpread({}, state), {}, {\n currentUploads: []\n });\n\n case SET_SEAMLY_CONTAINER_ELEMENT:\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n seamlyContainerElement: action.element\n });\n }\n\n default:\n return state;\n }\n};\n\n//# sourceURL=webpack://@seamly/web-ui/./src/javascripts/ui/utils/seamly-utils.js?");
|
|
2226
2314
|
|
|
2227
2315
|
/***/ }),
|
|
2228
2316
|
|