@mirai/core 0.4.244 → 0.4.246

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.
Files changed (103) hide show
  1. package/build/components/Chat/Chat.constants.js +6 -3
  2. package/build/components/Chat/Chat.constants.js.map +1 -1
  3. package/build/components/Chat/Chat.js +48 -35
  4. package/build/components/Chat/Chat.js.map +1 -1
  5. package/build/components/Chat/Chat.l10n.js +2 -20
  6. package/build/components/Chat/Chat.l10n.js.map +1 -1
  7. package/build/components/Chat/Chat.module.css +14 -189
  8. package/build/components/Chat/components/Avatar/Avatar.module.css +3 -2
  9. package/build/components/Chat/{Chat.ButtonAvatar.js → components/ButtonDispatcher/ButtonDispatcher.js} +21 -18
  10. package/build/components/Chat/components/ButtonDispatcher/ButtonDispatcher.js.map +1 -0
  11. package/build/components/Chat/components/ButtonDispatcher/ButtonDispatcher.l10n.js +15 -0
  12. package/build/components/Chat/components/ButtonDispatcher/ButtonDispatcher.l10n.js.map +1 -0
  13. package/build/components/Chat/components/ButtonDispatcher/ButtonDispatcher.module.css +134 -0
  14. package/build/components/Chat/components/ButtonDispatcher/index.js +17 -0
  15. package/build/components/Chat/components/ButtonDispatcher/index.js.map +1 -0
  16. package/build/components/Chat/components/Header/Header.js +72 -0
  17. package/build/components/Chat/components/Header/Header.js.map +1 -0
  18. package/build/components/Chat/components/Header/Header.l10n.js +15 -0
  19. package/build/components/Chat/components/Header/Header.l10n.js.map +1 -0
  20. package/build/components/Chat/components/Header/Header.module.css +15 -0
  21. package/build/components/Chat/components/{InputRich → Header}/index.js +4 -4
  22. package/build/components/Chat/components/Header/index.js.map +1 -0
  23. package/build/components/Chat/components/Input/Input.Context.js +75 -0
  24. package/build/components/Chat/components/Input/Input.Context.js.map +1 -0
  25. package/build/components/Chat/components/Input/Input.js +42 -17
  26. package/build/components/Chat/components/Input/Input.js.map +1 -1
  27. package/build/components/Chat/components/Input/Input.module.css +46 -9
  28. package/build/components/Chat/components/Message/Message.Action.js +8 -65
  29. package/build/components/Chat/components/Message/Message.Action.js.map +1 -1
  30. package/build/components/Chat/components/Message/Message.Requirement.js +141 -0
  31. package/build/components/Chat/components/Message/Message.Requirement.js.map +1 -0
  32. package/build/components/Chat/components/Message/Message.constants.js +18 -2
  33. package/build/components/Chat/components/Message/Message.constants.js.map +1 -1
  34. package/build/components/Chat/components/Message/Message.js +35 -30
  35. package/build/components/Chat/components/Message/Message.js.map +1 -1
  36. package/build/components/Chat/components/{InputRich/InputRich.l10n.js → Message/Message.l10n.js} +4 -1
  37. package/build/components/Chat/components/Message/Message.l10n.js.map +1 -0
  38. package/build/components/Chat/components/Message/Message.module.css +66 -49
  39. package/build/components/Chat/components/Message/components/Card.js +8 -6
  40. package/build/components/Chat/components/Message/components/Card.js.map +1 -1
  41. package/build/components/Chat/components/Message/components/Card.module.css +25 -15
  42. package/build/components/Chat/components/Message/components/Environment.js +2 -3
  43. package/build/components/Chat/components/Message/components/Environment.js.map +1 -1
  44. package/build/components/Chat/components/Message/components/Environment.module.css +11 -5
  45. package/build/components/Chat/components/{InputRich/InputRich.List.js → Message/components/List/List.js} +2 -2
  46. package/build/components/Chat/components/Message/components/List/List.js.map +1 -0
  47. package/build/components/Chat/components/Message/components/List/List.module.css +44 -0
  48. package/build/components/Chat/components/Message/components/List/helpers/getVerboseList.js.map +1 -0
  49. package/build/components/Chat/components/{InputRich → Message/components/List}/helpers/index.js +0 -11
  50. package/build/components/Chat/components/Message/components/List/helpers/index.js.map +1 -0
  51. package/build/components/Chat/components/Message/components/List/index.js +17 -0
  52. package/build/components/Chat/components/Message/components/List/index.js.map +1 -0
  53. package/build/components/Chat/components/Message/components/Typewriter/Typewriter.js +74 -0
  54. package/build/components/Chat/components/Message/components/Typewriter/Typewriter.js.map +1 -0
  55. package/build/components/Chat/components/Message/components/Typewriter/Typewriter.module.css +17 -0
  56. package/build/components/Chat/components/Message/components/Typewriter/index.js +17 -0
  57. package/build/components/Chat/components/Message/components/Typewriter/index.js.map +1 -0
  58. package/build/components/Chat/components/Message/components/index.js +22 -0
  59. package/build/components/Chat/components/Message/components/index.js.map +1 -1
  60. package/build/components/Chat/components/Message/intents/BookingQuery.js +1 -3
  61. package/build/components/Chat/components/Message/intents/BookingQuery.js.map +1 -1
  62. package/build/components/Chat/components/Message/intents/HotelInfo.js +3 -4
  63. package/build/components/Chat/components/Message/intents/HotelInfo.js.map +1 -1
  64. package/build/components/Chat/components/Message/intents/Login/Login.js +123 -0
  65. package/build/components/Chat/components/Message/intents/Login/Login.js.map +1 -0
  66. package/build/components/Chat/components/Message/intents/Login/Login.l10n.js +24 -0
  67. package/build/components/Chat/components/Message/intents/Login/Login.l10n.js.map +1 -0
  68. package/build/components/Chat/components/Message/intents/Login/Login.module.css +12 -0
  69. package/build/components/Chat/components/Message/intents/Login/index.js +17 -0
  70. package/build/components/Chat/components/Message/intents/Login/index.js.map +1 -0
  71. package/build/components/Chat/components/Message/intents/index.js +11 -0
  72. package/build/components/Chat/components/Message/intents/index.js.map +1 -1
  73. package/build/components/Chat/components/Welcome/Welcome.constants.js +17 -0
  74. package/build/components/Chat/components/Welcome/Welcome.constants.js.map +1 -0
  75. package/build/components/Chat/components/Welcome/Welcome.js +128 -0
  76. package/build/components/Chat/components/Welcome/Welcome.js.map +1 -0
  77. package/build/components/Chat/components/Welcome/Welcome.l10n.js +15 -0
  78. package/build/components/Chat/components/Welcome/Welcome.l10n.js.map +1 -0
  79. package/build/components/Chat/components/Welcome/Welcome.module.css +127 -0
  80. package/build/components/Chat/components/Welcome/index.js +17 -0
  81. package/build/components/Chat/components/Welcome/index.js.map +1 -0
  82. package/build/components/Chat/components/index.js +30 -8
  83. package/build/components/Chat/components/index.js.map +1 -1
  84. package/build/components/helpers/ICON.js +6 -2
  85. package/build/components/helpers/ICON.js.map +1 -1
  86. package/build/theme.css +13 -28
  87. package/package.json +1 -1
  88. package/build/components/Chat/Chat.ButtonAvatar.js.map +0 -1
  89. package/build/components/Chat/Chat.Header.js +0 -144
  90. package/build/components/Chat/Chat.Header.js.map +0 -1
  91. package/build/components/Chat/components/InputRich/InputRich.List.js.map +0 -1
  92. package/build/components/Chat/components/InputRich/InputRich.js +0 -179
  93. package/build/components/Chat/components/InputRich/InputRich.js.map +0 -1
  94. package/build/components/Chat/components/InputRich/InputRich.l10n.js.map +0 -1
  95. package/build/components/Chat/components/InputRich/InputRich.module.css +0 -109
  96. package/build/components/Chat/components/InputRich/helpers/getVerboseList.js.map +0 -1
  97. package/build/components/Chat/components/InputRich/helpers/getVerboseOccupation.js +0 -27
  98. package/build/components/Chat/components/InputRich/helpers/getVerboseOccupation.js.map +0 -1
  99. package/build/components/Chat/components/InputRich/helpers/index.js.map +0 -1
  100. package/build/components/Chat/components/InputRich/index.js.map +0 -1
  101. package/build/components/Chat/components/Message/components/Typewriter.js +0 -47
  102. package/build/components/Chat/components/Message/components/Typewriter.js.map +0 -1
  103. /package/build/components/Chat/components/{InputRich → Message/components/List}/helpers/getVerboseList.js +0 -0
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.VERBOSE_DATE_FORMAT = exports.NAME = exports.INTENT = exports.EVENT = exports.DELAY_RESPONSE = exports.DEFAULT_NAME = exports.CHAT_STORAGE_KEY = exports.CHAT_STORAGE_CACHE = exports.AVAILABLE_COMPONENTS = void 0;
7
- const AVAILABLE_COMPONENTS = exports.AVAILABLE_COMPONENTS = ['finder', 'profile', 'rates'];
6
+ exports.VERBOSE_DATE_FORMAT = exports.NAME = exports.INTENT = exports.EVENT = exports.DELAY_RESPONSE = exports.DEFAULT_NAME = exports.CHAT_STORAGE_KEY = exports.CHAT_STORAGE_CACHE = exports.BANNED_COMPONENTS = void 0;
7
+ const BANNED_COMPONENTS = exports.BANNED_COMPONENTS = ['checkout', 'booking'];
8
8
  const CHAT_STORAGE_CACHE = exports.CHAT_STORAGE_CACHE = 1000 * 60 * 60 * 8; // 8 hours
9
9
 
10
10
  const CHAT_STORAGE_KEY = exports.CHAT_STORAGE_KEY = 'MIRAI:LISA:CHAT';
@@ -15,6 +15,7 @@ const EVENT = exports.EVENT = {
15
15
  };
16
16
  const INTENT = exports.INTENT = {
17
17
  BOOK: 'BOOK',
18
+ BOOKING_CREATE: 'BOOKING_CREATE',
18
19
  BOOKING_CANCEL: 'BOOKING_CANCEL',
19
20
  BOOKING_QUERY: 'BOOKING_QUERY',
20
21
  BOOKING_VIEW: 'BOOKING_VIEW',
@@ -22,7 +23,9 @@ const INTENT = exports.INTENT = {
22
23
  OFFERS: 'OFFERS',
23
24
  HOTEL_INFO: 'HOTEL_INFO',
24
25
  GREETINGS: 'GREETINGS',
25
- FAREWELLS: 'FAREWELLS'
26
+ FAREWELLS: 'FAREWELLS',
27
+ LOGIN: 'LOGIN',
28
+ SIGNUP: 'SIGNUP'
26
29
  };
27
30
  const NAME = exports.NAME = 'Lisa';
28
31
  const VERBOSE_DATE_FORMAT = exports.VERBOSE_DATE_FORMAT = {
@@ -1 +1 @@
1
- {"version":3,"file":"Chat.constants.js","names":["AVAILABLE_COMPONENTS","exports","CHAT_STORAGE_CACHE","CHAT_STORAGE_KEY","DEFAULT_NAME","DELAY_RESPONSE","EVENT","INPUT_COMPONENT","INTENT","BOOK","BOOKING_CANCEL","BOOKING_QUERY","BOOKING_VIEW","BOOKING_SEND","OFFERS","HOTEL_INFO","GREETINGS","FAREWELLS","NAME","VERBOSE_DATE_FORMAT","weekday","month","day"],"sources":["../../../src/components/Chat/Chat.constants.js"],"sourcesContent":["const AVAILABLE_COMPONENTS = ['finder', 'profile', 'rates'];\n\nconst CHAT_STORAGE_CACHE = 1000 * 60 * 60 * 8; // 8 hours\n\nconst CHAT_STORAGE_KEY = 'MIRAI:LISA:CHAT';\n\nconst DEFAULT_NAME = 'Lisa';\n\nconst DELAY_RESPONSE = 500;\n\nconst EVENT = {\n INPUT_COMPONENT: 'EVENT_INPUT_COMPONENT',\n};\n\nconst INTENT = {\n BOOK: 'BOOK',\n BOOKING_CANCEL: 'BOOKING_CANCEL',\n BOOKING_QUERY: 'BOOKING_QUERY',\n BOOKING_VIEW: 'BOOKING_VIEW',\n BOOKING_SEND: 'BOOKING_SEND',\n OFFERS: 'OFFERS',\n HOTEL_INFO: 'HOTEL_INFO',\n GREETINGS: 'GREETINGS',\n FAREWELLS: 'FAREWELLS',\n};\n\nconst NAME = 'Lisa';\n\nconst VERBOSE_DATE_FORMAT = { weekday: 'short', month: 'short', day: 'numeric' };\n\nexport {\n AVAILABLE_COMPONENTS,\n CHAT_STORAGE_CACHE,\n CHAT_STORAGE_KEY,\n DEFAULT_NAME,\n DELAY_RESPONSE,\n EVENT,\n INTENT,\n NAME,\n VERBOSE_DATE_FORMAT,\n};\n"],"mappings":";;;;;;AAAA,MAAMA,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;AAE3D,MAAME,kBAAkB,GAAAD,OAAA,CAAAC,kBAAA,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;;AAE/C,MAAMC,gBAAgB,GAAAF,OAAA,CAAAE,gBAAA,GAAG,iBAAiB;AAE1C,MAAMC,YAAY,GAAAH,OAAA,CAAAG,YAAA,GAAG,MAAM;AAE3B,MAAMC,cAAc,GAAAJ,OAAA,CAAAI,cAAA,GAAG,GAAG;AAE1B,MAAMC,KAAK,GAAAL,OAAA,CAAAK,KAAA,GAAG;EACZC,eAAe,EAAE;AACnB,CAAC;AAED,MAAMC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG;EACbC,IAAI,EAAE,MAAM;EACZC,cAAc,EAAE,gBAAgB;EAChCC,aAAa,EAAE,eAAe;EAC9BC,YAAY,EAAE,cAAc;EAC5BC,YAAY,EAAE,cAAc;EAC5BC,MAAM,EAAE,QAAQ;EAChBC,UAAU,EAAE,YAAY;EACxBC,SAAS,EAAE,WAAW;EACtBC,SAAS,EAAE;AACb,CAAC;AAED,MAAMC,IAAI,GAAAjB,OAAA,CAAAiB,IAAA,GAAG,MAAM;AAEnB,MAAMC,mBAAmB,GAAAlB,OAAA,CAAAkB,mBAAA,GAAG;EAAEC,OAAO,EAAE,OAAO;EAAEC,KAAK,EAAE,OAAO;EAAEC,GAAG,EAAE;AAAU,CAAC"}
1
+ {"version":3,"file":"Chat.constants.js","names":["BANNED_COMPONENTS","exports","CHAT_STORAGE_CACHE","CHAT_STORAGE_KEY","DEFAULT_NAME","DELAY_RESPONSE","EVENT","INPUT_COMPONENT","INTENT","BOOK","BOOKING_CREATE","BOOKING_CANCEL","BOOKING_QUERY","BOOKING_VIEW","BOOKING_SEND","OFFERS","HOTEL_INFO","GREETINGS","FAREWELLS","LOGIN","SIGNUP","NAME","VERBOSE_DATE_FORMAT","weekday","month","day"],"sources":["../../../src/components/Chat/Chat.constants.js"],"sourcesContent":["const BANNED_COMPONENTS = ['checkout', 'booking'];\n\nconst CHAT_STORAGE_CACHE = 1000 * 60 * 60 * 8; // 8 hours\n\nconst CHAT_STORAGE_KEY = 'MIRAI:LISA:CHAT';\n\nconst DEFAULT_NAME = 'Lisa';\n\nconst DELAY_RESPONSE = 500;\n\nconst EVENT = {\n INPUT_COMPONENT: 'EVENT_INPUT_COMPONENT',\n};\n\nconst INTENT = {\n BOOK: 'BOOK',\n BOOKING_CREATE: 'BOOKING_CREATE',\n BOOKING_CANCEL: 'BOOKING_CANCEL',\n BOOKING_QUERY: 'BOOKING_QUERY',\n BOOKING_VIEW: 'BOOKING_VIEW',\n BOOKING_SEND: 'BOOKING_SEND',\n OFFERS: 'OFFERS',\n HOTEL_INFO: 'HOTEL_INFO',\n GREETINGS: 'GREETINGS',\n FAREWELLS: 'FAREWELLS',\n LOGIN: 'LOGIN',\n SIGNUP: 'SIGNUP',\n};\n\nconst NAME = 'Lisa';\n\nconst VERBOSE_DATE_FORMAT = { weekday: 'short', month: 'short', day: 'numeric' };\n\nexport {\n BANNED_COMPONENTS,\n CHAT_STORAGE_CACHE,\n CHAT_STORAGE_KEY,\n DEFAULT_NAME,\n DELAY_RESPONSE,\n EVENT,\n INTENT,\n NAME,\n VERBOSE_DATE_FORMAT,\n};\n"],"mappings":";;;;;;AAAA,MAAMA,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC;AAEjD,MAAME,kBAAkB,GAAAD,OAAA,CAAAC,kBAAA,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;;AAE/C,MAAMC,gBAAgB,GAAAF,OAAA,CAAAE,gBAAA,GAAG,iBAAiB;AAE1C,MAAMC,YAAY,GAAAH,OAAA,CAAAG,YAAA,GAAG,MAAM;AAE3B,MAAMC,cAAc,GAAAJ,OAAA,CAAAI,cAAA,GAAG,GAAG;AAE1B,MAAMC,KAAK,GAAAL,OAAA,CAAAK,KAAA,GAAG;EACZC,eAAe,EAAE;AACnB,CAAC;AAED,MAAMC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG;EACbC,IAAI,EAAE,MAAM;EACZC,cAAc,EAAE,gBAAgB;EAChCC,cAAc,EAAE,gBAAgB;EAChCC,aAAa,EAAE,eAAe;EAC9BC,YAAY,EAAE,cAAc;EAC5BC,YAAY,EAAE,cAAc;EAC5BC,MAAM,EAAE,QAAQ;EAChBC,UAAU,EAAE,YAAY;EACxBC,SAAS,EAAE,WAAW;EACtBC,SAAS,EAAE,WAAW;EACtBC,KAAK,EAAE,OAAO;EACdC,MAAM,EAAE;AACV,CAAC;AAED,MAAMC,IAAI,GAAApB,OAAA,CAAAoB,IAAA,GAAG,MAAM;AAEnB,MAAMC,mBAAmB,GAAArB,OAAA,CAAAqB,mBAAA,GAAG;EAAEC,OAAO,EAAE,OAAO;EAAEC,KAAK,EAAE,OAAO;EAAEC,GAAG,EAAE;AAAU,CAAC"}
@@ -5,13 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.Chat = void 0;
7
7
  var _dataSources = require("@mirai/data-sources");
8
+ var _locale = require("@mirai/locale");
8
9
  var _services = require("@mirai/services");
9
10
  var _ui = require("@mirai/ui");
10
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
12
  var _react = _interopRequireWildcard(require("react"));
12
- var _Chat = require("./Chat.ButtonAvatar");
13
- var _Chat2 = require("./Chat.constants");
14
- var _Chat3 = require("./Chat.Header");
13
+ var _Chat = require("./Chat.constants");
14
+ var _Chat2 = require("./Chat.l10n");
15
15
  var style = _interopRequireWildcard(require("./Chat.module.css"));
16
16
  var _components = require("./components");
17
17
  var _helpers = require("./helpers");
@@ -22,20 +22,22 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
22
22
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
23
23
  const storage = new _dataSources.Storage({
24
24
  adapter: _dataSources.LocalAdapter,
25
- cache: _Chat2.CHAT_STORAGE_CACHE
25
+ cache: _Chat.CHAT_STORAGE_CACHE
26
26
  });
27
27
  let connectionInterval;
28
+ let session;
28
29
  const Chat = _ref => {
29
30
  let {
30
31
  ...others
31
32
  } = _ref;
32
33
  const {
33
- isMobile
34
- } = (0, _ui.useDevice)();
34
+ translate
35
+ } = (0, _locale.useLocale)();
35
36
  const {
36
37
  set,
37
38
  value: {
38
39
  calendar,
40
+ club,
39
41
  components = {},
40
42
  currency,
41
43
  hotel,
@@ -43,7 +45,7 @@ const Chat = _ref => {
43
45
  locale,
44
46
  occupation,
45
47
  origin,
46
- session,
48
+ session: stateSession,
47
49
  skeleton = false,
48
50
  tags,
49
51
  type
@@ -57,14 +59,15 @@ const Chat = _ref => {
57
59
  const [previousMessages] = (0, _react.useState)(storage.get((0, _helpers.getStorageDomain)(components)) || []);
58
60
  const [visible, setVisible] = (0, _react.useState)(false);
59
61
  (0, _react.useEffect)(() => {
60
- if (skeleton || !Object.keys(components).some(item => _Chat2.AVAILABLE_COMPONENTS.includes(item))) return;
61
- const nextConfig = _services.ServiceFeatures.get('lisa', id);
62
+ if (skeleton || Object.keys(components).some(item => _Chat.BANNED_COMPONENTS.includes(item))) return;
63
+ const nextConfig = process.env.NODE_ENV === 'production' ? _services.ServiceFeatures.get('lisa', id) : {};
62
64
  if (!nextConfig) return;
63
65
  setConfig(nextConfig);
64
66
  (async () => {
65
67
  if (!(await handleOnline())) return;
66
68
  const response = await _services.ServiceLisa.welcome({
67
69
  context: {
70
+ club,
68
71
  hotel
69
72
  },
70
73
  locale,
@@ -82,6 +85,9 @@ const Chat = _ref => {
82
85
  })();
83
86
  // eslint-disable-next-line react-hooks/exhaustive-deps
84
87
  }, [skeleton]);
88
+ (0, _react.useEffect)(() => {
89
+ if (stateSession) session = stateSession;
90
+ }, [stateSession]);
85
91
  (0, _react.useEffect)(() => {
86
92
  const nextStoreMessages = [...previousMessages, ...messages].filter(function () {
87
93
  let {
@@ -105,6 +111,7 @@ const Chat = _ref => {
105
111
  }, [online, visible]);
106
112
  let storeContext = {
107
113
  calendar,
114
+ club,
108
115
  currency,
109
116
  hotel,
110
117
  messages: messages.filter(_ref2 => {
@@ -134,7 +141,6 @@ const Chat = _ref => {
134
141
  type
135
142
  };
136
143
  const handleOnline = async () => {
137
- if (!(components.finder || components.rates)) return;
138
144
  let next = false;
139
145
  const response = await _services.ServiceLisa.status().catch(() => setOnline(next));
140
146
  if (response && !online) {
@@ -143,7 +149,8 @@ const Chat = _ref => {
143
149
  }
144
150
  return next;
145
151
  };
146
- const handleInput = input => {
152
+ const handleInput = function (input) {
153
+ let auto = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
147
154
  const nextMessages = [...messages, {
148
155
  text: input,
149
156
  timestamp: new Date().getTime()
@@ -163,6 +170,7 @@ const Chat = _ref => {
163
170
  form: currentForm
164
171
  };
165
172
  const response = await _services.ServiceLisa.message({
173
+ auto,
166
174
  context: storeContext,
167
175
  input,
168
176
  locale,
@@ -170,7 +178,7 @@ const Chat = _ref => {
170
178
  }).catch(handleError);
171
179
  if (response) addMessage(response, nextMessages, true);
172
180
  setBusy(false);
173
- }, _Chat2.DELAY_RESPONSE);
181
+ }, _Chat.DELAY_RESPONSE);
174
182
  };
175
183
  const handleAction = function () {
176
184
  let {
@@ -179,9 +187,6 @@ const Chat = _ref => {
179
187
  intent,
180
188
  text
181
189
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
182
- if (intent === 'ACTION_LOGIN') return _dataSources.Event.publish(_helpers2.EVENT.LOGIN, {
183
- visible: true
184
- });
185
190
  setBusy(true);
186
191
  setTimeout(async () => {
187
192
  const nextContext = {
@@ -201,7 +206,7 @@ const Chat = _ref => {
201
206
  }).catch(handleError);
202
207
  if (response) addMessage(response, nextMessages, true);
203
208
  setBusy(false);
204
- }, _Chat2.DELAY_RESPONSE);
209
+ }, _Chat.DELAY_RESPONSE);
205
210
  };
206
211
  const handleRetry = async () => {
207
212
  setBusy(true);
@@ -258,22 +263,23 @@ const Chat = _ref => {
258
263
  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
259
264
  return auto;
260
265
  }).pop() || [];
261
- const chatMessages = [...previousMessages, ...messages];
262
- return !skeleton && !!config ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(isMobile ? _ui.Modal : _ui.View, isMobile ? {
263
- ...others,
264
- visible,
266
+ const [welcomeMessage = {}, ...chatMessages] = messages.filter(_ref5 => {
267
+ let {
268
+ auto,
269
+ text
270
+ } = _ref5;
271
+ return !(!auto && !text);
272
+ });
273
+ return !skeleton && !!config ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ui.Modal, _extends({}, others, {
274
+ fit: true,
275
+ visible: visible,
265
276
  className: (0, _ui.styles)(style.container, others.className)
266
- } : {
267
- ...others,
268
- className: (0, _ui.styles)(style.container, visible && style.visible, others.className),
269
- 'aria-hidden': visible ? 'false' : 'true'
270
- }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Chat3.Header, {
271
- config,
272
- form,
273
- online,
274
- visible,
277
+ }), /*#__PURE__*/_react.default.createElement(_components.Header, {
278
+ config: config,
275
279
  onClose: () => setVisible(false)
276
- }), /*#__PURE__*/_react.default.createElement(_ui.ScrollView, {
280
+ }), !chatMessages.length ? /*#__PURE__*/_react.default.createElement(_components.Welcome, _extends({}, welcomeMessage.response, {
281
+ onInput: handleInput
282
+ })) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ui.ScrollView, {
277
283
  scrollTo: new Date().getTime(),
278
284
  snap: false,
279
285
  className: style.messages
@@ -288,13 +294,20 @@ const Chat = _ref => {
288
294
  }), busy && /*#__PURE__*/_react.default.createElement(_components.Message, {
289
295
  auto: true,
290
296
  busy: true
291
- })), online && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_components.Input, {
297
+ })), /*#__PURE__*/_react.default.createElement(_components.Input, {
292
298
  disabled: busy,
293
- onValue: handleInput
294
- }), /*#__PURE__*/_react.default.createElement(_components.InputRich, {
295
- onValue: handleAction
296
- })))), /*#__PURE__*/_react.default.createElement(_Chat.ButtonAvatar, {
299
+ form: form,
300
+ onValue: handleInput,
301
+ className: style.input
302
+ })), /*#__PURE__*/_react.default.createElement(_ui.Text, {
303
+ light: true,
304
+ tiny: true,
305
+ className: style.warning
306
+ }, translate(_Chat2.L10N.LABEL_WARNING_RESPONSES, {
307
+ name: 'Lisa'
308
+ }))), /*#__PURE__*/_react.default.createElement(_components.ButtonDispatcher, {
297
309
  config,
310
+ welcomeMessage,
298
311
  ready: !!messages.length,
299
312
  visible: visible,
300
313
  onPress: () => setVisible(true)
@@ -1 +1 @@
1
- {"version":3,"file":"Chat.js","names":["_dataSources","require","_services","_ui","_propTypes","_interopRequireDefault","_react","_interopRequireWildcard","_Chat","_Chat2","_Chat3","style","_components","_helpers","_helpers2","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_extends","assign","bind","target","arguments","length","source","key","apply","storage","Storage","adapter","LocalAdapter","cache","CHAT_STORAGE_CACHE","connectionInterval","Chat","_ref","others","isMobile","useDevice","value","calendar","components","currency","hotel","id","locale","occupation","origin","session","skeleton","tags","type","useStore","busy","setBusy","useState","config","setConfig","setError","messages","setMessages","online","setOnline","previousMessages","getStorageDomain","visible","setVisible","useEffect","keys","some","item","AVAILABLE_COMPONENTS","includes","nextConfig","ServiceFeatures","handleOnline","response","ServiceLisa","welcome","context","catch","handleError","addMessage","timestamp","Date","getTime","lisa","nextStoreMessages","filter","auto","intent","text","undefined","slice","map","clearInterval","setInterval","storeContext","_ref2","_ref3","form","finder","rates","next","status","handleInput","input","nextMessages","setTimeout","_messages$filter$slic","_messages$filter$slic2","currentForm","_ref4","message","DELAY_RESPONSE","handleAction","Event","publish","EVENT","LOGIN","nextContext","action","handleRetry","pop","error","notify","INTENT_LOCALE","audioNotification","chatMessages","createElement","Fragment","React","Modal","View","className","styles","container","Header","onClose","ScrollView","scrollTo","snap","index","_chatMessages","Message","concat","disabled","onAction","onRetry","Input","onValue","InputRich","ButtonAvatar","ready","onPress","exports","displayName","propTypes","name","PropTypes","string"],"sources":["../../../src/components/Chat/Chat.jsx"],"sourcesContent":["import { Event, LocalAdapter, Storage, useStore } from '@mirai/data-sources';\nimport { ServiceFeatures, ServiceLisa } from '@mirai/services';\nimport { Modal, ScrollView, styles, useDevice, View } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\n\nimport { ButtonAvatar } from './Chat.ButtonAvatar';\nimport { AVAILABLE_COMPONENTS, CHAT_STORAGE_CACHE, DELAY_RESPONSE } from './Chat.constants';\nimport { Header } from './Chat.Header';\nimport * as style from './Chat.module.css';\nimport { Input, InputRich, Message } from './components';\nimport { audioNotification, getStorageDomain } from './helpers';\nimport { EVENT } from '../helpers';\n\nconst storage = new Storage({ adapter: LocalAdapter, cache: CHAT_STORAGE_CACHE });\nlet connectionInterval;\n\nconst Chat = ({ ...others }) => {\n const { isMobile } = useDevice();\n const {\n set,\n value: {\n calendar,\n components = {},\n currency,\n hotel,\n id,\n locale,\n occupation,\n origin,\n session,\n skeleton = false,\n tags,\n type,\n },\n } = useStore();\n\n const [busy, setBusy] = useState(false);\n const [config, setConfig] = useState();\n const [, setError] = useState();\n const [messages, setMessages] = useState([]);\n const [online, setOnline] = useState(false);\n const [previousMessages] = useState(storage.get(getStorageDomain(components)) || []);\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n if (skeleton || !Object.keys(components).some((item) => AVAILABLE_COMPONENTS.includes(item))) return;\n\n const nextConfig = ServiceFeatures.get('lisa', id);\n if (!nextConfig) return;\n setConfig(nextConfig);\n\n (async () => {\n if (!(await handleOnline())) return;\n const response = await ServiceLisa.welcome({ context: { hotel }, locale, session }).catch(handleError);\n if (response) {\n if (!messages.length) return addMessage({ ...response, timestamp: new Date().getTime() }, messages);\n set({ lisa: messages[messages.length - 1] });\n }\n })();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [skeleton]);\n\n useEffect(() => {\n const nextStoreMessages = [...previousMessages, ...messages]\n .filter(({ auto = false, intent, text } = {}) => (!auto && text) || !!intent)\n .slice(-32)\n .map((item) => ({\n ...item,\n storage: true,\n }));\n\n storage.set(getStorageDomain(components), nextStoreMessages);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [components, messages]);\n\n useEffect(() => {\n if (!visible) return clearInterval(connectionInterval);\n\n connectionInterval = setInterval(handleOnline, online ? 60000 : 10000);\n return () => clearInterval(connectionInterval);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [online, visible]);\n\n let storeContext = {\n calendar,\n currency,\n hotel,\n messages: messages\n .filter(({ storage, intent, text }) => !storage && (intent || text))\n .slice(-4)\n .map(({ intent, text, response: { form } = {} }) => ({ form, intent, text })),\n occupation,\n origin,\n tags,\n type,\n };\n\n const handleOnline = async () => {\n if (!(components.finder || components.rates)) return;\n\n let next = false;\n const response = await ServiceLisa.status().catch(() => setOnline(next));\n if (response && !online) {\n next = true;\n setOnline(next);\n }\n\n return next;\n };\n\n const handleInput = (input) => {\n const nextMessages = [...messages, { text: input, timestamp: new Date().getTime() }];\n setMessages(nextMessages);\n\n setTimeout(async () => {\n setBusy(true);\n const currentForm = messages.filter(({ storage }) => !storage).slice(-1)[0]?.response?.form;\n\n storeContext = { ...storeContext, form: currentForm };\n const response = await ServiceLisa.message({ context: storeContext, input, locale, session }).catch(handleError);\n if (response) addMessage(response, nextMessages, true);\n setBusy(false);\n }, DELAY_RESPONSE);\n };\n\n const handleAction = ({ context, form, intent, text } = {}) => {\n if (intent === 'ACTION_LOGIN') return Event.publish(EVENT.LOGIN, { visible: true });\n setBusy(true);\n\n setTimeout(async () => {\n const nextContext = { ...storeContext, ...context, form };\n const nextMessages = [...messages, { auto: false, text }];\n\n const response = await ServiceLisa.action({ context: nextContext, intent, locale, session }).catch(handleError);\n if (response) addMessage(response, nextMessages, true);\n setBusy(false);\n }, DELAY_RESPONSE);\n };\n\n const handleRetry = async () => {\n setBusy(true);\n\n const nextMessages = [...messages];\n nextMessages.pop();\n\n setMessages(nextMessages);\n const { text: input, response: { form } = {} } = nextMessages[nextMessages.length - 1] || {};\n storeContext = { ...storeContext, form };\n const response = await ServiceLisa.message({ context: storeContext, input, locale, session }).catch(handleError);\n if (response) addMessage(response, nextMessages, true);\n setBusy(false);\n };\n\n const handleError = (error) => {\n setError(error);\n setOnline(false);\n };\n\n const addMessage = (response = {}, messages = [], notify = false) => {\n if (!response) return;\n\n set({ lisa: response });\n setMessages([...messages, { auto: true, ...response }]);\n\n if (response.locale !== locale) Event.publish(EVENT.INTENT_LOCALE, { locale: response.locale });\n if (notify) audioNotification();\n };\n\n const { response: { form } = {} } = messages.filter(({ auto = false } = {}) => auto).pop() || [];\n const chatMessages = [...previousMessages, ...messages];\n\n return !skeleton && !!config ? (\n <>\n {React.createElement(\n isMobile ? Modal : View,\n isMobile\n ? { ...others, visible, className: styles(style.container, others.className) }\n : {\n ...others,\n className: styles(style.container, visible && style.visible, others.className),\n 'aria-hidden': visible ? 'false' : 'true',\n },\n <>\n <Header {...{ config, form, online, visible }} onClose={() => setVisible(false)} />\n\n <ScrollView scrollTo={new Date().getTime()} snap={false} className={style.messages}>\n {chatMessages.map((message, index) => (\n <Message\n {...message}\n key={`message:${index}`}\n disabled={busy || index < chatMessages.length - 1}\n onAction={handleAction}\n onRetry={index === chatMessages.length - 1 && chatMessages[index - 1]?.text ? handleRetry : undefined}\n />\n ))}\n {busy && <Message auto busy />}\n </ScrollView>\n\n {online && (\n <>\n <Input disabled={busy} onValue={handleInput} />\n <InputRich onValue={handleAction} />\n </>\n )}\n </>,\n )}\n\n <ButtonAvatar {...{ config }} ready={!!messages.length} visible={visible} onPress={() => setVisible(true)} />\n </>\n ) : null;\n};\n\nChat.displayName = 'Mirai:Core:Chat';\n\nChat.propTypes = {\n name: PropTypes.string,\n};\n\nexport { Chat };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Chat.js","names":["_dataSources","require","_locale","_services","_ui","_propTypes","_interopRequireDefault","_react","_interopRequireWildcard","_Chat","_Chat2","style","_components","_helpers","_helpers2","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_extends","assign","bind","target","arguments","length","source","key","apply","storage","Storage","adapter","LocalAdapter","cache","CHAT_STORAGE_CACHE","connectionInterval","session","Chat","_ref","others","translate","useLocale","value","calendar","club","components","currency","hotel","id","locale","occupation","origin","stateSession","skeleton","tags","type","useStore","busy","setBusy","useState","config","setConfig","setError","messages","setMessages","online","setOnline","previousMessages","getStorageDomain","visible","setVisible","useEffect","keys","some","item","BANNED_COMPONENTS","includes","nextConfig","process","env","NODE_ENV","ServiceFeatures","handleOnline","response","ServiceLisa","welcome","context","catch","handleError","addMessage","timestamp","Date","getTime","lisa","nextStoreMessages","filter","auto","intent","text","undefined","slice","map","clearInterval","setInterval","storeContext","_ref2","_ref3","form","next","status","handleInput","input","nextMessages","setTimeout","_messages$filter$slic","_messages$filter$slic2","currentForm","_ref4","message","DELAY_RESPONSE","handleAction","nextContext","action","handleRetry","pop","error","notify","Event","publish","EVENT","INTENT_LOCALE","audioNotification","welcomeMessage","chatMessages","_ref5","createElement","Fragment","Modal","fit","className","styles","container","Header","onClose","Welcome","onInput","ScrollView","scrollTo","snap","index","_chatMessages","Message","concat","disabled","onAction","onRetry","Input","onValue","Text","light","tiny","warning","L10N","LABEL_WARNING_RESPONSES","name","ButtonDispatcher","ready","onPress","exports","displayName","propTypes","PropTypes","string"],"sources":["../../../src/components/Chat/Chat.jsx"],"sourcesContent":["import { Event, LocalAdapter, Storage, useStore } from '@mirai/data-sources';\nimport { useLocale } from '@mirai/locale';\nimport { ServiceFeatures, ServiceLisa } from '@mirai/services';\nimport { Modal, ScrollView, styles, Text } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\n\nimport { BANNED_COMPONENTS, CHAT_STORAGE_CACHE, DELAY_RESPONSE } from './Chat.constants';\nimport { L10N } from './Chat.l10n';\nimport * as style from './Chat.module.css';\nimport { ButtonDispatcher, Header, Input, Message, Welcome } from './components';\nimport { audioNotification, getStorageDomain } from './helpers';\nimport { EVENT } from '../helpers';\n\nconst storage = new Storage({ adapter: LocalAdapter, cache: CHAT_STORAGE_CACHE });\nlet connectionInterval;\nlet session;\n\nconst Chat = ({ ...others }) => {\n const { translate } = useLocale();\n const {\n set,\n value: {\n calendar,\n club,\n components = {},\n currency,\n hotel,\n id,\n locale,\n occupation,\n origin,\n session: stateSession,\n skeleton = false,\n tags,\n type,\n },\n } = useStore();\n\n const [busy, setBusy] = useState(false);\n const [config, setConfig] = useState();\n const [, setError] = useState();\n const [messages, setMessages] = useState([]);\n const [online, setOnline] = useState(false);\n const [previousMessages] = useState(storage.get(getStorageDomain(components)) || []);\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n if (skeleton || Object.keys(components).some((item) => BANNED_COMPONENTS.includes(item))) return;\n\n const nextConfig = process.env.NODE_ENV === 'production' ? ServiceFeatures.get('lisa', id) : {};\n if (!nextConfig) return;\n setConfig(nextConfig);\n\n (async () => {\n if (!(await handleOnline())) return;\n const response = await ServiceLisa.welcome({ context: { club, hotel }, locale, session }).catch(handleError);\n if (response) {\n if (!messages.length) return addMessage({ ...response, timestamp: new Date().getTime() }, messages);\n set({ lisa: messages[messages.length - 1] });\n }\n })();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [skeleton]);\n\n useEffect(() => {\n if (stateSession) session = stateSession;\n }, [stateSession]);\n\n useEffect(() => {\n const nextStoreMessages = [...previousMessages, ...messages]\n .filter(({ auto = false, intent, text } = {}) => (!auto && text) || !!intent)\n .slice(-32)\n .map((item) => ({\n ...item,\n storage: true,\n }));\n\n storage.set(getStorageDomain(components), nextStoreMessages);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [components, messages]);\n\n useEffect(() => {\n if (!visible) return clearInterval(connectionInterval);\n\n connectionInterval = setInterval(handleOnline, online ? 60000 : 10000);\n return () => clearInterval(connectionInterval);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [online, visible]);\n\n let storeContext = {\n calendar,\n club,\n currency,\n hotel,\n messages: messages\n .filter(({ storage, intent, text }) => !storage && (intent || text))\n .slice(-4)\n .map(({ intent, text, response: { form } = {} }) => ({ form, intent, text })),\n occupation,\n origin,\n tags,\n type,\n };\n\n const handleOnline = async () => {\n let next = false;\n const response = await ServiceLisa.status().catch(() => setOnline(next));\n if (response && !online) {\n next = true;\n setOnline(next);\n }\n return next;\n };\n\n const handleInput = (input, auto = false) => {\n const nextMessages = [...messages, { text: input, timestamp: new Date().getTime() }];\n setMessages(nextMessages);\n\n setTimeout(async () => {\n setBusy(true);\n const currentForm = messages.filter(({ storage }) => !storage).slice(-1)[0]?.response?.form;\n\n storeContext = { ...storeContext, form: currentForm };\n const response = await ServiceLisa.message({ auto, context: storeContext, input, locale, session }).catch(\n handleError,\n );\n if (response) addMessage(response, nextMessages, true);\n setBusy(false);\n }, DELAY_RESPONSE);\n };\n\n const handleAction = ({ context, form, intent, text } = {}) => {\n setBusy(true);\n\n setTimeout(async () => {\n const nextContext = { ...storeContext, ...context, form };\n const nextMessages = [...messages, { auto: false, text }];\n\n const response = await ServiceLisa.action({ context: nextContext, intent, locale, session }).catch(handleError);\n if (response) addMessage(response, nextMessages, true);\n setBusy(false);\n }, DELAY_RESPONSE);\n };\n\n const handleRetry = async () => {\n setBusy(true);\n\n const nextMessages = [...messages];\n nextMessages.pop();\n\n setMessages(nextMessages);\n const { text: input, response: { form } = {} } = nextMessages[nextMessages.length - 1] || {};\n storeContext = { ...storeContext, form };\n const response = await ServiceLisa.message({ context: storeContext, input, locale, session }).catch(handleError);\n if (response) addMessage(response, nextMessages, true);\n setBusy(false);\n };\n\n const handleError = (error) => {\n setError(error);\n setOnline(false);\n };\n\n const addMessage = (response = {}, messages = [], notify = false) => {\n if (!response) return;\n\n set({ lisa: response });\n setMessages([...messages, { auto: true, ...response }]);\n\n if (response.locale !== locale) Event.publish(EVENT.INTENT_LOCALE, { locale: response.locale });\n if (notify) audioNotification();\n };\n\n const { response: { form } = {} } = messages.filter(({ auto = false } = {}) => auto).pop() || [];\n const [welcomeMessage = {}, ...chatMessages] = messages.filter(({ auto, text }) => !(!auto && !text));\n\n return !skeleton && !!config ? (\n <>\n <Modal {...others} fit visible={visible} className={styles(style.container, others.className)}>\n <Header config={config} onClose={() => setVisible(false)} />\n\n {!chatMessages.length ? (\n <Welcome {...welcomeMessage.response} onInput={handleInput} />\n ) : (\n <>\n <ScrollView scrollTo={new Date().getTime()} snap={false} className={style.messages}>\n {chatMessages.map((message, index) => (\n <Message\n {...message}\n key={`message:${index}`}\n disabled={busy || index < chatMessages.length - 1}\n onAction={handleAction}\n onRetry={index === chatMessages.length - 1 && chatMessages[index - 1]?.text ? handleRetry : undefined}\n />\n ))}\n {busy && <Message auto busy />}\n </ScrollView>\n <Input disabled={busy} form={form} onValue={handleInput} className={style.input} />\n </>\n )}\n <Text light tiny className={style.warning}>\n {translate(L10N.LABEL_WARNING_RESPONSES, { name: 'Lisa' })}\n </Text>\n </Modal>\n\n <ButtonDispatcher\n {...{ config, welcomeMessage }}\n ready={!!messages.length}\n visible={visible}\n onPress={() => setVisible(true)}\n />\n </>\n ) : null;\n};\n\nChat.displayName = 'Mirai:Core:Chat';\n\nChat.propTypes = {\n name: PropTypes.string,\n};\n\nexport { Chat };\n"],"mappings":"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"}
@@ -5,26 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.L10N = void 0;
7
7
  const L10N = exports.L10N = {
8
- ACTION_CLOSE: {
9
- id: 'common.action.close'
10
- },
11
- LABEL_ASSISTANT: {
12
- id: 'lisa.label.assistant'
13
- },
14
- LABEL_GREETINGS: {
15
- id: 'lisa.label.greetings'
16
- },
17
- LABEL_GREETINGS_SESSION: {
18
- id: 'lisa.label.greetings_session'
19
- },
20
- LABEL_OFFLINE: {
21
- id: 'lisa.label.offline'
22
- },
23
- LABEL_ONLINE: {
24
- id: 'lisa.label.online'
25
- },
26
- LABEL_WHO: {
27
- id: 'finder.label.who'
8
+ LABEL_WARNING_RESPONSES: {
9
+ id: 'lisa.label.warning_responses'
28
10
  }
29
11
  };
30
12
  //# sourceMappingURL=Chat.l10n.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chat.l10n.js","names":["L10N","exports","ACTION_CLOSE","id","LABEL_ASSISTANT","LABEL_GREETINGS","LABEL_GREETINGS_SESSION","LABEL_OFFLINE","LABEL_ONLINE","LABEL_WHO"],"sources":["../../../src/components/Chat/Chat.l10n.js"],"sourcesContent":["export const L10N = {\n ACTION_CLOSE: { id: 'common.action.close' },\n\n LABEL_ASSISTANT: { id: 'lisa.label.assistant' },\n LABEL_GREETINGS: { id: 'lisa.label.greetings' },\n LABEL_GREETINGS_SESSION: { id: 'lisa.label.greetings_session' },\n LABEL_OFFLINE: { id: 'lisa.label.offline' },\n LABEL_ONLINE: { id: 'lisa.label.online' },\n LABEL_WHO: { id: 'finder.label.who' },\n};\n"],"mappings":";;;;;;AAAO,MAAMA,IAAI,GAAAC,OAAA,CAAAD,IAAA,GAAG;EAClBE,YAAY,EAAE;IAAEC,EAAE,EAAE;EAAsB,CAAC;EAE3CC,eAAe,EAAE;IAAED,EAAE,EAAE;EAAuB,CAAC;EAC/CE,eAAe,EAAE;IAAEF,EAAE,EAAE;EAAuB,CAAC;EAC/CG,uBAAuB,EAAE;IAAEH,EAAE,EAAE;EAA+B,CAAC;EAC/DI,aAAa,EAAE;IAAEJ,EAAE,EAAE;EAAqB,CAAC;EAC3CK,YAAY,EAAE;IAAEL,EAAE,EAAE;EAAoB,CAAC;EACzCM,SAAS,EAAE;IAAEN,EAAE,EAAE;EAAmB;AACtC,CAAC"}
1
+ {"version":3,"file":"Chat.l10n.js","names":["L10N","exports","LABEL_WARNING_RESPONSES","id"],"sources":["../../../src/components/Chat/Chat.l10n.js"],"sourcesContent":["export const L10N = {\n LABEL_WARNING_RESPONSES: { id: 'lisa.label.warning_responses' },\n};\n"],"mappings":";;;;;;AAAO,MAAMA,IAAI,GAAAC,OAAA,CAAAD,IAAA,GAAG;EAClBE,uBAAuB,EAAE;IAAEC,EAAE,EAAE;EAA+B;AAChE,CAAC"}
@@ -1,206 +1,31 @@
1
1
  .container {
2
- background-color: var(--mirai-chat-base);
3
- gap: var(--mirai-chat-space);
2
+ align-items: center;
3
+ align-content: center;
4
+ background-color: var(--mirai-chat-background);
5
+ height: 100svh;
6
+ justify-content: center;
4
7
  overflow: hidden;
5
- }
6
-
7
- .container.visible {
8
+ padding-bottom: calc(var(--mirai-chat-space) * 2);
9
+ width: 100svw;
8
10
  z-index: var(--mirai-chat-layer);
9
11
  }
10
12
 
11
- /* -- header ---------------------------------------------------------------- */
12
- .header {
13
- justify-content: center;
14
- backdrop-filter: blur(8px);
15
- background: var(--mirai-chat-header-background);
16
- position: fixed;
17
- transition: height var(--mirai-ui-motion-expand) var(--mirai-ui-motion-easing);
18
- width: 100%;
19
- z-index: 1;
20
- }
21
-
22
- .header .bullet {
23
- height: var(--mirai-ui-space-XS);
24
- width: var(--mirai-ui-space-XS);
25
- border-radius: 50%;
26
- margin-right: var(--mirai-ui-space-XXS);
27
- }
28
-
29
- .header .bullet.online {
30
- background-color: var(--mirai-ui-success);
31
- }
32
-
33
- .header .bullet.offline {
34
- background-color: var(--mirai-ui-error-light);
35
- }
36
-
37
- .header > * {
38
- padding: calc(var(--mirai-chat-space) / 2) var(--mirai-chat-space);
39
- }
40
-
41
- .header .content {
42
- height: var(--mirai-chat-header-height);
43
- gap: calc(var(--mirai-chat-space) / 2);
44
- }
45
-
46
- .header .form {
47
- box-shadow: 0 var(--mirai-chat-border-size) var(--mirai-chat-border-color),
48
- 0 calc(var(--mirai-chat-border-size) * -1) var(--mirai-chat-border-color);
49
- }
50
-
51
- .header .form,
52
- .header .field {
53
- gap: calc(var(--mirai-chat-space) / 2);
54
- }
55
-
56
- .header .anchor {
57
- padding: 0 calc(var(--mirai-chat-space) / 4);
58
- }
59
-
60
- /* -------------------------------------------------------------------------- */
61
13
  .messages {
62
14
  flex: 1;
63
- gap: calc(var(--mirai-chat-space) / 2);
15
+ gap: calc(var(--mirai-chat-space) * 2);
64
16
  padding-bottom: calc(var(--mirai-chat-space) * 2);
65
- padding-top: calc(var(--mirai-chat-header-height) + var(--mirai-chat-space));
66
- transition: padding-top var(--mirai-ui-motion-expand) var(--mirai-ui-motion-easing);
17
+ padding-top: calc(var(--mirai-chat-space) * 5);
67
18
  width: 100%;
68
19
  }
69
20
 
70
- /* -- button ---------------------------------------------------------------- */
71
- .buttonAvatar {
72
- bottom: var(--mirai-chat-space);
73
- position: fixed;
74
- right: var(--mirai-chat-space);
75
- transition: transform var(--mirai-ui-motion-collapse) var(--mirai-ui-motion-easing);
76
- transform: translateY(250%);
77
- }
78
-
79
- .buttonAvatar.left {
80
- left: var(--mirai-chat-space);
81
- }
82
-
83
- .buttonAvatar.right {
84
- right: var(--mirai-chat-space);
85
- }
86
-
87
- .buttonAvatar.top {
88
- top: var(--mirai-chat-space);
89
- transform: translateY(-25svh);
90
- }
91
-
92
- .buttonAvatar.bottom {
93
- bottom: var(--mirai-chat-space);
94
- transform: translateY(25svh);
95
- }
96
-
97
- .buttonAvatar.visible {
98
- transform: translateY(0%);
99
- z-index: var(--mirai-chat-layer);
100
- }
101
-
102
- .buttonAvatar .avatar {
103
- box-shadow: var(--mirai-chat-box-shadow);
104
- }
105
-
106
- .buttonAvatar .welcome {
107
- background-color: var(--mirai-chat-base);
108
- border-radius: var(--mirai-chat-border-radius);
109
- box-shadow: var(--mirai-chat-box-shadow);
110
- margin-bottom: var(--mirai-chat-space);
111
- opacity: 0;
112
- padding: var(--mirai-chat-space);
113
- position: absolute;
114
- transform-origin: bottom right;
115
- transform: scale(0);
116
- transition: all var(--mirai-ui-motion-collapse) cubic-bezier(0.68, -0.55, 0.27, 1.55);
117
- }
118
-
119
- .buttonAvatar.left .welcome {
120
- left: 0;
121
- }
122
-
123
- .buttonAvatar.right .welcome {
124
- right: 0;
125
- }
126
-
127
- .buttonAvatar.top .welcome {
128
- top: calc(var(--mirai-chat-avatar-size) + calc(var(--mirai-chat-space) / 2));
129
- }
130
-
131
- .buttonAvatar.bottom .welcome {
132
- bottom: calc(var(--mirai-chat-avatar-size) - calc(var(--mirai-chat-space) / 2));
133
- }
134
-
135
- .buttonAvatar .welcome.visible {
136
- opacity: 1;
137
- transform: scale(1);
21
+ .input {
22
+ width: calc(100% - calc(var(--mirai-chat-space) * 2));
23
+ max-width: var(--mirai-chat-content-max-width);
138
24
  }
139
25
 
140
- .buttonAvatar .welcome:before {
141
- border-style: solid;
142
- border-width: calc(var(--mirai-chat-space) / 2);
143
- content: '';
144
- display: block;
145
- height: 0;
26
+ .warning {
27
+ bottom: calc(var(--mirai-chat-space) / 2);
146
28
  position: absolute;
147
- width: 0;
148
- }
149
-
150
- .buttonAvatar.left .welcome:before {
151
- left: var(--mirai-ui-space-L);
152
- }
153
-
154
- .buttonAvatar.right .welcome:before {
155
- right: var(--mirai-ui-space-L);
156
- }
157
-
158
- .buttonAvatar.top .welcome:before {
159
- border-color: transparent transparent var(--mirai-chat-base) transparent;
160
- top: calc(var(--mirai-chat-space) / -1);
161
- }
162
-
163
- .buttonAvatar.bottom .welcome:before {
164
- border-color: var(--mirai-chat-base) transparent transparent transparent;
165
- bottom: calc(var(--mirai-chat-space) / -1);
166
- }
167
-
168
- /* S */
169
- @media only screen and (max-width: 480px) {
170
- .container {
171
- height: 100svh;
172
- width: 100svw;
173
- }
174
-
175
- .welcome {
176
- width: calc(100vw - calc(var(--mirai-ui-space-M) * 2));
177
- }
178
- }
179
-
180
- /* M & L */
181
- @media only screen and (min-width: 481px) {
182
- .container {
183
- border-radius: var(--mirai-chat-border-radius);
184
- bottom: var(--mirai-chat-space);
185
- box-shadow: var(--mirai-chat-box-shadow);
186
- max-height: var(--mirai-chat-max-height);
187
- max-width: var(--mirai-chat-width);
188
- height: var(--mirai-chat-height);
189
- min-height: var(--mirai-chat-min-height);
190
- position: fixed;
191
- right: var(--mirai-chat-space);
192
- transform: translateY(calc(var(--mirai-chat-max-height) + calc(var(--mirai-chat-space) * 2)));
193
- transition: transform var(--mirai-ui-motion-collapse) var(--mirai-ui-motion-easing);
194
- width: 100%;
195
- }
196
-
197
- .container.visible {
198
- transform: translateY(0%);
199
- }
200
-
201
- .welcome {
202
- width: calc(var(--mirai-ui-breakpoint-S) - calc(var(--mirai-ui-space-XXL) * 2));
203
- }
204
29
  }
205
30
 
206
31
  @media print {
@@ -34,6 +34,7 @@
34
34
 
35
35
  .avatar.small {
36
36
  animation: avatarRotate 5s infinite linear, avatarGlowSmall 2.5s infinite ease-in-out;
37
+ box-shadow: 0 0 2px var(--mirai-chat-avatar-color-2), 0 0 4px var(--mirai-chat-avatar-color-3);
37
38
  }
38
39
 
39
40
  .avatar .face {
@@ -129,10 +130,10 @@
129
130
  @keyframes avatarGlowSmall {
130
131
  0%,
131
132
  100% {
132
- box-shadow: 0 0 8px var(--mirai-chat-avatar-color-2), 0 0 16px var(--mirai-chat-avatar-color-3);
133
+ box-shadow: 0 0 2px var(--mirai-chat-avatar-color-2), 0 0 4px var(--mirai-chat-avatar-color-3);
133
134
  }
134
135
  50% {
135
- box-shadow: 0 0 12px var(--mirai-chat-avatar-color-1), 0 0 24px var(--mirai-chat-avatar-color-4);
136
+ box-shadow: 0 0 4px var(--mirai-chat-avatar-color-1), 0 0 8px var(--mirai-chat-avatar-color-4);
136
137
  }
137
138
  }
138
139