@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.
@@ -466,6 +466,10 @@
466
466
  !*** ./src/javascripts/ui/hooks/seamly-state-hooks.js ***!
467
467
  \********************************************************/
468
468
 
469
+ /*!********************************************************!*\
470
+ !*** ./src/javascripts/ui/hooks/use-seamly-actions.ts ***!
471
+ \********************************************************/
472
+
469
473
  /*!*********************************************************!*\
470
474
  !*** ./src/javascripts/api/errors/seamly-base-error.js ***!
471
475
  \*********************************************************/
@@ -6694,7 +6694,6 @@ exports.initializeApp = (0, toolkit_1.createAsyncThunk)('initializeApp', (_, {
6694
6694
  });
6695
6695
  }
6696
6696
 
6697
- dispatch((0, actions_2.setLocale)(locale));
6698
6697
  return {
6699
6698
  initialState: undefined,
6700
6699
  locale,
@@ -6731,7 +6730,15 @@ exports.resetApp = (0, toolkit_1.createAsyncThunk)('resetApp', (_, {
6731
6730
  yield api.clearStore();
6732
6731
  dispatch((0, actions_1.resetConfig)());
6733
6732
  yield dispatch((0, actions_1.initializeConfig)());
6734
- yield dispatch((0, exports.initializeApp)());
6733
+
6734
+ try {
6735
+ const {
6736
+ locale
6737
+ } = yield dispatch((0, exports.initializeApp)()).unwrap();
6738
+ yield dispatch((0, actions_2.setLocale)(locale));
6739
+ } catch (rejectedValueOrSerializedError) {// nothing to do
6740
+ }
6741
+
6735
6742
  dispatch((0, actions_3.initializeVisibility)());
6736
6743
  }));
6737
6744
 
@@ -6875,6 +6882,9 @@ exports.initializeConfig = (0, toolkit_1.createAsyncThunk)('initializeConfig', (
6875
6882
  startChatIcon
6876
6883
  } = yield api.getConfig();
6877
6884
  const locale = ((_a = config === null || config === void 0 ? void 0 : config.context) === null || _a === void 0 ? void 0 : _a.locale) || defaultLocale;
6885
+ const {
6886
+ connectWhenInView
6887
+ } = config;
6878
6888
  return {
6879
6889
  features,
6880
6890
  defaultLocale,
@@ -6882,7 +6892,8 @@ exports.initializeConfig = (0, toolkit_1.createAsyncThunk)('initializeConfig', (
6882
6892
  agentParticipant,
6883
6893
  userParticipant,
6884
6894
  startChatIcon,
6885
- locale
6895
+ locale,
6896
+ connectWhenInView
6886
6897
  };
6887
6898
  } catch (e) {
6888
6899
  const err = new seamly_unavailable_error_1.default();
@@ -7500,26 +7511,33 @@ exports.setLocale = void 0;
7500
7511
 
7501
7512
  const toolkit_1 = __webpack_require__(575);
7502
7513
 
7503
- const selectors_1 = __webpack_require__(7658);
7504
-
7505
7514
  exports.setLocale = (0, toolkit_1.createAsyncThunk)('setLocale', (locale, {
7506
- getState,
7507
7515
  extra: {
7508
7516
  api
7509
7517
  }
7510
7518
  }) => __awaiter(void 0, void 0, void 0, function* () {
7511
- const stateLocale = (0, selectors_1.selectLocale)(getState());
7512
-
7513
- if (locale === stateLocale) {
7514
- return undefined;
7515
- }
7516
-
7517
7519
  const response = yield api.getTranslations(locale);
7518
7520
  return {
7519
7521
  translations: response,
7520
7522
  locale
7521
7523
  };
7522
- }));
7524
+ }), {
7525
+ condition: (locale, {
7526
+ getState
7527
+ }) => {
7528
+ const {
7529
+ i18n: {
7530
+ isLoading,
7531
+ locale: stateLocale
7532
+ }
7533
+ } = getState();
7534
+
7535
+ if (locale === stateLocale || isLoading) {
7536
+ // Already fetched or in progress, don't need to re-fetch
7537
+ return false;
7538
+ }
7539
+ }
7540
+ });
7523
7541
 
7524
7542
  /***/ }),
7525
7543
 
@@ -7592,16 +7610,18 @@ function useI18n() {
7592
7610
  const translations = (0, react_redux_1.useSelector)(Selectors.selectTranslations);
7593
7611
  const locale = (0, react_redux_1.useSelector)(Selectors.selectLocale);
7594
7612
  const initialLocale = (0, react_redux_1.useSelector)(Selectors.selectInitialLocale);
7613
+ const isLoading = (0, react_redux_1.useSelector)(state => state.i18n.isLoading);
7595
7614
  const t = (0, hooks_1.useCallback)((key, values = {}) => {
7596
7615
  const translation = translations[key];
7597
7616
 
7598
7617
  if (!translation) {
7618
+ if (isLoading) return null;
7599
7619
  console.warn(`Translation key: ${key} is missing in locale: ${locale}`);
7600
7620
  return null;
7601
7621
  }
7602
7622
 
7603
7623
  return formatter.format(translation, values);
7604
- }, [translations, locale]);
7624
+ }, [translations, locale, isLoading]);
7605
7625
  return {
7606
7626
  t,
7607
7627
  locale,
@@ -7703,11 +7723,16 @@ exports.i18nSlice = (0, toolkit_1.createSlice)({
7703
7723
  payload
7704
7724
  }) => {
7705
7725
  state.initialLocale = payload.locale;
7726
+ }).addCase(actions_2.setLocale.pending, state => {
7727
+ state.isLoading = true;
7728
+ }).addCase(actions_2.setLocale.rejected, state => {
7729
+ state.isLoading = false;
7706
7730
  }).addCase(actions_2.setLocale.fulfilled, (state, {
7707
7731
  payload
7708
7732
  }) => {
7733
+ state.isLoading = false;
7734
+
7709
7735
  if (!(payload === null || payload === void 0 ? void 0 : payload.translations)) {
7710
- state.isLoading = false;
7711
7736
  return;
7712
7737
  }
7713
7738
 
@@ -9274,7 +9299,9 @@ exports.setShowInlineView = exports.setFromStorage = exports.visibilitySlice = v
9274
9299
 
9275
9300
  const toolkit_1 = __webpack_require__(575);
9276
9301
 
9277
- const actions_1 = __webpack_require__(5234);
9302
+ const actions_1 = __webpack_require__(915);
9303
+
9304
+ const actions_2 = __webpack_require__(5234);
9278
9305
 
9279
9306
  const constants_1 = __webpack_require__(2629);
9280
9307
 
@@ -9294,12 +9321,19 @@ exports.visibilitySlice = (0, toolkit_1.createSlice)({
9294
9321
  }
9295
9322
  },
9296
9323
  extraReducers: builder => {
9297
- builder.addCase(actions_1.setVisibility.fulfilled, (state, {
9324
+ builder.addCase(actions_2.setVisibility.fulfilled, (state, {
9298
9325
  payload: visibility
9299
9326
  }) => {
9300
9327
  if (visibility) {
9301
9328
  state.visibility = visibility;
9302
9329
  }
9330
+ }).addCase(actions_1.initializeConfig.fulfilled, (state, {
9331
+ payload
9332
+ }) => {
9333
+ // We only want to (always) show the inlineView when connectWhenInView is disabled
9334
+ if (!payload.connectWhenInView) {
9335
+ state.showInlineView = !payload.connectWhenInView;
9336
+ }
9303
9337
  });
9304
9338
  }
9305
9339
  });
@@ -9324,7 +9358,7 @@ var __importDefault = this && this.__importDefault || function (mod) {
9324
9358
  Object.defineProperty(exports, "__esModule", ({
9325
9359
  value: true
9326
9360
  }));
9327
- 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
9361
+ 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
9328
9362
 
9329
9363
  const initialize_api_1 = __importDefault(__webpack_require__(3022)); // Used by: Client
9330
9364
 
@@ -9664,12 +9698,6 @@ Object.defineProperty(exports, "useSeamlyCommands", ({
9664
9698
  return seamly_hooks_1.useSeamlyCommands;
9665
9699
  }
9666
9700
  }));
9667
- Object.defineProperty(exports, "useSeamlyDispatchContext", ({
9668
- enumerable: true,
9669
- get: function () {
9670
- return seamly_hooks_1.useSeamlyDispatchContext;
9671
- }
9672
- }));
9673
9701
  Object.defineProperty(exports, "useSeamlyEventStream", ({
9674
9702
  enumerable: true,
9675
9703
  get: function () {
@@ -9719,6 +9747,77 @@ Object.defineProperty(exports, "eventTypes", ({
9719
9747
  }
9720
9748
  }));
9721
9749
 
9750
+ var use_seamly_actions_1 = __webpack_require__(6870);
9751
+
9752
+ Object.defineProperty(exports, "useSeamlyActions", ({
9753
+ enumerable: true,
9754
+ get: function () {
9755
+ return use_seamly_actions_1.useSeamlyActions;
9756
+ }
9757
+ }));
9758
+
9759
+ /***/ }),
9760
+
9761
+ /***/ 6870:
9762
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9763
+
9764
+ "use strict";
9765
+
9766
+
9767
+ Object.defineProperty(exports, "__esModule", ({
9768
+ value: true
9769
+ }));
9770
+ exports.useSeamlyActions = void 0;
9771
+
9772
+ const slice_1 = __webpack_require__(1153);
9773
+
9774
+ const react_redux_1 = __webpack_require__(6113);
9775
+
9776
+ const useSeamlyActions = () => {
9777
+ const dispatch = (0, react_redux_1.useDispatch)();
9778
+ return {
9779
+ addEvent: event => dispatch((0, slice_1.addEvent)(event)),
9780
+ clearEvents: () => dispatch((0, slice_1.clearEvents)()),
9781
+ setHistory: history => dispatch((0, slice_1.setHistory)(history)),
9782
+ setEventsRead: payload => dispatch((0, slice_1.setEventsRead)(payload)),
9783
+ setLoadedImageEventIds: ids => dispatch((0, slice_1.setLoadedImageEventIds)(ids)),
9784
+ ackEvent: event => dispatch((0, slice_1.ackEvent)(event)),
9785
+ setIsLoading: isLoading => dispatch((0, slice_1.setIsLoading)(isLoading)),
9786
+ setParticipant: participant => dispatch((0, slice_1.setParticipant)(participant)),
9787
+ setHeaderTitle: title => dispatch((0, slice_1.setHeaderTitle)(title)),
9788
+ setHeaderSubTitle: title => dispatch((0, slice_1.setHeaderSubTitle)(title)),
9789
+ resetHistoryLoadedFlag: () => dispatch((0, slice_1.resetHistoryLoadedFlag)()),
9790
+ setActiveService: () => dispatch((0, slice_1.setActiveService)()),
9791
+ initIdleDetachCountdown: payload => dispatch((0, slice_1.initIdleDetachCountdown)(payload)),
9792
+ decrementIdleDetachCountdownCounter: () => dispatch((0, slice_1.decrementIdleDetachCountdownCounter)()),
9793
+ stopIdleDetachCountdownCounter: () => dispatch((0, slice_1.stopIdleDetachCountdownCounter)()),
9794
+ clearIdleDetachCountdown: () => dispatch((0, slice_1.clearIdleDetachCountdown)()),
9795
+ initResumeConversationPrompt: () => dispatch((0, slice_1.initResumeConversationPrompt)()),
9796
+ clearResumeConversationPrompt: () => dispatch((0, slice_1.clearResumeConversationPrompt)()),
9797
+ setServiceDataItem: payload => dispatch((0, slice_1.setServiceDataItem)(payload)),
9798
+ setFeatures: payload => dispatch((0, slice_1.setFeatures)(payload)),
9799
+ setFeatureEnabledState: payload => dispatch((0, slice_1.setFeatureEnabledState)(payload)),
9800
+ clearFeatures: () => dispatch((0, slice_1.clearFeatures)()),
9801
+ setInitialState: initialState => dispatch((0, slice_1.setInitialState)(initialState)),
9802
+ setUserSelectedOptions: payload => dispatch((0, slice_1.setUserSelectedOptions)(payload)),
9803
+ setUserSelectedOption: payload => dispatch((0, slice_1.setUserSelectedOption)(payload)),
9804
+ showOption: payload => dispatch((0, slice_1.showOption)(payload)),
9805
+ hideOption: () => dispatch((0, slice_1.hideOption)()),
9806
+ setServiceEntryMetadata: payload => dispatch((0, slice_1.setServiceEntryMetadata)(payload)),
9807
+ setBlockAutoEntrySwitch: payload => dispatch((0, slice_1.setBlockAutoEntrySwitch)(payload)),
9808
+ setActiveEntryType: payload => dispatch((0, slice_1.setActiveEntryType)(payload)),
9809
+ setUserEntryType: payload => dispatch((0, slice_1.setUserEntryType)(payload)),
9810
+ registerUpload: payload => dispatch((0, slice_1.registerUpload)(payload)),
9811
+ setUploadProgress: payload => dispatch((0, slice_1.setUploadProgress)(payload)),
9812
+ setUploadComplete: payload => dispatch((0, slice_1.setUploadComplete)(payload)),
9813
+ setUploadError: payload => dispatch((0, slice_1.setUploadError)(payload)),
9814
+ clearAllUploads: () => dispatch((0, slice_1.clearAllUploads)()),
9815
+ setSeamlyContainerElement: payload => dispatch((0, slice_1.setSeamlyContainerElement)(payload))
9816
+ };
9817
+ };
9818
+
9819
+ exports.useSeamlyActions = useSeamlyActions;
9820
+
9722
9821
  /***/ }),
9723
9822
 
9724
9823
  /***/ 5740:
@@ -11860,7 +11959,7 @@ class API {
11860
11959
  return {
11861
11960
  clientName: "@seamly/web-ui",
11862
11961
  clientVariant: this.layoutMode,
11863
- clientVersion: "20.7.0",
11962
+ clientVersion: "20.8.0",
11864
11963
  currentUrl: window.location.toString(),
11865
11964
  screenResolution: `${window.screen.width}x${window.screen.height}`,
11866
11965
  timezone: getTimeZone(),
@@ -12037,6 +12136,7 @@ function createI18nMiddleware({
12037
12136
  case domains_store_slice__WEBPACK_IMPORTED_MODULE_3__.setInitialState.type:
12038
12137
  if (payload?.translation?.enabled) {
12039
12138
  dispatch((0,domains_translations_slice__WEBPACK_IMPORTED_MODULE_4__.enableTranslation)(payload.translation.locale));
12139
+ dispatch((0,domains_i18n_actions__WEBPACK_IMPORTED_MODULE_1__.setLocale)(payload.locale));
12040
12140
  }
12041
12141
 
12042
12142
  break;
@@ -12190,6 +12290,8 @@ var actions = __webpack_require__(4134);
12190
12290
  var config_actions = __webpack_require__(915);
12191
12291
  // EXTERNAL MODULE: ./src/javascripts/domains/config/slice.ts
12192
12292
  var slice = __webpack_require__(3394);
12293
+ // EXTERNAL MODULE: ./src/javascripts/domains/i18n/actions.ts
12294
+ var i18n_actions = __webpack_require__(59);
12193
12295
  // EXTERNAL MODULE: ./src/javascripts/domains/store/index.ts
12194
12296
  var domains_store = __webpack_require__(2752);
12195
12297
  // EXTERNAL MODULE: ./src/javascripts/domains/visibility/actions.ts
@@ -13182,6 +13284,7 @@ function engine_objectWithoutPropertiesLoose(source, excluded) { if (source == n
13182
13284
 
13183
13285
 
13184
13286
 
13287
+
13185
13288
  class Engine {
13186
13289
  constructor(config, externalApi) {
13187
13290
  const {
@@ -13233,7 +13336,15 @@ class Engine {
13233
13336
  });
13234
13337
  store.dispatch((0,slice.setConfig)(renderConfig));
13235
13338
  await store.dispatch((0,config_actions.initializeConfig)());
13236
- await store.dispatch((0,actions.initializeApp)());
13339
+
13340
+ try {
13341
+ const {
13342
+ locale
13343
+ } = await store.dispatch((0,actions.initializeApp)()).unwrap();
13344
+ await store.dispatch((0,i18n_actions.setLocale)(locale));
13345
+ } catch (rejectedValueOrSerializedError) {// nothing to do
13346
+ }
13347
+
13237
13348
  store.dispatch((0,visibility_actions.initializeVisibility)());
13238
13349
 
13239
13350
  if (View) {
@@ -17833,7 +17944,7 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
17833
17944
 
17834
17945
 
17835
17946
 
17836
- const controlName = 'userText';
17947
+ const controlName = 'textMessageEntry';
17837
17948
  function TextEntry(_ref) {
17838
17949
  let props = _extends({}, _ref);
17839
17950
 
@@ -21610,7 +21721,6 @@ __webpack_require__.d(__webpack_exports__, {
21610
21721
  "useSeamlyContainerElement": () => (/* reexport */ focus_helper_hooks/* useSeamlyContainerElement */.dW),
21611
21722
  "useSeamlyConversationUrl": () => (/* reexport */ seamly_api_hooks/* useSeamlyConversationUrl */.Af),
21612
21723
  "useSeamlyCurrentAgent": () => (/* reexport */ seamly_state_hooks.useSeamlyCurrentAgent),
21613
- "useSeamlyDispatchContext": () => (/* reexport */ es.useDispatch),
21614
21724
  "useSeamlyEventStream": () => (/* binding */ useSeamlyEventStream),
21615
21725
  "useSeamlyHeaderData": () => (/* reexport */ seamly_state_hooks.useSeamlyHeaderData),
21616
21726
  "useSeamlyIdleDetachCountdown": () => (/* reexport */ use_seamly_idle_detach_countdown/* default */.Z),
@@ -21633,8 +21743,6 @@ __webpack_require__.d(__webpack_exports__, {
21633
21743
 
21634
21744
  // EXTERNAL MODULE: external "preact/hooks"
21635
21745
  var hooks_ = __webpack_require__(9207);
21636
- // EXTERNAL MODULE: ./node_modules/react-redux/es/index.js + 23 modules
21637
- var es = __webpack_require__(6113);
21638
21746
  // EXTERNAL MODULE: ./src/javascripts/ui/hooks/seamly-api-hooks.js
21639
21747
  var seamly_api_hooks = __webpack_require__(6591);
21640
21748
  // EXTERNAL MODULE: ./src/javascripts/ui/hooks/focus-helper-hooks.js
@@ -21643,6 +21751,8 @@ var focus_helper_hooks = __webpack_require__(8956);
21643
21751
  var component_helper_hooks = __webpack_require__(3357);
21644
21752
  // EXTERNAL MODULE: ./src/javascripts/domains/store/slice.ts
21645
21753
  var slice = __webpack_require__(1153);
21754
+ // EXTERNAL MODULE: ./node_modules/react-redux/es/index.js + 23 modules
21755
+ var es = __webpack_require__(6113);
21646
21756
  // EXTERNAL MODULE: ./src/javascripts/ui/components/core/seamly-file-upload-context.js
21647
21757
  var seamly_file_upload_context = __webpack_require__(641);
21648
21758
  // EXTERNAL MODULE: ./src/javascripts/ui/hooks/seamly-state-hooks.js
@@ -21840,7 +21950,6 @@ var use_seamly_resume_conversation_prompt = __webpack_require__(1256);
21840
21950
  // EXTERNAL MODULE: ./src/javascripts/ui/hooks/utility-hooks.js
21841
21951
  var utility_hooks = __webpack_require__(5029);
21842
21952
  ;// CONCATENATED MODULE: ./src/javascripts/ui/hooks/seamly-hooks.js
21843
-
21844
21953
  // Import extracted hooks here for use inside this file
21845
21954
 
21846
21955
  // Export extracted hooks here,
@@ -21859,7 +21968,6 @@ var utility_hooks = __webpack_require__(5029);
21859
21968
 
21860
21969
 
21861
21970
 
21862
-
21863
21971
  // This hook isn't used within the core
21864
21972
  // But it is used in implementations
21865
21973
  // and imported directly from this file