@seamly/web-ui 20.8.0-beta.4 → 20.8.0

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.
@@ -6883,7 +6883,6 @@ exports.initializeApp = (0, toolkit_1.createAsyncThunk)('initializeApp', (_, _re
6883
6883
  });
6884
6884
  }
6885
6885
 
6886
- dispatch((0, actions_2.setLocale)(locale));
6887
6886
  return {
6888
6887
  initialState: undefined,
6889
6888
  locale,
@@ -6923,7 +6922,15 @@ exports.resetApp = (0, toolkit_1.createAsyncThunk)('resetApp', (_, _ref2) => {
6923
6922
  yield api.clearStore();
6924
6923
  dispatch((0, actions_1.resetConfig)());
6925
6924
  yield dispatch((0, actions_1.initializeConfig)());
6926
- yield dispatch((0, exports.initializeApp)());
6925
+
6926
+ try {
6927
+ const {
6928
+ locale
6929
+ } = yield dispatch((0, exports.initializeApp)()).unwrap();
6930
+ yield dispatch((0, actions_2.setLocale)(locale));
6931
+ } catch (rejectedValueOrSerializedError) {// nothing to do
6932
+ }
6933
+
6927
6934
  dispatch((0, actions_3.initializeVisibility)());
6928
6935
  });
6929
6936
  });
@@ -7090,6 +7097,9 @@ exports.initializeConfig = (0, toolkit_1.createAsyncThunk)('initializeConfig', (
7090
7097
  startChatIcon
7091
7098
  } = yield api.getConfig();
7092
7099
  const locale = ((_a = config === null || config === void 0 ? void 0 : config.context) === null || _a === void 0 ? void 0 : _a.locale) || defaultLocale;
7100
+ const {
7101
+ connectWhenInView
7102
+ } = config;
7093
7103
  return {
7094
7104
  features,
7095
7105
  defaultLocale,
@@ -7097,7 +7107,8 @@ exports.initializeConfig = (0, toolkit_1.createAsyncThunk)('initializeConfig', (
7097
7107
  agentParticipant,
7098
7108
  userParticipant,
7099
7109
  startChatIcon,
7100
- locale
7110
+ locale,
7111
+ connectWhenInView
7101
7112
  };
7102
7113
  } catch (e) {
7103
7114
  const err = new seamly_unavailable_error_1.default();
@@ -7818,28 +7829,36 @@ exports.setLocale = void 0;
7818
7829
 
7819
7830
  const toolkit_1 = __webpack_require__(40575);
7820
7831
 
7821
- const selectors_1 = __webpack_require__(77658);
7822
-
7823
7832
  exports.setLocale = (0, toolkit_1.createAsyncThunk)('setLocale', (locale, _ref) => {
7824
7833
  let {
7825
- getState,
7826
7834
  extra: {
7827
7835
  api
7828
7836
  }
7829
7837
  } = _ref;
7830
7838
  return __awaiter(void 0, void 0, void 0, function* () {
7831
- const stateLocale = (0, selectors_1.selectLocale)(getState());
7832
-
7833
- if (locale === stateLocale) {
7834
- return undefined;
7835
- }
7836
-
7837
7839
  const response = yield api.getTranslations(locale);
7838
7840
  return {
7839
7841
  translations: response,
7840
7842
  locale
7841
7843
  };
7842
7844
  });
7845
+ }, {
7846
+ condition: (locale, _ref2) => {
7847
+ let {
7848
+ getState
7849
+ } = _ref2;
7850
+ const {
7851
+ i18n: {
7852
+ isLoading,
7853
+ locale: stateLocale
7854
+ }
7855
+ } = getState();
7856
+
7857
+ if (locale === stateLocale || isLoading) {
7858
+ // Already fetched or in progress, don't need to re-fetch
7859
+ return false;
7860
+ }
7861
+ }
7843
7862
  });
7844
7863
 
7845
7864
  /***/ }),
@@ -7921,17 +7940,19 @@ function useI18n() {
7921
7940
  const translations = (0, react_redux_1.useSelector)(Selectors.selectTranslations);
7922
7941
  const locale = (0, react_redux_1.useSelector)(Selectors.selectLocale);
7923
7942
  const initialLocale = (0, react_redux_1.useSelector)(Selectors.selectInitialLocale);
7943
+ const isLoading = (0, react_redux_1.useSelector)(state => state.i18n.isLoading);
7924
7944
  const t = (0, hooks_1.useCallback)(function (key) {
7925
7945
  let values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7926
7946
  const translation = translations[key];
7927
7947
 
7928
7948
  if (!translation) {
7949
+ if (isLoading) return null;
7929
7950
  console.warn(`Translation key: ${key} is missing in locale: ${locale}`);
7930
7951
  return null;
7931
7952
  }
7932
7953
 
7933
7954
  return formatter.format(translation, values);
7934
- }, [translations, locale]);
7955
+ }, [translations, locale, isLoading]);
7935
7956
  return {
7936
7957
  t,
7937
7958
  locale,
@@ -8067,15 +8088,19 @@ exports.i18nSlice = (0, toolkit_1.createSlice)({
8067
8088
  payload
8068
8089
  } = _ref2;
8069
8090
  state.initialLocale = payload.locale;
8091
+ }).addCase(actions_2.setLocale.pending, state => {
8092
+ state.isLoading = true;
8093
+ }).addCase(actions_2.setLocale.rejected, state => {
8094
+ state.isLoading = false;
8070
8095
  }).addCase(actions_2.setLocale.fulfilled, (state, _ref3) => {
8071
8096
  var _context, _context2;
8072
8097
 
8073
8098
  let {
8074
8099
  payload
8075
8100
  } = _ref3;
8101
+ state.isLoading = false;
8076
8102
 
8077
8103
  if (!(payload === null || payload === void 0 ? void 0 : payload.translations)) {
8078
- state.isLoading = false;
8079
8104
  return;
8080
8105
  }
8081
8106
 
@@ -9870,7 +9895,9 @@ exports.setShowInlineView = exports.setFromStorage = exports.visibilitySlice = v
9870
9895
 
9871
9896
  const toolkit_1 = __webpack_require__(40575);
9872
9897
 
9873
- const actions_1 = __webpack_require__(65234);
9898
+ const actions_1 = __webpack_require__(60915);
9899
+
9900
+ const actions_2 = __webpack_require__(65234);
9874
9901
 
9875
9902
  const constants_1 = __webpack_require__(12629);
9876
9903
 
@@ -9890,7 +9917,7 @@ exports.visibilitySlice = (0, toolkit_1.createSlice)({
9890
9917
  }
9891
9918
  },
9892
9919
  extraReducers: builder => {
9893
- builder.addCase(actions_1.setVisibility.fulfilled, (state, _ref) => {
9920
+ builder.addCase(actions_2.setVisibility.fulfilled, (state, _ref) => {
9894
9921
  let {
9895
9922
  payload: visibility
9896
9923
  } = _ref;
@@ -9898,6 +9925,15 @@ exports.visibilitySlice = (0, toolkit_1.createSlice)({
9898
9925
  if (visibility) {
9899
9926
  state.visibility = visibility;
9900
9927
  }
9928
+ }).addCase(actions_1.initializeConfig.fulfilled, (state, _ref2) => {
9929
+ let {
9930
+ payload
9931
+ } = _ref2;
9932
+
9933
+ // We only want to (always) show the inlineView when connectWhenInView is disabled
9934
+ if (!payload.connectWhenInView) {
9935
+ state.showInlineView = !payload.connectWhenInView;
9936
+ }
9901
9937
  });
9902
9938
  }
9903
9939
  });
@@ -9925,7 +9961,7 @@ _Object$defineProperty(exports, "__esModule", {
9925
9961
  value: true
9926
9962
  });
9927
9963
 
9928
- exports.eventTypes = exports.getUrlSearchString = exports.getUrlParams = exports.useSeamlyOptions = exports.useSeamlyMessageContainerClassNames = exports.useSeamlyIdleDetachCountdown = exports.useSeamlyEventStream = exports.useSeamlyDispatchContext = exports.useSeamlyCommands = exports.useSeamlyChat = exports.useGeneratedId = exports.useEvents = exports.DeprecatedView = exports.View = exports.Interrupt = exports.Icon = exports.Header = exports.ChatFrame = exports.Chat = exports.AgentInfo = exports.EntryContainer = exports.DeprecatedToggleButton = exports.SeamlyLiveRegionContext = exports.SeamlyEventBusContext = exports.SeamlyApiContext = exports.MessageContainer = exports.Text = exports.EventParticipant = exports.useChoicePrompt = exports.Conversation = exports.ComponentFilter = exports.randomId = exports.ExternalApi = exports.Engine = exports.className = exports.calculateVisibility = exports.visibilityStates = exports.useSeamlyVisibility = exports.useTranslationsContainer = exports.useTranslations = exports.useTranslatedEventData = exports.useI18n = exports.useSeamlyConfig = exports.SeamlyOfflineError = exports.SeamlyGeneralError = exports.SeamlyStoreProvider = exports.API = void 0; // Used by: Client
9964
+ exports.useSeamlyActions = exports.eventTypes = exports.getUrlSearchString = exports.getUrlParams = exports.useSeamlyOptions = exports.useSeamlyMessageContainerClassNames = exports.useSeamlyIdleDetachCountdown = exports.useSeamlyEventStream = exports.useSeamlyCommands = exports.useSeamlyChat = exports.useGeneratedId = exports.useEvents = exports.DeprecatedView = exports.View = exports.Interrupt = exports.Icon = exports.Header = exports.ChatFrame = exports.Chat = exports.AgentInfo = exports.EntryContainer = exports.DeprecatedToggleButton = exports.SeamlyLiveRegionContext = exports.SeamlyEventBusContext = exports.SeamlyApiContext = exports.MessageContainer = exports.Text = exports.EventParticipant = exports.useChoicePrompt = exports.Conversation = exports.ComponentFilter = exports.randomId = exports.ExternalApi = exports.Engine = exports.className = exports.calculateVisibility = exports.visibilityStates = exports.useSeamlyVisibility = exports.useTranslationsContainer = exports.useTranslations = exports.useTranslatedEventData = exports.useI18n = exports.useSeamlyConfig = exports.SeamlyOfflineError = exports.SeamlyGeneralError = exports.SeamlyStoreProvider = exports.API = void 0; // Used by: Client
9929
9965
 
9930
9966
  const initialize_api_1 = __importDefault(__webpack_require__(13022)); // Used by: Client
9931
9967
 
@@ -10301,13 +10337,6 @@ _Object$defineProperty(exports, "useSeamlyCommands", {
10301
10337
  }
10302
10338
  });
10303
10339
 
10304
- _Object$defineProperty(exports, "useSeamlyDispatchContext", {
10305
- enumerable: true,
10306
- get: function () {
10307
- return seamly_hooks_1.useSeamlyDispatchContext;
10308
- }
10309
- });
10310
-
10311
10340
  _Object$defineProperty(exports, "useSeamlyEventStream", {
10312
10341
  enumerable: true,
10313
10342
  get: function () {
@@ -10363,6 +10392,80 @@ _Object$defineProperty(exports, "eventTypes", {
10363
10392
  }
10364
10393
  });
10365
10394
 
10395
+ var use_seamly_actions_1 = __webpack_require__(96870);
10396
+
10397
+ _Object$defineProperty(exports, "useSeamlyActions", {
10398
+ enumerable: true,
10399
+ get: function () {
10400
+ return use_seamly_actions_1.useSeamlyActions;
10401
+ }
10402
+ });
10403
+
10404
+ /***/ }),
10405
+
10406
+ /***/ 96870:
10407
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
10408
+
10409
+ "use strict";
10410
+
10411
+
10412
+ var _Object$defineProperty = __webpack_require__(96718);
10413
+
10414
+ _Object$defineProperty(exports, "__esModule", {
10415
+ value: true
10416
+ });
10417
+
10418
+ exports.useSeamlyActions = void 0;
10419
+
10420
+ const slice_1 = __webpack_require__(11153);
10421
+
10422
+ const react_redux_1 = __webpack_require__(36113);
10423
+
10424
+ const useSeamlyActions = () => {
10425
+ const dispatch = (0, react_redux_1.useDispatch)();
10426
+ return {
10427
+ addEvent: event => dispatch((0, slice_1.addEvent)(event)),
10428
+ clearEvents: () => dispatch((0, slice_1.clearEvents)()),
10429
+ setHistory: history => dispatch((0, slice_1.setHistory)(history)),
10430
+ setEventsRead: payload => dispatch((0, slice_1.setEventsRead)(payload)),
10431
+ setLoadedImageEventIds: ids => dispatch((0, slice_1.setLoadedImageEventIds)(ids)),
10432
+ ackEvent: event => dispatch((0, slice_1.ackEvent)(event)),
10433
+ setIsLoading: isLoading => dispatch((0, slice_1.setIsLoading)(isLoading)),
10434
+ setParticipant: participant => dispatch((0, slice_1.setParticipant)(participant)),
10435
+ setHeaderTitle: title => dispatch((0, slice_1.setHeaderTitle)(title)),
10436
+ setHeaderSubTitle: title => dispatch((0, slice_1.setHeaderSubTitle)(title)),
10437
+ resetHistoryLoadedFlag: () => dispatch((0, slice_1.resetHistoryLoadedFlag)()),
10438
+ setActiveService: () => dispatch((0, slice_1.setActiveService)()),
10439
+ initIdleDetachCountdown: payload => dispatch((0, slice_1.initIdleDetachCountdown)(payload)),
10440
+ decrementIdleDetachCountdownCounter: () => dispatch((0, slice_1.decrementIdleDetachCountdownCounter)()),
10441
+ stopIdleDetachCountdownCounter: () => dispatch((0, slice_1.stopIdleDetachCountdownCounter)()),
10442
+ clearIdleDetachCountdown: () => dispatch((0, slice_1.clearIdleDetachCountdown)()),
10443
+ initResumeConversationPrompt: () => dispatch((0, slice_1.initResumeConversationPrompt)()),
10444
+ clearResumeConversationPrompt: () => dispatch((0, slice_1.clearResumeConversationPrompt)()),
10445
+ setServiceDataItem: payload => dispatch((0, slice_1.setServiceDataItem)(payload)),
10446
+ setFeatures: payload => dispatch((0, slice_1.setFeatures)(payload)),
10447
+ setFeatureEnabledState: payload => dispatch((0, slice_1.setFeatureEnabledState)(payload)),
10448
+ clearFeatures: () => dispatch((0, slice_1.clearFeatures)()),
10449
+ setInitialState: initialState => dispatch((0, slice_1.setInitialState)(initialState)),
10450
+ setUserSelectedOptions: payload => dispatch((0, slice_1.setUserSelectedOptions)(payload)),
10451
+ setUserSelectedOption: payload => dispatch((0, slice_1.setUserSelectedOption)(payload)),
10452
+ showOption: payload => dispatch((0, slice_1.showOption)(payload)),
10453
+ hideOption: () => dispatch((0, slice_1.hideOption)()),
10454
+ setServiceEntryMetadata: payload => dispatch((0, slice_1.setServiceEntryMetadata)(payload)),
10455
+ setBlockAutoEntrySwitch: payload => dispatch((0, slice_1.setBlockAutoEntrySwitch)(payload)),
10456
+ setActiveEntryType: payload => dispatch((0, slice_1.setActiveEntryType)(payload)),
10457
+ setUserEntryType: payload => dispatch((0, slice_1.setUserEntryType)(payload)),
10458
+ registerUpload: payload => dispatch((0, slice_1.registerUpload)(payload)),
10459
+ setUploadProgress: payload => dispatch((0, slice_1.setUploadProgress)(payload)),
10460
+ setUploadComplete: payload => dispatch((0, slice_1.setUploadComplete)(payload)),
10461
+ setUploadError: payload => dispatch((0, slice_1.setUploadError)(payload)),
10462
+ clearAllUploads: () => dispatch((0, slice_1.clearAllUploads)()),
10463
+ setSeamlyContainerElement: payload => dispatch((0, slice_1.setSeamlyContainerElement)(payload))
10464
+ };
10465
+ };
10466
+
10467
+ exports.useSeamlyActions = useSeamlyActions;
10468
+
10366
10469
  /***/ }),
10367
10470
 
10368
10471
  /***/ 45740:
@@ -12648,7 +12751,7 @@ class API {
12648
12751
  return {
12649
12752
  clientName: "@seamly/web-ui",
12650
12753
  clientVariant: this.layoutMode,
12651
- clientVersion: "20.7.0",
12754
+ clientVersion: "20.8.0",
12652
12755
  currentUrl: window.location.toString(),
12653
12756
  screenResolution: `${window.screen.width}x${window.screen.height}`,
12654
12757
  timezone: getTimeZone(),
@@ -12867,6 +12970,7 @@ function createI18nMiddleware(_ref) {
12867
12970
  case domains_store_slice__WEBPACK_IMPORTED_MODULE_3__.setInitialState.type:
12868
12971
  if (payload !== null && payload !== void 0 && (_payload$translation2 = payload.translation) !== null && _payload$translation2 !== void 0 && _payload$translation2.enabled) {
12869
12972
  dispatch((0,domains_translations_slice__WEBPACK_IMPORTED_MODULE_4__.enableTranslation)(payload.translation.locale));
12973
+ dispatch((0,domains_i18n_actions__WEBPACK_IMPORTED_MODULE_1__.setLocale)(payload.locale));
12870
12974
  }
12871
12975
 
12872
12976
  break;
@@ -13081,6 +13185,8 @@ var actions = __webpack_require__(64134);
13081
13185
  var config_actions = __webpack_require__(60915);
13082
13186
  // EXTERNAL MODULE: ./src/javascripts/domains/config/slice.ts
13083
13187
  var slice = __webpack_require__(83394);
13188
+ // EXTERNAL MODULE: ./src/javascripts/domains/i18n/actions.ts
13189
+ var i18n_actions = __webpack_require__(30059);
13084
13190
  // EXTERNAL MODULE: ./src/javascripts/domains/store/index.ts
13085
13191
  var domains_store = __webpack_require__(92752);
13086
13192
  // EXTERNAL MODULE: ./src/javascripts/domains/visibility/actions.ts
@@ -14145,6 +14251,7 @@ function engine_objectSpread(target) { for (var i = 1; i < arguments.length; i++
14145
14251
 
14146
14252
 
14147
14253
 
14254
+
14148
14255
  class Engine {
14149
14256
  constructor(config, externalApi) {
14150
14257
  const {
@@ -14196,7 +14303,15 @@ class Engine {
14196
14303
  });
14197
14304
  store.dispatch((0,slice.setConfig)(renderConfig));
14198
14305
  await store.dispatch((0,config_actions.initializeConfig)());
14199
- await store.dispatch((0,actions.initializeApp)());
14306
+
14307
+ try {
14308
+ const {
14309
+ locale
14310
+ } = await store.dispatch((0,actions.initializeApp)()).unwrap();
14311
+ await store.dispatch((0,i18n_actions.setLocale)(locale));
14312
+ } catch (rejectedValueOrSerializedError) {// nothing to do
14313
+ }
14314
+
14200
14315
  store.dispatch((0,visibility_actions.initializeVisibility)());
14201
14316
 
14202
14317
  if (View) {
@@ -19182,7 +19297,7 @@ function text_entry_objectSpread(target) { for (var i = 1; i < arguments.length;
19182
19297
 
19183
19298
 
19184
19299
 
19185
- const controlName = 'userText';
19300
+ const controlName = 'textMessageEntry';
19186
19301
  function TextEntry(_ref) {
19187
19302
  let props = _extends({}, _ref);
19188
19303
 
@@ -23253,7 +23368,6 @@ __webpack_require__.d(__webpack_exports__, {
23253
23368
  "useSeamlyContainerElement": function() { return /* reexport */ focus_helper_hooks/* useSeamlyContainerElement */.dW; },
23254
23369
  "useSeamlyConversationUrl": function() { return /* reexport */ seamly_api_hooks/* useSeamlyConversationUrl */.Af; },
23255
23370
  "useSeamlyCurrentAgent": function() { return /* reexport */ seamly_state_hooks.useSeamlyCurrentAgent; },
23256
- "useSeamlyDispatchContext": function() { return /* reexport */ es.useDispatch; },
23257
23371
  "useSeamlyEventStream": function() { return /* binding */ useSeamlyEventStream; },
23258
23372
  "useSeamlyHeaderData": function() { return /* reexport */ seamly_state_hooks.useSeamlyHeaderData; },
23259
23373
  "useSeamlyIdleDetachCountdown": function() { return /* reexport */ use_seamly_idle_detach_countdown/* default */.Z; },
@@ -23279,8 +23393,6 @@ var filter = __webpack_require__(14418);
23279
23393
  var filter_default = /*#__PURE__*/__webpack_require__.n(filter);
23280
23394
  // EXTERNAL MODULE: ./node_modules/preact/hooks/dist/hooks.module.js
23281
23395
  var hooks_module = __webpack_require__(30396);
23282
- // EXTERNAL MODULE: ./node_modules/react-redux/es/index.js + 23 modules
23283
- var es = __webpack_require__(36113);
23284
23396
  // EXTERNAL MODULE: ./src/javascripts/ui/hooks/seamly-api-hooks.js
23285
23397
  var seamly_api_hooks = __webpack_require__(76591);
23286
23398
  // EXTERNAL MODULE: ./src/javascripts/ui/hooks/focus-helper-hooks.js
@@ -23318,6 +23430,8 @@ var every = __webpack_require__(2250);
23318
23430
  var every_default = /*#__PURE__*/__webpack_require__.n(every);
23319
23431
  // EXTERNAL MODULE: ./src/javascripts/domains/store/slice.ts
23320
23432
  var slice = __webpack_require__(11153);
23433
+ // EXTERNAL MODULE: ./node_modules/react-redux/es/index.js + 23 modules
23434
+ var es = __webpack_require__(36113);
23321
23435
  // EXTERNAL MODULE: ./src/javascripts/ui/components/core/seamly-file-upload-context.js
23322
23436
  var seamly_file_upload_context = __webpack_require__(60641);
23323
23437
  // EXTERNAL MODULE: ./src/javascripts/ui/hooks/seamly-state-hooks.js
@@ -23542,7 +23656,6 @@ var use_seamly_resume_conversation_prompt = __webpack_require__(61256);
23542
23656
  var utility_hooks = __webpack_require__(25029);
23543
23657
  ;// CONCATENATED MODULE: ./src/javascripts/ui/hooks/seamly-hooks.js
23544
23658
 
23545
-
23546
23659
  // Import extracted hooks here for use inside this file
23547
23660
 
23548
23661
  // Export extracted hooks here,
@@ -23561,7 +23674,6 @@ var utility_hooks = __webpack_require__(25029);
23561
23674
 
23562
23675
 
23563
23676
 
23564
-
23565
23677
  // This hook isn't used within the core
23566
23678
  // But it is used in implementations
23567
23679
  // and imported directly from this file