favesalon-embed 0.0.2 → 0.1.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.
Files changed (240) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/_commonjsHelpers-5cfcba41.js +36 -0
  3. package/dist/cjs/colors-38421769.js +69 -0
  4. package/dist/cjs/favesalon-embed.cjs.js +20 -0
  5. package/{cjs → dist/cjs}/global-9073d10e.js +0 -0
  6. package/dist/cjs/google-map_5.cjs.entry.js +291 -0
  7. package/dist/cjs/index-7f190886.js +4396 -0
  8. package/{cjs/index-7d179a70.js → dist/cjs/index-e6bea8f5.js} +87 -3
  9. package/{cjs → dist/cjs}/index.cjs.js +0 -0
  10. package/dist/cjs/loader.cjs.js +22 -0
  11. package/dist/cjs/salon-booking-modal.cjs.entry.js +29 -0
  12. package/dist/cjs/salon-booking.cjs.entry.js +50 -0
  13. package/dist/cjs/salon-gift-card-modal.cjs.entry.js +28 -0
  14. package/dist/cjs/salon-gift-card.cjs.entry.js +50 -0
  15. package/dist/cjs/salon-latest-reviews.cjs.entry.js +95 -0
  16. package/dist/cjs/salon-lookbook.cjs.entry.js +218 -0
  17. package/{cjs → dist/cjs}/salon-ranking.cjs.entry.js +7 -7
  18. package/dist/cjs/salon-reviews.cjs.entry.js +186 -0
  19. package/dist/cjs/salon-services.cjs.entry.js +78 -0
  20. package/dist/cjs/salon-stylists.cjs.entry.js +112 -0
  21. package/{cjs/services-d6f8214c.js → dist/cjs/services-eee8f251.js} +317 -361
  22. package/dist/cjs/style-detail.cjs.entry.js +310 -0
  23. package/{cjs → dist/cjs}/user-avatar.cjs.entry.js +4 -4
  24. package/{cjs → dist/cjs}/utils-c5a33b3c.js +0 -0
  25. package/{collection → dist/collection}/collection-manifest.json +2 -2
  26. package/dist/collection/components/google-map/assets/map--placeholder.jpeg +0 -0
  27. package/{collection → dist/collection}/components/google-map/index.css +0 -1
  28. package/dist/collection/components/google-map/index.js +86 -0
  29. package/{collection → dist/collection}/components/salon-booking/index.css +10 -24
  30. package/{collection → dist/collection}/components/salon-booking/index.js +29 -11
  31. package/{collection → dist/collection}/components/salon-booking/salon-booking-modal.js +12 -6
  32. package/dist/collection/components/salon-gift-card/index.css +25 -0
  33. package/{collection → dist/collection}/components/salon-gift-card/index.js +44 -6
  34. package/{collection → dist/collection}/components/salon-gift-card/salon-gift-card-modal.js +30 -4
  35. package/{collection/components/salon-locations → dist/collection/components/salon-info}/index.css +0 -0
  36. package/{collection → dist/collection}/components/salon-info/index.js +6 -32
  37. package/{collection → dist/collection}/components/salon-latest-reviews/index.css +0 -3
  38. package/dist/collection/components/salon-latest-reviews/index.js +176 -0
  39. package/dist/collection/components/salon-latest-styles/index.css +10 -0
  40. package/dist/collection/components/salon-latest-styles/index.js +178 -0
  41. package/{collection/components/salon-contact → dist/collection/components/salon-locations}/index.css +6 -6
  42. package/dist/collection/components/salon-locations/index.js +151 -0
  43. package/dist/collection/components/salon-lookbook/index.css +12 -0
  44. package/{collection → dist/collection}/components/salon-lookbook/index.js +122 -49
  45. package/{collection → dist/collection}/components/salon-ranking/index.css +0 -0
  46. package/{collection → dist/collection}/components/salon-ranking/index.js +5 -5
  47. package/dist/collection/components/salon-reviews/index.css +15 -0
  48. package/dist/collection/components/salon-reviews/index.js +286 -0
  49. package/dist/collection/components/salon-schedules/index.css +15 -0
  50. package/dist/collection/components/salon-schedules/index.js +189 -0
  51. package/{collection/components/salon-reviews → dist/collection/components/salon-services}/index.css +0 -0
  52. package/dist/collection/components/salon-services/index.js +156 -0
  53. package/{collection → dist/collection}/components/salon-stylists/index.css +0 -8
  54. package/dist/collection/components/salon-stylists/index.js +183 -0
  55. package/dist/collection/components/style-detail/index.css +62 -0
  56. package/dist/collection/components/style-detail/index.js +461 -0
  57. package/{collection/components/salon-services → dist/collection/components/user-avatar}/index.css +0 -0
  58. package/{collection → dist/collection}/components/user-avatar/index.js +2 -2
  59. package/dist/collection/constants/colors.js +65 -0
  60. package/{collection → dist/collection}/global/global.js +0 -0
  61. package/{collection → dist/collection}/index.js +0 -0
  62. package/dist/collection/services/services.js +174 -0
  63. package/dist/collection/types/common.js +11 -0
  64. package/{collection → dist/collection}/types/review.js +9 -5
  65. package/dist/collection/types/salon.js +58 -0
  66. package/{collection → dist/collection}/types/service.js +0 -0
  67. package/dist/collection/types/style.js +128 -0
  68. package/dist/collection/types/stylist.js +30 -0
  69. package/{collection/components/user-avatar/index.css → dist/collection/types/tmp.js} +0 -0
  70. package/{collection → dist/collection}/types/user.js +2 -2
  71. package/{collection → dist/collection}/utils/utils.js +0 -0
  72. package/{custom-elements → dist/custom-elements}/index.d.ts +12 -12
  73. package/{custom-elements → dist/custom-elements}/index.js +5783 -870
  74. package/dist/esm/_commonjsHelpers-098d5b27.js +32 -0
  75. package/dist/esm/colors-ea36347a.js +67 -0
  76. package/dist/esm/favesalon-embed.js +18 -0
  77. package/{esm → dist/esm}/global-e1089ffd.js +0 -0
  78. package/dist/esm/google-map_5.entry.js +283 -0
  79. package/{esm/index-2160b80b.js → dist/esm/index-6af0a03d.js} +87 -4
  80. package/dist/esm/index-80523fec.js +4393 -0
  81. package/{esm → dist/esm}/index.js +0 -0
  82. package/dist/esm/loader.js +18 -0
  83. package/{esm → dist/esm}/polyfills/core-js.js +0 -0
  84. package/{esm → dist/esm}/polyfills/css-shim.js +0 -0
  85. package/{esm → dist/esm}/polyfills/dom.js +0 -0
  86. package/{esm → dist/esm}/polyfills/es5-html-element.js +0 -0
  87. package/{esm → dist/esm}/polyfills/index.js +0 -0
  88. package/{esm → dist/esm}/polyfills/system.js +0 -0
  89. package/dist/esm/salon-booking-modal.entry.js +25 -0
  90. package/dist/esm/salon-booking.entry.js +46 -0
  91. package/dist/esm/salon-gift-card-modal.entry.js +24 -0
  92. package/dist/esm/salon-gift-card.entry.js +46 -0
  93. package/dist/esm/salon-latest-reviews.entry.js +91 -0
  94. package/dist/esm/salon-lookbook.entry.js +214 -0
  95. package/{esm → dist/esm}/salon-ranking.entry.js +7 -7
  96. package/dist/esm/salon-reviews.entry.js +182 -0
  97. package/dist/esm/salon-services.entry.js +74 -0
  98. package/dist/esm/salon-stylists.entry.js +108 -0
  99. package/{esm/services-57fadd0a.js → dist/esm/services-295247b1.js} +310 -355
  100. package/dist/esm/style-detail.entry.js +306 -0
  101. package/{esm → dist/esm}/user-avatar.entry.js +4 -4
  102. package/{esm → dist/esm}/utils-e97485e0.js +0 -0
  103. package/dist/favesalon-embed/assets/map--placeholder.jpeg +0 -0
  104. package/{favesalon-embed → dist/favesalon-embed}/favesalon-embed.css +1 -1
  105. package/dist/favesalon-embed/favesalon-embed.esm.js +1 -0
  106. package/{favesalon-embed → dist/favesalon-embed}/index.esm.js +0 -0
  107. package/dist/favesalon-embed/p-292b97ba.entry.js +1 -0
  108. package/{favesalon-embed → dist/favesalon-embed}/p-47e646f8.js +0 -0
  109. package/dist/favesalon-embed/p-4869dfed.entry.js +1 -0
  110. package/{favesalon-embed → dist/favesalon-embed}/p-4a5eca9a.js +0 -0
  111. package/dist/favesalon-embed/p-4aee4fd9.entry.js +1 -0
  112. package/dist/favesalon-embed/p-5528c705.entry.js +1 -0
  113. package/dist/favesalon-embed/p-612ad685.entry.js +1 -0
  114. package/dist/favesalon-embed/p-75aef7e0.entry.js +1 -0
  115. package/dist/favesalon-embed/p-8c780874.entry.js +1 -0
  116. package/dist/favesalon-embed/p-8dbf04c5.js +1 -0
  117. package/dist/favesalon-embed/p-9f31061a.entry.js +1 -0
  118. package/dist/favesalon-embed/p-a33331cc.js +1 -0
  119. package/dist/favesalon-embed/p-a60d78e9.entry.js +1 -0
  120. package/dist/favesalon-embed/p-a6debdae.entry.js +1 -0
  121. package/dist/favesalon-embed/p-bad1e9a7.entry.js +1 -0
  122. package/dist/favesalon-embed/p-c2ecb365.js +1 -0
  123. package/dist/favesalon-embed/p-c7dea70c.entry.js +1 -0
  124. package/dist/favesalon-embed/p-d6083940.js +1 -0
  125. package/dist/favesalon-embed/p-f0e14641.entry.js +1 -0
  126. package/dist/favesalon-embed/p-fc9a5551.js +6 -0
  127. package/{index.cjs.js → dist/index.cjs.js} +0 -0
  128. package/{index.js → dist/index.js} +0 -0
  129. package/dist/types/components/google-map/index.d.ts +5 -0
  130. package/{types → dist/types}/components/salon-booking/index.d.ts +1 -1
  131. package/{types → dist/types}/components/salon-booking/salon-booking-modal.d.ts +1 -0
  132. package/{types → dist/types}/components/salon-gift-card/index.d.ts +2 -1
  133. package/{types → dist/types}/components/salon-gift-card/salon-gift-card-modal.d.ts +2 -0
  134. package/{types → dist/types}/components/salon-info/index.d.ts +0 -1
  135. package/{types → dist/types}/components/salon-latest-reviews/index.d.ts +2 -0
  136. package/dist/types/components/salon-latest-styles/index.d.ts +12 -0
  137. package/{types → dist/types}/components/salon-locations/index.d.ts +2 -0
  138. package/{types → dist/types}/components/salon-lookbook/index.d.ts +7 -2
  139. package/{types → dist/types}/components/salon-ranking/index.d.ts +0 -0
  140. package/dist/types/components/salon-reviews/index.d.ts +24 -0
  141. package/{types → dist/types}/components/salon-schedules/index.d.ts +2 -0
  142. package/{types → dist/types}/components/salon-services/index.d.ts +2 -0
  143. package/{types → dist/types}/components/salon-stylists/index.d.ts +6 -0
  144. package/dist/types/components/style-detail/index.d.ts +24 -0
  145. package/{types → dist/types}/components/user-avatar/index.d.ts +0 -0
  146. package/{types → dist/types}/components.d.ts +62 -41
  147. package/dist/types/constants/colors.d.ts +65 -0
  148. package/{types → dist/types}/index.d.ts +0 -0
  149. package/dist/types/services/services.d.ts +60 -0
  150. package/{types → dist/types}/stencil-public-runtime.d.ts +0 -0
  151. package/dist/types/types/common.d.ts +11 -0
  152. package/{types → dist/types}/types/review.d.ts +4 -0
  153. package/{types → dist/types}/types/salon.d.ts +3 -1
  154. package/{types → dist/types}/types/service.d.ts +0 -0
  155. package/dist/types/types/style.d.ts +88 -0
  156. package/{types → dist/types}/types/stylist.d.ts +2 -1
  157. package/dist/types/types/tmp.d.ts +0 -0
  158. package/{types → dist/types}/types/user.d.ts +2 -2
  159. package/{types → dist/types}/utils/utils.d.ts +0 -0
  160. package/loader/cdn.js +3 -0
  161. package/loader/index.cjs.js +3 -0
  162. package/loader/index.d.ts +12 -0
  163. package/loader/index.es2017.js +3 -0
  164. package/loader/index.js +4 -0
  165. package/loader/package.json +10 -0
  166. package/package.json +18 -13
  167. package/readme.md +23 -2
  168. package/cjs/colors-7f354880.js +0 -95
  169. package/cjs/favesalon-embed.cjs.js +0 -20
  170. package/cjs/google-map.cjs.entry.js +0 -47
  171. package/cjs/loader.cjs.js +0 -22
  172. package/cjs/salon-booking-modal.cjs.entry.js +0 -23
  173. package/cjs/salon-booking_2.cjs.entry.js +0 -56
  174. package/cjs/salon-contact_4.cjs.entry.js +0 -154
  175. package/cjs/salon-gift-card-modal.cjs.entry.js +0 -20
  176. package/cjs/salon-info.cjs.entry.js +0 -34
  177. package/cjs/salon-latest-reviews.cjs.entry.js +0 -57
  178. package/cjs/salon-lookbook.cjs.entry.js +0 -187
  179. package/cjs/salon-reviews.cjs.entry.js +0 -196
  180. package/cjs/salon-services.cjs.entry.js +0 -40
  181. package/cjs/salon-stylists.cjs.entry.js +0 -53
  182. package/collection/components/google-map/index.js +0 -97
  183. package/collection/components/salon-contact/index.js +0 -88
  184. package/collection/components/salon-gift-card/index.css +0 -25
  185. package/collection/components/salon-info/index.css +0 -3
  186. package/collection/components/salon-latest-reviews/index.js +0 -108
  187. package/collection/components/salon-locations/index.js +0 -80
  188. package/collection/components/salon-lookbook/index.css +0 -12
  189. package/collection/components/salon-reviews/index.js +0 -291
  190. package/collection/components/salon-schedules/index.css +0 -14
  191. package/collection/components/salon-schedules/index.js +0 -103
  192. package/collection/components/salon-services/index.js +0 -86
  193. package/collection/components/salon-styles/index.css +0 -23
  194. package/collection/components/salon-styles/index.js +0 -100
  195. package/collection/components/salon-stylists/index.js +0 -96
  196. package/collection/constants/colors.js +0 -91
  197. package/collection/services/services.js +0 -203
  198. package/collection/types/common.js +0 -2
  199. package/collection/types/salon.js +0 -52
  200. package/collection/types/style.js +0 -28
  201. package/collection/types/stylist.js +0 -13
  202. package/esm/colors-1ec90c5f.js +0 -93
  203. package/esm/favesalon-embed.js +0 -18
  204. package/esm/google-map.entry.js +0 -43
  205. package/esm/loader.js +0 -18
  206. package/esm/salon-booking-modal.entry.js +0 -19
  207. package/esm/salon-booking_2.entry.js +0 -51
  208. package/esm/salon-contact_4.entry.js +0 -147
  209. package/esm/salon-gift-card-modal.entry.js +0 -16
  210. package/esm/salon-info.entry.js +0 -30
  211. package/esm/salon-latest-reviews.entry.js +0 -53
  212. package/esm/salon-lookbook.entry.js +0 -183
  213. package/esm/salon-reviews.entry.js +0 -192
  214. package/esm/salon-services.entry.js +0 -36
  215. package/esm/salon-stylists.entry.js +0 -49
  216. package/favesalon-embed/favesalon-embed.esm.js +0 -1
  217. package/favesalon-embed/p-14a46adf.entry.js +0 -1
  218. package/favesalon-embed/p-2da2ed75.js +0 -1
  219. package/favesalon-embed/p-3712d9ab.entry.js +0 -1
  220. package/favesalon-embed/p-38066f9f.entry.js +0 -1
  221. package/favesalon-embed/p-4e2d7b29.js +0 -1
  222. package/favesalon-embed/p-520c8ffb.entry.js +0 -1
  223. package/favesalon-embed/p-54a1c294.entry.js +0 -1
  224. package/favesalon-embed/p-762520f2.js +0 -1
  225. package/favesalon-embed/p-94a0991e.entry.js +0 -1
  226. package/favesalon-embed/p-94b179eb.entry.js +0 -1
  227. package/favesalon-embed/p-977bd8bc.entry.js +0 -1
  228. package/favesalon-embed/p-bc363938.entry.js +0 -1
  229. package/favesalon-embed/p-bf9c83a3.entry.js +0 -1
  230. package/favesalon-embed/p-c5ebd3c9.entry.js +0 -1
  231. package/favesalon-embed/p-d84b61b0.entry.js +0 -1
  232. package/favesalon-embed/p-f15bcb43.entry.js +0 -1
  233. package/types/components/google-map/index.d.ts +0 -10
  234. package/types/components/salon-contact/index.d.ts +0 -9
  235. package/types/components/salon-reviews/index.d.ts +0 -23
  236. package/types/components/salon-styles/index.d.ts +0 -9
  237. package/types/constants/colors.d.ts +0 -88
  238. package/types/services/services.d.ts +0 -24
  239. package/types/types/common.d.ts +0 -2
  240. package/types/types/style.d.ts +0 -49
@@ -0,0 +1,32 @@
1
+ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
2
+
3
+ function createCommonjsModule(fn, basedir, module) {
4
+ return module = {
5
+ path: basedir,
6
+ exports: {},
7
+ require: function (path, base) {
8
+ return commonjsRequire();
9
+ }
10
+ }, fn(module, module.exports), module.exports;
11
+ }
12
+
13
+ function getAugmentedNamespace(n) {
14
+ if (n.__esModule) return n;
15
+ var a = Object.defineProperty({}, '__esModule', {value: true});
16
+ Object.keys(n).forEach(function (k) {
17
+ var d = Object.getOwnPropertyDescriptor(n, k);
18
+ Object.defineProperty(a, k, d.get ? d : {
19
+ enumerable: true,
20
+ get: function () {
21
+ return n[k];
22
+ }
23
+ });
24
+ });
25
+ return a;
26
+ }
27
+
28
+ function commonjsRequire () {
29
+ throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');
30
+ }
31
+
32
+ export { createCommonjsModule as a, commonjsGlobal as c, getAugmentedNamespace as g };
@@ -0,0 +1,67 @@
1
+ const Colors = {
2
+ TextColor: '#141414',
3
+ Black: '#000000',
4
+ White: '#ffffff',
5
+ Primary: '#F05A61',
6
+ Secondary: '#001529',
7
+ Black01: '#262626',
8
+ Black02: '#1f1f1f',
9
+ Black03: '#141414',
10
+ Gray01: '#F5F5F5',
11
+ Gray02: '#EFEFEF',
12
+ Gray03: '#DBDBDB',
13
+ Gray04: '#999999',
14
+ Gray05: '#666666',
15
+ Red01: '#FEEFEF',
16
+ Red02: '#F9BDC0',
17
+ Red03: '#F05A61',
18
+ Red04: '#C0484E',
19
+ Red05: '#90363A',
20
+ Orange01: '#FFF4F0',
21
+ Orange02: '#FFD1C3',
22
+ Orange03: '#FF8D69',
23
+ Orange04: '#CC7154',
24
+ Orange05: '#99553F',
25
+ Yellow01: '#FDFBF4',
26
+ Yellow02: '#F8EDD3',
27
+ Yellow03: '#EED291',
28
+ Yellow04: '#BEA874',
29
+ Yellow05: '#8F7E57',
30
+ Lilac01: '#F3F0F4',
31
+ Lilac02: '#CFC1D4',
32
+ Lilac03: '#886594',
33
+ Lilac04: '#6D5176',
34
+ Lilac05: '#523D59',
35
+ Blue01: '#EAECEE',
36
+ Blue02: '#AAB1BD',
37
+ Blue03: '#2B3C59',
38
+ Blue04: '#223047',
39
+ Blue05: '#1A2435',
40
+ Green01: '#ECF7ED',
41
+ Green02: '#B2E1B9',
42
+ Green03: '#3FB34F',
43
+ Green04: '#328F3F',
44
+ Green05: '#266B2F',
45
+ Success01: '#EEF9E8',
46
+ Success02: '#BAE7A3',
47
+ Success03: '#52C41A',
48
+ Success04: '#429D15',
49
+ Success05: '#317610',
50
+ Error01: '#FFEDED',
51
+ Error02: '#FFB8B9',
52
+ Error03: '#FF4D4F',
53
+ Error04: '#CC3E3F',
54
+ Error05: '#992E2F',
55
+ Warning01: '#FFF7E8',
56
+ Warning02: '#FDDEA1',
57
+ Warning03: '#FAAD14',
58
+ Warning04: '#C88A10',
59
+ Warning05: '#96680C',
60
+ Info01: '#E8F4FF',
61
+ Info02: '#A3D3FF',
62
+ Info03: '#1890FF',
63
+ Info04: '#1373CC',
64
+ Info05: '#0E5699',
65
+ };
66
+
67
+ export { Colors as C };
@@ -0,0 +1,18 @@
1
+ import { p as promiseResolve, b as bootstrapLazy } from './index-6af0a03d.js';
2
+ import './global-e1089ffd.js';
3
+
4
+ /*
5
+ Stencil Client Patch Browser v2.9.0 | 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-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]}]]],["user-avatar",[[0,"user-avatar",{"size":[2],"name":[1],"nameStyle":[16],"shortName":[1,"short-name"],"avatar":[1]}]]],["google-map_5",[[0,"salon-info",{"salonId":[2,"salon-id"],"salonInfo":[32],"fetchData":[64]}],[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]}],[0,"google-map",{"locationName":[1,"location-name"],"locationAddress":[1,"location-address"]}]]]], options);
18
+ });
File without changes
@@ -0,0 +1,283 @@
1
+ import { r as registerInstance, g as getAssetPath, h } from './index-6af0a03d.js';
2
+ import { C as Colors } from './colors-ea36347a.js';
3
+ import { H as HttpService, i as isVideoMedia, B as BusinessHourStatus } from './services-295247b1.js';
4
+ import { f as formatWebsiteUrl, a as formatFullAddress } from './utils-e97485e0.js';
5
+ import './_commonjsHelpers-098d5b27.js';
6
+
7
+ const indexCss$4 = "google-map{display:block;width:100%;height:100%}";
8
+
9
+ let GoogleMap = class {
10
+ constructor(hostRef) {
11
+ registerInstance(this, hostRef);
12
+ }
13
+ render() {
14
+ const mapPlaceholder = getAssetPath('./assets/map--placeholder.jpeg');
15
+ return (h("div", { style: {
16
+ backgroundImage: `url("${mapPlaceholder}")`,
17
+ backgroundColor: Colors.Gray01,
18
+ backgroundPosition: 'center center',
19
+ backgroundRepeat: 'no-repeat',
20
+ backgroundSize: 'cover',
21
+ borderRadius: '8px',
22
+ position: 'relative',
23
+ height: '296px',
24
+ } }, h("div", { style: {
25
+ position: 'absolute',
26
+ left: '50%',
27
+ top: '50%',
28
+ transform: 'translate(-50%, -50%)',
29
+ } }, h("a", { target: "_blank", rel: "noopener noreferrer", href: `https://www.google.com/maps/search/?api=1&query=${this.locationAddress}`, style: {
30
+ backgroundColor: Colors.Red01,
31
+ border: `1px solid ${Colors.Red02}`,
32
+ borderRadius: '4px',
33
+ color: Colors.TextColor,
34
+ padding: '12px',
35
+ display: 'flex',
36
+ flexWrap: 'wrap',
37
+ height: 'auto',
38
+ width: 'auto',
39
+ whiteSpace: 'normal',
40
+ textAlign: 'left',
41
+ maxWidth: '320px',
42
+ textDecoration: 'none',
43
+ } }, this.locationName && h("span", { style: { fontSize: '16px', marginBottom: '4px' } }, this.locationName), this.locationAddress && h("span", { style: { fontSize: '12px' } }, this.locationAddress)), h("div", { style: { marginTop: '8px', textAlign: 'center' } }, h("i", { class: "ri-map-pin-fill", style: { fontSize: '24px' } })))));
44
+ }
45
+ static get assetsDirs() { return ["assets"]; }
46
+ };
47
+ GoogleMap.style = indexCss$4;
48
+
49
+ const indexCss$3 = "";
50
+
51
+ let SalonInfo = class {
52
+ constructor(hostRef) {
53
+ registerInstance(this, hostRef);
54
+ }
55
+ componentWillLoad() {
56
+ this.fetchData();
57
+ }
58
+ async fetchData() {
59
+ try {
60
+ this.salonInfo = await HttpService().fetchSalonInfo(this.salonId);
61
+ }
62
+ catch (e) { }
63
+ }
64
+ render() {
65
+ return (h("div", { class: "salon-info" }, h("div", { class: "container" }, h("div", { class: "salon-info--schedules", style: { marginBottom: '24px' } }, h("salon-schedules", { "with-border": true, "is-loading": !this.salonInfo, "salon-id": 49989, "salon-info": JSON.stringify(this.salonInfo) })), h("div", { class: "row" }, h("div", { class: "col-md-5", style: { marginBottom: '24px' } }, h("salon-locations", { "with-border": true, "is-loading": !this.salonInfo, "salon-id": 49989, "salon-info": JSON.stringify(this.salonInfo) })), h("div", { class: "col-md-7", style: { marginBottom: '24px' } }, h("salon-latest-styles", { "with-border": true, "is-loading": !this.salonInfo, "salon-id": 49989, "salon-info": JSON.stringify(this.salonInfo) }))))));
66
+ }
67
+ };
68
+ SalonInfo.style = indexCss$3;
69
+
70
+ const indexCss$2 = "salon-latest-styles .view--salon-styles--item{width:120px;height:120px}@media (min-width: 1024px){salon-latest-styles .view--salon-styles--item{width:200px;height:200px}}";
71
+
72
+ let SalonLatestStyles = class {
73
+ constructor(hostRef) {
74
+ registerInstance(this, hostRef);
75
+ }
76
+ componentDidLoad() {
77
+ this.fetchData();
78
+ }
79
+ async fetchData() {
80
+ this.isLoadingState = true;
81
+ try {
82
+ const promises = [
83
+ HttpService().fetchSalonLatestStyles(this.salonId, { limit: 6 })
84
+ .then(salonStyles => this.latestStyles = salonStyles),
85
+ ];
86
+ return Promise.all(promises)
87
+ .then(() => this.isLoadingState = false)
88
+ .catch(() => this.isLoadingState = false);
89
+ }
90
+ catch (e) { }
91
+ }
92
+ onClickLookbook(style) {
93
+ const elLookbookModal = document.createElement('div');
94
+ elLookbookModal.innerHTML = `
95
+ <style-detail
96
+ salon-id=${this.salonId}
97
+ salon-lookbook='${JSON.stringify(style)}'
98
+ ></style-detail>
99
+ `;
100
+ document.body.appendChild(elLookbookModal);
101
+ }
102
+ render() {
103
+ if (this.isLoading || this.isLoadingState) {
104
+ return (h("div", { class: "view view--salon-styles" }, h("div", { class: "view-content", style: this.withBorder ? { border: `1px solid ${Colors.Gray02}`, borderRadius: '4px' } : { padding: '0px' } }, h("div", { style: {
105
+ backgroundColor: Colors.Gray02,
106
+ height: '20px',
107
+ width: '120px',
108
+ } }), h("div", { style: { marginTop: '24px' } }, h("div", { style: {
109
+ overflow: 'hidden',
110
+ marginLeft: '-16px',
111
+ marginBottom: '-16px',
112
+ } }, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((fakeId, idx) => (h("div", { key: `style-listing--item-${fakeId}-${idx}`, style: {
113
+ float: 'left',
114
+ paddingLeft: '16px',
115
+ marginBottom: '16px',
116
+ } }, h("div", { style: {
117
+ backgroundColor: Colors.Gray01,
118
+ borderRadius: '8px',
119
+ width: '120px',
120
+ height: '120px',
121
+ overflow: 'hidden',
122
+ position: 'relative',
123
+ cursor: 'pointer',
124
+ } })))))))));
125
+ }
126
+ return (h("div", { class: "view view--salon-styles" }, h("div", { class: "view-content", style: this.withBorder ? { border: `1px solid ${Colors.Gray02}`, borderRadius: '4px' } : { padding: '0px' } }, h("div", { style: { fontSize: '18px', fontWeight: 'bold' } }, "Photos"), h("div", { style: {
127
+ overflow: 'hidden',
128
+ marginLeft: '-16px',
129
+ marginBottom: '-16px',
130
+ marginTop: '16px',
131
+ } }, (this.latestStyles || []).map((faveStyle, idx) => {
132
+ const { imageThumb, albumMedias } = faveStyle;
133
+ const firstMedia = albumMedias.length > 0 ? albumMedias[0] : null;
134
+ const isVideo = firstMedia ? isVideoMedia(firstMedia) : false;
135
+ return (h("div", { key: `style-listing--item-${faveStyle.id}-${idx}`, style: {
136
+ float: 'left',
137
+ paddingLeft: '16px',
138
+ marginBottom: '16px',
139
+ } }, h("div", { class: "view--salon-styles--item", style: Object.assign({ backgroundColor: Colors.Gray01, borderRadius: '8px', overflow: 'hidden', position: 'relative', cursor: 'pointer' }, !isVideo && firstMedia ? {
140
+ backgroundImage: `url("${firstMedia.imageThumb || firstMedia.imageThumbMedium}")`,
141
+ backgroundRepeat: 'no-repeat',
142
+ backgroundPosition: 'center center',
143
+ backgroundSize: 'cover',
144
+ } : {}), onClick: () => this.onClickLookbook(faveStyle) }, isVideo && firstMedia && (h("div", null, h("video", { muted: true, width: "100%", height: "100%", poster: imageThumb }, h("source", { src: firstMedia.mediaUrl, type: "video/mp4" })), h("i", { class: "ri-play-circle-fill", style: {
145
+ fontSize: '48px',
146
+ color: Colors.TextColor,
147
+ position: 'absolute',
148
+ left: '50%',
149
+ top: '50%',
150
+ transform: 'translate(-50%, -50%)',
151
+ } }))))));
152
+ })))));
153
+ }
154
+ };
155
+ SalonLatestStyles.style = indexCss$2;
156
+
157
+ const indexCss$1 = "@media (min-width: 768px){salon-locations .salon-contact--links{overflow:hidden;margin-left:-32px}salon-locations .salon-contact--links-item{float:left;display:flex;flex-direction:row;align-items:center;font-size:16px;min-width:300px;padding-left:32px}salon-locations .salon-contact--links-item:nth-child(2n+1){clear:left}salon-locations .salon-contact--links-item+.salon-contact--links-item{margin-top:8px}}";
158
+
159
+ let SalonLocations = class {
160
+ constructor(hostRef) {
161
+ registerInstance(this, hostRef);
162
+ }
163
+ componentWillLoad() {
164
+ if (this.salonInfo) {
165
+ this.salonInfoState = JSON.parse(this.salonInfo);
166
+ }
167
+ else {
168
+ this.fetchData();
169
+ }
170
+ }
171
+ fetchData() {
172
+ try {
173
+ HttpService().fetchSalonInfo(this.salonId)
174
+ .then(salonInfo => this.salonInfoState = salonInfo);
175
+ }
176
+ catch (e) { }
177
+ }
178
+ render() {
179
+ if (this.isLoading) {
180
+ return (h("div", { class: "view view--salon-locations" }, h("div", { class: "view-content", style: this.withBorder ? { border: `1px solid ${Colors.Gray02}`, borderRadius: '4px' } : { padding: '0px' } }, h("div", { style: {
181
+ backgroundColor: Colors.Gray02,
182
+ height: '20px',
183
+ width: '120px',
184
+ } }), h("div", { style: { marginTop: '24px' } }, h("div", { style: {
185
+ backgroundColor: Colors.Gray01,
186
+ height: '16px',
187
+ width: '50%',
188
+ } }), h("div", { style: {
189
+ backgroundColor: Colors.Gray01,
190
+ height: '16px',
191
+ width: '50%',
192
+ marginTop: '8px',
193
+ } }), h("div", { style: {
194
+ backgroundColor: Colors.Gray01,
195
+ height: '192px',
196
+ width: '100%',
197
+ marginTop: '24px',
198
+ } })))));
199
+ }
200
+ const { businessPhone, businessName, website, email, } = this.salonInfoState || {};
201
+ const websiteUrl = formatWebsiteUrl(website);
202
+ const fullAddress = formatFullAddress(this.salonInfoState);
203
+ return (h("div", { class: "view view--salon-locations" }, h("div", { class: "view-content", style: this.withBorder ? { border: `1px solid ${Colors.Gray02}`, borderRadius: '4px' } : { padding: '0px' } }, h("div", { style: { fontSize: '18px', fontWeight: 'bold' } }, "Contact"), h("div", { class: "salon-contact--links", style: { marginTop: '16px' } }, businessPhone && (h("div", { class: "salon-contact--links-item" }, h("i", { class: "ri-phone-line", style: { color: Colors.Gray04, fontSize: '18px', marginRight: '6px' } }), " ", h("a", { href: `tel:${businessPhone}`, style: { color: Colors.TextColor, textDecoration: 'none' } }, businessPhone))), websiteUrl && (h("div", { class: "salon-contact--links-item" }, h("i", { class: "ri-links-line", style: { color: Colors.Gray04, fontSize: '18px', marginRight: '6px' } }), " ", h("a", { target: websiteUrl && websiteUrl.indexOf(window.location.hostname) === -1 ? '_blank' : undefined, href: websiteUrl, style: { color: Colors.TextColor, textDecoration: 'none' } }, websiteUrl))), email && (h("div", { class: "salon-contact--links-item" }, h("i", { class: "ri-mail-line", style: { color: Colors.Gray04, fontSize: '18px', marginRight: '6px' } }), " ", h("a", { href: `mailto:${email}`, style: { color: Colors.TextColor, textDecoration: 'none' } }, email)))), h("div", { class: "view--salon-info--map", style: { marginTop: '24px' } }, h("google-map", { "location-name": businessName, "location-address": fullAddress })))));
204
+ }
205
+ };
206
+ SalonLocations.style = indexCss$1;
207
+
208
+ const indexCss = "salon-schedules .salon-schedules--day{display:flex;flex-direction:row;min-width:240px}@media (min-width: 768px){salon-schedules .salon-schedules--dates{overflow:hidden;margin-left:-32px}salon-schedules .salon-schedules--day{float:left;padding-left:32px}}";
209
+
210
+ let SalonSchedules = class {
211
+ constructor(hostRef) {
212
+ registerInstance(this, hostRef);
213
+ }
214
+ componentWillLoad() {
215
+ if (this.salonInfo) {
216
+ this.salonInfoState = JSON.parse(this.salonInfo);
217
+ }
218
+ else {
219
+ this.fetchData();
220
+ }
221
+ }
222
+ fetchData() {
223
+ try {
224
+ HttpService().fetchSalonInfo(this.salonId)
225
+ .then(salonInfo => this.salonInfoState = salonInfo);
226
+ }
227
+ catch (e) { }
228
+ }
229
+ renderBusinessHour(businessHour) {
230
+ if (businessHour.status === BusinessHourStatus.ByAppointment) {
231
+ return 'By Appointment';
232
+ }
233
+ if (businessHour.status === BusinessHourStatus.Close) {
234
+ return 'Close';
235
+ }
236
+ return `${businessHour.openTime} - ${businessHour.closeTime}`;
237
+ }
238
+ render() {
239
+ if (this.isLoading) {
240
+ return (h("div", { class: "view view--salon-contact" }, h("div", { class: "view-content", style: this.withBorder ? { border: `1px solid ${Colors.Gray02}`, borderRadius: '4px' } : { padding: '0px' } }, h("div", { style: {
241
+ backgroundColor: Colors.Gray02,
242
+ height: '20px',
243
+ width: '120px',
244
+ } }), h("div", { style: { marginTop: '24px' } }, h("div", { style: {
245
+ backgroundColor: Colors.Gray01,
246
+ height: '16px',
247
+ width: '30%',
248
+ } }), h("div", { style: {
249
+ backgroundColor: Colors.Gray01,
250
+ height: '16px',
251
+ width: '40%',
252
+ marginTop: '8px',
253
+ } }), h("div", { style: {
254
+ backgroundColor: Colors.Gray01,
255
+ height: '16px',
256
+ width: '75%',
257
+ marginTop: '12px',
258
+ } }), h("div", { style: {
259
+ backgroundColor: Colors.Gray01,
260
+ height: '16px',
261
+ width: '75%',
262
+ marginTop: '8px',
263
+ } })), h("div", { style: { marginTop: '24px' } }, h("div", { style: {
264
+ overflow: 'hidden',
265
+ marginLeft: '-16px',
266
+ marginBottom: '-16px',
267
+ } }, [1, 2, 3, 4, 5, 6, 7].map((fakeId, idx) => (h("div", { key: `style-listing--item-${fakeId}-${idx}`, style: {
268
+ float: 'left',
269
+ paddingLeft: '16px',
270
+ marginBottom: '16px',
271
+ } }, h("div", { style: {
272
+ backgroundColor: Colors.Gray01,
273
+ width: '120px',
274
+ height: '20px',
275
+ } })))))))));
276
+ }
277
+ const { about, businessHours, } = (this.salonInfoState || {});
278
+ return (h("div", { class: "view view--salon-contact" }, h("div", { class: "view-content", style: this.withBorder ? { border: `1px solid ${Colors.Gray02}`, borderRadius: '4px' } : { padding: '0px' } }, h("div", { style: { fontSize: '18px', fontWeight: 'bold' } }, "About"), about && (h("div", { class: "salon-contact--info--desc", style: { fontSize: '16px', marginTop: '16px' }, innerHTML: about })), businessHours && businessHours.length > 0 && (h("div", { class: "salon-schedules", style: { marginTop: '24px' } }, h("div", { class: "salon-schedules--title", style: { fontSize: '16px', fontWeight: 'bold' } }, "Working hours"), h("div", { class: "salon-schedules--dates" }, h("div", { class: "salon-schedules--day", style: { marginTop: '8px' } }, h("div", { class: "salon-schedules--day-name", style: { fontWeight: 'bold', minWidth: '40px' } }, "Mon"), h("div", { class: "salon-schedules--day-time" }, this.renderBusinessHour(businessHours[0]))), h("div", { class: "salon-schedules--day", style: { marginTop: '8px' } }, h("div", { class: "salon-schedules--day-name", style: { fontWeight: 'bold', minWidth: '40px' } }, "Tue"), h("div", { class: "salon-schedules--day-time" }, this.renderBusinessHour(businessHours[1]))), h("div", { class: "salon-schedules--day", style: { marginTop: '8px' } }, h("div", { class: "salon-schedules--day-name", style: { fontWeight: 'bold', minWidth: '40px' } }, "Wed"), h("div", { class: "salon-schedules--day-time" }, this.renderBusinessHour(businessHours[2]))), h("div", { class: "salon-schedules--day", style: { marginTop: '8px' } }, h("div", { class: "salon-schedules--day-name", style: { fontWeight: 'bold', minWidth: '40px' } }, "Thur"), h("div", { class: "salon-schedules--day-time" }, this.renderBusinessHour(businessHours[3]))), h("div", { class: "salon-schedules--day", style: { marginTop: '8px' } }, h("div", { class: "salon-schedules--day-name", style: { fontWeight: 'bold', minWidth: '40px' } }, "Fri"), h("div", { class: "salon-schedules--day-time" }, this.renderBusinessHour(businessHours[4]))), h("div", { class: "salon-schedules--day", style: { marginTop: '8px' } }, h("div", { class: "salon-schedules--day-name", style: { fontWeight: 'bold', minWidth: '40px' } }, "Sat"), h("div", { class: "salon-schedules--day-time" }, this.renderBusinessHour(businessHours[5]))), h("div", { class: "salon-schedules--day", style: { marginTop: '8px' } }, h("div", { class: "salon-schedules--day-name", style: { fontWeight: 'bold', minWidth: '40px' } }, "Sun"), h("div", { class: "salon-schedules--day-time" }, this.renderBusinessHour(businessHours[6])))))))));
279
+ }
280
+ };
281
+ SalonSchedules.style = indexCss;
282
+
283
+ export { GoogleMap as google_map, SalonInfo as salon_info, SalonLatestStyles as salon_latest_styles, SalonLocations as salon_locations, SalonSchedules as salon_schedules };
@@ -24,6 +24,7 @@ const supportsConstructibleStylesheets = /*@__PURE__*/ (() => {
24
24
  })()
25
25
  ;
26
26
  const HYDRATED_CSS = '{visibility:hidden}.hydrated{visibility:inherit}';
27
+ const XLINK_NS = 'http://www.w3.org/1999/xlink';
27
28
  const createTime = (fnName, tagName = '') => {
28
29
  {
29
30
  return () => {
@@ -122,6 +123,7 @@ const isComplexType = (o) => {
122
123
  // export function h(nodeName: string | d.FunctionalComponent, vnodeData: d.PropsType, ...children: d.ChildType[]): d.VNode;
123
124
  const h = (nodeName, vnodeData, ...children) => {
124
125
  let child = null;
126
+ let key = null;
125
127
  let simple = false;
126
128
  let lastSimple = false;
127
129
  let vNodeChildren = [];
@@ -149,6 +151,10 @@ const h = (nodeName, vnodeData, ...children) => {
149
151
  };
150
152
  walk(children);
151
153
  if (vnodeData) {
154
+ // normalize class / classname attributes
155
+ if (vnodeData.key) {
156
+ key = vnodeData.key;
157
+ }
152
158
  {
153
159
  const classData = vnodeData.className || vnodeData.class;
154
160
  if (classData) {
@@ -166,6 +172,9 @@ const h = (nodeName, vnodeData, ...children) => {
166
172
  if (vNodeChildren.length > 0) {
167
173
  vnode.$children$ = vNodeChildren;
168
174
  }
175
+ {
176
+ vnode.$key$ = key;
177
+ }
169
178
  return vnode;
170
179
  };
171
180
  const newVNode = (tag, text) => {
@@ -179,6 +188,9 @@ const newVNode = (tag, text) => {
179
188
  {
180
189
  vnode.$attrs$ = null;
181
190
  }
191
+ {
192
+ vnode.$key$ = null;
193
+ }
182
194
  return vnode;
183
195
  };
184
196
  const Host = {};
@@ -227,6 +239,14 @@ const setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
227
239
  }
228
240
  }
229
241
  }
242
+ else if (memberName === 'key')
243
+ ;
244
+ else if (memberName === 'ref') {
245
+ // minifier will clean this up
246
+ if (newValue) {
247
+ newValue(elm);
248
+ }
249
+ }
230
250
  else if ((!isProp ) &&
231
251
  memberName[0] === 'o' &&
232
252
  memberName[1] === 'n') {
@@ -288,16 +308,36 @@ const setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
288
308
  }
289
309
  catch (e) { }
290
310
  }
311
+ /**
312
+ * Need to manually update attribute if:
313
+ * - memberName is not an attribute
314
+ * - if we are rendering the host element in order to reflect attribute
315
+ * - if it's a SVG, since properties might not work in <svg>
316
+ * - if the newValue is null/undefined or 'false'.
317
+ */
318
+ let xlink = false;
319
+ {
320
+ if (ln !== (ln = ln.replace(/^xlink\:?/, ''))) {
321
+ memberName = ln;
322
+ xlink = true;
323
+ }
324
+ }
291
325
  if (newValue == null || newValue === false) {
292
326
  if (newValue !== false || elm.getAttribute(memberName) === '') {
293
- {
327
+ if (xlink) {
328
+ elm.removeAttributeNS(XLINK_NS, memberName);
329
+ }
330
+ else {
294
331
  elm.removeAttribute(memberName);
295
332
  }
296
333
  }
297
334
  }
298
335
  else if ((!isProp || flags & 4 /* isHost */ || isSvg) && !isComplex) {
299
336
  newValue = newValue === true ? '' : newValue;
300
- {
337
+ if (xlink) {
338
+ elm.setAttributeNS(XLINK_NS, memberName, newValue);
339
+ }
340
+ else {
301
341
  elm.setAttribute(memberName, newValue);
302
342
  }
303
343
  }
@@ -393,6 +433,7 @@ const removeVnodes = (vnodes, startIdx, endIdx, vnode, elm) => {
393
433
  for (; startIdx <= endIdx; ++startIdx) {
394
434
  if ((vnode = vnodes[startIdx])) {
395
435
  elm = vnode.$elm$;
436
+ callNodeRefs(vnode);
396
437
  // remove the vnode's element from the dom
397
438
  elm.remove();
398
439
  }
@@ -401,6 +442,8 @@ const removeVnodes = (vnodes, startIdx, endIdx, vnode, elm) => {
401
442
  const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
402
443
  let oldStartIdx = 0;
403
444
  let newStartIdx = 0;
445
+ let idxInOld = 0;
446
+ let i = 0;
404
447
  let oldEndIdx = oldCh.length - 1;
405
448
  let oldStartVnode = oldCh[0];
406
449
  let oldEndVnode = oldCh[oldEndIdx];
@@ -408,6 +451,7 @@ const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
408
451
  let newStartVnode = newCh[0];
409
452
  let newEndVnode = newCh[newEndIdx];
410
453
  let node;
454
+ let elmToMove;
411
455
  while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
412
456
  if (oldStartVnode == null) {
413
457
  // Vnode might have been moved left
@@ -445,7 +489,29 @@ const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
445
489
  newStartVnode = newCh[++newStartIdx];
446
490
  }
447
491
  else {
492
+ // createKeyToOldIdx
493
+ idxInOld = -1;
448
494
  {
495
+ for (i = oldStartIdx; i <= oldEndIdx; ++i) {
496
+ if (oldCh[i] && oldCh[i].$key$ !== null && oldCh[i].$key$ === newStartVnode.$key$) {
497
+ idxInOld = i;
498
+ break;
499
+ }
500
+ }
501
+ }
502
+ if (idxInOld >= 0) {
503
+ elmToMove = oldCh[idxInOld];
504
+ if (elmToMove.$tag$ !== newStartVnode.$tag$) {
505
+ node = createElm(oldCh && oldCh[newStartIdx], newVNode, idxInOld);
506
+ }
507
+ else {
508
+ patch(elmToMove, newStartVnode);
509
+ oldCh[idxInOld] = undefined;
510
+ node = elmToMove.$elm$;
511
+ }
512
+ newStartVnode = newCh[++newStartIdx];
513
+ }
514
+ else {
449
515
  // new element
450
516
  node = createElm(oldCh && oldCh[newStartIdx], newVNode, newStartIdx);
451
517
  newStartVnode = newCh[++newStartIdx];
@@ -468,7 +534,9 @@ const isSameVnode = (vnode1, vnode2) => {
468
534
  // compare if two vnode to see if they're "technically" the same
469
535
  // need to have the same element tag, and same key to be the same
470
536
  if (vnode1.$tag$ === vnode2.$tag$) {
471
- return true;
537
+ {
538
+ return vnode1.$key$ === vnode2.$key$;
539
+ }
472
540
  }
473
541
  return false;
474
542
  };
@@ -520,6 +588,12 @@ const patch = (oldVNode, newVNode) => {
520
588
  elm.data = text;
521
589
  }
522
590
  };
591
+ const callNodeRefs = (vNode) => {
592
+ {
593
+ vNode.$attrs$ && vNode.$attrs$.ref && vNode.$attrs$.ref(null);
594
+ vNode.$children$ && vNode.$children$.map(callNodeRefs);
595
+ }
596
+ };
523
597
  const renderVdom = (hostRef, renderFnResults) => {
524
598
  const hostElm = hostRef.$hostElement$;
525
599
  const oldVNode = hostRef.$vnode$ || newVNode(null, null);
@@ -710,6 +784,11 @@ const addHydratedFlag = (elm) => elm.classList.add('hydrated')
710
784
  const parsePropertyValue = (propValue, propType) => {
711
785
  // ensure this value is of the correct prop type
712
786
  if (propValue != null && !isComplexType(propValue)) {
787
+ if (propType & 4 /* Boolean */) {
788
+ // per the HTML spec, any string value means it is a boolean true value
789
+ // but we'll cheat here and say that the string "false" is the boolean false
790
+ return propValue === 'false' ? false : propValue === '' || !!propValue;
791
+ }
713
792
  if (propType & 2 /* Number */) {
714
793
  // force it to be a number
715
794
  return parseFloat(propValue);
@@ -1031,6 +1110,10 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
1031
1110
  // Fallback appLoad event
1032
1111
  endBootstrap();
1033
1112
  };
1113
+ const getAssetPath = (path) => {
1114
+ const assetUrl = new URL(path, plt.$resourcesUrl$);
1115
+ return assetUrl.origin !== win.location.origin ? assetUrl.href : assetUrl.pathname;
1116
+ };
1034
1117
  const hostRefs = new WeakMap();
1035
1118
  const getHostRef = (ref) => hostRefs.get(ref);
1036
1119
  const registerInstance = (lazyInstance, hostRef) => hostRefs.set((hostRef.$lazyInstance$ = lazyInstance), hostRef);
@@ -1117,4 +1200,4 @@ const flush = () => {
1117
1200
  const nextTick = /*@__PURE__*/ (cb) => promiseResolve().then(cb);
1118
1201
  const writeTask = /*@__PURE__*/ queueTask(queueDomWrites, true);
1119
1202
 
1120
- export { bootstrapLazy as b, h, promiseResolve as p, registerInstance as r };
1203
+ export { bootstrapLazy as b, getAssetPath as g, h, promiseResolve as p, registerInstance as r };