favesalon-embed 1.0.3 → 1.0.4

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 (161) hide show
  1. package/dist/{favesalon-embed/_commonjsHelpers-9bc404fc.js → cjs/_commonjsHelpers-5cfcba41.js} +6 -14
  2. package/dist/cjs/chat-box_5.cjs.entry.js +17439 -0
  3. package/dist/cjs/chat-button.cjs.entry.js +55 -0
  4. package/dist/cjs/colors-38421769.js +69 -0
  5. package/dist/cjs/favesalon-embed.cjs.js +23 -0
  6. package/dist/cjs/google-map.cjs.entry.js +52 -0
  7. package/dist/{favesalon-embed/index-ac52896a.js → cjs/index-7f190886.js} +47 -454
  8. package/dist/cjs/index-dd8176c4.js +1531 -0
  9. package/dist/cjs/index.cjs.js +2 -0
  10. package/dist/cjs/loader.cjs.js +22 -0
  11. package/dist/cjs/relativeTime-3721080d.js +9 -0
  12. package/dist/cjs/salon-booking-modal.cjs.entry.js +30 -0
  13. package/dist/cjs/salon-booking.cjs.entry.js +51 -0
  14. package/dist/cjs/salon-gift-card-modal.cjs.entry.js +29 -0
  15. package/dist/cjs/salon-gift-card.cjs.entry.js +51 -0
  16. package/dist/cjs/salon-info.cjs.entry.js +33 -0
  17. package/dist/cjs/salon-latest-reviews.cjs.entry.js +97 -0
  18. package/dist/cjs/salon-latest-styles_3.cjs.entry.js +241 -0
  19. package/dist/cjs/salon-lookbook.cjs.entry.js +222 -0
  20. package/dist/cjs/salon-ranking.cjs.entry.js +60 -0
  21. package/dist/cjs/salon-reviews.cjs.entry.js +193 -0
  22. package/dist/cjs/salon-services.cjs.entry.js +81 -0
  23. package/dist/cjs/salon-stylists.cjs.entry.js +118 -0
  24. package/dist/{favesalon-embed/services-7cb8f2a6.js → cjs/services-d1bdf299.js} +55 -2415
  25. package/dist/cjs/style-detail.cjs.entry.js +312 -0
  26. package/dist/cjs/utils-c5a33b3c.js +23 -0
  27. package/dist/collection/collection-manifest.json +33 -0
  28. package/dist/collection/components/chat-box/index.css +105 -0
  29. package/dist/collection/components/chat-box/index.js +138 -0
  30. package/dist/collection/components/chat-button/index.css +101 -0
  31. package/dist/collection/components/chat-button/index.js +155 -0
  32. package/dist/collection/components/chat-form/index.css +40 -0
  33. package/dist/collection/components/chat-form/index.js +79 -0
  34. package/dist/collection/components/chat-messages/index.css +48 -0
  35. package/dist/collection/components/chat-messages/index.js +142 -0
  36. package/dist/collection/components/chat-rooms/index.css +102 -0
  37. package/dist/collection/components/chat-rooms/index.js +157 -0
  38. package/dist/collection/components/google-map/assets/map--placeholder.jpeg +0 -0
  39. package/dist/collection/components/google-map/index.css +5 -0
  40. package/dist/collection/components/google-map/index.js +90 -0
  41. package/dist/collection/components/salon-booking/index.css +30 -0
  42. package/dist/collection/components/salon-booking/index.js +126 -0
  43. package/dist/collection/components/salon-booking/salon-booking-modal.js +92 -0
  44. package/dist/collection/components/salon-gift-card/index.css +30 -0
  45. package/dist/collection/components/salon-gift-card/index.js +126 -0
  46. package/dist/collection/components/salon-gift-card/salon-gift-card-modal.js +73 -0
  47. package/dist/collection/components/salon-info/index.css +1 -0
  48. package/dist/collection/components/salon-info/index.js +77 -0
  49. package/dist/collection/components/salon-latest-reviews/index.css +11 -0
  50. package/dist/collection/components/salon-latest-reviews/index.js +163 -0
  51. package/dist/collection/components/salon-latest-styles/index.css +12 -0
  52. package/dist/{favesalon-embed/salon-latest-styles.entry.js → collection/components/salon-latest-styles/index.js} +99 -14
  53. package/dist/collection/components/salon-locations/index.css +24 -0
  54. package/dist/{favesalon-embed/salon-locations.entry.js → collection/components/salon-locations/index.js} +95 -15
  55. package/dist/collection/components/salon-lookbook/index.css +15 -0
  56. package/dist/collection/components/salon-lookbook/index.js +368 -0
  57. package/dist/collection/components/salon-ranking/index.css +3 -0
  58. package/dist/collection/components/salon-ranking/index.js +117 -0
  59. package/dist/collection/components/salon-reviews/index.css +18 -0
  60. package/dist/collection/components/salon-reviews/index.js +249 -0
  61. package/dist/collection/components/salon-schedules/index.css +18 -0
  62. package/dist/{favesalon-embed/salon-schedules.entry.js → collection/components/salon-schedules/index.js} +95 -14
  63. package/dist/collection/components/salon-services/index.css +1 -0
  64. package/dist/collection/components/salon-services/index.js +146 -0
  65. package/dist/collection/components/salon-stylists/index.css +43 -0
  66. package/dist/collection/components/salon-stylists/index.js +184 -0
  67. package/dist/collection/components/style-detail/index.css +76 -0
  68. package/dist/collection/components/style-detail/index.js +386 -0
  69. package/dist/collection/components/user-avatar/index.css +0 -0
  70. package/dist/collection/components/user-avatar/index.js +159 -0
  71. package/dist/collection/constants/colors.js +65 -0
  72. package/dist/collection/global/global.js +0 -0
  73. package/dist/collection/index.js +1 -0
  74. package/dist/collection/mocks/users.js +10 -0
  75. package/dist/collection/services/services.js +295 -0
  76. package/dist/collection/types/chat.js +23 -0
  77. package/dist/collection/types/common.js +11 -0
  78. package/dist/collection/types/review.js +39 -0
  79. package/dist/collection/types/salon.js +58 -0
  80. package/dist/collection/types/service.js +24 -0
  81. package/dist/collection/types/style.js +128 -0
  82. package/dist/collection/types/stylist.js +30 -0
  83. package/dist/collection/types/user.js +10 -0
  84. package/dist/collection/utils/utils.js +23 -0
  85. package/dist/custom-elements/index.js +44974 -0
  86. package/dist/{favesalon-embed/_commonjsHelpers-a4f66ccd.js → esm/_commonjsHelpers-66ac50f5.js} +2 -14
  87. package/dist/{favesalon-embed/chat-rooms.entry.js → esm/chat-box_5.entry.js} +182 -30
  88. package/dist/{favesalon-embed → esm}/chat-button.entry.js +3 -3
  89. package/dist/esm/favesalon-embed.js +18 -0
  90. package/dist/{favesalon-embed → esm}/google-map.entry.js +1 -1
  91. package/dist/esm/index-0494771f.js +1504 -0
  92. package/dist/{favesalon-embed/index-00b83e1c.js → esm/index-a1c7583c.js} +15 -425
  93. package/dist/esm/index.js +1 -0
  94. package/dist/esm/loader.js +18 -0
  95. package/dist/esm/polyfills/core-js.js +11 -0
  96. package/dist/esm/polyfills/css-shim.js +1 -0
  97. package/dist/esm/polyfills/dom.js +79 -0
  98. package/dist/esm/polyfills/es5-html-element.js +1 -0
  99. package/dist/esm/polyfills/index.js +34 -0
  100. package/dist/esm/polyfills/system.js +6 -0
  101. package/dist/esm/relativeTime-baa50aa2.js +7 -0
  102. package/dist/{favesalon-embed → esm}/salon-booking-modal.entry.js +1 -1
  103. package/dist/{favesalon-embed → esm}/salon-booking.entry.js +3 -3
  104. package/dist/{favesalon-embed → esm}/salon-gift-card-modal.entry.js +1 -1
  105. package/dist/{favesalon-embed → esm}/salon-gift-card.entry.js +3 -3
  106. package/dist/{favesalon-embed → esm}/salon-info.entry.js +3 -3
  107. package/dist/{favesalon-embed → esm}/salon-latest-reviews.entry.js +4 -4
  108. package/dist/esm/salon-latest-styles_3.entry.js +235 -0
  109. package/dist/{favesalon-embed → esm}/salon-lookbook.entry.js +3 -3
  110. package/dist/{favesalon-embed → esm}/salon-ranking.entry.js +1 -1
  111. package/dist/{favesalon-embed → esm}/salon-reviews.entry.js +3 -3
  112. package/dist/{favesalon-embed → esm}/salon-services.entry.js +3 -3
  113. package/dist/{favesalon-embed → esm}/salon-stylists.entry.js +3 -3
  114. package/dist/{favesalon-embed/services-7c46a2fd.js → esm/services-257442e2.js} +99 -2467
  115. package/dist/{favesalon-embed → esm}/style-detail.entry.js +4 -4
  116. package/dist/{favesalon-embed/utils-2c19db45.js → esm/utils-e97485e0.js} +0 -6
  117. package/dist/favesalon-embed/favesalon-embed.css +1 -2439
  118. package/dist/favesalon-embed/favesalon-embed.esm.js +1 -148
  119. package/dist/favesalon-embed/index.esm.js +0 -1
  120. package/dist/favesalon-embed/p-05a1c88a.entry.js +1 -0
  121. package/dist/favesalon-embed/p-0acf0447.entry.js +1 -0
  122. package/dist/favesalon-embed/p-0bc4f624.js +1 -0
  123. package/dist/favesalon-embed/p-1af1515f.entry.js +1 -0
  124. package/dist/favesalon-embed/p-1cba5fc9.entry.js +1 -0
  125. package/dist/favesalon-embed/p-39a4ef15.entry.js +1 -0
  126. package/dist/favesalon-embed/p-3e2cb05b.entry.js +1 -0
  127. package/dist/favesalon-embed/p-47e646f8.js +1 -0
  128. package/dist/favesalon-embed/p-487b311f.entry.js +1 -0
  129. package/dist/favesalon-embed/p-55387c2f.entry.js +1 -0
  130. package/dist/favesalon-embed/p-566f05b4.entry.js +1 -0
  131. package/dist/favesalon-embed/p-862a0de0.entry.js +1 -0
  132. package/dist/favesalon-embed/p-9fe0cbeb.js +2 -0
  133. package/dist/favesalon-embed/p-a33331cc.js +1 -0
  134. package/dist/favesalon-embed/p-aeeb7b5f.entry.js +1 -0
  135. package/dist/favesalon-embed/p-b08e5b54.js +6 -0
  136. package/dist/favesalon-embed/p-b5cca5fc.entry.js +1 -0
  137. package/dist/favesalon-embed/p-c7fb7af5.js +1580 -0
  138. package/dist/favesalon-embed/p-ccab56d8.js +1 -0
  139. package/dist/favesalon-embed/p-d6e13053.entry.js +1 -0
  140. package/dist/favesalon-embed/p-dee42d34.entry.js +1 -0
  141. package/dist/favesalon-embed/p-e661ca1d.entry.js +1 -0
  142. package/dist/favesalon-embed/p-eeceab9c.entry.js +1 -0
  143. package/dist/index.cjs.js +1 -0
  144. package/dist/index.js +1 -0
  145. package/package.json +1 -1
  146. package/dist/favesalon-embed/app-globals-437cc3f3.js +0 -712
  147. package/dist/favesalon-embed/app-globals-60769a2c.js +0 -712
  148. package/dist/favesalon-embed/chat-box.entry.js +0 -54
  149. package/dist/favesalon-embed/chat-form.entry.js +0 -39
  150. package/dist/favesalon-embed/chat-messages.entry.js +0 -53
  151. package/dist/favesalon-embed/css-shim-b7d3d95f.js +0 -4
  152. package/dist/favesalon-embed/dom-64053c71.js +0 -73
  153. package/dist/favesalon-embed/index-04c09911.js +0 -3371
  154. package/dist/favesalon-embed/index-888e99e3.js +0 -3371
  155. package/dist/favesalon-embed/isObject-13b86c17.js +0 -203
  156. package/dist/favesalon-embed/relativeTime-15477f02.js +0 -7
  157. package/dist/favesalon-embed/relativeTime-268e64b0.js +0 -7
  158. package/dist/favesalon-embed/services-55a87166.js +0 -23655
  159. package/dist/favesalon-embed/shadow-css-98135883.js +0 -387
  160. package/dist/favesalon-embed/user-avatar.entry.js +0 -50
  161. /package/dist/{favesalon-embed → esm}/colors-ea36347a.js +0 -0
@@ -1,27 +1,15 @@
1
1
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
2
2
 
3
- function getDefaultExportFromCjs (x) {
4
- return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
5
- }
6
-
7
3
  function createCommonjsModule(fn, basedir, module) {
8
4
  return module = {
9
5
  path: basedir,
10
6
  exports: {},
11
7
  require: function (path, base) {
12
- return commonjsRequire(path, (base === undefined || base === null) ? module.path : base);
8
+ return commonjsRequire();
13
9
  }
14
10
  }, fn(module, module.exports), module.exports;
15
11
  }
16
12
 
17
- function getDefaultExportFromNamespaceIfPresent (n) {
18
- return n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;
19
- }
20
-
21
- function getDefaultExportFromNamespaceIfNotNamed (n) {
22
- return n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;
23
- }
24
-
25
13
  function getAugmentedNamespace(n) {
26
14
  if (n.__esModule) return n;
27
15
  var a = Object.defineProperty({}, '__esModule', {value: true});
@@ -41,4 +29,4 @@ function commonjsRequire () {
41
29
  throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');
42
30
  }
43
31
 
44
- export { createCommonjsModule as a, getAugmentedNamespace as b, commonjsGlobal as c, getDefaultExportFromCjs as g };
32
+ export { commonjsGlobal as a, createCommonjsModule as c, getAugmentedNamespace as g };
@@ -1,17 +1,138 @@
1
- import { r as registerInstance, h } from './index-888e99e3.js';
2
- import { a as createCommonjsModule, c as commonjsGlobal } from './_commonjsHelpers-a4f66ccd.js';
1
+ import { r as registerInstance, h } from './index-0494771f.js';
3
2
  import { C as Colors } from './colors-ea36347a.js';
3
+ import { H as HttpService, d as dayjs_min, a as dateFormat } from './services-257442e2.js';
4
+ import { r as relativeTime } from './relativeTime-baa50aa2.js';
5
+ import { c as createCommonjsModule, a as commonjsGlobal } from './_commonjsHelpers-66ac50f5.js';
6
+
7
+ const indexCss$4 = ".chat-widget,.chat-widget--sidebar,.chat-widget--content{display:flex;height:100%;width:100%}.chat-widget{font-size:16px;position:relative;font-family:'Roboto', sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chat-widget--sidebar,.chat-widget--content{background-color:#fff;border:1px solid #EFEFEF;position:absolute;inset:0;flex-direction:column}.chat-widget .chat-widget--sidebar{z-index:10}.chat-widget .chat-widget--content{z-index:5}.chat-widget.has-chat-room .chat-widget--content{z-index:10}.chat-widget--content-header{background-color:#001529;border-bottom:1px solid #EFEFEF;display:flex;align-items:center;justify-content:space-between;padding:16px}.chat-widget--content-title{font-size:20px;font-weight:600;line-height:1;margin:0}.chat-widget--content-close{border:1px solid #fff;cursor:pointer;display:block;position:absolute;z-index:1000;top:50%;right:0;width:30px;height:30px;transform:translate(0, -50%);-moz-border-radius:30px;-webkit-border-radius:30px;border-radius:30px;background-size:contain;background-repeat:no-repeat;background-position:center center;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAA3hJREFUaAXlm8+K00Acx7MiCIJH/yw+gA9g25O49SL4AO3Bp1jw5NvktC+wF88qevK4BU97EmzxUBCEolK/n5gp3W6TTJPfpNPNF37MNsl85/vN/DaTmU6PknC4K+pniqeKJ3k8UnkvDxXJzzy+q/yaxxeVHxW/FNHjgRSeKt4rFoplzaAuHHDBGR2eS9G54reirsmienDCTRt7xwsp+KAoEmt9nLaGitZxrBbPFNaGfPloGw2t4JVamSt8xYW6Dg1oCYo3Yv+rCGViV160oMkcd8SYKnYV1Nb1aEOjCe6L5ZOiLfF120EjWhuBu3YIZt1NQmujnk5F4MgOpURzLfAwOBSTmzp3fpDxuI/pabxpqOoz2r2HLAb0GMbZKlNV5/Hg9XJypguryA7lPF5KMdTZQzHjqxNPhWhzIuAruOl1eNqKEx1tSh5rfbxdw7mOxCq4qS68ZTjKS1YVvilu559vWvFHhh4rZrdyZ69Vmpgdj8fJbDZLJpNJ0uv1cnr/gjrUhQMuI+ANjyuwftQ0bbL6Erp0mM/ny8Fg4M3LtdRxgMtKl3jwmIHVxYXChFy94/Rmpa/pTbNUhstKV+4Rr8lLQ9KlUvJKLyG8yvQ2s9SBy1Jb7jV5a0yapfF6apaZLjLLcWtd4sNrmJUMHyM+1xibTjH82Zh01TNlhsrOhdKTe00uAzZQmN6+KW+sDa/JD2PSVQ873m29yf+1Q9VDzfEYlHi1G5LKBBWZbtEsHbFwb1oYDwr1ZiF/2bnCSg1OBE/pfr9/bWx26UxJL3ONPISOLKUvQza0LZUxSKyjpdTGa/vDEr25rddbMM0Q3O6Lx3rqFvU+x6UrRKQY7tyrZecmD9FODy8uLizTmilwNj0kraNcAJhOp5aGVwsAGD5VmJBrWWbJSgWT9zrzWepQF47RaGSiKfeGx6Szi3gzmX/HHbihwBser4B9UJYpFBNX4R6vTn3VQnez0SymnrHQMsRYGTr1dSk34ljRqS/EMd2pLQ8YBp3a1PLfcqCpo8gtHkZFHKkTX6fs3MY0blKnth66rKCnU0VRGu37ONrQaA4eZDFtWAu2fXj9zjFkxTBOo8F7t926gTp/83Kyzzcy2kZD6xiqxTYnHLRFm3vHiRSwNSjkz3hoIzo8lCKWUlg/YtGs7tObunDAZfpDLbfEI15zsEIY3U/x/gHHc/G1zltnAgAAAABJRU5ErkJggg==')}@media (min-width: 992px){.chat-widget--sidebar,.chat-widget--content{position:static;width:auto;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.chat-widget--sidebar{min-width:320px;max-width:320px;margin-right:24px}.chat-widget--content{flex-grow:1;flex-shrink:1}.chat-rooms--search,.chat-widget--content-header{-moz-border-radius:8px 8px 0 0;-webkit-border-radius:8px 8px 0 0;border-radius:8px 8px 0 0}}";
8
+
9
+ const ChatBox = class {
10
+ constructor(hostRef) {
11
+ registerInstance(this, hostRef);
12
+ this.onClickRoom = (chatRoom) => {
13
+ this.activeRoom = chatRoom;
14
+ };
15
+ this.primaryColor = undefined;
16
+ this.accessToken = undefined;
17
+ this.senderId = undefined;
18
+ this.chatRooms = undefined;
19
+ this.activeRoom = undefined;
20
+ }
21
+ componentWillLoad() {
22
+ this.fetchData();
23
+ }
24
+ async fetchData() {
25
+ try {
26
+ this.chatRooms = await HttpService().fetchChatRooms(this.accessToken);
27
+ (this.chatRooms || []).forEach((chatRoom) => {
28
+ HttpService().fetchChatMessages(chatRoom.uid, (messages) => {
29
+ this.chatRooms = [...(this.chatRooms || [])].map((room) => {
30
+ if (chatRoom.uid === room.uid) {
31
+ room.messages = messages;
32
+ }
33
+ return room;
34
+ });
35
+ });
36
+ });
37
+ }
38
+ catch (e) {
39
+ this.chatRooms = [];
40
+ }
41
+ }
42
+ render() {
43
+ const senderInfo = this.activeRoom ? (this.activeRoom.members || []).find(user => user.id === Number(this.senderId)) : null;
44
+ const receiverInfo = this.activeRoom ? (this.activeRoom.members || []).find(user => user.id !== Number(this.senderId)) : null;
45
+ return (h("div", { class: `chat-widget ${this.activeRoom ? 'has-chat-room' : ''}` }, h("div", { class: "chat-widget--sidebar" }, h("chat-rooms", { "sender-id": Number(this.senderId), activeRoom: this.activeRoom, chatRooms: this.chatRooms, onClickRoom: this.onClickRoom })), h("div", { class: "chat-widget--content" }, receiverInfo && (h("div", { class: "chat-widget--content-header" }, h("user-avatar", { size: 40, avatar: receiverInfo.avatar, name: h("div", { class: "chat-room--user-name", style: { color: '#fff' } }, receiverInfo.fullName), shortName: String(receiverInfo.fullName || '').charAt(0) }), h("div", { style: { position: 'relative' } }, h("div", { class: "chat-widget--content-close", onClick: () => this.onClickRoom(null) })))), h("div", { style: {
46
+ flexShrink: '1',
47
+ flexGrow: '1',
48
+ overflowY: 'auto',
49
+ padding: '16px',
50
+ } }, this.activeRoom && (h("chat-messages", { sender: senderInfo, receiver: receiverInfo, messages: this.activeRoom.messages || [], "chat-room-id": this.activeRoom.uid })), !this.activeRoom && (h("div", { style: { paddingTop: '72px', textAlign: 'center' } }, h("div", { class: "chat-widget--content-title" }, "Welcome back!"), h("div", { style: { marginTop: "12px" } }, "Select any user in left hand side to get started.")))), this.activeRoom && (h("div", { style: { borderTop: `1px solid ${Colors.Gray02}` } }, h("chat-form", { "sender-id": Number(senderInfo.id), "chat-room-id": this.activeRoom.uid }))))));
51
+ }
52
+ };
53
+ ChatBox.style = indexCss$4;
54
+
55
+ const indexCss$3 = ".chat-form{display:flex;height:56px;width:100%}.chat-form #chat-form--input{border:none;outline:none;flex-shrink:1;flex-grow:1;height:100%;font-size:16px;padding-left:16px;padding-right:16px;-moz-border-radius:6px;-webkit-border-radius:6px;border-radius:6px}.chat-form>button{background-color:#001529;border:none;color:#fff;cursor:pointer;font-size:16px;min-width:80px;height:42px;margin:7px;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}.chat-form>button:hover,.chat-form>button:focus,.chat-form>button:active{background-color:#001529}";
56
+
57
+ const ChatForm = class {
58
+ constructor(hostRef) {
59
+ registerInstance(this, hostRef);
60
+ this.onSubmitMessage = async () => {
61
+ try {
62
+ const elNewMessage = document.getElementById('chat-form--input');
63
+ if (!!elNewMessage.value) {
64
+ await HttpService().sendChatMessage({
65
+ message: elNewMessage.value,
66
+ senderId: this.senderId,
67
+ chatRoomId: this.chatRoomId,
68
+ });
69
+ elNewMessage.value = '';
70
+ }
71
+ }
72
+ catch (error) { }
73
+ };
74
+ this.senderId = undefined;
75
+ this.chatRoomId = undefined;
76
+ }
77
+ render() {
78
+ return (h("div", { class: "chat-form" }, h("input", { id: "chat-form--input", type: "text", placeholder: "Enter a message...", onKeyPress: (evt) => {
79
+ if (evt.key === 'Enter') {
80
+ evt.preventDefault();
81
+ this.onSubmitMessage();
82
+ }
83
+ } }), h("button", { type: "button", onClick: () => this.onSubmitMessage() }, "Send")));
84
+ }
85
+ };
86
+ ChatForm.style = indexCss$3;
87
+
88
+ const indexCss$2 = ".chat-message{overflow:hidden;clear:both;min-width:240px}.chat-message+.chat-message{margin-top:6px}.chat-message--meta{display:flex}.chat-message--title{background-color:#F1F1F1;padding:8px 12px;position:relative;float:left;margin-top:6px;-moz-border-radius:0 10px 10px 10px;-webkit-border-radius:0 10px 10px 10px;border-radius:0 10px 10px 10px}.chat-message--time{clear:both;color:#999;font-size:75%;padding-top:2px}.chat-message.is-owner .chat-message--content{margin-left:12px}.chat-message.is-guest .chat-message--meta{flex-direction:row-reverse}.chat-message.is-guest .chat-message--title{background-color:#EFF7FF;float:right;margin-right:12px;text-align:right;-moz-border-radius:10px 0 10px 10px;-webkit-border-radius:10px 0 10px 10px;border-radius:10px 0 10px 10px}";
89
+
90
+ dayjs_min.extend(relativeTime);
91
+ const ChatMessages = class {
92
+ constructor(hostRef) {
93
+ registerInstance(this, hostRef);
94
+ this.markMessagesAsRead = async () => {
95
+ try {
96
+ const unreadMessages = (this.messages || []).filter(message => {
97
+ return Boolean(message.unRead) && message.senderId !== this.sender.id;
98
+ });
99
+ if (unreadMessages.length > 0) {
100
+ await HttpService().markMessagesAsRead(this.chatRoomId, unreadMessages);
101
+ }
102
+ }
103
+ catch (e) { }
104
+ };
105
+ this.scrollToLastMessage = () => {
106
+ const targetElement = document.getElementById('chat--last-message');
107
+ targetElement && targetElement.scrollIntoView();
108
+ };
109
+ this.renderMessage = (chatMessage) => {
110
+ const { message, senderId, timestamp } = chatMessage;
111
+ const isOwner = this.sender.id === senderId;
112
+ const todayStr = dayjs_min().format(dateFormat);
113
+ const messageDayStr = dayjs_min(timestamp).format(dateFormat);
114
+ return (h("div", { class: `chat-message ${isOwner ? 'is-owner' : 'is-guest'}` }, h("div", { class: "chat-message--meta" }, h("user-avatar", { size: 40, shortName: String(((isOwner ? this.sender : this.receiver) || {}).fullName || '').charAt(0), avatar: ((isOwner ? this.sender : this.receiver) || {}).avatar }), h("div", { class: "chat-message--content" }, h("div", { class: "chat-message--title" }, message), timestamp && (h("div", { class: "chat-message--time" }, todayStr === messageDayStr ? dayjs_min(timestamp).format('HH:mm') : dayjs_min(timestamp).fromNow()))))));
115
+ };
116
+ this.sender = {};
117
+ this.receiver = {};
118
+ this.messages = [];
119
+ this.chatRoomId = undefined;
120
+ }
121
+ componentDidLoad() {
122
+ this.markMessagesAsRead();
123
+ }
124
+ componentDidUpdate() {
125
+ this.scrollToLastMessage();
126
+ }
127
+ render() {
128
+ const isEmpty = (this.messages || []).length === 0;
129
+ return (h("div", { class: "chat-messages" }, !isEmpty && this.messages.map(this.renderMessage), isEmpty && (h("div", { style: { padding: '48px', textAlign: 'center' } }, h("div", { style: { color: Colors.Green04 } }, "No messages yet"))), h("div", { id: "chat--last-message" })));
130
+ }
131
+ };
132
+ ChatMessages.style = indexCss$2;
4
133
 
5
134
  var lodash = createCommonjsModule(function (module, exports) {
6
- /**
7
- * @license
8
- * Lodash <https://lodash.com/>
9
- * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
10
- * Released under MIT license <https://lodash.com/license>
11
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
12
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
13
- */
14
- ;(function() {
135
+ (function() {
15
136
 
16
137
  /** Used as a safe reference for `undefined` in pre-ES5 environments. */
17
138
  var undefined$1;
@@ -441,7 +562,7 @@ var lodash = createCommonjsModule(function (module, exports) {
441
562
  var root = freeGlobal || freeSelf || Function('return this')();
442
563
 
443
564
  /** Detect free variable `exports`. */
444
- var freeExports = 'object' == 'object' && exports && !exports.nodeType && exports;
565
+ var freeExports = exports && !exports.nodeType && exports;
445
566
 
446
567
  /** Detect free variable `module`. */
447
568
  var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
@@ -17187,21 +17308,7 @@ var lodash = createCommonjsModule(function (module, exports) {
17187
17308
  var _ = runInContext();
17188
17309
 
17189
17310
  // Some AMD build optimizers, like r.js, check for condition patterns like:
17190
- if (typeof undefined$1 == 'function' && typeof undefined$1.amd == 'object' && undefined$1.amd) {
17191
- // Expose Lodash on the global object to prevent errors when Lodash is
17192
- // loaded by a script tag in the presence of an AMD loader.
17193
- // See http://requirejs.org/docs/errors.html#mismatch for more details.
17194
- // Use `_.noConflict` to remove Lodash from the global object.
17195
- root._ = _;
17196
-
17197
- // Define as an anonymous module so, through path mapping, it can be
17198
- // referenced as the "underscore" module.
17199
- undefined$1(function() {
17200
- return _;
17201
- });
17202
- }
17203
- // Check for `exports` after `define` in case a build optimizer adds it.
17204
- else if (freeModule) {
17311
+ if (freeModule) {
17205
17312
  // Export for Node.js.
17206
17313
  (freeModule.exports = _)._ = _;
17207
17314
  // Export for CommonJS support.
@@ -17214,7 +17321,7 @@ var lodash = createCommonjsModule(function (module, exports) {
17214
17321
  }.call(commonjsGlobal));
17215
17322
  });
17216
17323
 
17217
- const indexCss = "chat-rooms,.chat-rooms{display:flex;flex-direction:column;height:100%;width:100%}.chat-rooms--search{background-color:#001529;border-bottom:1px solid #EFEFEF;display:flex;padding:16px}.chat-rooms--search>input{background-color:#F5F5F5;border:1px solid #EFEFEF;height:40px;width:100%;font-size:16px;padding-left:16px;padding-right:16px;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}.chat-rooms--search>input:hover,.chat-rooms--search>input:active{border:1px solid #DBDBDB}.chat-rooms--search>button{background-color:#F5F5F5;border:1px solid #EFEFEF;font-size:16px;min-width:80px;height:40px;margin-left:12px;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}.chat-rooms--list{flex-grow:1;flex-shrink:1;overflow-y:auto}.chat-room{cursor:pointer;display:flex;position:relative;margin-bottom:1px;padding:12px 16px}.chat-room:hover,.chat-room.is-active{background-color:#F5F5F5}.chat-room--user{flex-grow:1;flex-shrink:1;overflow:hidden}.chat-room--user-name{font-size:16px;font-weight:600;line-height:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-room--latest-message{font-size:12px;line-height:14px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-room--user-indicator{background-color:rgb(240, 90, 97);border:1px solid rgb(255, 255, 255);height:8px;width:8px;position:absolute;right:8px;top:50%;transform:translate(0, -50%);-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}";
17324
+ const indexCss$1 = "chat-rooms,.chat-rooms{display:flex;flex-direction:column;height:100%;width:100%}.chat-rooms--search{background-color:#001529;border-bottom:1px solid #EFEFEF;display:flex;padding:16px}.chat-rooms--search>input{background-color:#F5F5F5;border:1px solid #EFEFEF;height:40px;width:100%;font-size:16px;padding-left:16px;padding-right:16px;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}.chat-rooms--search>input:hover,.chat-rooms--search>input:active{border:1px solid #DBDBDB}.chat-rooms--search>button{background-color:#F5F5F5;border:1px solid #EFEFEF;font-size:16px;min-width:80px;height:40px;margin-left:12px;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}.chat-rooms--list{flex-grow:1;flex-shrink:1;overflow-y:auto}.chat-room{cursor:pointer;display:flex;position:relative;margin-bottom:1px;padding:12px 16px}.chat-room:hover,.chat-room.is-active{background-color:#F5F5F5}.chat-room--user{flex-grow:1;flex-shrink:1;overflow:hidden}.chat-room--user-name{font-size:16px;font-weight:600;line-height:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-room--latest-message{font-size:12px;line-height:14px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-room--user-indicator{background-color:rgb(240, 90, 97);border:1px solid rgb(255, 255, 255);height:8px;width:8px;position:absolute;right:8px;top:50%;transform:translate(0, -50%);-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}";
17218
17325
 
17219
17326
  const ChatRooms = class {
17220
17327
  constructor(hostRef) {
@@ -17274,6 +17381,51 @@ const ChatRooms = class {
17274
17381
  } }))))))), this.chatRooms && visibleRooms.length > 0 && visibleRooms.map(this.renderChatRoom), this.chatRooms && visibleRooms.length === 0 && (h("div", { style: { color: Colors.Gray04, padding: '64px 24px', textAlign: 'center' } }, "No available users")))));
17275
17382
  }
17276
17383
  };
17277
- ChatRooms.style = indexCss;
17384
+ ChatRooms.style = indexCss$1;
17385
+
17386
+ const indexCss = "";
17387
+
17388
+ const UserAvatar = class {
17389
+ constructor(hostRef) {
17390
+ registerInstance(this, hostRef);
17391
+ this.size = 24;
17392
+ this.name = undefined;
17393
+ this.description = undefined;
17394
+ this.nameStyle = undefined;
17395
+ this.shortName = undefined;
17396
+ this.avatar = undefined;
17397
+ }
17398
+ render() {
17399
+ return (h("div", { style: { display: "flex", alignItems: "center" } }, this.avatar && (h("div", { style: {
17400
+ border: `1px solid ${Colors.White}`,
17401
+ backgroundImage: `url("${this.avatar}")`,
17402
+ backgroundColor: Colors.Gray01,
17403
+ backgroundPosition: 'center center',
17404
+ backgroundSize: 'cover',
17405
+ borderRadius: '50%',
17406
+ height: `${this.size}px`,
17407
+ width: `${this.size}px`,
17408
+ minWidth: `${this.size}px`,
17409
+ } })), !this.avatar && (h("div", { style: {
17410
+ border: `1px solid ${Colors.White}`,
17411
+ backgroundColor: Colors.Gray01,
17412
+ borderRadius: '50%',
17413
+ display: 'flex',
17414
+ alignItems: 'center',
17415
+ justifyContent: 'center',
17416
+ height: `${this.size}px`,
17417
+ width: `${this.size}px`,
17418
+ minWidth: `${this.size}px`,
17419
+ } }, this.shortName)), this.name && (h("div", { style: {
17420
+ flexShrink: '1',
17421
+ flexGrow: '1',
17422
+ marginLeft: '12px',
17423
+ overflow: 'hidden',
17424
+ whiteSpace: 'nowrap',
17425
+ textOverflow: 'ellipsis',
17426
+ } }, h("div", { style: Object.assign({}, this.nameStyle) }, this.name), this.description && h("div", { style: { color: '#999999' } }, this.description)))));
17427
+ }
17428
+ };
17429
+ UserAvatar.style = indexCss;
17278
17430
 
17279
- export { ChatRooms as chat_rooms };
17431
+ export { ChatBox as chat_box, ChatForm as chat_form, ChatMessages as chat_messages, ChatRooms as chat_rooms, UserAvatar as user_avatar };
@@ -1,7 +1,7 @@
1
- import { r as registerInstance, h } from './index-888e99e3.js';
1
+ import { r as registerInstance, h } from './index-0494771f.js';
2
2
  import { C as Colors } from './colors-ea36347a.js';
3
- import { H as HttpService } from './services-7c46a2fd.js';
4
- import './_commonjsHelpers-a4f66ccd.js';
3
+ import { H as HttpService } from './services-257442e2.js';
4
+ import './_commonjsHelpers-66ac50f5.js';
5
5
 
6
6
  const indexCss = "@import url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap'); chat-button{position:relative}.chat-button--indicator{cursor:pointer;position:absolute;inset:0}.chat-button--counter{background-color:rgb(240, 90, 97);border:1px solid rgb(255, 255, 255);position:absolute;right:6px;top:0px;height:8px;width:8px;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.chat-box{font-family:'Roboto', sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#fff;display:flex;flex-direction:column;position:fixed;inset:0px;z-index:20000;font-size:16px;text-align:left;color:#141414}.chat-box--header{display:flex;justify-content:space-between;padding:16px;position:relative}.chat-box--title{color:#fff;font-size:20px;font-weight:600;line-height:1;display:flex;align-items:center;justify-content:space-between;margin:0}.chat-box--close{cursor:pointer;display:block;position:absolute;z-index:1000;top:50%;right:0;width:30px;height:30px;transform:translate(0, -50%);background-size:contain;background-repeat:no-repeat;background-position:center center;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAA3hJREFUaAXlm8+K00Acx7MiCIJH/yw+gA9g25O49SL4AO3Bp1jw5NvktC+wF88qevK4BU97EmzxUBCEolK/n5gp3W6TTJPfpNPNF37MNsl85/vN/DaTmU6PknC4K+pniqeKJ3k8UnkvDxXJzzy+q/yaxxeVHxW/FNHjgRSeKt4rFoplzaAuHHDBGR2eS9G54reirsmienDCTRt7xwsp+KAoEmt9nLaGitZxrBbPFNaGfPloGw2t4JVamSt8xYW6Dg1oCYo3Yv+rCGViV160oMkcd8SYKnYV1Nb1aEOjCe6L5ZOiLfF120EjWhuBu3YIZt1NQmujnk5F4MgOpURzLfAwOBSTmzp3fpDxuI/pabxpqOoz2r2HLAb0GMbZKlNV5/Hg9XJypguryA7lPF5KMdTZQzHjqxNPhWhzIuAruOl1eNqKEx1tSh5rfbxdw7mOxCq4qS68ZTjKS1YVvilu559vWvFHhh4rZrdyZ69Vmpgdj8fJbDZLJpNJ0uv1cnr/gjrUhQMuI+ANjyuwftQ0bbL6Erp0mM/ny8Fg4M3LtdRxgMtKl3jwmIHVxYXChFy94/Rmpa/pTbNUhstKV+4Rr8lLQ9KlUvJKLyG8yvQ2s9SBy1Jb7jV5a0yapfF6apaZLjLLcWtd4sNrmJUMHyM+1xibTjH82Zh01TNlhsrOhdKTe00uAzZQmN6+KW+sDa/JD2PSVQ873m29yf+1Q9VDzfEYlHi1G5LKBBWZbtEsHbFwb1oYDwr1ZiF/2bnCSg1OBE/pfr9/bWx26UxJL3ONPISOLKUvQza0LZUxSKyjpdTGa/vDEr25rddbMM0Q3O6Lx3rqFvU+x6UrRKQY7tyrZecmD9FODy8uLizTmilwNj0kraNcAJhOp5aGVwsAGD5VmJBrWWbJSgWT9zrzWepQF47RaGSiKfeGx6Szi3gzmX/HHbihwBser4B9UJYpFBNX4R6vTn3VQnez0SymnrHQMsRYGTr1dSk34ljRqS/EMd2pLQ8YBp3a1PLfcqCpo8gtHkZFHKkTX6fs3MY0blKnth66rKCnU0VRGu37ONrQaA4eZDFtWAu2fXj9zjFkxTBOo8F7t926gTp/83Kyzzcy2kZD6xiqxTYnHLRFm3vHiRSwNSjkz3hoIzo8lCKWUlg/YtGs7tObunDAZfpDLbfEI15zsEIY3U/x/gHHc/G1zltnAgAAAABJRU5ErkJggg==')}@media (min-width: 768px){.chat-box{border:1px solid #fff;left:unset;top:unset;right:1px;bottom:0px;height:420px;max-height:90vh;width:600px;-moz-border-radius:8px 8px 0px 0px;-webkit-border-radius:8px 8px 0px 0px;border-radius:8px 8px 0px 0px;-moz-box-shadow:rgba(0, 0, 0, 0.1) 0px 0px 24px;-webkit-box-shadow:rgba(0, 0, 0, 0.1) 0px 0px 24px;box-shadow:rgba(0, 0, 0, 0.1) 0px 0px 24px}.chat-box--header{-moz-border-radius:8px 8px 0px 0px;-webkit-border-radius:8px 8px 0px 0px;border-radius:8px 8px 0px 0px}}";
7
7
 
@@ -0,0 +1,18 @@
1
+ import { p as promiseResolve, b as bootstrapLazy } from './index-0494771f.js';
2
+ export { s as setNonce } from './index-0494771f.js';
3
+
4
+ /*
5
+ Stencil Client Patch Browser v2.22.3 | MIT Licensed | https://stenciljs.com
6
+ */
7
+ const patchBrowser = () => {
8
+ const importMeta = import.meta.url;
9
+ const opts = {};
10
+ if (importMeta !== '') {
11
+ opts.resourcesUrl = new URL('.', importMeta).href;
12
+ }
13
+ return promiseResolve(opts);
14
+ };
15
+
16
+ patchBrowser().then(options => {
17
+ return bootstrapLazy([["salon-info",[[0,"salon-info",{"salonId":[2,"salon-id"],"salonInfo":[32],"fetchData":[64]}]]],["chat-box_5",[[0,"chat-box",{"primaryColor":[1,"primary-color"],"accessToken":[1,"access-token"],"senderId":[1,"sender-id"],"chatRooms":[32],"activeRoom":[32],"fetchData":[64]}],[0,"chat-rooms",{"senderId":[2,"sender-id"],"chatRooms":[16],"activeRoom":[16],"onClickRoom":[16],"keyword":[32]}],[0,"chat-messages",{"sender":[16],"receiver":[16],"messages":[16],"chatRoomId":[1,"chat-room-id"]}],[0,"chat-form",{"senderId":[2,"sender-id"],"chatRoomId":[1,"chat-room-id"]}],[0,"user-avatar",{"size":[2],"name":[1],"description":[1],"nameStyle":[16],"shortName":[1,"short-name"],"avatar":[1]}]]],["chat-button",[[0,"chat-button",{"primaryColor":[1,"primary-color"],"accessToken":[1,"access-token"],"senderId":[1,"sender-id"],"receiverId":[1,"receiver-id"],"senderInfo":[32],"receiverInfo":[32],"chatRoom":[32],"chatMessages":[32],"isChatExpanded":[32],"fetchData":[64]}]]],["salon-latest-reviews",[[0,"salon-latest-reviews",{"salonId":[2,"salon-id"],"primaryColor":[1,"primary-color"],"salonReviews":[32],"isLoading":[32],"fetchData":[64]}]]],["salon-lookbook",[[0,"salon-lookbook",{"salonId":[2,"salon-id"],"isLoading":[32],"isLoadingMore":[32],"hideLoadMore":[32],"currentPage":[32],"totalLookbooks":[32],"salonCategories":[32],"salonLookbooks":[32],"sortBy":[32],"filterBy":[32],"isLayoutSetup":[32],"fetchData":[64],"fetchLookbooks":[64],"onChangeFiltering":[64],"onChangeSorting":[64],"onLoadMore":[64],"fetchCategories":[64]}]]],["salon-reviews",[[0,"salon-reviews",{"salonId":[2,"salon-id"],"primaryColor":[1,"primary-color"],"salonInfo":[32],"stats":[32],"totalReviews":[32],"allReviews":[32],"isLoading":[32],"isSorting":[32],"isFiltering":[32],"isLoadingMore":[32],"canLoadMore":[32],"page":[32],"filterBy":[32],"sortBy":[32]}]]],["style-detail",[[0,"style-detail",{"salonId":[2,"salon-id"],"salonLookbook":[1,"salon-lookbook"],"lookbookInfo":[32],"isModalOpen":[32],"currentMediaIdx":[32],"currentMedia":[32],"albumMedias":[32],"similarStyles":[32],"totalComments":[32],"lookbookComments":[32],"isLayoutSetup":[32],"fetchData":[64]}]]],["salon-booking",[[0,"salon-booking",{"salonId":[2,"salon-id"],"buttonClass":[1,"button-class"],"buttonText":[1,"button-text"],"primaryColor":[1,"primary-color"]}]]],["salon-booking-modal",[[0,"salon-booking-modal",{"salonId":[2,"salon-id"],"primaryColor":[1,"primary-color"],"redirectUrl":[1,"redirect-url"],"isModalOpen":[32]}]]],["salon-gift-card",[[0,"salon-gift-card",{"salonId":[2,"salon-id"],"buttonClass":[1,"button-class"],"buttonText":[1,"button-text"],"primaryColor":[1,"primary-color"]}]]],["salon-gift-card-modal",[[0,"salon-gift-card-modal",{"salonId":[2,"salon-id"],"primaryColor":[1,"primary-color"],"isModalOpen":[32]}]]],["salon-ranking",[[0,"salon-ranking",{"ranking":[2],"height":[2],"width":[2]}]]],["salon-services",[[0,"salon-services",{"salonId":[2,"salon-id"],"buttonClass":[1,"button-class"],"salonServices":[32],"isLoading":[32],"fetchData":[64]}]]],["salon-stylists",[[0,"salon-stylists",{"salonId":[2,"salon-id"],"salonStylists":[32],"totalStylists":[32],"page":[32],"isLoading":[32],"isLoadingMore":[32],"canLoadMore":[32],"fetchData":[64],"onLoadMore":[64]}]]],["google-map",[[0,"google-map",{"locationName":[1,"location-name"],"locationAddress":[1,"location-address"]}]]],["salon-latest-styles_3",[[0,"salon-locations",{"salonId":[2,"salon-id"],"salonInfo":[1,"salon-info"],"isLoading":[4,"is-loading"],"withBorder":[4,"with-border"],"salonInfoState":[32]}],[0,"salon-latest-styles",{"salonId":[2,"salon-id"],"isLoading":[4,"is-loading"],"withBorder":[4,"with-border"],"isLoadingState":[32],"latestStyles":[32],"fetchData":[64]}],[0,"salon-schedules",{"salonId":[2,"salon-id"],"salonInfo":[1,"salon-info"],"isLoading":[4,"is-loading"],"withBorder":[4,"with-border"],"salonInfoState":[32]}]]]], options);
18
+ });
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, g as getAssetPath, h } from './index-888e99e3.js';
1
+ import { r as registerInstance, g as getAssetPath, h } from './index-0494771f.js';
2
2
  import { C as Colors } from './colors-ea36347a.js';
3
3
 
4
4
  const indexCss = "google-map{display:block;width:100%;height:100%}";