@salla.sa/twilight-theme-engine 1.0.65 → 1.0.67

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 (202) hide show
  1. package/dist/{AddToCartForm-NKXOZ6TW.js → AddToCartForm-UVQG3BI5.js} +3 -3
  2. package/dist/{AddToCartForm-NKXOZ6TW.js.map → AddToCartForm-UVQG3BI5.js.map} +1 -1
  3. package/dist/{BlogAuthorPage-GQPWTGT2.js → BlogAuthorPage-7HVGT3CS.js} +8 -8
  4. package/dist/{BlogAuthorPage-GQPWTGT2.js.map → BlogAuthorPage-7HVGT3CS.js.map} +1 -1
  5. package/dist/{BlogCategoryPage-LTSZDBIZ.js → BlogCategoryPage-MSITS6B3.js} +8 -8
  6. package/dist/{BlogCategoryPage-LTSZDBIZ.js.map → BlogCategoryPage-MSITS6B3.js.map} +1 -1
  7. package/dist/{BlogPage-QN7QL562.js → BlogPage-6FLWZBK3.js} +6 -6
  8. package/dist/{BlogPage-QN7QL562.js.map → BlogPage-6FLWZBK3.js.map} +1 -1
  9. package/dist/{BlogSinglePage-7GVVVVBL.js → BlogSinglePage-LSF5P4GA.js} +6 -6
  10. package/dist/{BlogSinglePage-7GVVVVBL.js.map → BlogSinglePage-LSF5P4GA.js.map} +1 -1
  11. package/dist/{BlogTagPage-QKYXFRET.js → BlogTagPage-JPOF3OC4.js} +8 -8
  12. package/dist/{BlogTagPage-QKYXFRET.js.map → BlogTagPage-JPOF3OC4.js.map} +1 -1
  13. package/dist/{BrandsPage-LF5NVBUE.js → BrandsPage-7G5VWJ2S.js} +7 -7
  14. package/dist/{BrandsPage-LF5NVBUE.js.map → BrandsPage-7G5VWJ2S.js.map} +1 -1
  15. package/dist/{Breadcrumb-E7KDHZX4.js → Breadcrumb-MNYKDV27.js} +6 -6
  16. package/dist/{Breadcrumb-E7KDHZX4.js.map → Breadcrumb-MNYKDV27.js.map} +1 -1
  17. package/dist/{CartItem-RB5CTJT6.js → CartItem-DNA2TJ6B.js} +6 -6
  18. package/dist/{CartItem-RB5CTJT6.js.map → CartItem-DNA2TJ6B.js.map} +1 -1
  19. package/dist/{CartSummary-JCYQ2SQD.js → CartSummary-RTDKJUV7.js} +6 -6
  20. package/dist/{CartSummary-JCYQ2SQD.js.map → CartSummary-RTDKJUV7.js.map} +1 -1
  21. package/dist/{Copyright-XXSKQ3TB.js → Copyright-IR4VD3I6.js} +3 -3
  22. package/dist/{Copyright-XXSKQ3TB.js.map → Copyright-IR4VD3I6.js.map} +1 -1
  23. package/dist/{CustomerLayout-CBFF4QEB.js → CustomerLayout-6YWOUFEN.js} +6 -6
  24. package/dist/{CustomerLayout-CBFF4QEB.js.map → CustomerLayout-6YWOUFEN.js.map} +1 -1
  25. package/dist/{Footer-NFN2EMI2.js → Footer-YQHS47HV.js} +6 -6
  26. package/dist/{Footer-NFN2EMI2.js.map → Footer-YQHS47HV.js.map} +1 -1
  27. package/dist/{Header-THQIZ2IR.js → Header-VEI2M3XJ.js} +5 -5
  28. package/dist/{Header-THQIZ2IR.js.map → Header-VEI2M3XJ.js.map} +1 -1
  29. package/dist/{LoyaltyPage-5SLR7TJX.js → LoyaltyPage-L7LABJWG.js} +6 -6
  30. package/dist/{LoyaltyPage-5SLR7TJX.js.map → LoyaltyPage-L7LABJWG.js.map} +1 -1
  31. package/dist/{LoyaltyPointsPage-HSXFTJUH.js → LoyaltyPointsPage-Z2GAMWCG.js} +3 -3
  32. package/dist/{LoyaltyPointsPage-HSXFTJUH.js.map → LoyaltyPointsPage-Z2GAMWCG.js.map} +1 -1
  33. package/dist/{MainMenu-7SVMOZ6P.js → MainMenu-76GBUVNZ.js} +3 -3
  34. package/dist/{MainMenu-7SVMOZ6P.js.map → MainMenu-76GBUVNZ.js.map} +1 -1
  35. package/dist/{MasterLayout-7IHDLNPZ.js → MasterLayout-GEQBU2MH.js} +6 -6
  36. package/dist/{MasterLayout-7IHDLNPZ.js.map → MasterLayout-GEQBU2MH.js.map} +1 -1
  37. package/dist/{MobileMenu-7HKRWQBQ.js → MobileMenu-DS5OJRCO.js} +6 -6
  38. package/dist/{MobileMenu-7HKRWQBQ.js.map → MobileMenu-DS5OJRCO.js.map} +1 -1
  39. package/dist/{NotificationsPage-4JX7GFXF.js → NotificationsPage-OT2WY2EF.js} +6 -6
  40. package/dist/{NotificationsPage-4JX7GFXF.js.map → NotificationsPage-OT2WY2EF.js.map} +1 -1
  41. package/dist/{OrderSinglePage-B7TBZ7TX.js → OrderSinglePage-XGPSBIA3.js} +7 -7
  42. package/dist/{OrderSinglePage-B7TBZ7TX.js.map → OrderSinglePage-XGPSBIA3.js.map} +1 -1
  43. package/dist/{OrdersPage-XZ2DAJYB.js → OrdersPage-A5TARKJ7.js} +6 -6
  44. package/dist/{OrdersPage-XZ2DAJYB.js.map → OrdersPage-A5TARKJ7.js.map} +1 -1
  45. package/dist/{PageSingle-QWT77P4S.js → PageSingle-VUNU2BG4.js} +3 -3
  46. package/dist/{PageSingle-QWT77P4S.js.map → PageSingle-VUNU2BG4.js.map} +1 -1
  47. package/dist/{ProductDetails-5IQHNQPS.js → ProductDetails-2JWKUXLI.js} +3 -3
  48. package/dist/{ProductDetails-5IQHNQPS.js.map → ProductDetails-2JWKUXLI.js.map} +1 -1
  49. package/dist/{ProfilePage-R2JDY6BF.js → ProfilePage-AVUCRBHQ.js} +6 -6
  50. package/dist/{ProfilePage-R2JDY6BF.js.map → ProfilePage-AVUCRBHQ.js.map} +1 -1
  51. package/dist/{SeoCartWidget-I2FBWKI4.js → SeoCartWidget-X5HTL62D.js} +6 -6
  52. package/dist/{SeoCartWidget-I2FBWKI4.js.map → SeoCartWidget-X5HTL62D.js.map} +1 -1
  53. package/dist/{SettingsPage-7X5YPAXL.js → SettingsPage-WGGKT3I4.js} +6 -6
  54. package/dist/{SettingsPage-7X5YPAXL.js.map → SettingsPage-WGGKT3I4.js.map} +1 -1
  55. package/dist/{StoreClosedNotification-5F4I3N27.js → StoreClosedNotification-XDYQO7JF.js} +7 -7
  56. package/dist/{StoreClosedNotification-5F4I3N27.js.map → StoreClosedNotification-XDYQO7JF.js.map} +1 -1
  57. package/dist/{TestimonialsPage-7YXSU33Z.js → TestimonialsPage-CKAYXFER.js} +3 -3
  58. package/dist/{TestimonialsPage-7YXSU33Z.js.map → TestimonialsPage-CKAYXFER.js.map} +1 -1
  59. package/dist/{ThankYouPage-7BN53JTK.js → ThankYouPage-ZTCFTEI7.js} +6 -6
  60. package/dist/{ThankYouPage-7BN53JTK.js.map → ThankYouPage-ZTCFTEI7.js.map} +1 -1
  61. package/dist/{WalletPage-JKXQSYPX.js → WalletPage-XKAOZIO2.js} +6 -6
  62. package/dist/{WalletPage-JKXQSYPX.js.map → WalletPage-XKAOZIO2.js.map} +1 -1
  63. package/dist/{WishlistPage-CSFHKERP.js → WishlistPage-LHIUUR4U.js} +8 -8
  64. package/dist/{WishlistPage-CSFHKERP.js.map → WishlistPage-LHIUUR4U.js.map} +1 -1
  65. package/dist/api/brands.js +2 -2
  66. package/dist/api/cart.js +2 -2
  67. package/dist/api/category.js +2 -2
  68. package/dist/api/home.d.ts +13 -0
  69. package/dist/api/home.d.ts.map +1 -1
  70. package/dist/api/home.js +1 -1
  71. package/dist/api/loyalty.js +2 -2
  72. package/dist/api/order.js +2 -2
  73. package/dist/api/page.js +2 -2
  74. package/dist/api/product.js +2 -2
  75. package/dist/api/wishlist.js +3 -3
  76. package/dist/{chunk-D5UIBY3V.js → chunk-3L5VG2X4.js} +3 -3
  77. package/dist/{chunk-D5UIBY3V.js.map → chunk-3L5VG2X4.js.map} +1 -1
  78. package/dist/{chunk-UEKIAED3.js → chunk-3Q22KK7C.js} +6 -6
  79. package/dist/{chunk-UEKIAED3.js.map → chunk-3Q22KK7C.js.map} +1 -1
  80. package/dist/{chunk-24QOBDMC.js → chunk-4YWBXQV5.js} +8 -4
  81. package/dist/chunk-4YWBXQV5.js.map +1 -0
  82. package/dist/{chunk-2QNDO2OY.js → chunk-6IRWFBGU.js} +3 -3
  83. package/dist/{chunk-2QNDO2OY.js.map → chunk-6IRWFBGU.js.map} +1 -1
  84. package/dist/{chunk-2BRCE7MK.js → chunk-A4UQKSOU.js} +4 -4
  85. package/dist/{chunk-2BRCE7MK.js.map → chunk-A4UQKSOU.js.map} +1 -1
  86. package/dist/{chunk-ZBARSETM.js → chunk-EFMAB636.js} +3 -3
  87. package/dist/{chunk-ZBARSETM.js.map → chunk-EFMAB636.js.map} +1 -1
  88. package/dist/{chunk-43XFO6KF.js → chunk-EYFMLMMF.js} +3 -3
  89. package/dist/{chunk-43XFO6KF.js.map → chunk-EYFMLMMF.js.map} +1 -1
  90. package/dist/{chunk-FY573DJA.js → chunk-FAVZMJRY.js} +6 -6
  91. package/dist/{chunk-FY573DJA.js.map → chunk-FAVZMJRY.js.map} +1 -1
  92. package/dist/{chunk-RWTZH6G3.js → chunk-FRFTO2HP.js} +6 -6
  93. package/dist/{chunk-RWTZH6G3.js.map → chunk-FRFTO2HP.js.map} +1 -1
  94. package/dist/{chunk-65JM62NV.js → chunk-FTM3RIVB.js} +4 -4
  95. package/dist/{chunk-65JM62NV.js.map → chunk-FTM3RIVB.js.map} +1 -1
  96. package/dist/{chunk-OJPJP7ML.js → chunk-GNH3W6T4.js} +4 -4
  97. package/dist/chunk-GNH3W6T4.js.map +1 -0
  98. package/dist/{chunk-GXDBY4WB.js → chunk-GYXT7T2Z.js} +3 -3
  99. package/dist/{chunk-GXDBY4WB.js.map → chunk-GYXT7T2Z.js.map} +1 -1
  100. package/dist/{chunk-QYUYQPXN.js → chunk-HDO37URJ.js} +3 -3
  101. package/dist/{chunk-QYUYQPXN.js.map → chunk-HDO37URJ.js.map} +1 -1
  102. package/dist/{chunk-P6DV6EHM.js → chunk-RH5VLLTG.js} +3 -3
  103. package/dist/{chunk-P6DV6EHM.js.map → chunk-RH5VLLTG.js.map} +1 -1
  104. package/dist/{chunk-WF7DYPR6.js → chunk-SOPZ72BU.js} +3 -3
  105. package/dist/{chunk-WF7DYPR6.js.map → chunk-SOPZ72BU.js.map} +1 -1
  106. package/dist/{chunk-KBQXQKPZ.js → chunk-SSPAMQRV.js} +2 -2
  107. package/dist/chunk-SSPAMQRV.js.map +1 -0
  108. package/dist/chunk-TFROBJP5.js +14 -0
  109. package/dist/{chunk-XMZPFHE7.js.map → chunk-TFROBJP5.js.map} +1 -1
  110. package/dist/{chunk-A6SKDX5E.js → chunk-TOPFB6FL.js} +3 -3
  111. package/dist/{chunk-A6SKDX5E.js.map → chunk-TOPFB6FL.js.map} +1 -1
  112. package/dist/{chunk-55VTMG2H.js → chunk-UEQFXSTX.js} +21 -11
  113. package/dist/chunk-UEQFXSTX.js.map +1 -0
  114. package/dist/{chunk-6AV7RQ6H.js → chunk-VAW73MFZ.js} +23 -8
  115. package/dist/chunk-VAW73MFZ.js.map +1 -0
  116. package/dist/{chunk-347K33DP.js → chunk-VGIK4BW6.js} +4 -4
  117. package/dist/{chunk-347K33DP.js.map → chunk-VGIK4BW6.js.map} +1 -1
  118. package/dist/{chunk-EBMMJWX6.js → chunk-VI5R46KX.js} +7 -7
  119. package/dist/{chunk-EBMMJWX6.js.map → chunk-VI5R46KX.js.map} +1 -1
  120. package/dist/{chunk-PDMVQCEV.js → chunk-VKB5AQUS.js} +3 -3
  121. package/dist/{chunk-PDMVQCEV.js.map → chunk-VKB5AQUS.js.map} +1 -1
  122. package/dist/{chunk-GRV7ELSP.js → chunk-W5K6YUA2.js} +19 -10
  123. package/dist/chunk-W5K6YUA2.js.map +1 -0
  124. package/dist/chunk-Y43T7PJV.js +48 -0
  125. package/dist/chunk-Y43T7PJV.js.map +1 -0
  126. package/dist/components/cart/index.js +1 -1
  127. package/dist/components/common/index.js +1 -1
  128. package/dist/components/drawer/index.js +4 -4
  129. package/dist/components/home/HomePageRenderer.d.ts +5 -1
  130. package/dist/components/home/HomePageRenderer.d.ts.map +1 -1
  131. package/dist/components/home/PageBlocks.d.ts +10 -0
  132. package/dist/components/home/PageBlocks.d.ts.map +1 -0
  133. package/dist/components/home/index.d.ts +2 -0
  134. package/dist/components/home/index.d.ts.map +1 -1
  135. package/dist/components/home/index.js +8 -7
  136. package/dist/components/layout/index.js +1 -1
  137. package/dist/components/product/index.js +5 -5
  138. package/dist/components/store/index.js +6 -6
  139. package/dist/{document-class-ZLPAWZEX.js → document-class-SPTMBRWL.js} +5 -5
  140. package/dist/{document-class-ZLPAWZEX.js.map → document-class-SPTMBRWL.js.map} +1 -1
  141. package/dist/dom/edge.d.ts +3 -0
  142. package/dist/dom/edge.d.ts.map +1 -0
  143. package/dist/dom/index.d.ts +1 -0
  144. package/dist/dom/index.d.ts.map +1 -1
  145. package/dist/dom.js +8 -1
  146. package/dist/dom.js.map +1 -1
  147. package/dist/hooks/index.js +4 -4
  148. package/dist/hooks/useGtm.js +4 -4
  149. package/dist/hooks/useMoney.js +4 -4
  150. package/dist/hooks/useStore.js +4 -4
  151. package/dist/index.js +4 -4
  152. package/dist/{navigation-DU3BF72V.js → navigation-CJHPA74M.js} +3 -3
  153. package/dist/{navigation-DU3BF72V.js.map → navigation-CJHPA74M.js.map} +1 -1
  154. package/dist/{navigation-WB75NC6Y.js → navigation-F2TD5X2P.js} +4 -4
  155. package/dist/{navigation-WB75NC6Y.js.map → navigation-F2TD5X2P.js.map} +1 -1
  156. package/dist/{not-found-MA54AXJB.js → not-found-T2WYF64G.js} +7 -7
  157. package/dist/{not-found-MA54AXJB.js.map → not-found-T2WYF64G.js.map} +1 -1
  158. package/dist/providers/NavigationProvider.d.ts +8 -9
  159. package/dist/providers/NavigationProvider.d.ts.map +1 -1
  160. package/dist/providers/index.js +4 -4
  161. package/dist/providers/twilight-init.d.ts.map +1 -1
  162. package/dist/routes/account/orders.js +3 -3
  163. package/dist/routes/account.js +10 -10
  164. package/dist/routes/blog.js +7 -7
  165. package/dist/routes/brands.js +3 -3
  166. package/dist/routes/cart.js +12 -12
  167. package/dist/routes/home.js +9 -9
  168. package/dist/routes/index.js +2 -2
  169. package/dist/routes/loyalty.js +4 -4
  170. package/dist/routes/page.js +3 -3
  171. package/dist/routes/product-listing.js +10 -9
  172. package/dist/routes/product-listing.js.map +1 -1
  173. package/dist/routes/product.js +8 -7
  174. package/dist/routes/product.js.map +1 -1
  175. package/dist/routes/seo-redirects.d.ts +7 -0
  176. package/dist/routes/seo-redirects.d.ts.map +1 -1
  177. package/dist/routes/seo-redirects.js +2 -2
  178. package/dist/routes/testimonials.js +1 -1
  179. package/dist/routes/thank-you.js +3 -3
  180. package/dist/skeleton.js +9 -9
  181. package/dist/tanstack/middleware/earlyHints.d.ts.map +1 -1
  182. package/dist/tanstack/router.d.ts.map +1 -1
  183. package/dist/tanstack/search.d.ts +3 -0
  184. package/dist/tanstack/search.d.ts.map +1 -0
  185. package/dist/tanstack/templates/locale-wrapper.d.ts.map +1 -1
  186. package/dist/tanstack.js +6 -7
  187. package/dist/tanstack.js.map +1 -1
  188. package/dist/types/index.d.ts +2 -0
  189. package/dist/types/index.d.ts.map +1 -1
  190. package/dist/vite/adapters/tanstack.adapter.d.ts.map +1 -1
  191. package/dist/vite/index.js +62 -3
  192. package/dist/vite/index.js.map +1 -1
  193. package/package.json +1 -1
  194. package/dist/chunk-24QOBDMC.js.map +0 -1
  195. package/dist/chunk-55VTMG2H.js.map +0 -1
  196. package/dist/chunk-6AV7RQ6H.js.map +0 -1
  197. package/dist/chunk-GRV7ELSP.js.map +0 -1
  198. package/dist/chunk-KBQXQKPZ.js.map +0 -1
  199. package/dist/chunk-NQVJ7NJ6.js +0 -19
  200. package/dist/chunk-NQVJ7NJ6.js.map +0 -1
  201. package/dist/chunk-OJPJP7ML.js.map +0 -1
  202. package/dist/chunk-XMZPFHE7.js +0 -14
@@ -0,0 +1,48 @@
1
+ import { api } from './chunk-P3OPJL6I.js';
2
+ import { queryOptions } from '@tanstack/react-query';
3
+
4
+ async function list(params) {
5
+ const query = params ? `?${new URLSearchParams(params).toString()}` : "";
6
+ const { data } = await api.get(`component/list${query}`).json();
7
+ return data ?? [];
8
+ }
9
+ function without(blocks, excluded) {
10
+ if (!excluded.length) return blocks;
11
+ const paths = new Set(excluded.map((block) => block.path));
12
+ const left = excluded.map((block) => JSON.stringify(block));
13
+ return blocks.filter((block) => {
14
+ if (!paths.has(block.path)) return true;
15
+ const index = left.indexOf(JSON.stringify(block));
16
+ if (index === -1) return true;
17
+ left.splice(index, 1);
18
+ return false;
19
+ });
20
+ }
21
+ var home = {
22
+ components: async () => {
23
+ const [blocks, pageBlocks] = await Promise.all([list(), list({ show_in: "pages" })]);
24
+ return without(blocks, pageBlocks);
25
+ },
26
+ /** The blocks the merchant placed at `hook` on a product, category or page. */
27
+ blocks: async (hook, scope) => {
28
+ const scopeParams = Object.fromEntries(
29
+ Object.entries(scope).map(([key, id]) => [key, String(id)])
30
+ );
31
+ const blocks = await list({ hooks: hook, ...scopeParams });
32
+ return blocks.map((block) => ({ ...block, path: block.path.replace("home.", "") }));
33
+ },
34
+ queries: {
35
+ components: () => queryOptions({
36
+ queryKey: ["home", "components"],
37
+ queryFn: () => home.components()
38
+ }),
39
+ blocks: (hook, scope) => queryOptions({
40
+ queryKey: ["home", "blocks", hook, scope],
41
+ queryFn: () => home.blocks(hook, scope)
42
+ })
43
+ }
44
+ };
45
+
46
+ export { home };
47
+ //# sourceMappingURL=chunk-Y43T7PJV.js.map
48
+ //# sourceMappingURL=chunk-Y43T7PJV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/api/home.ts"],"names":[],"mappings":";;;AAQA,eAAe,KAAK,MAAA,EAA+D;AACjF,EAAA,MAAM,KAAA,GAAQ,SAAS,CAAA,CAAA,EAAI,IAAI,gBAAgB,MAAM,CAAA,CAAE,QAAA,EAAU,CAAA,CAAA,GAAK,EAAA;AACtE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAI,CAAA,cAAA,EAAiB,KAAK,CAAA,CAAE,CAAA,CAAE,IAAA,EAAoC;AAC7F,EAAA,OAAO,QAAQ,EAAC;AAClB;AAGA,SAAS,OAAA,CAAQ,QAA6B,QAAA,EAAoD;AAChG,EAAA,IAAI,CAAC,QAAA,CAAS,MAAA,EAAQ,OAAO,MAAA;AAC7B,EAAA,MAAM,KAAA,GAAQ,IAAI,GAAA,CAAI,QAAA,CAAS,IAAI,CAAC,KAAA,KAAU,KAAA,CAAM,IAAI,CAAC,CAAA;AACzD,EAAA,MAAM,IAAA,GAAO,SAAS,GAAA,CAAI,CAAC,UAAU,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAA;AAC1D,EAAA,OAAO,MAAA,CAAO,MAAA,CAAO,CAAC,KAAA,KAAU;AAC9B,IAAA,IAAI,CAAC,KAAA,CAAM,GAAA,CAAI,KAAA,CAAM,IAAI,GAAG,OAAO,IAAA;AACnC,IAAA,MAAM,QAAQ,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAA;AAChD,IAAA,IAAI,KAAA,KAAU,IAAI,OAAO,IAAA;AACzB,IAAA,IAAA,CAAK,MAAA,CAAO,OAAO,CAAC,CAAA;AACpB,IAAA,OAAO,KAAA;AAAA,EACT,CAAC,CAAA;AACH;AAEO,IAAM,IAAA,GAAO;AAAA,EAClB,YAAY,YAA0C;AAEpD,IAAA,MAAM,CAAC,MAAA,EAAQ,UAAU,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI,CAAC,IAAA,EAAK,EAAG,KAAK,EAAE,OAAA,EAAS,OAAA,EAAS,CAAC,CAAC,CAAA;AACnF,IAAA,OAAO,OAAA,CAAQ,QAAQ,UAAU,CAAA;AAAA,EACnC,CAAA;AAAA;AAAA,EAGA,MAAA,EAAQ,OAAO,IAAA,EAAc,KAAA,KAAoD;AAC/E,IAAA,MAAM,cAAc,MAAA,CAAO,WAAA;AAAA,MACzB,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,CAAE,IAAI,CAAC,CAAC,GAAA,EAAK,EAAE,MAAM,CAAC,GAAA,EAAK,MAAA,CAAO,EAAE,CAAC,CAAC;AAAA,KAC5D;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,EAAE,OAAO,IAAA,EAAM,GAAG,aAAa,CAAA;AACzD,IAAA,OAAO,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,MAAW,EAAE,GAAG,KAAA,EAAO,IAAA,EAAM,KAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAS,EAAE,GAAE,CAAE,CAAA;AAAA,EACpF,CAAA;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,UAAA,EAAY,MACV,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,MAAA,EAAQ,YAAY,CAAA;AAAA,MAC/B,OAAA,EAAS,MAAM,IAAA,CAAK,UAAA;AAAW,KAChC,CAAA;AAAA,IAEH,MAAA,EAAQ,CAAC,IAAA,EAAc,KAAA,KACrB,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,MAAA,EAAQ,QAAA,EAAU,MAAM,KAAK,CAAA;AAAA,MACxC,OAAA,EAAS,MAAM,IAAA,CAAK,MAAA,CAAO,MAAM,KAAK;AAAA,KACvC;AAAA;AAEP","file":"chunk-Y43T7PJV.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { api } from './client';\nimport type { HomeComponentData } from '../types';\n\n/** The page a hook's blocks render on; blocks can target specific products, categories or pages. */\nexport type BlockScope =\n { product_id: number | string } | { category_id: number | string } | { page_id: number | string };\n\nasync function list(params?: Record<string, string>): Promise<HomeComponentData[]> {\n const query = params ? `?${new URLSearchParams(params).toString()}` : '';\n const { data } = await api.get(`component/list${query}`).json<{ data: HomeComponentData[] }>();\n return data ?? [];\n}\n\n/** `blocks` minus each of `excluded`, matched by content: the API sends no id or order to match on. */\nfunction without(blocks: HomeComponentData[], excluded: HomeComponentData[]): HomeComponentData[] {\n if (!excluded.length) return blocks;\n const paths = new Set(excluded.map((block) => block.path));\n const left = excluded.map((block) => JSON.stringify(block));\n return blocks.filter((block) => {\n if (!paths.has(block.path)) return true;\n const index = left.indexOf(JSON.stringify(block));\n if (index === -1) return true;\n left.splice(index, 1);\n return false;\n });\n}\n\nexport const home = {\n components: async (): Promise<HomeComponentData[]> => {\n // The unfiltered list also has the product, category and page blocks, which the home leaves out.\n const [blocks, pageBlocks] = await Promise.all([list(), list({ show_in: 'pages' })]);\n return without(blocks, pageBlocks);\n },\n\n /** The blocks the merchant placed at `hook` on a product, category or page. */\n blocks: async (hook: string, scope: BlockScope): Promise<HomeComponentData[]> => {\n const scopeParams = Object.fromEntries(\n Object.entries(scope).map(([key, id]) => [key, String(id)])\n );\n const blocks = await list({ hooks: hook, ...scopeParams });\n return blocks.map((block) => ({ ...block, path: block.path.replace('home.', '') }));\n },\n\n queries: {\n components: () =>\n queryOptions({\n queryKey: ['home', 'components'],\n queryFn: () => home.components(),\n }),\n\n blocks: (hook: string, scope: BlockScope) =>\n queryOptions({\n queryKey: ['home', 'blocks', hook, scope],\n queryFn: () => home.blocks(hook, scope),\n }),\n },\n};\n"]}
@@ -1,4 +1,4 @@
1
- export { LazyCartItem as CartItem, LazyCartSummary as CartSummary, LazySeoCartWidget as SeoCartWidget } from '../../chunk-XMZPFHE7.js';
1
+ export { LazyCartItem as CartItem, LazyCartSummary as CartSummary, LazySeoCartWidget as SeoCartWidget } from '../../chunk-TFROBJP5.js';
2
2
  import '../../chunk-DGUM43GV.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- export { BlogSkeleton, LazyBreadcrumb as Breadcrumb, BreadcrumbSkeleton, LazyCurrencySymbol as CurrencySymbol, CustomerLayoutSkeleton, CustomerPageSkeleton, DeferredData, LazyErrorPage as ErrorPage, Image, LazyNoContent as NoContent, PageSkeleton, ProductCardSkeleton, ProductDetailSkeleton, ProductGridSkeleton, LazyRenderWhenVisible as RenderWhenVisible, SkeletonPulse, resolveDeferred } from '../../chunk-WF7DYPR6.js';
1
+ export { BlogSkeleton, LazyBreadcrumb as Breadcrumb, BreadcrumbSkeleton, LazyCurrencySymbol as CurrencySymbol, CustomerLayoutSkeleton, CustomerPageSkeleton, DeferredData, LazyErrorPage as ErrorPage, Image, LazyNoContent as NoContent, PageSkeleton, ProductCardSkeleton, ProductDetailSkeleton, ProductGridSkeleton, LazyRenderWhenVisible as RenderWhenVisible, SkeletonPulse, resolveDeferred } from '../../chunk-SOPZ72BU.js';
2
2
  export { Link } from '../../chunk-AXW67SY7.js';
3
3
  import '../../chunk-BYMOPN2S.js';
4
4
  import '../../chunk-SKLEJJ6M.js';
@@ -1,12 +1,12 @@
1
1
  export { Drawer } from '../../chunk-6TKIUG5C.js';
2
- import '../../chunk-55VTMG2H.js';
3
- import '../../chunk-UEKIAED3.js';
2
+ import '../../chunk-UEQFXSTX.js';
3
+ import '../../chunk-3Q22KK7C.js';
4
4
  import '../../chunk-JKIRRMBU.js';
5
5
  import '../../chunk-2JV6WZ6O.js';
6
6
  import '../../chunk-UIOLSYKV.js';
7
7
  import '../../chunk-VVZNW5CB.js';
8
8
  import '../../chunk-2XGQSJKH.js';
9
- import '../../chunk-KBQXQKPZ.js';
9
+ import '../../chunk-SSPAMQRV.js';
10
10
  import '../../chunk-ZGHRSRDO.js';
11
11
  import '../../chunk-GOPUP26T.js';
12
12
  import '../../chunk-C5X6CVXC.js';
@@ -32,7 +32,7 @@ import '../../chunk-T72DAX7R.js';
32
32
  import '../../chunk-RJPPO3ET.js';
33
33
  import '../../chunk-Q7VWURUR.js';
34
34
  import '../../chunk-GU2KUQVD.js';
35
- import '../../chunk-WF7DYPR6.js';
35
+ import '../../chunk-SOPZ72BU.js';
36
36
  import '../../chunk-AXW67SY7.js';
37
37
  import '../../chunk-BYMOPN2S.js';
38
38
  import '../../chunk-SKLEJJ6M.js';
@@ -19,6 +19,8 @@ export type HomeComponentConfig = {
19
19
  className?: string | ((data: HomeComponentData) => string);
20
20
  id?: string | ((data: HomeComponentData) => string);
21
21
  placeholder?: ReactNode;
22
+ /** Mount on page load instead of when the block nears the viewport. */
23
+ renderOnMount?: boolean;
22
24
  };
23
25
  /**
24
26
  * Register render-shell config for home blocks a theme owns (height, placeholder,
@@ -30,8 +32,10 @@ export declare function registerHomeComponentConfig(config: Record<string, HomeC
30
32
  * Memoized component renderer with scroll-based lazy loading
31
33
  * Components only mount when scrolled into view - preventing API calls until needed
32
34
  */
33
- export declare const HomeComponentRenderer: import("react").MemoExoticComponent<({ data, index, }: {
35
+ export declare const HomeComponentRenderer: import("react").MemoExoticComponent<({ data, index, priority, }: {
34
36
  data: HomeComponentData;
35
37
  index: number;
38
+ /** Mount right away with eager images. Defaults to the first three blocks of the page. */
39
+ priority?: boolean;
36
40
  }) => import("react").JSX.Element>;
37
41
  //# sourceMappingURL=HomePageRenderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HomePageRenderer.d.ts","sourceRoot":"","sources":["../../../src/components/home/HomePageRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKhE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAsBrD,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,iBAAiB,GAAG;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH,CAAC;AAuDF;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,iBAAiB,KAAK,MAAM,CAAC,CAAC;IAC3D,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,iBAAiB,KAAK,MAAM,CAAC,CAAC;IACpD,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB,CAAC;AAgEF;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,IAAI,CAE7F;AAWD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,yDAG/B;IACD,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf,iCAsDC,CAAC"}
1
+ {"version":3,"file":"HomePageRenderer.d.ts","sourceRoot":"","sources":["../../../src/components/home/HomePageRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKhE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAsBrD,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,iBAAiB,GAAG;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH,CAAC;AAuDF;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,iBAAiB,KAAK,MAAM,CAAC,CAAC;IAC3D,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,iBAAiB,KAAK,MAAM,CAAC,CAAC;IACpD,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAkEF;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,IAAI,CAE7F;AAWD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,mEAI/B;IACD,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,iCAwDC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type BlockScope } from '../../api/home';
2
+ export interface PageBlocksProps {
3
+ /** The page hook the merchant placed the blocks at, e.g. `product.single.before_customer_reviews`. */
4
+ hook: string;
5
+ /** The product, category or page being shown. */
6
+ scope: BlockScope;
7
+ }
8
+ /** Draws the blocks placed at a product, category or page hook, loaded in the browser. */
9
+ export declare const PageBlocks: import("react").MemoExoticComponent<({ hook, scope }: PageBlocksProps) => import("react").JSX.Element>;
10
+ //# sourceMappingURL=PageBlocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageBlocks.d.ts","sourceRoot":"","sources":["../../../src/components/home/PageBlocks.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGvD,MAAM,WAAW,eAAe;IAC9B,sGAAsG;IACtG,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,0FAA0F;AAC1F,eAAO,MAAM,UAAU,wDAA6C,eAAe,iCAUjF,CAAC"}
@@ -5,5 +5,7 @@ export type { BundleComponentProps } from './BundleComponent';
5
5
  export type { HomeComponentsProps, HomeComponentConfig } from './HomePageRenderer';
6
6
  export { DefaultHomeComponents, registerHomeComponents } from './register';
7
7
  export { HomeComponentRenderer, registerHomeComponentConfig } from './HomePageRenderer';
8
+ export { PageBlocks } from './PageBlocks';
9
+ export type { PageBlocksProps } from './PageBlocks';
8
10
  export { ComponentErrorBoundary } from './ComponentErrorBoundary';
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/home/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACpB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,kBAAkB,IAAI,cAAc,EACpC,iBAAiB,IAAI,aAAa,EAClC,eAAe,IAAI,WAAW,EAC9B,iBAAiB,IAAI,aAAa,EAClC,0BAA0B,IAAI,sBAAsB,EACpD,0BAA0B,IAAI,sBAAsB,EACpD,0BAA0B,IAAI,sBAAsB,EACpD,sBAAsB,IAAI,kBAAkB,EAC5C,gBAAgB,IAAI,YAAY,EAChC,gBAAgB,IAAI,YAAY,EAChC,gBAAgB,IAAI,YAAY,EAChC,WAAW,IAAI,OAAO,EACtB,mBAAmB,IAAI,eAAe,GACvC,CAAC;AAGF,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAG9D,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGnF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAG3E,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/home/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACpB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,kBAAkB,IAAI,cAAc,EACpC,iBAAiB,IAAI,aAAa,EAClC,eAAe,IAAI,WAAW,EAC9B,iBAAiB,IAAI,aAAa,EAClC,0BAA0B,IAAI,sBAAsB,EACpD,0BAA0B,IAAI,sBAAsB,EACpD,0BAA0B,IAAI,sBAAsB,EACpD,sBAAsB,IAAI,kBAAkB,EAC5C,gBAAgB,IAAI,YAAY,EAChC,gBAAgB,IAAI,YAAY,EAChC,gBAAgB,IAAI,YAAY,EAChC,WAAW,IAAI,OAAO,EACtB,mBAAmB,IAAI,eAAe,GACvC,CAAC;AAGF,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAG9D,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGnF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAG3E,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1,15 +1,16 @@
1
- export { BundleComponent, ComponentErrorBoundary, DefaultHomeComponents, FeaturedProductsStyle1, FeaturedProductsStyle2, FeaturedProductsStyle3, FixedBanner, FixedProducts, HomeComponentRenderer, ParallaxBackground, PhotosSlider, ProductsSlider, SquarePhotos, StoreFeatures, LazyTestimonials as Testimonials, Youtube, registerHomeComponentConfig, registerHomeComponents } from '../../chunk-GRV7ELSP.js';
2
- import '../../chunk-QYUYQPXN.js';
3
- import '../../chunk-FY573DJA.js';
1
+ export { BundleComponent, ComponentErrorBoundary, DefaultHomeComponents, FeaturedProductsStyle1, FeaturedProductsStyle2, FeaturedProductsStyle3, FixedBanner, FixedProducts, HomeComponentRenderer, PageBlocks, ParallaxBackground, PhotosSlider, ProductsSlider, SquarePhotos, StoreFeatures, LazyTestimonials as Testimonials, Youtube, registerHomeComponentConfig, registerHomeComponents } from '../../chunk-W5K6YUA2.js';
2
+ import '../../chunk-Y43T7PJV.js';
3
+ import '../../chunk-HDO37URJ.js';
4
+ import '../../chunk-FAVZMJRY.js';
4
5
  import '../../chunk-342EPVXN.js';
5
- import '../../chunk-55VTMG2H.js';
6
- import '../../chunk-UEKIAED3.js';
6
+ import '../../chunk-UEQFXSTX.js';
7
+ import '../../chunk-3Q22KK7C.js';
7
8
  import '../../chunk-JKIRRMBU.js';
8
9
  import '../../chunk-2JV6WZ6O.js';
9
10
  import '../../chunk-UIOLSYKV.js';
10
11
  import '../../chunk-VVZNW5CB.js';
11
12
  import '../../chunk-2XGQSJKH.js';
12
- import '../../chunk-KBQXQKPZ.js';
13
+ import '../../chunk-SSPAMQRV.js';
13
14
  import '../../chunk-ZGHRSRDO.js';
14
15
  import '../../chunk-GOPUP26T.js';
15
16
  import '../../chunk-C5X6CVXC.js';
@@ -35,7 +36,7 @@ import '../../chunk-T72DAX7R.js';
35
36
  import '../../chunk-RJPPO3ET.js';
36
37
  import '../../chunk-Q7VWURUR.js';
37
38
  import '../../chunk-GU2KUQVD.js';
38
- import '../../chunk-WF7DYPR6.js';
39
+ import '../../chunk-SOPZ72BU.js';
39
40
  import '../../chunk-AXW67SY7.js';
40
41
  import '../../chunk-BYMOPN2S.js';
41
42
  import '../../chunk-SKLEJJ6M.js';
@@ -1,4 +1,4 @@
1
- export { LazyCopyright as Copyright, LazyCustomerLayout as CustomerLayout, LazyFooter as Footer, LazyHeader as Header, LazyMasterLayout as MasterLayout, LazyWidgetHead as WidgetHead } from '../../chunk-EBMMJWX6.js';
1
+ export { LazyCopyright as Copyright, LazyCustomerLayout as CustomerLayout, LazyFooter as Footer, LazyHeader as Header, LazyMasterLayout as MasterLayout, LazyWidgetHead as WidgetHead } from '../../chunk-VI5R46KX.js';
2
2
  export { pushEqualHeightConfig } from '../../chunk-RJPPO3ET.js';
3
3
  import '../../chunk-Q7VWURUR.js';
4
4
  import '../../chunk-GU2KUQVD.js';
@@ -1,13 +1,13 @@
1
- export { LazyAddToCartForm as AddToCartForm, ProductCard, LazyProductDetails as ProductDetails, ProductGallery } from '../../chunk-FY573DJA.js';
1
+ export { LazyAddToCartForm as AddToCartForm, ProductCard, LazyProductDetails as ProductDetails, ProductGallery } from '../../chunk-FAVZMJRY.js';
2
2
  import '../../chunk-342EPVXN.js';
3
- import '../../chunk-55VTMG2H.js';
4
- import '../../chunk-UEKIAED3.js';
3
+ import '../../chunk-UEQFXSTX.js';
4
+ import '../../chunk-3Q22KK7C.js';
5
5
  import '../../chunk-JKIRRMBU.js';
6
6
  import '../../chunk-2JV6WZ6O.js';
7
7
  import '../../chunk-UIOLSYKV.js';
8
8
  import '../../chunk-VVZNW5CB.js';
9
9
  import '../../chunk-2XGQSJKH.js';
10
- import '../../chunk-KBQXQKPZ.js';
10
+ import '../../chunk-SSPAMQRV.js';
11
11
  import '../../chunk-ZGHRSRDO.js';
12
12
  import '../../chunk-GOPUP26T.js';
13
13
  import '../../chunk-C5X6CVXC.js';
@@ -33,7 +33,7 @@ import '../../chunk-T72DAX7R.js';
33
33
  import '../../chunk-RJPPO3ET.js';
34
34
  import '../../chunk-Q7VWURUR.js';
35
35
  import '../../chunk-GU2KUQVD.js';
36
- import '../../chunk-WF7DYPR6.js';
36
+ import '../../chunk-SOPZ72BU.js';
37
37
  import '../../chunk-AXW67SY7.js';
38
38
  import '../../chunk-BYMOPN2S.js';
39
39
  import '../../chunk-SKLEJJ6M.js';
@@ -1,12 +1,12 @@
1
- export { StoreClosedNotification } from '../../chunk-65JM62NV.js';
2
- import '../../chunk-55VTMG2H.js';
3
- import '../../chunk-UEKIAED3.js';
1
+ export { StoreClosedNotification } from '../../chunk-FTM3RIVB.js';
2
+ import '../../chunk-UEQFXSTX.js';
3
+ import '../../chunk-3Q22KK7C.js';
4
4
  import '../../chunk-JKIRRMBU.js';
5
5
  import '../../chunk-2JV6WZ6O.js';
6
6
  import '../../chunk-UIOLSYKV.js';
7
7
  import '../../chunk-VVZNW5CB.js';
8
8
  import '../../chunk-2XGQSJKH.js';
9
- import '../../chunk-KBQXQKPZ.js';
9
+ import '../../chunk-SSPAMQRV.js';
10
10
  import '../../chunk-ZGHRSRDO.js';
11
11
  import '../../chunk-GOPUP26T.js';
12
12
  import '../../chunk-C5X6CVXC.js';
@@ -32,7 +32,7 @@ import '../../chunk-T72DAX7R.js';
32
32
  import '../../chunk-RJPPO3ET.js';
33
33
  import '../../chunk-Q7VWURUR.js';
34
34
  import '../../chunk-GU2KUQVD.js';
35
- import '../../chunk-WF7DYPR6.js';
35
+ import '../../chunk-SOPZ72BU.js';
36
36
  import '../../chunk-AXW67SY7.js';
37
37
  import '../../chunk-BYMOPN2S.js';
38
38
  import '../../chunk-SKLEJJ6M.js';
@@ -46,7 +46,7 @@ import '../../chunk-DGUM43GV.js';
46
46
  import { lazy } from 'react';
47
47
 
48
48
  var LazyStoreClosedNotification = lazy(
49
- () => import('../../StoreClosedNotification-5F4I3N27.js').then((m) => ({
49
+ () => import('../../StoreClosedNotification-XDYQO7JF.js').then((m) => ({
50
50
  default: m.StoreClosedNotification
51
51
  }))
52
52
  );
@@ -1,4 +1,4 @@
1
- export { RouteDocumentSync, TanStackDocumentSync, tanstackDocumentAdapter, useTanstackDocumentAttrs } from './chunk-6AV7RQ6H.js';
1
+ export { RouteDocumentSync, TanStackDocumentSync, tanstackDocumentAdapter, useTanstackDocumentAttrs } from './chunk-VAW73MFZ.js';
2
2
  import './chunk-Z4Y55HWX.js';
3
3
  import './chunk-BE3JDKE2.js';
4
4
  import './chunk-5ZR2HKZ7.js';
@@ -6,10 +6,10 @@ import './chunk-GD26FI4J.js';
6
6
  import './chunk-EQ32CL4D.js';
7
7
  import './chunk-Q3COPV5Z.js';
8
8
  import './chunk-TZ3E5BN4.js';
9
- import './chunk-QYUYQPXN.js';
9
+ import './chunk-HDO37URJ.js';
10
10
  import './chunk-UIOLSYKV.js';
11
11
  import './chunk-2XGQSJKH.js';
12
- import './chunk-KBQXQKPZ.js';
12
+ import './chunk-SSPAMQRV.js';
13
13
  import './chunk-ZGHRSRDO.js';
14
14
  import './chunk-P3OPJL6I.js';
15
15
  import './chunk-WY4IYO3G.js';
@@ -22,5 +22,5 @@ import './chunk-TYNZ5B2B.js';
22
22
  import './chunk-T72DAX7R.js';
23
23
  import './chunk-DF6FBKDN.js';
24
24
  import './chunk-DGUM43GV.js';
25
- //# sourceMappingURL=document-class-ZLPAWZEX.js.map
26
- //# sourceMappingURL=document-class-ZLPAWZEX.js.map
25
+ //# sourceMappingURL=document-class-SPTMBRWL.js.map
26
+ //# sourceMappingURL=document-class-SPTMBRWL.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"document-class-ZLPAWZEX.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"document-class-SPTMBRWL.js"}
@@ -0,0 +1,3 @@
1
+ /** Removes the tags the edge adds to the HTML, so `hydrateRoot(document)` matches the server render. */
2
+ export declare function removeEdgeInjections(): void;
3
+ //# sourceMappingURL=edge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../src/dom/edge.ts"],"names":[],"mappings":"AAGA,wGAAwG;AACxG,wBAAgB,oBAAoB,IAAI,IAAI,CAG3C"}
@@ -21,4 +21,5 @@
21
21
  */
22
22
  export { domDocumentAdapter as attrs } from './document';
23
23
  export { clearDomDocumentAttrs as clearAttrs } from './document';
24
+ export { removeEdgeInjections } from './edge';
24
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dom/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAE,kBAAkB,IAAI,KAAK,EAAE,MAAM,YAAY,CAAC;AAGzD,OAAO,EAAE,qBAAqB,IAAI,UAAU,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dom/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAE,kBAAkB,IAAI,KAAK,EAAE,MAAM,YAAY,CAAC;AAGzD,OAAO,EAAE,qBAAqB,IAAI,UAAU,EAAE,MAAM,YAAY,CAAC;AAGjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC"}
package/dist/dom.js CHANGED
@@ -13,6 +13,13 @@ function clearDomDocumentAttrs() {
13
13
  syncAttrsToElement(document.documentElement, {});
14
14
  }
15
15
 
16
- export { domDocumentAdapter as attrs, clearDomDocumentAttrs as clearAttrs };
16
+ // src/dom/edge.ts
17
+ var EDGE_INJECTED = 'head > script[src*="/.webmcp/"]';
18
+ function removeEdgeInjections() {
19
+ if (typeof document === "undefined") return;
20
+ document.querySelectorAll(EDGE_INJECTED).forEach((node) => node.remove());
21
+ }
22
+
23
+ export { domDocumentAdapter as attrs, clearDomDocumentAttrs as clearAttrs, removeEdgeInjections };
17
24
  //# sourceMappingURL=dom.js.map
18
25
  //# sourceMappingURL=dom.js.map
package/dist/dom.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/dom/document.ts"],"names":[],"mappings":";;;;AAyBO,SAAS,mBAAmB,UAAA,EAA6C;AAC9E,EAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AAErC,EAAA,kBAAA,CAAmB,QAAA,CAAS,MAAM,iBAAA,CAAkB,CAAC,WAAW,IAAA,IAAQ,EAAE,CAAC,CAAC,CAAA;AAC5E,EAAA,kBAAA,CAAmB,QAAA,CAAS,iBAAiB,iBAAA,CAAkB,CAAC,WAAW,IAAA,IAAQ,EAAE,CAAC,CAAC,CAAA;AACzF;AAKO,SAAS,qBAAA,GAA8B;AAC5C,EAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AAErC,EAAA,kBAAA,CAAmB,QAAA,CAAS,IAAA,EAAM,EAAE,CAAA;AACpC,EAAA,kBAAA,CAAmB,QAAA,CAAS,eAAA,EAAiB,EAAE,CAAA;AACjD","file":"dom.js","sourcesContent":["import {\n mergeElementAttrs,\n syncAttrsToElement,\n type DocumentElementDescriptor,\n} from '../utils/document-class';\n\n/**\n * Apply `<body>` and `<html>` attributes directly to the DOM.\n *\n * Intended for pure CSR apps that do not use `DocumentClassProvider`, or for\n * imperative use in router `onEnter` / `beforeEnter` callbacks.\n * For component-level usage prefer `useDocumentClass`.\n *\n * Previously-applied attributes are tracked via `data-de-managed` so repeat\n * calls cleanly replace only what this function set — external attributes are\n * never touched.\n *\n * @example\n * ```ts\n * domDocumentAdapter({\n * body: { class: 'page-product', 'data-page': 'product' },\n * html: { lang: 'ar', dir: 'rtl', class: 'rtl' },\n * });\n * ```\n */\nexport function domDocumentAdapter(descriptor: DocumentElementDescriptor): void {\n if (typeof document === 'undefined') return;\n\n syncAttrsToElement(document.body, mergeElementAttrs([descriptor.body ?? {}]));\n syncAttrsToElement(document.documentElement, mergeElementAttrs([descriptor.html ?? {}]));\n}\n\n/**\n * Remove all attributes previously applied by `domDocumentAdapter`.\n */\nexport function clearDomDocumentAttrs(): void {\n if (typeof document === 'undefined') return;\n\n syncAttrsToElement(document.body, {});\n syncAttrsToElement(document.documentElement, {});\n}\n"]}
1
+ {"version":3,"sources":["../src/dom/document.ts","../src/dom/edge.ts"],"names":[],"mappings":";;;;AAyBO,SAAS,mBAAmB,UAAA,EAA6C;AAC9E,EAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AAErC,EAAA,kBAAA,CAAmB,QAAA,CAAS,MAAM,iBAAA,CAAkB,CAAC,WAAW,IAAA,IAAQ,EAAE,CAAC,CAAC,CAAA;AAC5E,EAAA,kBAAA,CAAmB,QAAA,CAAS,iBAAiB,iBAAA,CAAkB,CAAC,WAAW,IAAA,IAAQ,EAAE,CAAC,CAAC,CAAA;AACzF;AAKO,SAAS,qBAAA,GAA8B;AAC5C,EAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AAErC,EAAA,kBAAA,CAAmB,QAAA,CAAS,IAAA,EAAM,EAAE,CAAA;AACpC,EAAA,kBAAA,CAAmB,QAAA,CAAS,eAAA,EAAiB,EAAE,CAAA;AACjD;;;ACvCA,IAAM,aAAA,GAAgB,iCAAA;AAGf,SAAS,oBAAA,GAA6B;AAC3C,EAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AACrC,EAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,CAAA,CAAE,OAAA,CAAQ,CAAC,IAAA,KAAS,IAAA,CAAK,QAAQ,CAAA;AAC1E","file":"dom.js","sourcesContent":["import {\n mergeElementAttrs,\n syncAttrsToElement,\n type DocumentElementDescriptor,\n} from '../utils/document-class';\n\n/**\n * Apply `<body>` and `<html>` attributes directly to the DOM.\n *\n * Intended for pure CSR apps that do not use `DocumentClassProvider`, or for\n * imperative use in router `onEnter` / `beforeEnter` callbacks.\n * For component-level usage prefer `useDocumentClass`.\n *\n * Previously-applied attributes are tracked via `data-de-managed` so repeat\n * calls cleanly replace only what this function set — external attributes are\n * never touched.\n *\n * @example\n * ```ts\n * domDocumentAdapter({\n * body: { class: 'page-product', 'data-page': 'product' },\n * html: { lang: 'ar', dir: 'rtl', class: 'rtl' },\n * });\n * ```\n */\nexport function domDocumentAdapter(descriptor: DocumentElementDescriptor): void {\n if (typeof document === 'undefined') return;\n\n syncAttrsToElement(document.body, mergeElementAttrs([descriptor.body ?? {}]));\n syncAttrsToElement(document.documentElement, mergeElementAttrs([descriptor.html ?? {}]));\n}\n\n/**\n * Remove all attributes previously applied by `domDocumentAdapter`.\n */\nexport function clearDomDocumentAttrs(): void {\n if (typeof document === 'undefined') return;\n\n syncAttrsToElement(document.body, {});\n syncAttrsToElement(document.documentElement, {});\n}\n","// Tags the edge inserts into a storefront's HTML; each has run by the time the app hydrates.\nconst EDGE_INJECTED = 'head > script[src*=\"/.webmcp/\"]';\n\n/** Removes the tags the edge adds to the HTML, so `hydrateRoot(document)` matches the server render. */\nexport function removeEdgeInjections(): void {\n if (typeof document === 'undefined') return;\n document.querySelectorAll(EDGE_INJECTED).forEach((node) => node.remove());\n}\n"]}
@@ -1,11 +1,11 @@
1
- export { registerDefaultHooks, useBreadcrumbs, useDate, useGtm, useMoney, useNumber, useOpeningHours, usePageConfig, useStore } from '../chunk-55VTMG2H.js';
2
- import '../chunk-UEKIAED3.js';
1
+ export { registerDefaultHooks, useBreadcrumbs, useDate, useGtm, useMoney, useNumber, useOpeningHours, usePageConfig, useStore } from '../chunk-UEQFXSTX.js';
2
+ import '../chunk-3Q22KK7C.js';
3
3
  import '../chunk-JKIRRMBU.js';
4
4
  import '../chunk-2JV6WZ6O.js';
5
5
  import '../chunk-UIOLSYKV.js';
6
6
  import '../chunk-VVZNW5CB.js';
7
7
  import '../chunk-2XGQSJKH.js';
8
- import '../chunk-KBQXQKPZ.js';
8
+ import '../chunk-SSPAMQRV.js';
9
9
  import '../chunk-ZGHRSRDO.js';
10
10
  export { useComments } from '../chunk-GOPUP26T.js';
11
11
  export { useHook } from '../chunk-C5X6CVXC.js';
@@ -31,7 +31,7 @@ import '../chunk-T72DAX7R.js';
31
31
  import '../chunk-RJPPO3ET.js';
32
32
  export { HookSlot, useIsClient } from '../chunk-Q7VWURUR.js';
33
33
  export { HookRegistry, defineHooks, hookRegistry } from '../chunk-GU2KUQVD.js';
34
- import '../chunk-WF7DYPR6.js';
34
+ import '../chunk-SOPZ72BU.js';
35
35
  import '../chunk-AXW67SY7.js';
36
36
  import '../chunk-BYMOPN2S.js';
37
37
  import '../chunk-SKLEJJ6M.js';
@@ -1,11 +1,11 @@
1
- export { useGtm } from '../chunk-55VTMG2H.js';
2
- import '../chunk-UEKIAED3.js';
1
+ export { useGtm } from '../chunk-UEQFXSTX.js';
2
+ import '../chunk-3Q22KK7C.js';
3
3
  import '../chunk-JKIRRMBU.js';
4
4
  import '../chunk-2JV6WZ6O.js';
5
5
  import '../chunk-UIOLSYKV.js';
6
6
  import '../chunk-VVZNW5CB.js';
7
7
  import '../chunk-2XGQSJKH.js';
8
- import '../chunk-KBQXQKPZ.js';
8
+ import '../chunk-SSPAMQRV.js';
9
9
  import '../chunk-ZGHRSRDO.js';
10
10
  import '../chunk-GOPUP26T.js';
11
11
  import '../chunk-C5X6CVXC.js';
@@ -31,7 +31,7 @@ import '../chunk-T72DAX7R.js';
31
31
  import '../chunk-RJPPO3ET.js';
32
32
  import '../chunk-Q7VWURUR.js';
33
33
  import '../chunk-GU2KUQVD.js';
34
- import '../chunk-WF7DYPR6.js';
34
+ import '../chunk-SOPZ72BU.js';
35
35
  import '../chunk-AXW67SY7.js';
36
36
  import '../chunk-BYMOPN2S.js';
37
37
  import '../chunk-SKLEJJ6M.js';
@@ -1,11 +1,11 @@
1
- export { useMoney } from '../chunk-55VTMG2H.js';
2
- import '../chunk-UEKIAED3.js';
1
+ export { useMoney } from '../chunk-UEQFXSTX.js';
2
+ import '../chunk-3Q22KK7C.js';
3
3
  import '../chunk-JKIRRMBU.js';
4
4
  import '../chunk-2JV6WZ6O.js';
5
5
  import '../chunk-UIOLSYKV.js';
6
6
  import '../chunk-VVZNW5CB.js';
7
7
  import '../chunk-2XGQSJKH.js';
8
- import '../chunk-KBQXQKPZ.js';
8
+ import '../chunk-SSPAMQRV.js';
9
9
  import '../chunk-ZGHRSRDO.js';
10
10
  import '../chunk-GOPUP26T.js';
11
11
  import '../chunk-C5X6CVXC.js';
@@ -31,7 +31,7 @@ import '../chunk-T72DAX7R.js';
31
31
  import '../chunk-RJPPO3ET.js';
32
32
  import '../chunk-Q7VWURUR.js';
33
33
  import '../chunk-GU2KUQVD.js';
34
- import '../chunk-WF7DYPR6.js';
34
+ import '../chunk-SOPZ72BU.js';
35
35
  import '../chunk-AXW67SY7.js';
36
36
  import '../chunk-BYMOPN2S.js';
37
37
  import '../chunk-SKLEJJ6M.js';
@@ -1,11 +1,11 @@
1
- export { useStore } from '../chunk-55VTMG2H.js';
2
- import '../chunk-UEKIAED3.js';
1
+ export { useStore } from '../chunk-UEQFXSTX.js';
2
+ import '../chunk-3Q22KK7C.js';
3
3
  import '../chunk-JKIRRMBU.js';
4
4
  import '../chunk-2JV6WZ6O.js';
5
5
  import '../chunk-UIOLSYKV.js';
6
6
  import '../chunk-VVZNW5CB.js';
7
7
  import '../chunk-2XGQSJKH.js';
8
- import '../chunk-KBQXQKPZ.js';
8
+ import '../chunk-SSPAMQRV.js';
9
9
  import '../chunk-ZGHRSRDO.js';
10
10
  import '../chunk-GOPUP26T.js';
11
11
  import '../chunk-C5X6CVXC.js';
@@ -31,7 +31,7 @@ import '../chunk-T72DAX7R.js';
31
31
  import '../chunk-RJPPO3ET.js';
32
32
  import '../chunk-Q7VWURUR.js';
33
33
  import '../chunk-GU2KUQVD.js';
34
- import '../chunk-WF7DYPR6.js';
34
+ import '../chunk-SOPZ72BU.js';
35
35
  import '../chunk-AXW67SY7.js';
36
36
  import '../chunk-BYMOPN2S.js';
37
37
  import '../chunk-SKLEJJ6M.js';
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { registry } from './chunk-342EPVXN.js';
2
2
  export { ComponentRegistry, registry } from './chunk-342EPVXN.js';
3
- export { TwilightProvider } from './chunk-55VTMG2H.js';
4
- import './chunk-UEKIAED3.js';
3
+ export { TwilightProvider } from './chunk-UEQFXSTX.js';
4
+ import './chunk-3Q22KK7C.js';
5
5
  import './chunk-JKIRRMBU.js';
6
6
  import './chunk-2JV6WZ6O.js';
7
7
  import './chunk-UIOLSYKV.js';
8
8
  import './chunk-VVZNW5CB.js';
9
9
  import './chunk-2XGQSJKH.js';
10
- export { useIsBlog, useIsBrands, useIsCart, useIsCustomer, useIsHome, useIsProduct, useIsSearch, useRouteId } from './chunk-KBQXQKPZ.js';
10
+ export { useIsBlog, useIsBrands, useIsCart, useIsCustomer, useIsHome, useIsProduct, useIsSearch, useRouteId } from './chunk-SSPAMQRV.js';
11
11
  export { RouteId } from './chunk-ZGHRSRDO.js';
12
12
  import './chunk-GOPUP26T.js';
13
13
  import './chunk-C5X6CVXC.js';
@@ -33,7 +33,7 @@ import './chunk-T72DAX7R.js';
33
33
  import './chunk-RJPPO3ET.js';
34
34
  import './chunk-Q7VWURUR.js';
35
35
  import './chunk-GU2KUQVD.js';
36
- import './chunk-WF7DYPR6.js';
36
+ import './chunk-SOPZ72BU.js';
37
37
  import './chunk-AXW67SY7.js';
38
38
  import './chunk-BYMOPN2S.js';
39
39
  import './chunk-SKLEJJ6M.js';
@@ -1,5 +1,5 @@
1
1
  import { NextJsLinkAdapter } from './chunk-HTGBIA7K.js';
2
- import { NavigationProvider, defaultNavigate } from './chunk-KBQXQKPZ.js';
2
+ import { NavigationProvider, defaultNavigate } from './chunk-SSPAMQRV.js';
3
3
  import './chunk-ZGHRSRDO.js';
4
4
  import './chunk-SR4OTLTJ.js';
5
5
  import './chunk-N2S25NXP.js';
@@ -14,5 +14,5 @@ function NavigationSetup({ children }) {
14
14
  }
15
15
 
16
16
  export { NavigationSetup };
17
- //# sourceMappingURL=navigation-DU3BF72V.js.map
18
- //# sourceMappingURL=navigation-DU3BF72V.js.map
17
+ //# sourceMappingURL=navigation-CJHPA74M.js.map
18
+ //# sourceMappingURL=navigation-CJHPA74M.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/nextjs/navigation.tsx"],"names":[],"mappings":";;;;;;;;;;;AASO,SAAS,eAAA,CAAgB,EAAE,QAAA,EAAS,EAA4B;AACrE,EAAA,uBACE,GAAA,CAAC,sBAAmB,QAAA,EAAU,eAAA,EAC5B,8BAAC,YAAA,EAAA,EAAa,OAAA,EAAS,iBAAA,EAAoB,QAAA,EAAS,CAAA,EACtD,CAAA;AAEJ","file":"navigation-DU3BF72V.js","sourcesContent":["import { NavigationProvider, defaultNavigate } from '../providers/NavigationProvider';\nimport { LinkProvider } from '../providers/LinkProvider';\nimport { NextJsLinkAdapter } from './link';\nimport type { ReactNode } from 'react';\n\n/**\n * Next.js navigation setup - wraps children with NavigationProvider and LinkProvider.\n * Called by TwilightProvider when client.framework === 'nextjs'.\n */\nexport function NavigationSetup({ children }: { children: ReactNode }) {\n return (\n <NavigationProvider navigate={defaultNavigate}>\n <LinkProvider adapter={NextJsLinkAdapter}>{children}</LinkProvider>\n </NavigationProvider>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/nextjs/navigation.tsx"],"names":[],"mappings":";;;;;;;;;;;AASO,SAAS,eAAA,CAAgB,EAAE,QAAA,EAAS,EAA4B;AACrE,EAAA,uBACE,GAAA,CAAC,sBAAmB,QAAA,EAAU,eAAA,EAC5B,8BAAC,YAAA,EAAA,EAAa,OAAA,EAAS,iBAAA,EAAoB,QAAA,EAAS,CAAA,EACtD,CAAA;AAEJ","file":"navigation-CJHPA74M.js","sourcesContent":["import { NavigationProvider, defaultNavigate } from '../providers/NavigationProvider';\nimport { LinkProvider } from '../providers/LinkProvider';\nimport { NextJsLinkAdapter } from './link';\nimport type { ReactNode } from 'react';\n\n/**\n * Next.js navigation setup - wraps children with NavigationProvider and LinkProvider.\n * Called by TwilightProvider when client.framework === 'nextjs'.\n */\nexport function NavigationSetup({ children }: { children: ReactNode }) {\n return (\n <NavigationProvider navigate={defaultNavigate}>\n <LinkProvider adapter={NextJsLinkAdapter}>{children}</LinkProvider>\n </NavigationProvider>\n );\n}\n"]}
@@ -1,5 +1,5 @@
1
- export { NavigationSetup, TanStackNavigationProvider } from './chunk-OJPJP7ML.js';
2
- import './chunk-KBQXQKPZ.js';
1
+ export { NavigationSetup, TanStackNavigationProvider } from './chunk-GNH3W6T4.js';
2
+ import './chunk-SSPAMQRV.js';
3
3
  import './chunk-ZGHRSRDO.js';
4
4
  import './chunk-TYLKNVQA.js';
5
5
  import './chunk-SR4OTLTJ.js';
@@ -8,5 +8,5 @@ import './chunk-T72DAX7R.js';
8
8
  import './chunk-BYMOPN2S.js';
9
9
  import './chunk-DF6FBKDN.js';
10
10
  import './chunk-DGUM43GV.js';
11
- //# sourceMappingURL=navigation-WB75NC6Y.js.map
12
- //# sourceMappingURL=navigation-WB75NC6Y.js.map
11
+ //# sourceMappingURL=navigation-F2TD5X2P.js.map
12
+ //# sourceMappingURL=navigation-F2TD5X2P.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"navigation-WB75NC6Y.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"navigation-F2TD5X2P.js"}
@@ -1,12 +1,12 @@
1
- import { product } from './chunk-QYUYQPXN.js';
2
- import './chunk-55VTMG2H.js';
3
- import './chunk-UEKIAED3.js';
1
+ import { product } from './chunk-HDO37URJ.js';
2
+ import './chunk-UEQFXSTX.js';
3
+ import './chunk-3Q22KK7C.js';
4
4
  import './chunk-JKIRRMBU.js';
5
5
  import './chunk-2JV6WZ6O.js';
6
6
  import './chunk-UIOLSYKV.js';
7
7
  import './chunk-VVZNW5CB.js';
8
8
  import './chunk-2XGQSJKH.js';
9
- import { useLocation, useNavigate } from './chunk-KBQXQKPZ.js';
9
+ import { useLocation, useNavigate } from './chunk-SSPAMQRV.js';
10
10
  import './chunk-ZGHRSRDO.js';
11
11
  import './chunk-GOPUP26T.js';
12
12
  import './chunk-C5X6CVXC.js';
@@ -32,7 +32,7 @@ import { isLocale } from './chunk-T72DAX7R.js';
32
32
  import './chunk-RJPPO3ET.js';
33
33
  import { HookSlot } from './chunk-Q7VWURUR.js';
34
34
  import './chunk-GU2KUQVD.js';
35
- import { LazyErrorPage } from './chunk-WF7DYPR6.js';
35
+ import { LazyErrorPage } from './chunk-SOPZ72BU.js';
36
36
  import './chunk-AXW67SY7.js';
37
37
  import './chunk-BYMOPN2S.js';
38
38
  import './chunk-SKLEJJ6M.js';
@@ -118,5 +118,5 @@ function NotFoundPage(props = {}) {
118
118
  }
119
119
 
120
120
  export { NotFoundPage };
121
- //# sourceMappingURL=not-found-MA54AXJB.js.map
122
- //# sourceMappingURL=not-found-MA54AXJB.js.map
121
+ //# sourceMappingURL=not-found-T2WYF64G.js.map
122
+ //# sourceMappingURL=not-found-T2WYF64G.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/routes/product-short-link.ts","../src/routes/not-found.tsx"],"names":[],"mappings":"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","file":"not-found-MA54AXJB.js","sourcesContent":["import { useEffect, useState } from 'react';\nimport { product } from '../api/product';\nimport { isLocale } from '../providers/locale-constants';\nimport { useLocation, useNavigate } from '../providers/NavigationProvider';\n\n/** Short codes are 5-10 letters/digits (e.g. `lvXvzln`). */\nconst SHORT_CODE = /^[A-Za-z0-9]{5,10}$/;\n\n/**\n * The product short code in a path shaped `/{locale}/{code}` or `/{code}` (the\n * store base is already stripped from the router's location), plus the locale\n * segment to keep when redirecting. `null` for any other path.\n */\nexport function parseShortLinkPath(pathname: string): { code: string; locale?: string } | null {\n const segments = pathname.split('/').filter(Boolean);\n if (segments.length === 2 && isLocale(segments[0]) && SHORT_CODE.test(segments[1])) {\n return { code: segments[1], locale: segments[0] };\n }\n if (segments.length === 1 && !isLocale(segments[0]) && SHORT_CODE.test(segments[0])) {\n return { code: segments[0] };\n }\n return null;\n}\n\n/** The SEO slug from a product URL (`…/{slug}/p{id}`), `-` when it has none. */\nexport function slugFromProductUrl(url: string | undefined): string {\n try {\n const segments = new URL(url ?? '').pathname.split('/').filter(Boolean);\n const last = segments[segments.length - 1] ?? '';\n return /^p\\d+$/.test(last) && segments.length > 1 ? segments[segments.length - 2] : '-';\n } catch {\n return '-';\n }\n}\n\n/**\n * Resolves a product short link (`/ar/lvXvzln`) that matched no route: the\n * products API accepts the code as an id, so look it up and replace the URL with\n * the product's canonical page. Returns `true` while a lookup is in flight (so the\n * 404 isn't flashed); settles to `false` when the path isn't a short link or the\n * code doesn't resolve.\n */\nexport function useProductShortLink(): boolean {\n const { pathname } = useLocation();\n const navigate = useNavigate();\n const target = parseShortLinkPath(pathname);\n const code = target?.code;\n const locale = target?.locale;\n const [failedCode, setFailedCode] = useState<string | null>(null);\n\n useEffect(() => {\n if (!code) return;\n let cancelled = false;\n product\n .find(code)\n .then((found) => {\n if (cancelled) return;\n if (!found?.id) return setFailedCode(code);\n const prefix = locale ? `/${locale}` : '';\n navigate(`${prefix}/${slugFromProductUrl(found.url)}/p${found.id}`, { replace: true });\n })\n .catch(() => !cancelled && setFailedCode(code));\n return () => {\n cancelled = true;\n };\n }, [code, locale, navigate]);\n\n return !!code && failedCode !== code;\n}\n","import type { ComponentType, ReactNode } from 'react';\nimport { HookSlot } from '../hooks';\nimport { useTranslation } from '../providers/I18nProvider';\nimport { ErrorPage } from '../components/common';\nimport { useProductShortLink } from './product-short-link';\n\nexport interface NotFoundPageProps {\n title?: string;\n message?: string;\n showHomeLink?: boolean;\n homeLinkText?: string;\n LinkComponent?: ComponentType<{\n to: string;\n className?: string;\n style?: React.CSSProperties;\n children: ReactNode;\n }>;\n}\n\nexport function NotFoundPage(props: NotFoundPageProps = {}) {\n const { t } = useTranslation();\n // A product short link (`/ar/lvXvzln`) matches no route; resolve it instead of 404ing.\n const resolvingShortLink = useProductShortLink();\n\n const {\n title = t('common.errors.404') || 'Page Not Found',\n message = t('common.errors.error_occurred') ||\n 'The page you are looking for does not exist or has been moved.',\n showHomeLink = true,\n homeLinkText = t('common.elements.back_home') || 'Back to Home',\n LinkComponent,\n } = props;\n\n if (resolvingShortLink) return null;\n\n return (\n <ErrorPage\n code={404}\n title={title}\n message={message}\n showAction={showHomeLink}\n actionText={homeLinkText}\n LinkComponent={LinkComponent}\n >\n <HookSlot name=\"notfound:start\" />\n <HookSlot name=\"notfound:content\" />\n <HookSlot name=\"notfound:end\" />\n </ErrorPage>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/routes/product-short-link.ts","../src/routes/not-found.tsx"],"names":[],"mappings":"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","file":"not-found-T2WYF64G.js","sourcesContent":["import { useEffect, useState } from 'react';\nimport { product } from '../api/product';\nimport { isLocale } from '../providers/locale-constants';\nimport { useLocation, useNavigate } from '../providers/NavigationProvider';\n\n/** Short codes are 5-10 letters/digits (e.g. `lvXvzln`). */\nconst SHORT_CODE = /^[A-Za-z0-9]{5,10}$/;\n\n/**\n * The product short code in a path shaped `/{locale}/{code}` or `/{code}` (the\n * store base is already stripped from the router's location), plus the locale\n * segment to keep when redirecting. `null` for any other path.\n */\nexport function parseShortLinkPath(pathname: string): { code: string; locale?: string } | null {\n const segments = pathname.split('/').filter(Boolean);\n if (segments.length === 2 && isLocale(segments[0]) && SHORT_CODE.test(segments[1])) {\n return { code: segments[1], locale: segments[0] };\n }\n if (segments.length === 1 && !isLocale(segments[0]) && SHORT_CODE.test(segments[0])) {\n return { code: segments[0] };\n }\n return null;\n}\n\n/** The SEO slug from a product URL (`…/{slug}/p{id}`), `-` when it has none. */\nexport function slugFromProductUrl(url: string | undefined): string {\n try {\n const segments = new URL(url ?? '').pathname.split('/').filter(Boolean);\n const last = segments[segments.length - 1] ?? '';\n return /^p\\d+$/.test(last) && segments.length > 1 ? segments[segments.length - 2] : '-';\n } catch {\n return '-';\n }\n}\n\n/**\n * Resolves a product short link (`/ar/lvXvzln`) that matched no route: the\n * products API accepts the code as an id, so look it up and replace the URL with\n * the product's canonical page. Returns `true` while a lookup is in flight (so the\n * 404 isn't flashed); settles to `false` when the path isn't a short link or the\n * code doesn't resolve.\n */\nexport function useProductShortLink(): boolean {\n const { pathname } = useLocation();\n const navigate = useNavigate();\n const target = parseShortLinkPath(pathname);\n const code = target?.code;\n const locale = target?.locale;\n const [failedCode, setFailedCode] = useState<string | null>(null);\n\n useEffect(() => {\n if (!code) return;\n let cancelled = false;\n product\n .find(code)\n .then((found) => {\n if (cancelled) return;\n if (!found?.id) return setFailedCode(code);\n const prefix = locale ? `/${locale}` : '';\n navigate(`${prefix}/${slugFromProductUrl(found.url)}/p${found.id}`, { replace: true });\n })\n .catch(() => !cancelled && setFailedCode(code));\n return () => {\n cancelled = true;\n };\n }, [code, locale, navigate]);\n\n return !!code && failedCode !== code;\n}\n","import type { ComponentType, ReactNode } from 'react';\nimport { HookSlot } from '../hooks';\nimport { useTranslation } from '../providers/I18nProvider';\nimport { ErrorPage } from '../components/common';\nimport { useProductShortLink } from './product-short-link';\n\nexport interface NotFoundPageProps {\n title?: string;\n message?: string;\n showHomeLink?: boolean;\n homeLinkText?: string;\n LinkComponent?: ComponentType<{\n to: string;\n className?: string;\n style?: React.CSSProperties;\n children: ReactNode;\n }>;\n}\n\nexport function NotFoundPage(props: NotFoundPageProps = {}) {\n const { t } = useTranslation();\n // A product short link (`/ar/lvXvzln`) matches no route; resolve it instead of 404ing.\n const resolvingShortLink = useProductShortLink();\n\n const {\n title = t('common.errors.404') || 'Page Not Found',\n message = t('common.errors.error_occurred') ||\n 'The page you are looking for does not exist or has been moved.',\n showHomeLink = true,\n homeLinkText = t('common.elements.back_home') || 'Back to Home',\n LinkComponent,\n } = props;\n\n if (resolvingShortLink) return null;\n\n return (\n <ErrorPage\n code={404}\n title={title}\n message={message}\n showAction={showHomeLink}\n actionText={homeLinkText}\n LinkComponent={LinkComponent}\n >\n <HookSlot name=\"notfound:start\" />\n <HookSlot name=\"notfound:content\" />\n <HookSlot name=\"notfound:end\" />\n </ErrorPage>\n );\n}\n"]}