@salla.sa/twilight-theme-engine 1.0.71 → 1.0.73
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.
- package/dist/{AddToCartForm-XA5X2C5K.js → AddToCartForm-G2HK5QB3.js} +5 -5
- package/dist/AddToCartForm-G2HK5QB3.js.map +1 -0
- package/dist/{BlogAuthorPage-YWR52G5S.js → BlogAuthorPage-BU2LVISS.js} +22 -22
- package/dist/BlogAuthorPage-BU2LVISS.js.map +1 -0
- package/dist/{BlogCategoryPage-N644DZTN.js → BlogCategoryPage-UR4MPDLE.js} +20 -20
- package/dist/{BlogCategoryPage-N644DZTN.js.map → BlogCategoryPage-UR4MPDLE.js.map} +1 -1
- package/dist/{BlogPage-5Z4X3Y2H.js → BlogPage-E2XZGFOP.js} +18 -18
- package/dist/{BlogPage-5Z4X3Y2H.js.map → BlogPage-E2XZGFOP.js.map} +1 -1
- package/dist/{BlogSinglePage-NSNVBBUS.js → BlogSinglePage-ZK2K6WEU.js} +18 -18
- package/dist/{BlogSinglePage-NSNVBBUS.js.map → BlogSinglePage-ZK2K6WEU.js.map} +1 -1
- package/dist/{BlogTagPage-GRYZRHDL.js → BlogTagPage-5N4VTPDN.js} +20 -20
- package/dist/{BlogTagPage-GRYZRHDL.js.map → BlogTagPage-5N4VTPDN.js.map} +1 -1
- package/dist/{BrandsPage-3Q4ZYOT7.js → BrandsPage-XE7RYGXA.js} +19 -19
- package/dist/{BrandsPage-3Q4ZYOT7.js.map → BrandsPage-XE7RYGXA.js.map} +1 -1
- package/dist/{Breadcrumb-WNSVFI75.js → Breadcrumb-NX6BUSOA.js} +18 -18
- package/dist/{Breadcrumb-WNSVFI75.js.map → Breadcrumb-NX6BUSOA.js.map} +1 -1
- package/dist/{CartItem-A66ZG64I.js → CartItem-SO34G6GZ.js} +18 -18
- package/dist/{CartItem-A66ZG64I.js.map → CartItem-SO34G6GZ.js.map} +1 -1
- package/dist/{CartSummary-BQC2IGQD.js → CartSummary-SDTY2CR2.js} +18 -18
- package/dist/{CartSummary-BQC2IGQD.js.map → CartSummary-SDTY2CR2.js.map} +1 -1
- package/dist/{Copyright-UNROFFOC.js → Copyright-C426OB5D.js} +4 -4
- package/dist/{Copyright-UNROFFOC.js.map → Copyright-C426OB5D.js.map} +1 -1
- package/dist/{CustomerLayout-TKS5QZMJ.js → CustomerLayout-UXX5KJWR.js} +18 -18
- package/dist/{CustomerLayout-TKS5QZMJ.js.map → CustomerLayout-UXX5KJWR.js.map} +1 -1
- package/dist/{Footer-2WD77PFB.js → Footer-M5QEXJ4Z.js} +18 -18
- package/dist/{Footer-2WD77PFB.js.map → Footer-M5QEXJ4Z.js.map} +1 -1
- package/dist/{Header-3BANLNYK.js → Header-CUJ4SYDF.js} +7 -7
- package/dist/{Header-3BANLNYK.js.map → Header-CUJ4SYDF.js.map} +1 -1
- package/dist/{ImageModal-LHFSYPSU.js → ImageModal-4FNL5UC5.js} +3 -3
- package/dist/{ImageModal-LHFSYPSU.js.map → ImageModal-4FNL5UC5.js.map} +1 -1
- package/dist/{LoyaltyPage-OAGJLFD2.js → LoyaltyPage-UMQ2ZWA6.js} +18 -18
- package/dist/{LoyaltyPage-OAGJLFD2.js.map → LoyaltyPage-UMQ2ZWA6.js.map} +1 -1
- package/dist/{LoyaltyPointsPage-G5FB2QTQ.js → LoyaltyPointsPage-5YHEQSLT.js} +6 -6
- package/dist/{LoyaltyPointsPage-G5FB2QTQ.js.map → LoyaltyPointsPage-5YHEQSLT.js.map} +1 -1
- package/dist/{MainMenu-FFLJR2EK.js → MainMenu-OFQDXUGW.js} +6 -6
- package/dist/{MainMenu-FFLJR2EK.js.map → MainMenu-OFQDXUGW.js.map} +1 -1
- package/dist/{MasterLayout-H54QAUUY.js → MasterLayout-TSHKSJ7U.js} +18 -18
- package/dist/{MasterLayout-H54QAUUY.js.map → MasterLayout-TSHKSJ7U.js.map} +1 -1
- package/dist/{MobileMenu-OVAY7EFJ.js → MobileMenu-7EKUQ4MU.js} +19 -19
- package/dist/{MobileMenu-OVAY7EFJ.js.map → MobileMenu-7EKUQ4MU.js.map} +1 -1
- package/dist/{NotificationsPage-SEAEJEE7.js → NotificationsPage-TBDOI7YB.js} +18 -18
- package/dist/{NotificationsPage-SEAEJEE7.js.map → NotificationsPage-TBDOI7YB.js.map} +1 -1
- package/dist/{OrderSinglePage-L7OCFF7N.js → OrderSinglePage-7A37FKJE.js} +19 -19
- package/dist/{OrderSinglePage-L7OCFF7N.js.map → OrderSinglePage-7A37FKJE.js.map} +1 -1
- package/dist/{OrdersPage-IOEC2JR2.js → OrdersPage-NJ3JH6SG.js} +18 -18
- package/dist/{OrdersPage-IOEC2JR2.js.map → OrdersPage-NJ3JH6SG.js.map} +1 -1
- package/dist/{PageSingle-YYUIJVFP.js → PageSingle-UKA2U3E5.js} +4 -4
- package/dist/{PageSingle-YYUIJVFP.js.map → PageSingle-UKA2U3E5.js.map} +1 -1
- package/dist/{ProductDetails-KSB3OC25.js → ProductDetails-XDNE62ZZ.js} +8 -9
- package/dist/ProductDetails-XDNE62ZZ.js.map +1 -0
- package/dist/{ProfilePage-SVQRTF55.js → ProfilePage-WPJYGKYR.js} +18 -18
- package/dist/{ProfilePage-SVQRTF55.js.map → ProfilePage-WPJYGKYR.js.map} +1 -1
- package/dist/{SeoCartWidget-G4Y4NRMH.js → SeoCartWidget-G7NAANUN.js} +18 -18
- package/dist/{SeoCartWidget-G4Y4NRMH.js.map → SeoCartWidget-G7NAANUN.js.map} +1 -1
- package/dist/{SettingsPage-ZVBMBGZL.js → SettingsPage-X7GPCBJL.js} +18 -18
- package/dist/{SettingsPage-ZVBMBGZL.js.map → SettingsPage-X7GPCBJL.js.map} +1 -1
- package/dist/{StoreClosedNotification-PRXVWUV7.js → StoreClosedNotification-NKRYCLKX.js} +19 -19
- package/dist/{StoreClosedNotification-PRXVWUV7.js.map → StoreClosedNotification-NKRYCLKX.js.map} +1 -1
- package/dist/{TestimonialsPage-QENPQ2JK.js → TestimonialsPage-JTUWHKPU.js} +4 -4
- package/dist/{TestimonialsPage-QENPQ2JK.js.map → TestimonialsPage-JTUWHKPU.js.map} +1 -1
- package/dist/{ThankYouPage-GB6M5I4Z.js → ThankYouPage-MCMBGHO2.js} +18 -18
- package/dist/{ThankYouPage-GB6M5I4Z.js.map → ThankYouPage-MCMBGHO2.js.map} +1 -1
- package/dist/{WalletPage-IG5B33XQ.js → WalletPage-JJI6WPNT.js} +19 -19
- package/dist/{WalletPage-IG5B33XQ.js.map → WalletPage-JJI6WPNT.js.map} +1 -1
- package/dist/WidgetHead-BCRIXIJQ.js +7 -0
- package/dist/{WidgetHead-RWL7D3CT.js.map → WidgetHead-BCRIXIJQ.js.map} +1 -1
- package/dist/{WishlistPage-SYNLUIGO.js → WishlistPage-HAOYS7NV.js} +20 -20
- package/dist/{WishlistPage-SYNLUIGO.js.map → WishlistPage-HAOYS7NV.js.map} +1 -1
- package/dist/api/apps.js +2 -2
- package/dist/api/blog.js +12 -0
- package/dist/api/blog.js.map +1 -0
- package/dist/api/brands.js +2 -2
- package/dist/api/cart.js +2 -2
- package/dist/api/category.js +2 -2
- package/dist/api/client.d.ts +0 -6
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +1 -1
- package/dist/api/home.js +2 -2
- package/dist/api/loyalty.js +2 -2
- package/dist/api/menu.js +2 -2
- package/dist/api/notification.js +2 -2
- package/dist/api/order.js +2 -2
- package/dist/api/page.js +2 -2
- package/dist/api/product.js +2 -2
- package/dist/api/profile.js +1 -1
- package/dist/api/store.js +2 -2
- package/dist/api/translations.js +2 -2
- package/dist/api/types.d.ts +5 -0
- package/dist/api/types.d.ts.map +1 -1
- package/dist/api/user.js +2 -2
- package/dist/api/wallet.js +9 -0
- package/dist/api/wallet.js.map +1 -0
- package/dist/api/wishlist.js +3 -3
- package/dist/{chunk-7PYHB3PP.js → chunk-25FWAL3O.js} +3 -3
- package/dist/{chunk-7PYHB3PP.js.map → chunk-25FWAL3O.js.map} +1 -1
- package/dist/{chunk-USN5NHJ5.js → chunk-2ALN2BPM.js} +3 -3
- package/dist/{chunk-USN5NHJ5.js.map → chunk-2ALN2BPM.js.map} +1 -1
- package/dist/{chunk-5HOD4BKK.js → chunk-3CYIB6BL.js} +3 -3
- package/dist/{chunk-5HOD4BKK.js.map → chunk-3CYIB6BL.js.map} +1 -1
- package/dist/{chunk-VYJDRAWX.js → chunk-3EE62REP.js} +3 -3
- package/dist/{chunk-VYJDRAWX.js.map → chunk-3EE62REP.js.map} +1 -1
- package/dist/{chunk-IXG6BF2M.js → chunk-3YAR2SXQ.js} +7 -7
- package/dist/{chunk-IXG6BF2M.js.map → chunk-3YAR2SXQ.js.map} +1 -1
- package/dist/chunk-4LVBS3VI.js +14 -0
- package/dist/{chunk-IHZVVSPW.js.map → chunk-4LVBS3VI.js.map} +1 -1
- package/dist/{chunk-P6EOXGUE.js → chunk-52ETYODY.js} +4 -4
- package/dist/{chunk-P6EOXGUE.js.map → chunk-52ETYODY.js.map} +1 -1
- package/dist/{chunk-GVJHDJW7.js → chunk-54XX3YPP.js} +10 -10
- package/dist/chunk-54XX3YPP.js.map +1 -0
- package/dist/{chunk-N3BSUMD7.js → chunk-5AFTFN72.js} +3 -3
- package/dist/{chunk-N3BSUMD7.js.map → chunk-5AFTFN72.js.map} +1 -1
- package/dist/{chunk-GTG22RZG.js → chunk-5DPR7GWH.js} +3 -3
- package/dist/{chunk-GTG22RZG.js.map → chunk-5DPR7GWH.js.map} +1 -1
- package/dist/{chunk-Q7VWURUR.js → chunk-5XDPAKF5.js} +3 -3
- package/dist/{chunk-Q7VWURUR.js.map → chunk-5XDPAKF5.js.map} +1 -1
- package/dist/chunk-7V5HOZW4.js +10 -0
- package/dist/{chunk-CUG6VOLM.js.map → chunk-7V5HOZW4.js.map} +1 -1
- package/dist/{chunk-7W7SLN5M.js → chunk-B5FDWE4U.js} +3 -3
- package/dist/{chunk-7W7SLN5M.js.map → chunk-B5FDWE4U.js.map} +1 -1
- package/dist/{chunk-BQURS54V.js → chunk-CMD3ARR2.js} +13 -13
- package/dist/{chunk-BQURS54V.js.map → chunk-CMD3ARR2.js.map} +1 -1
- package/dist/{chunk-VX2T7JCB.js → chunk-EXBH6RGD.js} +5 -5
- package/dist/chunk-EXBH6RGD.js.map +1 -0
- package/dist/{chunk-GU2KUQVD.js → chunk-GCPEMNSU.js} +14 -3
- package/dist/chunk-GCPEMNSU.js.map +1 -0
- package/dist/{chunk-6F5QZKIY.js → chunk-HFISEQPK.js} +8 -13
- package/dist/chunk-HFISEQPK.js.map +1 -0
- package/dist/{chunk-C5X6CVXC.js → chunk-HI5V5X3S.js} +4 -7
- package/dist/chunk-HI5V5X3S.js.map +1 -0
- package/dist/{chunk-5O6PTKI5.js → chunk-IXUY5RMV.js} +6 -4
- package/dist/chunk-IXUY5RMV.js.map +1 -0
- package/dist/{chunk-DY5WGKDX.js → chunk-JZ7BOB4G.js} +3 -3
- package/dist/{chunk-DY5WGKDX.js.map → chunk-JZ7BOB4G.js.map} +1 -1
- package/dist/{chunk-R2BAI6QI.js → chunk-KOMV5SEF.js} +5 -5
- package/dist/{chunk-R2BAI6QI.js.map → chunk-KOMV5SEF.js.map} +1 -1
- package/dist/{chunk-ILMX45PO.js → chunk-L2QUP6J3.js} +6 -6
- package/dist/{chunk-ILMX45PO.js.map → chunk-L2QUP6J3.js.map} +1 -1
- package/dist/chunk-L3X2H2RP.js +21 -0
- package/dist/{chunk-DZDSTTHW.js.map → chunk-L3X2H2RP.js.map} +1 -1
- package/dist/{chunk-FGROIU3Y.js → chunk-L5K7VBOH.js} +3 -3
- package/dist/{chunk-FGROIU3Y.js.map → chunk-L5K7VBOH.js.map} +1 -1
- package/dist/chunk-MVT5AF2A.js +94 -0
- package/dist/chunk-MVT5AF2A.js.map +1 -0
- package/dist/{chunk-A32NANNC.js → chunk-OYP5CGHU.js} +3 -3
- package/dist/{chunk-A32NANNC.js.map → chunk-OYP5CGHU.js.map} +1 -1
- package/dist/{chunk-NFE2H5JE.js → chunk-RO6KBURF.js} +3 -3
- package/dist/{chunk-NFE2H5JE.js.map → chunk-RO6KBURF.js.map} +1 -1
- package/dist/{chunk-GBWCXUPD.js → chunk-RSVAPXXI.js} +39 -16
- package/dist/chunk-RSVAPXXI.js.map +1 -0
- package/dist/{chunk-2JL4S2LE.js → chunk-U53LIN2F.js} +6 -6
- package/dist/{chunk-2JL4S2LE.js.map → chunk-U53LIN2F.js.map} +1 -1
- package/dist/{chunk-MSUGP566.js → chunk-UAY6LTWB.js} +3 -3
- package/dist/{chunk-MSUGP566.js.map → chunk-UAY6LTWB.js.map} +1 -1
- package/dist/{chunk-RJPPO3ET.js → chunk-V2ZDTY6H.js} +3 -3
- package/dist/{chunk-RJPPO3ET.js.map → chunk-V2ZDTY6H.js.map} +1 -1
- package/dist/{chunk-H2DXJCJP.js → chunk-VFYT2VWC.js} +3 -3
- package/dist/{chunk-H2DXJCJP.js.map → chunk-VFYT2VWC.js.map} +1 -1
- package/dist/{chunk-LDMLFJGQ.js → chunk-WLDDKFSZ.js} +4 -4
- package/dist/{chunk-LDMLFJGQ.js.map → chunk-WLDDKFSZ.js.map} +1 -1
- package/dist/{chunk-5H4NIOTY.js → chunk-WSXRUOI2.js} +3 -3
- package/dist/{chunk-5H4NIOTY.js.map → chunk-WSXRUOI2.js.map} +1 -1
- package/dist/{chunk-LGT3T7VF.js → chunk-WYW7USLQ.js} +3 -3
- package/dist/{chunk-LGT3T7VF.js.map → chunk-WYW7USLQ.js.map} +1 -1
- package/dist/{chunk-7BGEGHAI.js → chunk-XVNXXF67.js} +3 -3
- package/dist/{chunk-7BGEGHAI.js.map → chunk-XVNXXF67.js.map} +1 -1
- package/dist/{chunk-HX3YKS5W.js → chunk-YA6ABQB7.js} +16 -10
- package/dist/chunk-YA6ABQB7.js.map +1 -0
- package/dist/{chunk-4YHSQSM6.js → chunk-YKFGUVF7.js} +3 -3
- package/dist/{chunk-4YHSQSM6.js.map → chunk-YKFGUVF7.js.map} +1 -1
- package/dist/{chunk-E7PYHBCX.js → chunk-YLSG4MEK.js} +3 -3
- package/dist/{chunk-E7PYHBCX.js.map → chunk-YLSG4MEK.js.map} +1 -1
- package/dist/components/cart/index.js +1 -1
- package/dist/components/common/Image.d.ts.map +1 -1
- package/dist/components/common/index.js +2 -2
- package/dist/components/drawer/index.js +16 -16
- package/dist/components/home/index.js +20 -20
- package/dist/components/layout/index.js +4 -4
- package/dist/components/modal/Modal.d.ts.map +1 -1
- package/dist/components/modal/index.js +2 -2
- package/dist/components/product/ProductDetails.d.ts.map +1 -1
- package/dist/components/product/index.js +17 -17
- package/dist/components/store/index.js +18 -18
- package/dist/components/toast/index.js +8 -6
- package/dist/components/toast/index.js.map +1 -1
- package/dist/components/toast/useToast.d.ts.map +1 -1
- package/dist/components/tracking/index.js +1 -1
- package/dist/contexts/CartContext.d.ts +14 -6
- package/dist/contexts/CartContext.d.ts.map +1 -1
- package/dist/contexts/index.js.map +1 -1
- package/dist/{document-class-7U45CO5V.js → document-class-DOQDO2DN.js} +8 -8
- package/dist/{document-class-7U45CO5V.js.map → document-class-DOQDO2DN.js.map} +1 -1
- package/dist/hooks/HookRegistry.d.ts +3 -1
- package/dist/hooks/HookRegistry.d.ts.map +1 -1
- package/dist/hooks/HookRegistry.js +1 -1
- package/dist/hooks/HookSlot.js +2 -2
- package/dist/hooks/index.js +16 -16
- package/dist/hooks/useGtm.js +16 -16
- package/dist/hooks/useHook.d.ts.map +1 -1
- package/dist/hooks/useHook.js +2 -2
- package/dist/hooks/useMoney.js +16 -16
- package/dist/hooks/useStore.js +16 -16
- package/dist/hooks/useUser.js +3 -3
- package/dist/hooks/useWishlist.d.ts.map +1 -1
- package/dist/hooks/useWishlist.js +3 -1
- package/dist/index.js +16 -16
- package/dist/{not-found-W7RACNK7.js → not-found-6B6QSJYA.js} +19 -19
- package/dist/{not-found-W7RACNK7.js.map → not-found-6B6QSJYA.js.map} +1 -1
- package/dist/providers/index.js +16 -16
- package/dist/routes/account/orders/index.d.ts.map +1 -1
- package/dist/routes/account/orders.js +3 -3
- package/dist/routes/account.js +12 -12
- package/dist/routes/blog/loader.d.ts.map +1 -1
- package/dist/routes/blog.js +23 -13
- package/dist/routes/blog.js.map +1 -1
- package/dist/routes/brands/types.d.ts +16 -2
- package/dist/routes/brands/types.d.ts.map +1 -1
- package/dist/routes/brands.js +3 -3
- package/dist/routes/cart.js +24 -24
- package/dist/routes/home.js +21 -21
- package/dist/routes/loyalty.js +4 -4
- package/dist/routes/page.js +3 -3
- package/dist/routes/product/ProductPage.d.ts.map +1 -1
- package/dist/routes/product-listing/loader.d.ts.map +1 -1
- package/dist/routes/product-listing.js +24 -23
- package/dist/routes/product-listing.js.map +1 -1
- package/dist/routes/product.js +23 -25
- package/dist/routes/product.js.map +1 -1
- package/dist/routes/testimonials.js +1 -1
- package/dist/routes/thank-you.js +3 -3
- package/dist/skeleton.js +21 -21
- package/dist/tanstack.js +7 -7
- package/dist/types/hooks.d.ts +61 -1
- package/dist/types/hooks.d.ts.map +1 -1
- package/dist/types/hooks.js +1 -1
- package/dist/types/index.d.ts +626 -53
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/vite/adapters/tanstack.adapter.d.ts.map +1 -1
- package/dist/vite/index.js +34 -10
- package/dist/vite/index.js.map +1 -1
- package/package.json +9 -1
- package/dist/AddToCartForm-XA5X2C5K.js.map +0 -1
- package/dist/BlogAuthorPage-YWR52G5S.js.map +0 -1
- package/dist/ProductDetails-KSB3OC25.js.map +0 -1
- package/dist/WidgetHead-RWL7D3CT.js +0 -7
- package/dist/chunk-5O6PTKI5.js.map +0 -1
- package/dist/chunk-6F5QZKIY.js.map +0 -1
- package/dist/chunk-C5X6CVXC.js.map +0 -1
- package/dist/chunk-CUG6VOLM.js +0 -10
- package/dist/chunk-DZDSTTHW.js +0 -21
- package/dist/chunk-GBWCXUPD.js.map +0 -1
- package/dist/chunk-GU2KUQVD.js.map +0 -1
- package/dist/chunk-GVJHDJW7.js.map +0 -1
- package/dist/chunk-HX3YKS5W.js.map +0 -1
- package/dist/chunk-IHZVVSPW.js +0 -14
- package/dist/chunk-TP3LCGE7.js +0 -34
- package/dist/chunk-TP3LCGE7.js.map +0 -1
- package/dist/chunk-VX2T7JCB.js.map +0 -1
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// src/types/hooks.ts
|
|
2
|
+
var HookName = /* @__PURE__ */ ((HookName2) => {
|
|
3
|
+
HookName2["BODY_START"] = "body:start";
|
|
4
|
+
HookName2["BODY_END"] = "body:end";
|
|
5
|
+
HookName2["BODY_INNER"] = "body:inner";
|
|
6
|
+
HookName2["HEAD_START"] = "head:start";
|
|
7
|
+
HookName2["HEAD_END"] = "head:end";
|
|
8
|
+
HookName2["HEAD_INNER"] = "head:inner";
|
|
9
|
+
HookName2["HEADER_START"] = "header:start";
|
|
10
|
+
HookName2["HEADER_END"] = "header:end";
|
|
11
|
+
HookName2["FOOTER_START"] = "footer:start";
|
|
12
|
+
HookName2["FOOTER_END"] = "footer:end";
|
|
13
|
+
HookName2["PRODUCT_DESCRIPTION_START"] = "product:single.description.start";
|
|
14
|
+
HookName2["PRODUCT_DESCRIPTION"] = "product:single.description";
|
|
15
|
+
HookName2["PRODUCT_DESCRIPTION_END"] = "product:single.description.end";
|
|
16
|
+
HookName2["PRODUCT_FORM_START"] = "product:single.form.start";
|
|
17
|
+
HookName2["PRODUCT_FORM_END"] = "product:single.form.end";
|
|
18
|
+
HookName2["CART_ITEMS_START"] = "cart:items.start";
|
|
19
|
+
HookName2["CART_ITEMS_END"] = "cart:items.end";
|
|
20
|
+
HookName2["CART_SUMMARY_START"] = "cart:summary.start";
|
|
21
|
+
HookName2["CART_SUMMARY_END"] = "cart:summary.end";
|
|
22
|
+
HookName2["SEARCH_START"] = "search:start";
|
|
23
|
+
HookName2["SEARCH_ITEMS_START"] = "search:items.start";
|
|
24
|
+
HookName2["SEARCH_ITEMS_END"] = "search:items.end";
|
|
25
|
+
HookName2["SEARCH_END"] = "search:end";
|
|
26
|
+
HookName2["HOMEPAGE_SLIDER"] = "homepage:slider";
|
|
27
|
+
HookName2["HOMEPAGE_BANNERS"] = "homepage:banners";
|
|
28
|
+
HookName2["HOMEPAGE_FEATURED"] = "homepage:featured";
|
|
29
|
+
HookName2["HEAD"] = "head";
|
|
30
|
+
HookName2["COPYRIGHT"] = "copyright";
|
|
31
|
+
HookName2["HOME_START"] = "home:start";
|
|
32
|
+
HookName2["HOME_CONTENT"] = "home:content";
|
|
33
|
+
HookName2["HOME_END"] = "home:end";
|
|
34
|
+
HookName2["NOTFOUND_START"] = "notfound:start";
|
|
35
|
+
HookName2["NOTFOUND_CONTENT"] = "notfound:content";
|
|
36
|
+
HookName2["NOTFOUND_END"] = "notfound:end";
|
|
37
|
+
HookName2["PRODUCT_START"] = "product:start";
|
|
38
|
+
HookName2["PRODUCT_DETAILS_START"] = "product:details.start";
|
|
39
|
+
HookName2["PRODUCT_DETAILS_END"] = "product:details.end";
|
|
40
|
+
HookName2["PRODUCT_RELATED_START"] = "product:related.start";
|
|
41
|
+
HookName2["PRODUCT_RELATED_END"] = "product:related.end";
|
|
42
|
+
HookName2["PRODUCT_END"] = "product:end";
|
|
43
|
+
HookName2["PRODUCT_LIST_START"] = "product:list.start";
|
|
44
|
+
HookName2["PRODUCT_LIST_ITEMS_START"] = "product:list.items.start";
|
|
45
|
+
HookName2["PRODUCT_LIST_ITEMS_END"] = "product:list.items.end";
|
|
46
|
+
HookName2["PRODUCT_LIST_END"] = "product:list.end";
|
|
47
|
+
HookName2["CART_START"] = "cart:start";
|
|
48
|
+
HookName2["CART_END"] = "cart:end";
|
|
49
|
+
HookName2["CART_SUBMIT_START"] = "cart:submit.start";
|
|
50
|
+
HookName2["CART_SUBMIT_END"] = "cart:submit.end";
|
|
51
|
+
HookName2["THANK_YOU_START"] = "thank-you:start";
|
|
52
|
+
HookName2["THANK_YOU_ITEMS_START"] = "thank-you:items.start";
|
|
53
|
+
HookName2["THANK_YOU_ITEMS_END"] = "thank-you:items.end";
|
|
54
|
+
HookName2["THANK_YOU_END"] = "thank-you:end";
|
|
55
|
+
HookName2["BRANDS_INDEX_ITEMS_START"] = "brands:index.items.start";
|
|
56
|
+
HookName2["BRANDS_INDEX_ITEMS_END"] = "brands:index.items.end";
|
|
57
|
+
HookName2["BLOG_START"] = "blog:start";
|
|
58
|
+
HookName2["BLOG_ITEMS_START"] = "blog:items.start";
|
|
59
|
+
HookName2["BLOG_ITEMS_END"] = "blog:items.end";
|
|
60
|
+
HookName2["BLOG_END"] = "blog:end";
|
|
61
|
+
HookName2["BLOG_SINGLE_START"] = "blog:single.start";
|
|
62
|
+
HookName2["BLOG_SINGLE_END"] = "blog:single.end";
|
|
63
|
+
HookName2["BLOG_SINGLE_RELATED_START"] = "blog:single.related.start";
|
|
64
|
+
HookName2["BLOG_SINGLE_RELATED_END"] = "blog:single.related.end";
|
|
65
|
+
HookName2["BLOG_CATEGORY_START"] = "blog:category.start";
|
|
66
|
+
HookName2["BLOG_CATEGORY_END"] = "blog:category.end";
|
|
67
|
+
HookName2["BLOG_TAG_START"] = "blog:tag.start";
|
|
68
|
+
HookName2["BLOG_TAG_END"] = "blog:tag.end";
|
|
69
|
+
HookName2["BLOG_AUTHOR_START"] = "blog:author.start";
|
|
70
|
+
HookName2["BLOG_AUTHOR_END"] = "blog:author.end";
|
|
71
|
+
HookName2["CUSTOMER_PROFILE_START"] = "customer:profile.start";
|
|
72
|
+
HookName2["CUSTOMER_PROFILE_FORM_START"] = "customer:profile.form.start";
|
|
73
|
+
HookName2["CUSTOMER_PROFILE_FORM_END"] = "customer:profile.form.end";
|
|
74
|
+
HookName2["CUSTOMER_PROFILE_END"] = "customer:profile.end";
|
|
75
|
+
HookName2["CUSTOMER_SETTINGS_START"] = "customer:settings.start";
|
|
76
|
+
HookName2["CUSTOMER_SETTINGS_END"] = "customer:settings.end";
|
|
77
|
+
HookName2["CUSTOMER_ORDERS_ITEMS_START"] = "customer:orders.index.items.start";
|
|
78
|
+
HookName2["CUSTOMER_ORDERS_ITEMS_END"] = "customer:orders.index.items.end";
|
|
79
|
+
HookName2["CUSTOMER_ORDER_DETAILS_START"] = "customer:orders.single.details.start";
|
|
80
|
+
HookName2["CUSTOMER_ORDER_DETAILS_END"] = "customer:orders.single.details.end";
|
|
81
|
+
HookName2["CUSTOMER_WALLET_TRANSACTIONS_START"] = "customer:wallet.transactions.start";
|
|
82
|
+
HookName2["CUSTOMER_WALLET_TRANSACTIONS_END"] = "customer:wallet.transactions.end";
|
|
83
|
+
HookName2["CUSTOMER_WISHLIST_ITEMS_START"] = "customer:wishlist.items.start";
|
|
84
|
+
HookName2["CUSTOMER_WISHLIST_ITEMS_END"] = "customer:wishlist.items.end";
|
|
85
|
+
HookName2["CUSTOMER_NOTIFICATIONS_ITEMS_START"] = "customer:notifications.items.start";
|
|
86
|
+
HookName2["CUSTOMER_NOTIFICATIONS_ITEMS_END"] = "customer:notifications.items.end";
|
|
87
|
+
HookName2["LOYALTY_START"] = "loyalty:start";
|
|
88
|
+
HookName2["LOYALTY_END"] = "loyalty:end";
|
|
89
|
+
return HookName2;
|
|
90
|
+
})(HookName || {});
|
|
91
|
+
|
|
92
|
+
export { HookName };
|
|
93
|
+
//# sourceMappingURL=chunk-MVT5AF2A.js.map
|
|
94
|
+
//# sourceMappingURL=chunk-MVT5AF2A.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types/hooks.ts"],"names":["HookName"],"mappings":"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","file":"chunk-MVT5AF2A.js","sourcesContent":["import type { ReactNode } from 'react';\n\n/**\n * Predefined hook names for type-safe hook registration.\n *\n * @example\n * ```tsx\n * import { HookName, hookRegistry } from '@salla.sa/twilight-theme-engine';\n *\n * hookRegistry.register(HookName.BODY_END, () => <MyComponent />);\n * ```\n */\nexport enum HookName {\n // Global - Body\n BODY_START = 'body:start',\n BODY_END = 'body:end',\n BODY_INNER = 'body:inner',\n // Global - Head\n HEAD_START = 'head:start',\n HEAD_END = 'head:end',\n HEAD_INNER = 'head:inner',\n // Header\n HEADER_START = 'header:start',\n HEADER_END = 'header:end',\n // Footer\n FOOTER_START = 'footer:start',\n FOOTER_END = 'footer:end',\n // Product\n PRODUCT_DESCRIPTION_START = 'product:single.description.start',\n PRODUCT_DESCRIPTION = 'product:single.description',\n PRODUCT_DESCRIPTION_END = 'product:single.description.end',\n PRODUCT_FORM_START = 'product:single.form.start',\n PRODUCT_FORM_END = 'product:single.form.end',\n // Cart\n CART_ITEMS_START = 'cart:items.start',\n CART_ITEMS_END = 'cart:items.end',\n CART_SUMMARY_START = 'cart:summary.start',\n CART_SUMMARY_END = 'cart:summary.end',\n // Search\n SEARCH_START = 'search:start',\n SEARCH_ITEMS_START = 'search:items.start',\n SEARCH_ITEMS_END = 'search:items.end',\n SEARCH_END = 'search:end',\n // Homepage\n HOMEPAGE_SLIDER = 'homepage:slider',\n HOMEPAGE_BANNERS = 'homepage:banners',\n HOMEPAGE_FEATURED = 'homepage:featured',\n // Global - Head (bare slot rendered by WidgetHead between head:start and head:end)\n HEAD = 'head',\n // Footer\n COPYRIGHT = 'copyright',\n // Home page\n HOME_START = 'home:start',\n HOME_CONTENT = 'home:content',\n HOME_END = 'home:end',\n // Not found page\n NOTFOUND_START = 'notfound:start',\n NOTFOUND_CONTENT = 'notfound:content',\n NOTFOUND_END = 'notfound:end',\n // Product page\n PRODUCT_START = 'product:start',\n PRODUCT_DETAILS_START = 'product:details.start',\n PRODUCT_DETAILS_END = 'product:details.end',\n PRODUCT_RELATED_START = 'product:related.start',\n PRODUCT_RELATED_END = 'product:related.end',\n PRODUCT_END = 'product:end',\n // Product listing page\n PRODUCT_LIST_START = 'product:list.start',\n PRODUCT_LIST_ITEMS_START = 'product:list.items.start',\n PRODUCT_LIST_ITEMS_END = 'product:list.items.end',\n PRODUCT_LIST_END = 'product:list.end',\n // Cart page\n CART_START = 'cart:start',\n CART_END = 'cart:end',\n CART_SUBMIT_START = 'cart:submit.start',\n CART_SUBMIT_END = 'cart:submit.end',\n // Thank-you page\n THANK_YOU_START = 'thank-you:start',\n THANK_YOU_ITEMS_START = 'thank-you:items.start',\n THANK_YOU_ITEMS_END = 'thank-you:items.end',\n THANK_YOU_END = 'thank-you:end',\n // Brands page\n BRANDS_INDEX_ITEMS_START = 'brands:index.items.start',\n BRANDS_INDEX_ITEMS_END = 'brands:index.items.end',\n // Blog\n BLOG_START = 'blog:start',\n BLOG_ITEMS_START = 'blog:items.start',\n BLOG_ITEMS_END = 'blog:items.end',\n BLOG_END = 'blog:end',\n BLOG_SINGLE_START = 'blog:single.start',\n BLOG_SINGLE_END = 'blog:single.end',\n BLOG_SINGLE_RELATED_START = 'blog:single.related.start',\n BLOG_SINGLE_RELATED_END = 'blog:single.related.end',\n BLOG_CATEGORY_START = 'blog:category.start',\n BLOG_CATEGORY_END = 'blog:category.end',\n BLOG_TAG_START = 'blog:tag.start',\n BLOG_TAG_END = 'blog:tag.end',\n BLOG_AUTHOR_START = 'blog:author.start',\n BLOG_AUTHOR_END = 'blog:author.end',\n // Customer account\n CUSTOMER_PROFILE_START = 'customer:profile.start',\n CUSTOMER_PROFILE_FORM_START = 'customer:profile.form.start',\n CUSTOMER_PROFILE_FORM_END = 'customer:profile.form.end',\n CUSTOMER_PROFILE_END = 'customer:profile.end',\n CUSTOMER_SETTINGS_START = 'customer:settings.start',\n CUSTOMER_SETTINGS_END = 'customer:settings.end',\n CUSTOMER_ORDERS_ITEMS_START = 'customer:orders.index.items.start',\n CUSTOMER_ORDERS_ITEMS_END = 'customer:orders.index.items.end',\n CUSTOMER_ORDER_DETAILS_START = 'customer:orders.single.details.start',\n CUSTOMER_ORDER_DETAILS_END = 'customer:orders.single.details.end',\n CUSTOMER_WALLET_TRANSACTIONS_START = 'customer:wallet.transactions.start',\n CUSTOMER_WALLET_TRANSACTIONS_END = 'customer:wallet.transactions.end',\n CUSTOMER_WISHLIST_ITEMS_START = 'customer:wishlist.items.start',\n CUSTOMER_WISHLIST_ITEMS_END = 'customer:wishlist.items.end',\n CUSTOMER_NOTIFICATIONS_ITEMS_START = 'customer:notifications.items.start',\n CUSTOMER_NOTIFICATIONS_ITEMS_END = 'customer:notifications.items.end',\n LOYALTY_START = 'loyalty:start',\n LOYALTY_END = 'loyalty:end',\n}\n\n/**\n * Hook handler function type.\n */\nexport type HookHandler<T = Record<string, unknown>> = (context: T) => ReactNode;\n\n/**\n * Hook definition with handler and priority.\n */\nexport interface HookDefinition {\n id: number;\n handler: HookHandler;\n priority: number;\n}\n\n/**\n * Hook handlers map for bulk registration.\n */\nexport type HookHandlers = Record<\n string,\n | HookHandler\n | Array<{\n priority?: number;\n handler: HookHandler;\n }>\n>;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { api } from './chunk-
|
|
1
|
+
import { api } from './chunk-EXBH6RGD.js';
|
|
2
2
|
import { queryOptions } from '@tanstack/react-query';
|
|
3
3
|
|
|
4
4
|
var apps = {
|
|
@@ -40,5 +40,5 @@ var apps = {
|
|
|
40
40
|
};
|
|
41
41
|
|
|
42
42
|
export { apps };
|
|
43
|
-
//# sourceMappingURL=chunk-
|
|
44
|
-
//# sourceMappingURL=chunk-
|
|
43
|
+
//# sourceMappingURL=chunk-OYP5CGHU.js.map
|
|
44
|
+
//# sourceMappingURL=chunk-OYP5CGHU.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/api/apps.ts"],"names":[],"mappings":";;;AAmCO,IAAM,IAAA,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKlB,UAAU,YAAmC;AAC3C,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CACpB,GAAA,CAAI,eAAA,EAAiB,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA,CACtC,IAAA,EAA8B;AACjC,IAAA,OAAO,QAAQ,EAAC;AAAA,EAClB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAU,YAAkC;AAC1C,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CACpB,GAAA,CAAI,wBAAA,EAA0B,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA,CAC/C,IAAA,EAAsC;AACzC,IAAA,OAAO,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,IAAQ,EAAC,EAAE;AAAA,EAClC,CAAA;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU,MACR,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,MAAA,EAAQ,UAAU,CAAA;AAAA,MAC7B,OAAA,EAAS,MAAM,IAAA,CAAK,QAAA,EAAS;AAAA;AAAA,MAE7B,SAAA,EAAW,QAAA;AAAA;AAAA;AAAA;AAAA,MAIX,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,IAEH,QAAA,EAAU,MACR,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,MAAA,EAAQ,UAAU,CAAA;AAAA,MAC7B,OAAA,EAAS,MAAM,IAAA,CAAK,QAAA,EAAS;AAAA;AAAA,MAE7B,SAAA,EAAW,QAAA;AAAA,MACX,KAAA,EAAO;AAAA,KACR;AAAA;AAEP","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/api/apps.ts"],"names":[],"mappings":";;;AAmCO,IAAM,IAAA,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKlB,UAAU,YAAmC;AAC3C,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CACpB,GAAA,CAAI,eAAA,EAAiB,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA,CACtC,IAAA,EAA8B;AACjC,IAAA,OAAO,QAAQ,EAAC;AAAA,EAClB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAU,YAAkC;AAC1C,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CACpB,GAAA,CAAI,wBAAA,EAA0B,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA,CAC/C,IAAA,EAAsC;AACzC,IAAA,OAAO,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,IAAQ,EAAC,EAAE;AAAA,EAClC,CAAA;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU,MACR,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,MAAA,EAAQ,UAAU,CAAA;AAAA,MAC7B,OAAA,EAAS,MAAM,IAAA,CAAK,QAAA,EAAS;AAAA;AAAA,MAE7B,SAAA,EAAW,QAAA;AAAA;AAAA;AAAA;AAAA,MAIX,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,IAEH,QAAA,EAAU,MACR,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,MAAA,EAAQ,UAAU,CAAA;AAAA,MAC7B,OAAA,EAAS,MAAM,IAAA,CAAK,QAAA,EAAS;AAAA;AAAA,MAE7B,SAAA,EAAW,QAAA;AAAA,MACX,KAAA,EAAO;AAAA,KACR;AAAA;AAEP","file":"chunk-OYP5CGHU.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { api } from './client';\n\nexport interface AppSnippetRow {\n place: string;\n content: string;\n url?: string | null;\n /**\n * Raw snippet id, emitted as `data-snippet-id`. Present only on CDN rows — the\n * inline branch of the backend's snippet parser omits the key entirely.\n */\n id?: number;\n /** `{{customer.x}}` placeholders in `content` to substitute from SDK config `user.*` keys. */\n customer_parameters?: string[];\n}\n\nexport interface AppSnippet {\n service: string;\n app_id: string;\n /** Encoded app id (`getRouteKey()`): the scope id its snippets bind to via `data-scope-id`,\n * and its settings-bucket key. Absent on payloads predating the settings API. */\n id?: string;\n app_slug: string;\n status: string;\n snippets: AppSnippetRow[];\n}\n\n/**\n * Per-app public `app.*` buckets for CDN snippets, keyed by encoded app id (== `AppSnippet.id`,\n * the `Salla.appScope` scope id). One isolated bucket per app; reads within a scope are bare `app.*`.\n */\nexport interface AppSettings {\n apps: Record<string, Record<string, unknown>>;\n}\n\nexport const apps = {\n /**\n * Installed apps' snippets (scripts/HTML to inject). Timeout-bounded because it's awaited in\n * rootBeforeLoad (SSR/TTFB): a slow response degrades to no CDN tags, never stalls the page.\n */\n snippets: async (): Promise<AppSnippet[]> => {\n const { data } = await api\n .get('apps/snippets', { timeout: 2500 })\n .json<{ data?: AppSnippet[] }>();\n return data ?? [];\n },\n\n /**\n * Per-app public `app.*` buckets, keyed by encoded app id. Timeout-bounded (SSR-awaited):\n * a slow response degrades to empty buckets (fail-open), never strands injection.\n */\n settings: async (): Promise<AppSettings> => {\n const { data } = await api\n .get('apps/snippets/settings', { timeout: 2500 })\n .json<{ data?: Partial<AppSettings> }>();\n return { apps: data?.apps ?? {} };\n },\n\n queries: {\n snippets: () =>\n queryOptions({\n queryKey: ['apps', 'snippets'],\n queryFn: () => apps.snippets(),\n // Snippets are static per session; one fetch per page load is enough.\n staleTime: Infinity,\n // No retry: this is awaited in rootBeforeLoad, so the router's default `retry: 1` would\n // make the SSR wait 2 x the 2500ms timeout (plus backoff) before failing open. The\n // 2500ms timeout must be the whole budget; the client fallback query does the retrying.\n retry: 0,\n }),\n\n settings: () =>\n queryOptions({\n queryKey: ['apps', 'settings'],\n queryFn: () => apps.settings(),\n // Encoded app ids and their buckets are stable per page; one fetch is enough.\n staleTime: Infinity,\n retry: 0,\n }),\n },\n};\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { orThrow } from './chunk-SDIQHTDG.js';
|
|
2
|
-
import { api } from './chunk-
|
|
2
|
+
import { api } from './chunk-EXBH6RGD.js';
|
|
3
3
|
import { getSallaSDK } from './chunk-QVJDYSCT.js';
|
|
4
4
|
import { queryOptions } from '@tanstack/react-query';
|
|
5
5
|
|
|
@@ -43,5 +43,5 @@ var cart = {
|
|
|
43
43
|
};
|
|
44
44
|
|
|
45
45
|
export { cart };
|
|
46
|
-
//# sourceMappingURL=chunk-
|
|
47
|
-
//# sourceMappingURL=chunk-
|
|
46
|
+
//# sourceMappingURL=chunk-RO6KBURF.js.map
|
|
47
|
+
//# sourceMappingURL=chunk-RO6KBURF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/api/cart.ts"],"names":[],"mappings":";;;;;AAaA,SAAS,sBAAsB,IAAA,EAAoC;AACjE,EAAA,IAAI,CAAC,IAAA,CAAK,IAAA,EAAM,OAAO,IAAA;AACvB,EAAA,OAAO;AAAA,IACL,GAAG,IAAA,CAAK,IAAA;AAAA,IACR,OAAA,EAAS,KAAK,OAAA,IAAW,IAAA;AAAA,IACzB,IAAA,EAAM,KAAK,IAAA,IAAQ;AAAA,GACrB;AACF;AAEO,IAAM,IAAA,GAAO;AAAA,EAClB,GAAA,EAAK,OAAO,MAAA,KAAyC;AACnD,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAI,CAAA,KAAA,EAAQ,MAAM,CAAA,CAAE,CAAA,CAAE,IAAA,EAAgC;AACjF,IAAA,OAAO,sBAAsB,IAAI,CAAA;AAAA,EACnC,CAAA;AAAA,EAEA,YAAY,CAAC,MAAA,KAAyC,QAAQ,IAAA,CAAK,GAAA,CAAI,MAAM,CAAC,CAAA;AAAA;AAAA,EAG9E,cAAc,YAAoC;AAChD,IAAA,MAAM,QAAQ,WAAA,EAAY;AAC1B,IAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AAEnB,IAAA,MAAM,KAAA,CAAM,OAAA,EAAQ,CAAE,KAAA,CAAM,MAAM,MAAS,CAAA;AAC3C,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,gBAAA,EAAiB;AAAA,EACzC,CAAA;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,MAAA,EAAQ,CAAC,MAAA,KACP,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,MACzB,OAAA,EAAS,MAAM,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAAA;AAAA,MAE9B,SAAA,EAAW,CAAA;AAAA,MACX,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,IACH,SAAA,EAAW,MACT,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,MAAA,EAAQ,YAAY,CAAA;AAAA,MAC/B,OAAA,EAAS,MAAM,IAAA,CAAK,YAAA,EAAa;AAAA;AAAA,MAEjC,SAAA,EAAW,CAAA;AAAA,MACX,MAAA,EAAQ;AAAA,KACT;AAAA;AAEP","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/api/cart.ts"],"names":[],"mappings":";;;;;AAaA,SAAS,sBAAsB,IAAA,EAAoC;AACjE,EAAA,IAAI,CAAC,IAAA,CAAK,IAAA,EAAM,OAAO,IAAA;AACvB,EAAA,OAAO;AAAA,IACL,GAAG,IAAA,CAAK,IAAA;AAAA,IACR,OAAA,EAAS,KAAK,OAAA,IAAW,IAAA;AAAA,IACzB,IAAA,EAAM,KAAK,IAAA,IAAQ;AAAA,GACrB;AACF;AAEO,IAAM,IAAA,GAAO;AAAA,EAClB,GAAA,EAAK,OAAO,MAAA,KAAyC;AACnD,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAI,CAAA,KAAA,EAAQ,MAAM,CAAA,CAAE,CAAA,CAAE,IAAA,EAAgC;AACjF,IAAA,OAAO,sBAAsB,IAAI,CAAA;AAAA,EACnC,CAAA;AAAA,EAEA,YAAY,CAAC,MAAA,KAAyC,QAAQ,IAAA,CAAK,GAAA,CAAI,MAAM,CAAC,CAAA;AAAA;AAAA,EAG9E,cAAc,YAAoC;AAChD,IAAA,MAAM,QAAQ,WAAA,EAAY;AAC1B,IAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AAEnB,IAAA,MAAM,KAAA,CAAM,OAAA,EAAQ,CAAE,KAAA,CAAM,MAAM,MAAS,CAAA;AAC3C,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,gBAAA,EAAiB;AAAA,EACzC,CAAA;AAAA,EAEA,OAAA,EAAS;AAAA,IACP,MAAA,EAAQ,CAAC,MAAA,KACP,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,MACzB,OAAA,EAAS,MAAM,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAAA;AAAA,MAE9B,SAAA,EAAW,CAAA;AAAA,MACX,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,IACH,SAAA,EAAW,MACT,YAAA,CAAa;AAAA,MACX,QAAA,EAAU,CAAC,MAAA,EAAQ,YAAY,CAAA;AAAA,MAC/B,OAAA,EAAS,MAAM,IAAA,CAAK,YAAA,EAAa;AAAA;AAAA,MAEjC,SAAA,EAAW,CAAA;AAAA,MACX,MAAA,EAAQ;AAAA,KACT;AAAA;AAEP","file":"chunk-RO6KBURF.js","sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport { api } from './client';\nimport type { Cart } from '../types';\nimport { orThrow } from '../providers/NavigationProvider';\nimport { getSallaSDK } from '../utils/sdk-helpers';\n\nexport interface CartApiResponse {\n /** Absent once the cart was turned into an order (the body then carries a top-level `redirect`). */\n cart?: Omit<Cart, 'loyalty' | 'gift'>;\n loyalty?: Cart['loyalty'];\n gift?: Cart['gift'];\n}\n\nfunction normalizeCartResponse(data: CartApiResponse): Cart | null {\n if (!data.cart) return null;\n return {\n ...data.cart,\n loyalty: data.loyalty ?? null,\n gift: data.gift ?? null,\n } as Cart;\n}\n\nexport const cart = {\n get: async (cartId: number): Promise<Cart | null> => {\n const { data } = await api.get(`cart/${cartId}`).json<{ data: CartApiResponse }>();\n return normalizeCartResponse(data);\n },\n\n getOrThrow: (cartId: number): Promise<Cart | null> => orThrow(cart.get(cartId)),\n\n /** The visitor's cart id, which only the Salla SDK knows; `null` outside the browser. */\n getCurrentId: async (): Promise<number | null> => {\n const salla = getSallaSDK();\n if (!salla) return null;\n // The app bundle can run before the SDK module, when `salla` is still the head stub.\n await salla.onReady().catch(() => undefined);\n return salla.cart.api.getCurrentCartId();\n },\n\n queries: {\n detail: (cartId: number) =>\n queryOptions({\n queryKey: ['cart', cartId],\n queryFn: () => cart.get(cartId),\n // The SDK changes the cart from any page, so a cached copy is never safe to show.\n staleTime: 0,\n gcTime: 0,\n }),\n currentId: () =>\n queryOptions({\n queryKey: ['cart', 'current-id'],\n queryFn: () => cart.getCurrentId(),\n // Completing an order starts a new cart, so an earlier id is never reused.\n staleTime: 0,\n gcTime: 0,\n }),\n },\n};\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { useTranslation } from './chunk-TYNZ5B2B.js';
|
|
1
2
|
import { useAsyncFn } from './chunk-6BZ5TKEV.js';
|
|
2
3
|
import { useSyncExternalStore, useCallback } from 'react';
|
|
3
4
|
|
|
@@ -51,25 +52,47 @@ function ensureSubscribed() {
|
|
|
51
52
|
emitChange();
|
|
52
53
|
});
|
|
53
54
|
}
|
|
55
|
+
function toError(reason, fallback) {
|
|
56
|
+
if (reason instanceof Error) return reason;
|
|
57
|
+
if (typeof reason === "string") return new Error(reason);
|
|
58
|
+
const message = reason?.message;
|
|
59
|
+
return new Error(typeof message === "string" ? message : fallback);
|
|
60
|
+
}
|
|
54
61
|
function useWishlist() {
|
|
55
62
|
ensureSubscribed();
|
|
56
63
|
const storedIds = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
const { t } = useTranslation();
|
|
65
|
+
const failed = t("common.errors.error_occurred", "Something went wrong");
|
|
66
|
+
const [addState, addFn] = useAsyncFn(
|
|
67
|
+
async (productId) => {
|
|
68
|
+
const salla = window.salla;
|
|
69
|
+
try {
|
|
70
|
+
await salla?.wishlist.add(productId);
|
|
71
|
+
} catch (reason) {
|
|
72
|
+
throw toError(reason, failed);
|
|
73
|
+
}
|
|
74
|
+
if (!ids.includes(productId)) {
|
|
75
|
+
ids = [...ids, productId];
|
|
76
|
+
persistIds();
|
|
77
|
+
emitChange();
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
[failed]
|
|
81
|
+
);
|
|
82
|
+
const [removeState, removeFn] = useAsyncFn(
|
|
83
|
+
async (productId) => {
|
|
84
|
+
const salla = window.salla;
|
|
85
|
+
try {
|
|
86
|
+
await salla?.wishlist.remove(productId);
|
|
87
|
+
} catch (reason) {
|
|
88
|
+
throw toError(reason, failed);
|
|
89
|
+
}
|
|
90
|
+
ids = ids.filter((id) => id !== productId);
|
|
62
91
|
persistIds();
|
|
63
92
|
emitChange();
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
const salla = window.salla;
|
|
68
|
-
await salla?.wishlist.remove(productId);
|
|
69
|
-
ids = ids.filter((id) => id !== productId);
|
|
70
|
-
persistIds();
|
|
71
|
-
emitChange();
|
|
72
|
-
}, []);
|
|
93
|
+
},
|
|
94
|
+
[failed]
|
|
95
|
+
);
|
|
73
96
|
const has = useCallback((productId) => storedIds.includes(productId), [storedIds]);
|
|
74
97
|
const add = async (productId) => !(await addFn(productId) instanceof Error);
|
|
75
98
|
const remove = async (productId) => !(await removeFn(productId) instanceof Error);
|
|
@@ -95,5 +118,5 @@ function resetWishlistStore() {
|
|
|
95
118
|
}
|
|
96
119
|
|
|
97
120
|
export { resetWishlistStore, useWishlist };
|
|
98
|
-
//# sourceMappingURL=chunk-
|
|
99
|
-
//# sourceMappingURL=chunk-
|
|
121
|
+
//# sourceMappingURL=chunk-RSVAPXXI.js.map
|
|
122
|
+
//# sourceMappingURL=chunk-RSVAPXXI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useWishlist.ts"],"names":[],"mappings":"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","file":"chunk-RSVAPXXI.js","sourcesContent":["import { useCallback, useSyncExternalStore } from 'react';\nimport { useAsyncFn } from './useAsyncFn';\nimport { useTranslation } from '../providers/I18nProvider';\nimport type { UseToggleWithItems } from './types';\n\nexport type UseWishlistResult = UseToggleWithItems<number>;\n\n/**\n * useWishlist - Hook for managing wishlist functionality\n *\n * Provides wishlist product management with local storage persistence\n * and Salla SDK integration. Syncs with the SDK's wishlist state and\n * listens for events to maintain real-time consistency.\n *\n * Uses a module-level singleton store so SDK event listeners are\n * registered ONCE globally — not per-component. All hook instances\n * share the same state via `useSyncExternalStore`.\n *\n * @returns Wishlist state and management functions\n *\n * @example\n * ```tsx\n * function WishlistButton({ productId }) {\n * const { has, toggle, loading } = useWishlist();\n *\n * return (\n * <button\n * onClick={() => toggle(productId)}\n * disabled={loading}\n * className={has(productId) ? 'liked' : ''}\n * >\n * ❤️\n * </button>\n * );\n * }\n * ```\n */\n\nconst WISHLIST_STORAGE_KEY = 'salla::wishlist';\n\nlet ids: number[] = [];\nconst listeners = new Set<() => void>();\nlet subscribed = false;\n\nfunction emitChange() {\n for (const listener of listeners) listener();\n}\n\nfunction subscribe(listener: () => void) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n}\n\nfunction getSnapshot(): number[] {\n return ids;\n}\n\nconst getServerSnapshot = (): number[] => [];\n\nfunction persistIds() {\n try {\n localStorage.setItem(WISHLIST_STORAGE_KEY, JSON.stringify(ids));\n } catch {\n /* ignore storage errors */\n }\n}\n\nfunction initFromStorage() {\n try {\n const sdkWishlist = window.salla?.storage.get(WISHLIST_STORAGE_KEY, []);\n const stored = localStorage.getItem(WISHLIST_STORAGE_KEY);\n const parsed = stored ? JSON.parse(stored) : [];\n ids = Array.isArray(sdkWishlist) && sdkWishlist.length > 0 ? sdkWishlist : parsed;\n } catch {\n /* ignore storage errors */\n }\n}\n\nfunction ensureSubscribed() {\n if (subscribed || typeof window === 'undefined') return;\n subscribed = true;\n initFromStorage();\n\n const salla = window.salla;\n if (!salla?.wishlist?.event) return;\n\n salla.wishlist.event.onAdded((_event: unknown, id: number) => {\n if (ids.includes(id)) return;\n ids = [...ids, id];\n persistIds();\n emitChange();\n });\n\n salla.wishlist.event.onRemoved((_response: unknown, id: number) => {\n ids = ids.filter((itemId) => itemId !== id);\n persistIds();\n emitChange();\n });\n}\n\n/**\n * useAsyncFn resolves with whatever the SDK rejected with, and callers detect\n * failure via `instanceof Error`. Normalize non-Error rejections so they are\n * never mistaken for success.\n */\nfunction toError(reason: unknown, fallback: string): Error {\n if (reason instanceof Error) return reason;\n if (typeof reason === 'string') return new Error(reason);\n const message = (reason as { message?: unknown } | null)?.message;\n return new Error(typeof message === 'string' ? message : fallback);\n}\n\nexport function useWishlist(): UseWishlistResult {\n ensureSubscribed();\n const storedIds = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n const { t } = useTranslation();\n const failed = t('common.errors.error_occurred', 'Something went wrong');\n\n const [addState, addFn] = useAsyncFn(\n async (productId: number) => {\n const salla = window.salla;\n try {\n await salla?.wishlist.add(productId);\n } catch (reason) {\n throw toError(reason, failed);\n }\n if (!ids.includes(productId)) {\n ids = [...ids, productId];\n persistIds();\n emitChange();\n }\n },\n [failed]\n );\n\n const [removeState, removeFn] = useAsyncFn(\n async (productId: number) => {\n const salla = window.salla;\n try {\n await salla?.wishlist.remove(productId);\n } catch (reason) {\n throw toError(reason, failed);\n }\n ids = ids.filter((id) => id !== productId);\n persistIds();\n emitChange();\n },\n [failed]\n );\n\n const has = useCallback((productId: number) => storedIds.includes(productId), [storedIds]);\n\n const add = async (productId: number): Promise<boolean> =>\n !(((await addFn(productId)) as unknown) instanceof Error);\n\n const remove = async (productId: number): Promise<boolean> =>\n !(((await removeFn(productId)) as unknown) instanceof Error);\n\n const toggle = useCallback(\n (productId: number) => (has(productId) ? remove(productId) : add(productId)),\n [has, addFn, removeFn]\n );\n\n return {\n ids: storedIds,\n count: storedIds.length,\n has,\n add,\n remove,\n toggle,\n loading: addState.loading || removeState.loading,\n error: (addState.error ?? removeState.error)?.message ?? null,\n };\n}\n\nexport function resetWishlistStore() {\n ids = [];\n listeners.clear();\n subscribed = false;\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { home } from './chunk-
|
|
2
|
-
import { product } from './chunk-
|
|
3
|
-
import { ProductCard } from './chunk-
|
|
1
|
+
import { home } from './chunk-3CYIB6BL.js';
|
|
2
|
+
import { product } from './chunk-VFYT2VWC.js';
|
|
3
|
+
import { ProductCard } from './chunk-54XX3YPP.js';
|
|
4
4
|
import { registry } from './chunk-342EPVXN.js';
|
|
5
5
|
import { useTranslation } from './chunk-TYNZ5B2B.js';
|
|
6
|
-
import { Image, LazyRenderWhenVisible } from './chunk-
|
|
6
|
+
import { Image, LazyRenderWhenVisible } from './chunk-IXUY5RMV.js';
|
|
7
7
|
import { Link } from './chunk-AXW67SY7.js';
|
|
8
8
|
import { TwilightContext } from './chunk-DF6FBKDN.js';
|
|
9
9
|
import { memo, useState, useCallback, createElement, useEffect, lazy, Component, useRef, useMemo, Suspense } from 'react';
|
|
@@ -707,5 +707,5 @@ var PageBlocks = memo(function PageBlocks2({ hook, scope }) {
|
|
|
707
707
|
});
|
|
708
708
|
|
|
709
709
|
export { BundleComponent, ComponentErrorBoundary, DefaultHomeComponents, FeaturedProductsStyle1, FeaturedProductsStyle2, FeaturedProductsStyle3, FixedBanner, FixedProducts, HomeComponentRenderer, LazyTestimonials, PageBlocks, ParallaxBackground, PhotosSlider, ProductsSlider, SquarePhotos, StoreFeatures, Youtube, registerHomeComponentConfig, registerHomeComponents };
|
|
710
|
-
//# sourceMappingURL=chunk-
|
|
711
|
-
//# sourceMappingURL=chunk-
|
|
710
|
+
//# sourceMappingURL=chunk-U53LIN2F.js.map
|
|
711
|
+
//# sourceMappingURL=chunk-U53LIN2F.js.map
|