@salla.sa/twilight-components 2.14.170 → 2.14.172

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 (287) hide show
  1. package/dist/cjs/{app-globals-KyQhbOUb.js → app-globals-Bk9IDSPX.js} +3 -3
  2. package/dist/cjs/{app-globals-KyQhbOUb.js.map → app-globals-Bk9IDSPX.js.map} +1 -1
  3. package/dist/cjs/{index-CyyWuThh.js → index-B1jJnKON.js} +4 -4
  4. package/dist/cjs/{index-CyyWuThh.js.map → index-B1jJnKON.js.map} +1 -1
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/salla-add-product-button_49.cjs.entry.js +1 -1
  7. package/dist/cjs/salla-advertisement.cjs.entry.js +1 -1
  8. package/dist/cjs/salla-app-install-alert.cjs.entry.js +1 -1
  9. package/dist/cjs/salla-apps-icons.cjs.entry.js +1 -1
  10. package/dist/cjs/salla-booking-field.salla-conditional-fields.entry.cjs.js.map +1 -1
  11. package/dist/cjs/salla-booking-field_2.cjs.entry.js +2 -2
  12. package/dist/cjs/salla-booking-field_2.cjs.entry.js.map +1 -1
  13. package/dist/cjs/salla-cart-item-offers.cjs.entry.js +1 -1
  14. package/dist/cjs/salla-conditional-offer.cjs.entry.js +1 -1
  15. package/dist/cjs/salla-contacts.cjs.entry.js +1 -1
  16. package/dist/cjs/salla-filters-widget.cjs.entry.js +1 -1
  17. package/dist/cjs/salla-filters.cjs.entry.js +1 -1
  18. package/dist/cjs/salla-installment.cjs.entry.js +1 -1
  19. package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +1 -1
  20. package/dist/cjs/salla-metadata.cjs.entry.js +1 -1
  21. package/dist/cjs/salla-notification-item.cjs.entry.js +1 -1
  22. package/dist/cjs/salla-notifications.cjs.entry.js +1 -1
  23. package/dist/cjs/salla-offer.cjs.entry.js +11 -7
  24. package/dist/cjs/salla-offer.cjs.entry.js.map +1 -1
  25. package/dist/cjs/salla-offer.entry.cjs.js.map +1 -1
  26. package/dist/cjs/salla-order-summary.cjs.entry.js +1 -1
  27. package/dist/cjs/salla-orders.cjs.entry.js +1 -1
  28. package/dist/cjs/salla-payments.cjs.entry.js +1 -1
  29. package/dist/cjs/salla-price-range.cjs.entry.js +1 -1
  30. package/dist/cjs/salla-product-options.cjs.entry.js +1 -1
  31. package/dist/cjs/salla-review-card.cjs.entry.js +1 -1
  32. package/dist/cjs/salla-reviews-page.cjs.entry.js +1 -1
  33. package/dist/cjs/salla-reviews.cjs.entry.js +1 -1
  34. package/dist/cjs/salla-social.cjs.entry.js +1 -1
  35. package/dist/cjs/salla-tooltip.cjs.entry.js +1 -1
  36. package/dist/cjs/salla-verify.cjs.entry.js +1 -1
  37. package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
  38. package/dist/cjs/twilight.cjs.js +2 -2
  39. package/dist/collection/components/salla-booking-field/salla-booking-field.js +1 -1
  40. package/dist/collection/components/salla-booking-field/salla-booking-field.js.map +1 -1
  41. package/dist/collection/components/salla-offer/salla-offer.js +10 -6
  42. package/dist/collection/components/salla-offer/salla-offer.js.map +1 -1
  43. package/dist/components/index.js +2 -2
  44. package/dist/components/index.js.map +1 -1
  45. package/dist/components/salla-booking-field2.js +1 -1
  46. package/dist/components/salla-booking-field2.js.map +1 -1
  47. package/dist/components/salla-offer.js +10 -6
  48. package/dist/components/salla-offer.js.map +1 -1
  49. package/dist/esm/{app-globals-Eok5C8eP.js → app-globals-BlWInTtE.js} +3 -3
  50. package/dist/esm/{app-globals-Eok5C8eP.js.map → app-globals-BlWInTtE.js.map} +1 -1
  51. package/dist/esm/{index-EWYMQsdr.js → index-CayW-agT.js} +4 -4
  52. package/dist/esm/{index-EWYMQsdr.js.map → index-CayW-agT.js.map} +1 -1
  53. package/dist/esm/loader.js +3 -3
  54. package/dist/esm/salla-add-product-button_49.entry.js +1 -1
  55. package/dist/esm/salla-advertisement.entry.js +1 -1
  56. package/dist/esm/salla-app-install-alert.entry.js +1 -1
  57. package/dist/esm/salla-apps-icons.entry.js +1 -1
  58. package/dist/esm/salla-booking-field.salla-conditional-fields.entry.js.map +1 -1
  59. package/dist/esm/salla-booking-field_2.entry.js +2 -2
  60. package/dist/esm/salla-booking-field_2.entry.js.map +1 -1
  61. package/dist/esm/salla-cart-item-offers.entry.js +1 -1
  62. package/dist/esm/salla-conditional-offer.entry.js +1 -1
  63. package/dist/esm/salla-contacts.entry.js +1 -1
  64. package/dist/esm/salla-filters-widget.entry.js +1 -1
  65. package/dist/esm/salla-filters.entry.js +1 -1
  66. package/dist/esm/salla-installment.entry.js +1 -1
  67. package/dist/esm/salla-loyalty-prize-item.entry.js +1 -1
  68. package/dist/esm/salla-metadata.entry.js +1 -1
  69. package/dist/esm/salla-notification-item.entry.js +1 -1
  70. package/dist/esm/salla-notifications.entry.js +1 -1
  71. package/dist/esm/salla-offer.entry.js +11 -7
  72. package/dist/esm/salla-offer.entry.js.map +1 -1
  73. package/dist/esm/salla-order-summary.entry.js +1 -1
  74. package/dist/esm/salla-orders.entry.js +1 -1
  75. package/dist/esm/salla-payments.entry.js +1 -1
  76. package/dist/esm/salla-price-range.entry.js +1 -1
  77. package/dist/esm/salla-product-options.entry.js +1 -1
  78. package/dist/esm/salla-review-card.entry.js +1 -1
  79. package/dist/esm/salla-reviews-page.entry.js +1 -1
  80. package/dist/esm/salla-reviews.entry.js +1 -1
  81. package/dist/esm/salla-social.entry.js +1 -1
  82. package/dist/esm/salla-tooltip.entry.js +1 -1
  83. package/dist/esm/salla-verify.entry.js +1 -1
  84. package/dist/esm/salla-wallet.entry.js +1 -1
  85. package/dist/esm/twilight.js +3 -3
  86. package/dist/esm-es5/{app-globals-Eok5C8eP.js → app-globals-BlWInTtE.js} +2 -2
  87. package/dist/esm-es5/{app-globals-Eok5C8eP.js.map → app-globals-BlWInTtE.js.map} +1 -1
  88. package/dist/esm-es5/{index-EWYMQsdr.js → index-CayW-agT.js} +3 -3
  89. package/dist/esm-es5/{index-EWYMQsdr.js.map → index-CayW-agT.js.map} +1 -1
  90. package/dist/esm-es5/loader.js +1 -1
  91. package/dist/esm-es5/salla-add-product-button_49.entry.js +1 -1
  92. package/dist/esm-es5/salla-advertisement.entry.js +1 -1
  93. package/dist/esm-es5/salla-app-install-alert.entry.js +1 -1
  94. package/dist/esm-es5/salla-apps-icons.entry.js +1 -1
  95. package/dist/esm-es5/salla-booking-field.salla-conditional-fields.entry.js.map +1 -1
  96. package/dist/esm-es5/salla-booking-field_2.entry.js +2 -2
  97. package/dist/esm-es5/salla-booking-field_2.entry.js.map +1 -1
  98. package/dist/esm-es5/salla-cart-item-offers.entry.js +1 -1
  99. package/dist/esm-es5/salla-conditional-offer.entry.js +1 -1
  100. package/dist/esm-es5/salla-contacts.entry.js +1 -1
  101. package/dist/esm-es5/salla-filters-widget.entry.js +1 -1
  102. package/dist/esm-es5/salla-filters.entry.js +1 -1
  103. package/dist/esm-es5/salla-installment.entry.js +1 -1
  104. package/dist/esm-es5/salla-loyalty-prize-item.entry.js +1 -1
  105. package/dist/esm-es5/salla-metadata.entry.js +1 -1
  106. package/dist/esm-es5/salla-notification-item.entry.js +1 -1
  107. package/dist/esm-es5/salla-notifications.entry.js +1 -1
  108. package/dist/esm-es5/salla-offer.entry.js +2 -2
  109. package/dist/esm-es5/salla-offer.entry.js.map +1 -1
  110. package/dist/esm-es5/salla-order-summary.entry.js +1 -1
  111. package/dist/esm-es5/salla-orders.entry.js +2 -2
  112. package/dist/esm-es5/salla-payments.entry.js +1 -1
  113. package/dist/esm-es5/salla-price-range.entry.js +1 -1
  114. package/dist/esm-es5/salla-product-options.entry.js +1 -1
  115. package/dist/esm-es5/salla-review-card.entry.js +1 -1
  116. package/dist/esm-es5/salla-reviews-page.entry.js +1 -1
  117. package/dist/esm-es5/salla-reviews.entry.js +1 -1
  118. package/dist/esm-es5/salla-social.entry.js +1 -1
  119. package/dist/esm-es5/salla-tooltip.entry.js +1 -1
  120. package/dist/esm-es5/salla-verify.entry.js +1 -1
  121. package/dist/esm-es5/salla-wallet.entry.js +1 -1
  122. package/dist/esm-es5/twilight.js +1 -1
  123. package/dist/twilight/{p-4fbad277.entry.js → p-0649d076.entry.js} +2 -2
  124. package/dist/twilight/{p-b6d17480.system.entry.js → p-1696a245.system.entry.js} +2 -2
  125. package/dist/twilight/{p-1d879370.entry.js → p-19f533ec.entry.js} +2 -2
  126. package/dist/twilight/{p-0bdf2224.entry.js → p-1dd178a2.entry.js} +2 -2
  127. package/dist/twilight/{p-1f4fc47f.entry.js → p-20bdcd53.entry.js} +2 -2
  128. package/dist/twilight/{p-5c52e00c.entry.js → p-247636ef.entry.js} +2 -2
  129. package/dist/twilight/{p-38a60819.entry.js → p-269ebd5d.entry.js} +2 -2
  130. package/dist/twilight/{p-1fbf0ba0.entry.js → p-29e96484.entry.js} +2 -2
  131. package/dist/twilight/p-29e96484.entry.js.map +1 -0
  132. package/dist/twilight/{p-fe7d4113.system.entry.js → p-2a10bff2.system.entry.js} +2 -2
  133. package/dist/twilight/{p-cd6c8a64.entry.js → p-2d0c2877.entry.js} +2 -2
  134. package/dist/twilight/{p-8a42ee60.system.entry.js → p-2da442c2.system.entry.js} +2 -2
  135. package/dist/twilight/{p-c7589247.system.entry.js → p-3093ea8e.system.entry.js} +2 -2
  136. package/dist/twilight/{p-7f0b3753.entry.js → p-316e3ea9.entry.js} +2 -2
  137. package/dist/twilight/{p-f5929cee.entry.js → p-33963e7d.entry.js} +2 -2
  138. package/dist/twilight/{p-feb9b85a.entry.js → p-37a3c661.entry.js} +2 -2
  139. package/dist/twilight/{p-d9073cf3.entry.js → p-41480e7b.entry.js} +2 -2
  140. package/dist/twilight/{p-2a8279d6.entry.js → p-41ecc4f7.entry.js} +2 -2
  141. package/dist/twilight/{p-9395f082.system.entry.js → p-44a213de.system.entry.js} +2 -2
  142. package/dist/twilight/p-4ced9aab.entry.js +5 -0
  143. package/dist/twilight/p-4fb112e6.system.entry.js +5 -0
  144. package/dist/twilight/p-4fb112e6.system.entry.js.map +1 -0
  145. package/dist/twilight/{p-ec81a36e.entry.js → p-51195e76.entry.js} +2 -2
  146. package/dist/twilight/{p-ff9d70f4.system.entry.js → p-54bd7e18.system.entry.js} +2 -2
  147. package/dist/twilight/{p-3134126e.system.entry.js → p-611b6013.system.entry.js} +2 -2
  148. package/dist/twilight/{p-bd4d0f9a.system.entry.js → p-679bb855.system.entry.js} +2 -2
  149. package/dist/twilight/{p-4c74100d.system.entry.js → p-67fe618e.system.entry.js} +2 -2
  150. package/dist/twilight/{p-1ebd5929.system.entry.js → p-69ec9ac8.system.entry.js} +2 -2
  151. package/dist/twilight/{p-b09ad735.system.entry.js → p-740b39fc.system.entry.js} +2 -2
  152. package/dist/twilight/{p-2ea1d52b.entry.js → p-756fe45d.entry.js} +2 -2
  153. package/dist/twilight/{p-d2edeb7c.system.entry.js → p-7ddf00a9.system.entry.js} +2 -2
  154. package/dist/twilight/{p-5fd16112.system.entry.js → p-86dd7e02.system.entry.js} +2 -2
  155. package/dist/twilight/{p-42291bce.entry.js → p-8c9ae8bd.entry.js} +2 -2
  156. package/dist/twilight/{p-3b5eb2c9.system.entry.js → p-8e242779.system.entry.js} +2 -2
  157. package/dist/twilight/{p-4daef7a0.entry.js → p-9361e7a2.entry.js} +2 -2
  158. package/dist/twilight/{p-3aa0ac01.entry.js → p-952a8078.entry.js} +2 -2
  159. package/dist/twilight/{p-bf454ddd.entry.js → p-9ca8c6b6.entry.js} +2 -2
  160. package/dist/twilight/{p-15e36352.system.entry.js → p-9d750b3d.system.entry.js} +2 -2
  161. package/dist/twilight/{p-B4BfwIfE.system.js.map → p-B3wutB2s.system.js.map} +1 -1
  162. package/dist/twilight/{p-BRLbCud3.system.js.map → p-BYBYDro2.system.js.map} +1 -1
  163. package/dist/twilight/{p-CaL9vXSW.system.js.map → p-BeVJFUxX.system.js.map} +1 -1
  164. package/dist/twilight/{p-ug8rkhBt.system.js.map → p-BmwlZkRw.system.js.map} +1 -1
  165. package/dist/twilight/{p-D9oLy_KT.system.js → p-BuezmX1t.system.js} +2 -2
  166. package/dist/twilight/{p-D9oLy_KT.system.js.map → p-BuezmX1t.system.js.map} +1 -1
  167. package/dist/twilight/{p-qSZ6al46.system.js.map → p-BuxFmGAL.system.js.map} +1 -1
  168. package/dist/twilight/{p-DSV8tV1E.system.js.map → p-Bxsqm2ye.system.js.map} +1 -1
  169. package/dist/twilight/{p-5vs3r5UR.system.js.map → p-C2OoabIm.system.js.map} +1 -1
  170. package/dist/twilight/{p-vvacIepq.system.js.map → p-C4gOv56I.system.js.map} +1 -1
  171. package/dist/twilight/{p-CbLv2Rkn.system.js.map → p-C7B9pjwv.system.js.map} +1 -1
  172. package/dist/twilight/{p-6eZfgC1O.system.js.map → p-CCr4sv_K.system.js.map} +1 -1
  173. package/dist/twilight/{p-DO9CJiWa.system.js.map → p-CECjqlBg.system.js.map} +1 -1
  174. package/dist/twilight/p-CPIDPWPd.system.js.map +1 -0
  175. package/dist/twilight/{p-DraEtCIO.system.js.map → p-CT4XUl4u.system.js.map} +1 -1
  176. package/dist/twilight/{p-Mx729n7_.system.js.map → p-CT7GoHDG.system.js.map} +1 -1
  177. package/dist/twilight/{p-EWYMQsdr.js → p-CayW-agT.js} +3 -3
  178. package/dist/twilight/{p-EWYMQsdr.js.map → p-CayW-agT.js.map} +1 -1
  179. package/dist/twilight/{p-zj6gyLfC.system.js.map → p-Ccj3kuAD.system.js.map} +1 -1
  180. package/dist/twilight/{p-Ew9kSVbn.system.js.map → p-CeyDIaJF.system.js.map} +1 -1
  181. package/dist/twilight/{p-CeyGkw1h.system.js.map → p-CjXAM86c.system.js.map} +1 -1
  182. package/dist/twilight/{p-BU23HIMq.system.js → p-CmumtzEL.system.js} +3 -3
  183. package/dist/twilight/{p-BU23HIMq.system.js.map → p-CmumtzEL.system.js.map} +1 -1
  184. package/dist/twilight/{p-48XKn75T.system.js.map → p-D4ot6EsS.system.js.map} +1 -1
  185. package/dist/twilight/{p-Dd5CEUFO.system.js.map → p-DEOECcHf.system.js.map} +1 -1
  186. package/dist/twilight/{p-gm6N2F_h.system.js.map → p-DUKloBXK.system.js.map} +1 -1
  187. package/dist/twilight/{p-Cni316MV.system.js.map → p-Dg8Ywiaf.system.js.map} +1 -1
  188. package/dist/twilight/{p-5QHjuX9p.system.js.map → p-Dmm2RXZq.system.js.map} +1 -1
  189. package/dist/twilight/{p-QtuY1UHD.system.js.map → p-DraNKP6B.system.js.map} +1 -1
  190. package/dist/twilight/{p-a0nHD-aB.system.js.map → p-DzJCsxNk.system.js.map} +1 -1
  191. package/dist/twilight/{p-m9Evhpmi.system.js → p-FxRE-bWf.system.js} +2 -2
  192. package/dist/twilight/{p-m9Evhpmi.system.js.map → p-FxRE-bWf.system.js.map} +1 -1
  193. package/dist/twilight/{p-B3t8frU_.js → p-PnQHllOh.js} +2 -2
  194. package/dist/twilight/{p-B3t8frU_.js.map → p-PnQHllOh.js.map} +1 -1
  195. package/dist/twilight/{p-BBMoQKyK.system.js.map → p-UOO6uSKD.system.js.map} +1 -1
  196. package/dist/twilight/{p-L8BD77j0.system.js.map → p-W3JU15BC.system.js.map} +1 -1
  197. package/dist/twilight/{p-9f657953.system.entry.js → p-a78387e7.system.entry.js} +2 -2
  198. package/dist/twilight/{p-abcc0cbf.entry.js → p-aa6a0113.entry.js} +2 -2
  199. package/dist/twilight/{p-2147391e.system.entry.js → p-ad02a471.system.entry.js} +2 -2
  200. package/dist/twilight/{p-c8053b6f.entry.js → p-b63bc4db.entry.js} +2 -2
  201. package/dist/twilight/{p-213c3ce4.entry.js → p-b72f268b.entry.js} +2 -2
  202. package/dist/twilight/{p-f2dda5b0.system.entry.js → p-c70ed29b.system.entry.js} +2 -2
  203. package/dist/twilight/{p-5a86938a.system.entry.js → p-cdc147d2.system.entry.js} +2 -2
  204. package/dist/twilight/p-d0912efd.entry.js +5 -0
  205. package/dist/twilight/p-d0912efd.entry.js.map +1 -0
  206. package/dist/twilight/{p-55ce45d1.system.entry.js → p-d14e40fe.system.entry.js} +2 -2
  207. package/dist/twilight/{p-01578d6d.system.entry.js → p-d2c834be.system.entry.js} +2 -2
  208. package/dist/twilight/{p-32429afe.system.entry.js → p-d56a7bd9.system.entry.js} +2 -2
  209. package/dist/twilight/{p-50c60622.entry.js → p-d600f506.entry.js} +2 -2
  210. package/dist/twilight/{p-b6ac3dd8.system.entry.js → p-db68e58b.system.entry.js} +2 -2
  211. package/dist/twilight/p-db68e58b.system.entry.js.map +1 -0
  212. package/dist/twilight/{p-95e2b228.system.entry.js → p-e061a1f5.system.entry.js} +2 -2
  213. package/dist/twilight/{p-065d60f6.entry.js → p-e084e3c4.entry.js} +2 -2
  214. package/dist/twilight/{p-0ebd2162.entry.js → p-e9ca7e7c.entry.js} +2 -2
  215. package/dist/twilight/{p-df8a68d9.system.entry.js → p-ee97bc7b.system.entry.js} +2 -2
  216. package/dist/twilight/{p-8079920d.system.entry.js → p-f5ce1227.system.entry.js} +2 -2
  217. package/dist/twilight/{p-e9046909.system.entry.js → p-fb9cd621.system.entry.js} +2 -2
  218. package/dist/twilight/{p-01f043b8.entry.js → p-fdd3788a.entry.js} +2 -2
  219. package/dist/twilight/{p-zB1aXyll.system.js.map → p-hIDulQlu.system.js.map} +1 -1
  220. package/dist/twilight/p-qziIzWVk.system.js.map +1 -0
  221. package/dist/twilight/{p-Bs4v2LtA.system.js.map → p-y427D1HL.system.js.map} +1 -1
  222. package/dist/twilight/salla-booking-field.salla-conditional-fields.entry.esm.js.map +1 -1
  223. package/dist/twilight/salla-offer.entry.esm.js.map +1 -1
  224. package/dist/twilight/twilight.esm.js +1 -1
  225. package/dist/twilight/twilight.js +1 -1
  226. package/package.json +5 -5
  227. package/dist/twilight/p-1fbf0ba0.entry.js.map +0 -1
  228. package/dist/twilight/p-545302d2.entry.js +0 -5
  229. package/dist/twilight/p-545302d2.entry.js.map +0 -1
  230. package/dist/twilight/p-B3dc8MoR.system.js.map +0 -1
  231. package/dist/twilight/p-BkvW8UWg.system.js.map +0 -1
  232. package/dist/twilight/p-a22b72f6.entry.js +0 -5
  233. package/dist/twilight/p-b6ac3dd8.system.entry.js.map +0 -1
  234. package/dist/twilight/p-d0122bff.system.entry.js +0 -5
  235. package/dist/twilight/p-d0122bff.system.entry.js.map +0 -1
  236. /package/dist/twilight/{p-4fbad277.entry.js.map → p-0649d076.entry.js.map} +0 -0
  237. /package/dist/twilight/{p-b6d17480.system.entry.js.map → p-1696a245.system.entry.js.map} +0 -0
  238. /package/dist/twilight/{p-1d879370.entry.js.map → p-19f533ec.entry.js.map} +0 -0
  239. /package/dist/twilight/{p-0bdf2224.entry.js.map → p-1dd178a2.entry.js.map} +0 -0
  240. /package/dist/twilight/{p-1f4fc47f.entry.js.map → p-20bdcd53.entry.js.map} +0 -0
  241. /package/dist/twilight/{p-5c52e00c.entry.js.map → p-247636ef.entry.js.map} +0 -0
  242. /package/dist/twilight/{p-38a60819.entry.js.map → p-269ebd5d.entry.js.map} +0 -0
  243. /package/dist/twilight/{p-fe7d4113.system.entry.js.map → p-2a10bff2.system.entry.js.map} +0 -0
  244. /package/dist/twilight/{p-cd6c8a64.entry.js.map → p-2d0c2877.entry.js.map} +0 -0
  245. /package/dist/twilight/{p-8a42ee60.system.entry.js.map → p-2da442c2.system.entry.js.map} +0 -0
  246. /package/dist/twilight/{p-c7589247.system.entry.js.map → p-3093ea8e.system.entry.js.map} +0 -0
  247. /package/dist/twilight/{p-7f0b3753.entry.js.map → p-316e3ea9.entry.js.map} +0 -0
  248. /package/dist/twilight/{p-f5929cee.entry.js.map → p-33963e7d.entry.js.map} +0 -0
  249. /package/dist/twilight/{p-feb9b85a.entry.js.map → p-37a3c661.entry.js.map} +0 -0
  250. /package/dist/twilight/{p-d9073cf3.entry.js.map → p-41480e7b.entry.js.map} +0 -0
  251. /package/dist/twilight/{p-2a8279d6.entry.js.map → p-41ecc4f7.entry.js.map} +0 -0
  252. /package/dist/twilight/{p-9395f082.system.entry.js.map → p-44a213de.system.entry.js.map} +0 -0
  253. /package/dist/twilight/{p-a22b72f6.entry.js.map → p-4ced9aab.entry.js.map} +0 -0
  254. /package/dist/twilight/{p-ec81a36e.entry.js.map → p-51195e76.entry.js.map} +0 -0
  255. /package/dist/twilight/{p-ff9d70f4.system.entry.js.map → p-54bd7e18.system.entry.js.map} +0 -0
  256. /package/dist/twilight/{p-3134126e.system.entry.js.map → p-611b6013.system.entry.js.map} +0 -0
  257. /package/dist/twilight/{p-bd4d0f9a.system.entry.js.map → p-679bb855.system.entry.js.map} +0 -0
  258. /package/dist/twilight/{p-4c74100d.system.entry.js.map → p-67fe618e.system.entry.js.map} +0 -0
  259. /package/dist/twilight/{p-1ebd5929.system.entry.js.map → p-69ec9ac8.system.entry.js.map} +0 -0
  260. /package/dist/twilight/{p-b09ad735.system.entry.js.map → p-740b39fc.system.entry.js.map} +0 -0
  261. /package/dist/twilight/{p-2ea1d52b.entry.js.map → p-756fe45d.entry.js.map} +0 -0
  262. /package/dist/twilight/{p-d2edeb7c.system.entry.js.map → p-7ddf00a9.system.entry.js.map} +0 -0
  263. /package/dist/twilight/{p-5fd16112.system.entry.js.map → p-86dd7e02.system.entry.js.map} +0 -0
  264. /package/dist/twilight/{p-42291bce.entry.js.map → p-8c9ae8bd.entry.js.map} +0 -0
  265. /package/dist/twilight/{p-3b5eb2c9.system.entry.js.map → p-8e242779.system.entry.js.map} +0 -0
  266. /package/dist/twilight/{p-4daef7a0.entry.js.map → p-9361e7a2.entry.js.map} +0 -0
  267. /package/dist/twilight/{p-3aa0ac01.entry.js.map → p-952a8078.entry.js.map} +0 -0
  268. /package/dist/twilight/{p-bf454ddd.entry.js.map → p-9ca8c6b6.entry.js.map} +0 -0
  269. /package/dist/twilight/{p-15e36352.system.entry.js.map → p-9d750b3d.system.entry.js.map} +0 -0
  270. /package/dist/twilight/{p-9f657953.system.entry.js.map → p-a78387e7.system.entry.js.map} +0 -0
  271. /package/dist/twilight/{p-abcc0cbf.entry.js.map → p-aa6a0113.entry.js.map} +0 -0
  272. /package/dist/twilight/{p-2147391e.system.entry.js.map → p-ad02a471.system.entry.js.map} +0 -0
  273. /package/dist/twilight/{p-c8053b6f.entry.js.map → p-b63bc4db.entry.js.map} +0 -0
  274. /package/dist/twilight/{p-213c3ce4.entry.js.map → p-b72f268b.entry.js.map} +0 -0
  275. /package/dist/twilight/{p-f2dda5b0.system.entry.js.map → p-c70ed29b.system.entry.js.map} +0 -0
  276. /package/dist/twilight/{p-5a86938a.system.entry.js.map → p-cdc147d2.system.entry.js.map} +0 -0
  277. /package/dist/twilight/{p-55ce45d1.system.entry.js.map → p-d14e40fe.system.entry.js.map} +0 -0
  278. /package/dist/twilight/{p-01578d6d.system.entry.js.map → p-d2c834be.system.entry.js.map} +0 -0
  279. /package/dist/twilight/{p-32429afe.system.entry.js.map → p-d56a7bd9.system.entry.js.map} +0 -0
  280. /package/dist/twilight/{p-50c60622.entry.js.map → p-d600f506.entry.js.map} +0 -0
  281. /package/dist/twilight/{p-95e2b228.system.entry.js.map → p-e061a1f5.system.entry.js.map} +0 -0
  282. /package/dist/twilight/{p-065d60f6.entry.js.map → p-e084e3c4.entry.js.map} +0 -0
  283. /package/dist/twilight/{p-0ebd2162.entry.js.map → p-e9ca7e7c.entry.js.map} +0 -0
  284. /package/dist/twilight/{p-df8a68d9.system.entry.js.map → p-ee97bc7b.system.entry.js.map} +0 -0
  285. /package/dist/twilight/{p-8079920d.system.entry.js.map → p-f5ce1227.system.entry.js.map} +0 -0
  286. /package/dist/twilight/{p-e9046909.system.entry.js.map → p-fb9cd621.system.entry.js.map} +0 -0
  287. /package/dist/twilight/{p-01f043b8.entry.js.map → p-fdd3788a.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"file":"salla-offer.entry.cjs.js","mappings":"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","names":["h"],"sources":["src/components/salla-offer/interfaces.ts","src/components/salla-offer/salla-offer.scss?tag=salla-offer","src/components/salla-offer/salla-offer.tsx"],"sourcesContent":["export enum PageType {\n ProductDetail = \"product.single\",\n Cart = \"cart\"\n}\n\nexport enum OfferType {\n Conditional = \"conditional\",\n PercentageOrFixed = \"fixed\",\n DiscountsTable = \"discounts_table\",\n Bank = \"bank\",\n BuyXGetY = \"buy_x_get_y\"\n}\n\n\nexport interface DiscountDetailFixed {\n discount_type: \"fixed\";\n min_spend: number;\n discount_value: number;\n}\n\nexport interface DiscountDetailFreeProduct {\n discount_type: \"free_product\";\n min_spend: number;\n discount_value: number;\n}\n\nexport interface DiscountDetailConditional extends Array<DiscountDetailFixed | DiscountDetailFreeProduct> {}\n\nexport interface DiscountDetailPercentageFixed {\n apply_to: \"all\" | \"products\" | \"categories\" | \"payment_methods\";\n targets: Array<string | number>;\n ends_at: number;\n min_spend: number;\n discount_value: number;\n}\n\nexport interface Discount {\n discounted_amount: any;\n quantity: number;\n percentage: number;\n}\n\nexport interface DiscountDetailTable {\n apply_to: \"all\" | \"products\" | \"categories\" | \"payment_methods\" | \"order\";\n discount_value: number;\n ends_at: string;\n min_items: number;\n min_spend: number;\n show_price_after_discount: boolean;\n discounts: Discount[];\n}\n\nexport interface BankOffer {\n logo: string;\n discount_value: number;\n discount_type: string;\n minimum_spend: number;\n payments: string[];\n}\n\nexport interface BuyXGetYDetail {\n ends_at: number;\n buy: {\n source: \"product\" | \"category\";\n source_value: number[];\n quantity: number;\n };\n get: {\n source: \"products\" | \"category\";\n source_value: number[];\n type: \"free_product\" | \"percentage\" | \"fixed\";\n value: number;\n products?: Product[];//we will set this dynamically\n categories?: Category[];//we will set this dynamically\n };\n}\n\nexport interface Offer {\n id: number;\n title: string;\n description: string;\n type: OfferType | \"conditional\" | \"fixed\" | \"discounts_table\" | \"bank\" | \"buy_x_get_y\";\n details: DiscountDetailConditional | DiscountDetailPercentageFixed | DiscountDetailTable | BankOffer | BuyXGetYDetail;\n}\n\nexport interface Product {\n id: number;\n type: string;\n status: string;\n is_available: boolean;\n sku: string;\n name: string;\n price: { amount: number; currency: string; };\n promotion: { title: string; sub_title: string; };\n sale_price: { amount: number; currency: string; };\n regular_price: { amount: number; currency: string; };\n currency: string;\n url: string;\n thumbnail: string;\n has_special_price: boolean;\n favorite?: any;\n}\n\nexport interface Category {\n id?: string;\n id_?: number;\n name?: string;\n url?: string;\n icon?: string;\n sub_categories?: Category[];\n items?: any[] | null;\n}\n\nexport interface Currency {\n code: string | 'SAR';\n name: string;\n symbol: string;\n amount?: number;\n country_code?: string;\n}\n",".s-offer-wrapper .s-slider-block__title {\n h2 {\n font-size: 1.125rem;\n line-height: 1.75rem;\n color: #f87171;\n\n &::before {\n font-family: \"sallaicons\";\n content: \"\\ee30\" !important;\n position: absolute;\n top: 1rem;\n font-size: 3rem;\n font-weight: 400;\n line-height: 1;\n color: #fef2f2;\n }\n }\n}\n\n.s-offer-bank-wrapper-sinlge-item{\n display: flex;\n align-items: center !important;\n gap: 14px;\n}\n\n.s-offer-bank-wrapper {\n display: flex !important;\n width: 100% !important;\n}\n\n// .s-offer-bank-wrapper {\n // \n// }","import { Component, Element, Prop, State, h } from '@stencil/core';\nimport { Offer, Category, Product, Discount, Currency, BuyXGetYDetail, PageType, OfferType, BankOffer, DiscountDetailTable } from './interfaces';\n\n\n/**\n * `salla-offer` is a StencilJS component that displays offers, categories, products, banks, and discount information.\n * It uses the `salla-slider` component for carousel functionality.\n *\n * @slot category - The slot for customizing the category entry layout.\n * \n * @csspart custom - Custom CSS part to target specific elements in the component.\n *\n * @example\n * <salla-offer product-id=\"123\"></salla-offer>\n */\n@Component({\n tag: 'salla-offer',\n styleUrl: 'salla-offer.scss',\n})\nexport class SallaOffer {\n\n constructor() {\n // Language\n salla.lang.onLoaded(() => {\n this.offer_with_price_text = salla.lang.get('pages.offer.with_price');\n this.with_discount_text = salla.lang.get('pages.products.with_a_discount');\n this.product_discount_text = salla.lang.get('pages.products.discount');\n this.special_offer_text = salla.lang.get('pages.products.special_offer');\n this.multipleBankOfferTitleText = salla.lang.get('pages.offer.multiple_bank_offers_title');\n this.multipleBankOfferTitleDescription = salla.lang.get('pages.offer.multiple_bank_offers_message');\n this.buy_quantity_text(0);\n })\n\n salla.onReady(() => {\n this.currentPage = salla.config.get('page.slug')\n this.userCurrency = salla.config.get('currencies')[salla.config.get('user.currency_code')].symbol\n });\n\n this.categorySlot = this.host.querySelector('[slot=\"category\"]')?.innerHTML || '<a href={url} class=\"s-offer-slide-cat-entry\"><i class={icon}></i><h4>{name}</h4></a>';\n }\n\n /**\n * Custom Card Component for the Salla Products List.\n *\n * This component allows you to customize the appearance of individual product cards within a Salla Products List.\n *\n * @example\n * <salla-products-list product-card-component=\"my-custom-card-style1\" ...\n * <salla-products-list product-card-component=\"my-custom-card-style2\" ...\n */\n @Prop() productCardComponent: string = 'custom-salla-product-card';\n\n // Declare component state variables\n @State() offersList: Offer[] = [];\n @State() userCurrency: Currency;\n @State() isMultipleBank: boolean = false;\n @State() title?: string;\n @State() currentPage: string;\n @State() hasCustomComponent: boolean;\n\n @State() isBankOffer: boolean = false;\n @State() canRender: boolean = false;\n @State() showOffer: boolean = salla.config.get('store.settings.product.show_special_offers');\n\n // Default translated texts\n @State() offer_with_price_text: string = salla.lang.get('pages.offer.with_price', { price: '' });\n @State() with_discount_text: string = salla.lang.get('pages.products.with_a_discount')\n @State() product_discount_text: string = salla.lang.get('pages.products.discount')\n @State() special_offer_text: string = salla.lang.get('pages.products.special_offer')\n @State() multipleBankOfferTitleText: string = salla.lang.get('pages.offer.multiple_bank_offers_title')\n @State() multipleBankOfferTitleDescription: string = salla.lang.get('pages.offer.multiple_bank_offers_message')\n @State() buy_quantity_text: (quantity: number) => string = (quantity) => salla.lang.get('pages.offer.buy_quantity', { quantity })\n\n // Reference to the host element\n @Element() host: HTMLElement;\n\n private categorySlot: string;\n\n private getEndpointByPageName(): string {\n return {\n [PageType.Cart]: `offers/cart/${salla.storage.get('cart.id')}`,\n [PageType.ProductDetail]: `offers/product/${salla.config.get('page.id')}`,\n }[this.currentPage] || \"offers\";\n }\n\n componentWillLoad() {\n this.hasCustomComponent = !!customElements.get(this.productCardComponent);\n // let offers = this.getOffersFromStorage();\n // if (offers) {\n // return offers.then(offersFromStorage => this.offersList = offersFromStorage);\n // }\n\n return (new Promise(resolve => salla.onReady(resolve)))\n .then(() => {\n this.showOffer = !salla.url.is_page('product.single') || salla.config.get('store.settings.product.show_special_offers')\n if (this.showOffer) {\n return;\n }\n throw new Error(\"Merchant disabled showing the offers on product page\");\n }\n )\n .then(() => salla.api.request(this.getEndpointByPageName()))\n .then((res) => {\n if (!(this.offersList = res.data).length) {\n throw new Error('salla-offers:: There is no offers!');\n }\n //we support these offers only\n const offer = this.offersList.find(offer => [OfferType.Bank, OfferType.BuyXGetY, OfferType.DiscountsTable].includes(offer.type as any));\n if (!offer) {\n throw new Error('salla-offers:: Offer type not supported yet!');\n }\n //because there is no need for special handling for discounts table, just skip the other cases\n if (offer.type === OfferType.DiscountsTable) {\n return this.offersList = [offer];\n }\n\n //if it's banks offer, we need to include the other banks overs\n if ((this.isBankOffer = offer.type === OfferType.Bank)) {\n this.offersList = this.offersList.filter(offer => offer.type === OfferType.Bank);\n this.isMultipleBank = this.offersList.length > 1;\n return this.offersList;\n }\n //BuyXGetY offers\n const getY = (offer.details as BuyXGetYDetail).get;\n\n return getY.source === 'products'\n //todo:: avoid this request, and the handling for the products, just use `salla-products-slider` and don't forget to pass the customcard\n ? salla.product.api.fetch({ source: \"selected\", source_value: getY.source_value })\n .then((response: any) => {\n getY.products = response.data;\n (offer.details as any).get = getY;\n return this.offersList = [offer];\n })//set the products\n : salla.product.api.categories()//get all categories in one query, then extract only the selected one, instead of sending multi requests\n .then((res) => {\n getY.categories = this.findCategories(res.data, getY.source_value);\n (offer.details as any).get = getY;\n return this.offersList = [offer];\n });\n })\n .then((offers: Offer[]) => {\n salla.storage.set(this.getStorageKey(), { offers, stored_at: new Date().getTime() });\n this.canRender = true;\n })\n .catch((error) => {\n salla.logger.warn(error)\n });\n }\n\n componentDidLoad() {\n let nav = this.host.querySelector('.s-slider-block__title-nav');\n nav?.classList.add(\"s-offer-bank-payment-nav\")\n }\n\n\n findCategories(categories: Category[], ids: any[]): Category[] {\n let found: Category[] = [];\n\n for (const category of categories) {\n if (ids.includes(category.id_ || category.id)) { //here we are using || because we are planning to drop `id_`\n found.push(category);\n }\n if (category.sub_categories?.length > 0) {\n found = found.concat(this.findCategories(category.sub_categories, ids));\n }\n }\n\n return found;\n }\n\n //todo::add to the key params, to make sure it will support multi offers in the same page if it's wanted\n getStorageKey(): string {\n try {\n const pageSlug = salla.config.get('page.slug').replace('.', '_');\n const locale = salla.lang.getLocale();\n const currencyCode = salla.config.currency().code;\n\n if (!pageSlug || !locale || !currencyCode) {\n throw new Error('Unable to get the storage key.');\n }\n\n return `s-offers-${pageSlug}-${salla.config.get('page.id')}-${locale}-${currencyCode}`;\n } catch (error) {\n return '';\n }\n }\n\n //@ts-ignore\n getOffersFromStorage(): null | Promise<Offer[]> {\n let storageOffers = salla.storage.get(this.getStorageKey());\n //if the offers not existed, or it has been stored before 10 minutes from now, ignore it;\n if (!storageOffers || storageOffers.stored_at < (new Date().getTime() - 10 * 60 * 1000)) {\n salla.storage.remove(this.getStorageKey());\n return null;\n }\n this.canRender = true;\n\n //return it as resolve to support .then\n return Promise.resolve(storageOffers.offers);\n }\n\n render() {\n if (!this.offersList.length || !this.canRender || !this.showOffer) return null;\n const offer: Offer = this.offersList[0];\n\n const blockTitle = this.isBankOffer ? (this.isMultipleBank ? this.multipleBankOfferTitleText : null) : offer.title;\n const blockSubTitle = this.isBankOffer ? (this.isMultipleBank ? this.multipleBankOfferTitleDescription : null) : offer.description;\n\n const titles = {\n 'block-title': blockTitle,\n 'block-subTitle': blockSubTitle,\n 'show-controls': this.isMultipleBank\n };\n\n return (\n <div class=\"s-offer-wrapper\">\n {<p class=\"s-offer-corner-badge\">{this.special_offer_text}</p>}\n {/* discounts table is not a slider, it's a table🤔 */}\n {/* single bank offer is not a slider, it's a dom without slider🤔 */}\n <salla-slider type=\"carousel\" id=\"offer-slider\" {...titles}>\n <div slot='items'>\n {this.renderSectionForOfferType(offer.type)}\n </div>\n </salla-slider>\n </div>\n );\n }\n\n private renderSectionForOfferType(offerType: OfferType | string) {\n if (this.isBankOffer) {\n return this.renderBankSection();\n }\n if (offerType == OfferType.BuyXGetY) {\n return this.renderBuyXGetYSection();\n }\n\n return this.renderDiscountTableSection();\n }\n\n /**\n * Generates content for the categories section.\n *\n * @param offeredCategories - An array of Category objects.\n * @returns An array of HTML elements representing categories.\n */\n private getCategoriesSection(category: Category) {\n return <div class=\"s-offer-slide-one-sixth swiper-slide\" innerHTML={this.categorySlot\n .replace(/\\{url\\}/g, category.url)\n .replace(/\\{icon\\}/g, category.icon || \"sicon-store\")\n .replace(/\\{name\\}/g, category.name)}></div>\n }\n\n private renderBuyXGetYSection() {\n const details = (this.offersList[0].details as BuyXGetYDetail)\n return [\n details.get.products?.map((product: Product) => (\n <div class=\"s-offer-slide-one-fourth\">\n {this.hasCustomComponent\n ? <this.productCardComponent product={product}></this.productCardComponent>\n : <salla-product-card shadow-on-hover product={product}></salla-product-card>}\n </div>\n )),\n details.get.categories?.map((category: Category) => this.getCategoriesSection(category))\n ];\n }\n\n /**\n * Generates content for the bank section.\n *\n * @param offeredBank - An array of Bank objects.\n * @param name - The title of the current offer.\n * @param description - The description of the current offer.\n * @returns An array of HTML elements representing banks.\n * \n * TODO: loop over the list and filter bank types and pass it to this function\n */\n private renderBankSection() {\n return this.offersList.map((bankOffer: Offer) => {\n return <div class={{ \"s-offer-slide-one-sixth\": this.isMultipleBank, \"s-offer-bank-wrapper-sinlge-item\": !this.isMultipleBank }}>\n <div class={{ \"s-offer-bank-wrapper\": true, \"s-offer-slide-one-sixth\": !this.isMultipleBank, \"s-offer-bank-wrapper-multi-spacer\": this.isMultipleBank }}>\n <div class=\"s-offer-bank-logo\">\n <img src={(bankOffer.details as BankOffer).logo || salla.url.cdn('images/s-empty.png')} data-src={(bankOffer.details as BankOffer).logo} alt={bankOffer.title + \" offer\"} />\n </div>\n <ul class=\"s-offer-bank-payment-wrapper\">\n {(bankOffer.details as BankOffer).payments.map((payment: string) => {\n return <li class=\"s-offer-bank-payment-single\">\n <img\n src={salla.url.cdn('images/payment/' + payment + '.png') || salla.url.cdn('images/s-empty.png')}\n data-src={salla.url.cdn('images/payment/' + payment + '.png')}\n alt=\"payment\" />\n </li>\n })}\n </ul>\n {this.isMultipleBank ?\n <p class=\"s-offer-bank-payment-discount-percent\">\n {`${this.product_discount_text} ${(bankOffer.details as BankOffer).discount_value}${(bankOffer.details as BankOffer).discount_type === \"percentage\" && '%'}`}\n </p>\n : \"\"}\n </div>\n {!this.isMultipleBank ?\n <div class=\"s-offer-bank-message s-offer-slide-one-fourth\">\n <h2>{this.offersList[0].title}</h2>\n <p innerHTML={this.generateBankDescription(this.offersList[0].description, (bankOffer.details as BankOffer).discount_value)}></p>\n </div>\n : \"\"}\n </div>\n })\n }\n\n private generateBankDescription(desc: string, value): string {\n return desc.replace(new RegExp(`${value} %`), `<span class=\"s-offer-bank-message-amount\">${value} %</span>`)\n }\n\n /**\n * Generates content for the discount table section.\n *\n * @param discountTable - An array of Discount objects.\n * @returns An array of HTML elements representing discounts_table.\n */\n private renderDiscountTableSection() {\n const offer: Offer = this.offersList[0];\n let show_discounted_price = (offer.details as DiscountDetailTable).show_price_after_discount;\n return (this.offersList[0].details as DiscountDetailTable).discounts?.map((discount: Discount) => <div class=\"s-offer-slide-one-fourth\">\n <div class=\"s-offer-slide-offer-entry\">\n <div class=\"s-offer-slide-offer-entry-price-quantity-container\">\n <p class=\"s-offer-slide-offer-entry-quantity\">{this.buy_quantity_text(discount.quantity)}</p>\n {show_discounted_price ?\n <div class=\"s-offer-slide-offer-entry-price\">\n <span>{this.offer_with_price_text}</span>\n <span class=\"s-offer-slide-offer-entry-price-amount\">{discount.discounted_amount}</span> <span>{this.userCurrency}</span>\n </div> : \"\"}\n </div>\n <p class=\"s-offer-slide-offer-entry-price-amount-percent\">{this.with_discount_text}\n (<span>{discount.percentage}{!!discount.percentage && '%'}</span>)</p>\n </div>\n </div>\n )\n }\n\n}\n"],"version":3}
1
+ {"file":"salla-offer.entry.cjs.js","mappings":";;;;;;;AAAA,IAAY,QAGX;AAHD,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAChC,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACf,CAAC,EAHW,QAAQ,KAAR,QAAQ,GAGnB,EAAA,CAAA,CAAA;AAED,IAAY,SAMX;AAND,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,SAAA,CAAA,mBAAA,CAAA,GAAA,OAA2B;AAC3B,IAAA,SAAA,CAAA,gBAAA,CAAA,GAAA,iBAAkC;AAClC,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,SAAA,CAAA,UAAA,CAAA,GAAA,aAAwB;AAC1B,CAAC,EANW,SAAS,KAAT,SAAS,GAMpB,EAAA,CAAA,CAAA;;ACXD,MAAM,aAAa,GAAG,khBAAkhB;;MCmB3hB,UAAU,GAAA,MAAA;AAErB,IAAA,WAAA,CAAA,OAAA,EAAA;;;AAoBA;;;;;;;;AAQG;AACK,QAAA,IAAoB,CAAA,oBAAA,GAAW,2BAA2B;;AAGzD,QAAA,IAAU,CAAA,UAAA,GAAY,EAAE;AAExB,QAAA,IAAc,CAAA,cAAA,GAAY,KAAK;AAK/B,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK;AAC5B,QAAA,IAAS,CAAA,SAAA,GAAY,KAAK;QAC1B,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,4CAA4C,CAAC;;AAGnF,QAAA,IAAA,CAAA,qBAAqB,GAAW,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QACvF,IAAkB,CAAA,kBAAA,GAAW,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gCAAgC,CAAC;QAC7E,IAAqB,CAAA,qBAAA,GAAW,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC;QACzE,IAAkB,CAAA,kBAAA,GAAW,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC;QAC3E,IAA0B,CAAA,0BAAA,GAAW,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,wCAAwC,CAAC;QAC7F,IAAiC,CAAA,iCAAA,GAAW,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,0CAA0C,CAAC;QACtG,IAAA,CAAA,iBAAiB,GAAiC,CAAC,QAAQ,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,CAAC;;AAhD/H,QAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAK;YACvB,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC;YACrE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gCAAgC,CAAC;YAC1E,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC;YACtE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC;YACxE,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,wCAAwC,CAAC;YAC1F,IAAI,CAAC,iCAAiC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,0CAA0C,CAAC;AACnG,YAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC3B,SAAC,CAAC;AAEF,QAAA,KAAK,CAAC,OAAO,CAAC,MAAK;YACjB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;YAChD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM;AACnG,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,0CAAE,SAAS,KAAI,uFAAuF;AACvK;AAuCO,IAAA,MAAM,qBAAqB,GAAA;QACjC,IAAI,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,IAAI,EAAE;YACrC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAClD,OAAO,CAAA,YAAA,EAAe,MAAM,CAAA,CAAE;;QAGhC,IAAI,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,aAAa,EAAE;YAC9C,OAAO,CAAA,eAAA,EAAkB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA,CAAE;;AAGxD,QAAA,OAAO,QAAQ;;IAGjB,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC;;;;;AAMzE,QAAA,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;aACnD,IAAI,CAAC,MAAK;YACT,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,4CAA4C,CAAC;AACvH,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB;;AAEF,YAAA,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;AACzE,SAAC;AAEA,aAAA,IAAI,CAAC,YAAY,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACtE,aAAA,IAAI,CAAC,CAAC,GAAG,KAAI;AACZ,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE;AACxC,gBAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;;;AAGvD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAW,CAAC,CAAC;YACvI,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;;;YAGjE,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,cAAc,EAAE;AAC3C,gBAAA,OAAO,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC;;;AAIlC,YAAA,KAAK,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,GAAG;gBACtD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC;gBAChF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;gBAChD,OAAO,IAAI,CAAC,UAAU;;;AAGxB,YAAA,MAAM,IAAI,GAAI,KAAK,CAAC,OAA0B,CAAC,GAAG;AAElD,YAAA,OAAO,IAAI,CAAC,MAAM,KAAK;;kBAEnB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;AAC9E,qBAAA,IAAI,CAAC,CAAC,QAAa,KAAI;AACtB,oBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI;AAC5B,oBAAA,KAAK,CAAC,OAAe,CAAC,GAAG,GAAG,IAAI;AACjC,oBAAA,OAAO,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC;iBACjC,CAAC;kBACF,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE;AAC7B,qBAAA,IAAI,CAAC,CAAC,GAAG,KAAI;AACZ,oBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC;AACjE,oBAAA,KAAK,CAAC,OAAe,CAAC,GAAG,GAAG,IAAI;AACjC,oBAAA,OAAO,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC;AAClC,iBAAC,CAAC;AACR,SAAC;AACA,aAAA,IAAI,CAAC,CAAC,MAAe,KAAI;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;AACpF,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACvB,SAAC;AACA,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;AACf,YAAA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,SAAC,CAAC;;IAGN,gBAAgB,GAAA;QACd,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,4BAA4B,CAAC;QAC/D,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,MAAA,GAAA,MAAA,GAAH,GAAG,CAAE,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC;;IAIhD,cAAc,CAAC,UAAsB,EAAE,GAAU,EAAA;;QAC/C,IAAI,KAAK,GAAe,EAAE;AAE1B,QAAA,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE;AACjC,YAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,EAAE;AAC7C,gBAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAEtB,YAAA,IAAI,CAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,cAAc,0CAAE,MAAM,IAAG,CAAC,EAAE;AACvC,gBAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;;;AAI3E,QAAA,OAAO,KAAK;;;IAId,aAAa,GAAA;AACX,QAAA,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;YAChE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE;YACrC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI;YAEjD,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE;AACzC,gBAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;;AAGnD,YAAA,OAAO,YAAY,QAAQ,CAAA,CAAA,EAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAI,CAAA,EAAA,MAAM,CAAI,CAAA,EAAA,YAAY,EAAE;;QACtF,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,EAAE;;;;IAKb,oBAAoB,GAAA;AAClB,QAAA,IAAI,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;;QAE3D,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE;YACvF,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAC1C,YAAA,OAAO,IAAI;;AAEb,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;QAGrB,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC;;IAG9C,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,IAAI;QAC9E,MAAM,KAAK,GAAU,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAEvC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,0BAA0B,GAAG,IAAI,IAAI,KAAK,CAAC,KAAK;AAClH,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iCAAiC,GAAG,IAAI,IAAI,KAAK,CAAC,WAAW;AAElI,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,aAAa,EAAE,UAAU;AACzB,YAAA,gBAAgB,EAAE,aAAa;YAC/B,eAAe,EAAE,IAAI,CAAC;SACvB;AAED,QAAA,QACEA,OAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,iBAAiB,EAAA,EACzBA,OAAA,CAAA,GAAA,EAAA,EAAG,KAAK,EAAC,sBAAsB,IAAE,IAAI,CAAC,kBAAkB,CAAK,EAG9DA,OAAc,CAAA,cAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,IAAI,EAAC,UAAU,EAAC,EAAE,EAAC,cAAc,IAAK,MAAM,CAAA,EACxDA,OAAA,CAAA,KAAA,EAAA,EAAK,IAAI,EAAC,OAAO,EACd,EAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CACvC,CACO,CACX;;AAIF,IAAA,yBAAyB,CAAC,SAA6B,EAAA;AAC7D,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE;;AAEjC,QAAA,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,qBAAqB,EAAE;;AAGrC,QAAA,OAAO,IAAI,CAAC,0BAA0B,EAAE;;AAG1C;;;;;AAKG;AACK,IAAA,oBAAoB,CAAC,QAAkB,EAAA;AAC7C,QAAA,OAAOA,OAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,sCAAsC,EAAC,SAAS,EAAE,IAAI,CAAC;AACtE,iBAAA,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG;iBAChC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,IAAI,aAAa;iBACnD,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAQ;;IAGxC,qBAAqB,GAAA;;QAC3B,MAAM,OAAO,GAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAA0B;QAC9D,OAAO;YACL,CAAA,EAAA,GAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,GAAG,CAAC,CAAC,OAAgB,MACzCA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,0BAA0B,EAAA,EAClC,IAAI,CAAC;AACJ,kBAAEA,QAAC,IAAI,CAAC,oBAAoB,EAAC,EAAA,OAAO,EAAE,OAAO,EAA8B;AAC3E,kBAAEA,yDAAoC,OAAO,EAAE,OAAO,EAAuB,CAAA,CAC3E,CACP,CAAC;AACF,YAAA,CAAA,EAAA,GAAA,OAAO,CAAC,GAAG,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,GAAG,CAAC,CAAC,QAAkB,KAAK,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;SACxF;;AAGH;;;;;;;;;AASG;IACK,iBAAiB,GAAA;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAgB,KAAI;YAC9C,OAAOA,iBAAK,KAAK,EAAE,EAAE,yBAAyB,EAAE,IAAI,CAAC,cAAc,EAAE,kCAAkC,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,EAAA,EAC7HA,OAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,mCAAmC,EAAE,IAAI,CAAC,cAAc,EAAE,EAAA,EACrJA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,mBAAmB,EAAA,EAC5BA,OAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAG,SAAS,CAAC,OAAqB,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAA,UAAA,EAAa,SAAS,CAAC,OAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,KAAK,GAAG,QAAQ,GAAI,CACxK,EACNA,OAAA,CAAA,IAAA,EAAA,EAAI,KAAK,EAAC,8BAA8B,EAAA,EACpC,SAAS,CAAC,OAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAe,KAAI;AACjE,gBAAA,OAAOA,OAAA,CAAA,IAAA,EAAA,EAAI,KAAK,EAAC,6BAA6B,EAAA,EAC5CA,OAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,GAAG,OAAO,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,cACrF,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,GAAG,OAAO,GAAG,MAAM,CAAC,EAC7D,GAAG,EAAC,SAAS,EAAA,CAAG,CACf;AACP,aAAC,CAAC,CACC,EACJ,IAAI,CAAC,cAAc;AAClB,gBAAAA,OAAG,CAAA,GAAA,EAAA,EAAA,KAAK,EAAC,uCAAuC,EAC7C,EAAA,CAAA,EAAG,IAAI,CAAC,qBAAqB,CAAK,CAAA,EAAA,SAAS,CAAC,OAAqB,CAAC,cAAc,CAAI,EAAA,SAAS,CAAC,OAAqB,CAAC,aAAa,KAAK,YAAY,IAAI,GAAG,EAAE;kBAE5J,EAAE,CACF,EACL,CAAC,IAAI,CAAC,cAAc;gBACnBA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,+CAA+C,EAAA,EACxDA,OAAK,CAAA,IAAA,EAAA,IAAA,EAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAM,EACnCA,OAAG,CAAA,GAAA,EAAA,EAAA,SAAS,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,EAAG,SAAS,CAAC,OAAqB,CAAC,cAAc,CAAC,EAAA,CAAM;kBAEjI,EAAE,CACF;AACR,SAAC,CAAC;;IAGI,uBAAuB,CAAC,IAAY,EAAE,KAAK,EAAA;AACjD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,CAAC,EAAE,CAAA,0CAAA,EAA6C,KAAK,CAAA,SAAA,CAAW,CAAC;;AAG9G;;;;;AAKG;IACK,0BAA0B,GAAA;;QAChC,MAAM,KAAK,GAAU,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACvC,QAAA,IAAI,qBAAqB,GAAI,KAAK,CAAC,OAA+B,CAAC,yBAAyB;AAC5F,QAAA,OAAO,CAAA,EAAA,GAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAA+B,CAAC,SAAS,0CAAE,GAAG,CAAC,CAAC,QAAkB,KAAKA,OAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,0BAA0B,EAAA,EACrIA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,2BAA2B,EAAA,EACpCA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,oDAAoD,EAAA,EAC7DA,OAAA,CAAA,GAAA,EAAA,EAAG,KAAK,EAAC,oCAAoC,EAAA,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAK,EAC5F,qBAAqB;YACpBA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,iCAAiC,EAAA,EAC1CA,OAAO,CAAA,MAAA,EAAA,IAAA,EAAA,IAAI,CAAC,qBAAqB,CAAQ,EACzCA,OAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAC,wCAAwC,IAAE,QAAQ,CAAC,iBAAiB,CAAQ,OAACA,OAAO,CAAA,MAAA,EAAA,IAAA,EAAA,IAAI,CAAC,YAAY,CAAQ,CACrH,GAAG,EAAE,CACT,EACNA,OAAG,CAAA,GAAA,EAAA,EAAA,KAAK,EAAC,gDAAgD,EAAA,EAAE,IAAI,CAAC,kBAAkB,OAC/EA,OAAA,CAAA,MAAA,EAAA,IAAA,EAAO,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,GAAG,CAAQ,MAAK,CACpE,CACF,CACL;;;;;;;;","names":["h"],"sources":["src/components/salla-offer/interfaces.ts","src/components/salla-offer/salla-offer.scss?tag=salla-offer","src/components/salla-offer/salla-offer.tsx"],"sourcesContent":["export enum PageType {\n ProductDetail = \"product.single\",\n Cart = \"cart\"\n}\n\nexport enum OfferType {\n Conditional = \"conditional\",\n PercentageOrFixed = \"fixed\",\n DiscountsTable = \"discounts_table\",\n Bank = \"bank\",\n BuyXGetY = \"buy_x_get_y\"\n}\n\n\nexport interface DiscountDetailFixed {\n discount_type: \"fixed\";\n min_spend: number;\n discount_value: number;\n}\n\nexport interface DiscountDetailFreeProduct {\n discount_type: \"free_product\";\n min_spend: number;\n discount_value: number;\n}\n\nexport interface DiscountDetailConditional extends Array<DiscountDetailFixed | DiscountDetailFreeProduct> {}\n\nexport interface DiscountDetailPercentageFixed {\n apply_to: \"all\" | \"products\" | \"categories\" | \"payment_methods\";\n targets: Array<string | number>;\n ends_at: number;\n min_spend: number;\n discount_value: number;\n}\n\nexport interface Discount {\n discounted_amount: any;\n quantity: number;\n percentage: number;\n}\n\nexport interface DiscountDetailTable {\n apply_to: \"all\" | \"products\" | \"categories\" | \"payment_methods\" | \"order\";\n discount_value: number;\n ends_at: string;\n min_items: number;\n min_spend: number;\n show_price_after_discount: boolean;\n discounts: Discount[];\n}\n\nexport interface BankOffer {\n logo: string;\n discount_value: number;\n discount_type: string;\n minimum_spend: number;\n payments: string[];\n}\n\nexport interface BuyXGetYDetail {\n ends_at: number;\n buy: {\n source: \"product\" | \"category\";\n source_value: number[];\n quantity: number;\n };\n get: {\n source: \"products\" | \"category\";\n source_value: number[];\n type: \"free_product\" | \"percentage\" | \"fixed\";\n value: number;\n products?: Product[];//we will set this dynamically\n categories?: Category[];//we will set this dynamically\n };\n}\n\nexport interface Offer {\n id: number;\n title: string;\n description: string;\n type: OfferType | \"conditional\" | \"fixed\" | \"discounts_table\" | \"bank\" | \"buy_x_get_y\";\n details: DiscountDetailConditional | DiscountDetailPercentageFixed | DiscountDetailTable | BankOffer | BuyXGetYDetail;\n}\n\nexport interface Product {\n id: number;\n type: string;\n status: string;\n is_available: boolean;\n sku: string;\n name: string;\n price: { amount: number; currency: string; };\n promotion: { title: string; sub_title: string; };\n sale_price: { amount: number; currency: string; };\n regular_price: { amount: number; currency: string; };\n currency: string;\n url: string;\n thumbnail: string;\n has_special_price: boolean;\n favorite?: any;\n}\n\nexport interface Category {\n id?: string;\n id_?: number;\n name?: string;\n url?: string;\n icon?: string;\n sub_categories?: Category[];\n items?: any[] | null;\n}\n\nexport interface Currency {\n code: string | 'SAR';\n name: string;\n symbol: string;\n amount?: number;\n country_code?: string;\n}\n",".s-offer-wrapper .s-slider-block__title {\n h2 {\n font-size: 1.125rem;\n line-height: 1.75rem;\n color: #f87171;\n\n &::before {\n font-family: \"sallaicons\";\n content: \"\\ee30\" !important;\n position: absolute;\n top: 1rem;\n font-size: 3rem;\n font-weight: 400;\n line-height: 1;\n color: #fef2f2;\n }\n }\n}\n\n.s-offer-bank-wrapper-sinlge-item{\n display: flex;\n align-items: center !important;\n gap: 14px;\n}\n\n.s-offer-bank-wrapper {\n display: flex !important;\n width: 100% !important;\n}\n\n// .s-offer-bank-wrapper {\n // \n// }","import { Component, Element, Prop, State, h } from '@stencil/core';\nimport { Offer, Category, Product, Discount, Currency, BuyXGetYDetail, PageType, OfferType, BankOffer, DiscountDetailTable } from './interfaces';\n\n\n/**\n * `salla-offer` is a StencilJS component that displays offers, categories, products, banks, and discount information.\n * It uses the `salla-slider` component for carousel functionality.\n *\n * @slot category - The slot for customizing the category entry layout.\n * \n * @csspart custom - Custom CSS part to target specific elements in the component.\n *\n * @example\n * <salla-offer product-id=\"123\"></salla-offer>\n */\n@Component({\n tag: 'salla-offer',\n styleUrl: 'salla-offer.scss',\n})\nexport class SallaOffer {\n\n constructor() {\n // Language\n salla.lang.onLoaded(() => {\n this.offer_with_price_text = salla.lang.get('pages.offer.with_price');\n this.with_discount_text = salla.lang.get('pages.products.with_a_discount');\n this.product_discount_text = salla.lang.get('pages.products.discount');\n this.special_offer_text = salla.lang.get('pages.products.special_offer');\n this.multipleBankOfferTitleText = salla.lang.get('pages.offer.multiple_bank_offers_title');\n this.multipleBankOfferTitleDescription = salla.lang.get('pages.offer.multiple_bank_offers_message');\n this.buy_quantity_text(0);\n })\n\n salla.onReady(() => {\n this.currentPage = salla.config.get('page.slug')\n this.userCurrency = salla.config.get('currencies')[salla.config.get('user.currency_code')].symbol\n });\n\n this.categorySlot = this.host.querySelector('[slot=\"category\"]')?.innerHTML || '<a href={url} class=\"s-offer-slide-cat-entry\"><i class={icon}></i><h4>{name}</h4></a>';\n }\n\n /**\n * Custom Card Component for the Salla Products List.\n *\n * This component allows you to customize the appearance of individual product cards within a Salla Products List.\n *\n * @example\n * <salla-products-list product-card-component=\"my-custom-card-style1\" ...\n * <salla-products-list product-card-component=\"my-custom-card-style2\" ...\n */\n @Prop() productCardComponent: string = 'custom-salla-product-card';\n\n // Declare component state variables\n @State() offersList: Offer[] = [];\n @State() userCurrency: Currency;\n @State() isMultipleBank: boolean = false;\n @State() title?: string;\n @State() currentPage: string;\n @State() hasCustomComponent: boolean;\n\n @State() isBankOffer: boolean = false;\n @State() canRender: boolean = false;\n @State() showOffer: boolean = salla.config.get('store.settings.product.show_special_offers');\n\n // Default translated texts\n @State() offer_with_price_text: string = salla.lang.get('pages.offer.with_price', { price: '' });\n @State() with_discount_text: string = salla.lang.get('pages.products.with_a_discount')\n @State() product_discount_text: string = salla.lang.get('pages.products.discount')\n @State() special_offer_text: string = salla.lang.get('pages.products.special_offer')\n @State() multipleBankOfferTitleText: string = salla.lang.get('pages.offer.multiple_bank_offers_title')\n @State() multipleBankOfferTitleDescription: string = salla.lang.get('pages.offer.multiple_bank_offers_message')\n @State() buy_quantity_text: (quantity: number) => string = (quantity) => salla.lang.get('pages.offer.buy_quantity', { quantity })\n\n // Reference to the host element\n @Element() host: HTMLElement;\n\n private categorySlot: string;\n\n private async getEndpointByPageName(): Promise<string> {\n if (this.currentPage == PageType.Cart) {\n const cartId = await Salla.cart.getCurrentCartId();\n return `offers/cart/${cartId}`;\n }\n\n if (this.currentPage == PageType.ProductDetail) {\n return `offers/product/${salla.config.get('page.id')}`;\n }\n\n return \"offers\";\n }\n\n componentWillLoad() {\n this.hasCustomComponent = !!customElements.get(this.productCardComponent);\n // let offers = this.getOffersFromStorage();\n // if (offers) {\n // return offers.then(offersFromStorage => this.offersList = offersFromStorage);\n // }\n\n return (new Promise(resolve => salla.onReady(resolve)))\n .then(() => {\n this.showOffer = !salla.url.is_page('product.single') || salla.config.get('store.settings.product.show_special_offers')\n if (this.showOffer) {\n return;\n }\n throw new Error(\"Merchant disabled showing the offers on product page\");\n }\n )\n .then(async () => salla.api.request(await this.getEndpointByPageName()))\n .then((res) => {\n if (!(this.offersList = res.data).length) {\n throw new Error('salla-offers:: There is no offers!');\n }\n //we support these offers only\n const offer = this.offersList.find(offer => [OfferType.Bank, OfferType.BuyXGetY, OfferType.DiscountsTable].includes(offer.type as any));\n if (!offer) {\n throw new Error('salla-offers:: Offer type not supported yet!');\n }\n //because there is no need for special handling for discounts table, just skip the other cases\n if (offer.type === OfferType.DiscountsTable) {\n return this.offersList = [offer];\n }\n\n //if it's banks offer, we need to include the other banks overs\n if ((this.isBankOffer = offer.type === OfferType.Bank)) {\n this.offersList = this.offersList.filter(offer => offer.type === OfferType.Bank);\n this.isMultipleBank = this.offersList.length > 1;\n return this.offersList;\n }\n //BuyXGetY offers\n const getY = (offer.details as BuyXGetYDetail).get;\n\n return getY.source === 'products'\n //todo:: avoid this request, and the handling for the products, just use `salla-products-slider` and don't forget to pass the customcard\n ? salla.product.api.fetch({ source: \"selected\", source_value: getY.source_value })\n .then((response: any) => {\n getY.products = response.data;\n (offer.details as any).get = getY;\n return this.offersList = [offer];\n })//set the products\n : salla.product.api.categories()//get all categories in one query, then extract only the selected one, instead of sending multi requests\n .then((res) => {\n getY.categories = this.findCategories(res.data, getY.source_value);\n (offer.details as any).get = getY;\n return this.offersList = [offer];\n });\n })\n .then((offers: Offer[]) => {\n salla.storage.set(this.getStorageKey(), { offers, stored_at: new Date().getTime() });\n this.canRender = true;\n })\n .catch((error) => {\n salla.logger.warn(error)\n });\n }\n\n componentDidLoad() {\n let nav = this.host.querySelector('.s-slider-block__title-nav');\n nav?.classList.add(\"s-offer-bank-payment-nav\")\n }\n\n\n findCategories(categories: Category[], ids: any[]): Category[] {\n let found: Category[] = [];\n\n for (const category of categories) {\n if (ids.includes(category.id_ || category.id)) { //here we are using || because we are planning to drop `id_`\n found.push(category);\n }\n if (category.sub_categories?.length > 0) {\n found = found.concat(this.findCategories(category.sub_categories, ids));\n }\n }\n\n return found;\n }\n\n //todo::add to the key params, to make sure it will support multi offers in the same page if it's wanted\n getStorageKey(): string {\n try {\n const pageSlug = salla.config.get('page.slug').replace('.', '_');\n const locale = salla.lang.getLocale();\n const currencyCode = salla.config.currency().code;\n\n if (!pageSlug || !locale || !currencyCode) {\n throw new Error('Unable to get the storage key.');\n }\n\n return `s-offers-${pageSlug}-${salla.config.get('page.id')}-${locale}-${currencyCode}`;\n } catch (error) {\n return '';\n }\n }\n\n //@ts-ignore\n getOffersFromStorage(): null | Promise<Offer[]> {\n let storageOffers = salla.storage.get(this.getStorageKey());\n //if the offers not existed, or it has been stored before 10 minutes from now, ignore it;\n if (!storageOffers || storageOffers.stored_at < (new Date().getTime() - 10 * 60 * 1000)) {\n salla.storage.remove(this.getStorageKey());\n return null;\n }\n this.canRender = true;\n\n //return it as resolve to support .then\n return Promise.resolve(storageOffers.offers);\n }\n\n render() {\n if (!this.offersList.length || !this.canRender || !this.showOffer) return null;\n const offer: Offer = this.offersList[0];\n\n const blockTitle = this.isBankOffer ? (this.isMultipleBank ? this.multipleBankOfferTitleText : null) : offer.title;\n const blockSubTitle = this.isBankOffer ? (this.isMultipleBank ? this.multipleBankOfferTitleDescription : null) : offer.description;\n\n const titles = {\n 'block-title': blockTitle,\n 'block-subTitle': blockSubTitle,\n 'show-controls': this.isMultipleBank\n };\n\n return (\n <div class=\"s-offer-wrapper\">\n {<p class=\"s-offer-corner-badge\">{this.special_offer_text}</p>}\n {/* discounts table is not a slider, it's a table🤔 */}\n {/* single bank offer is not a slider, it's a dom without slider🤔 */}\n <salla-slider type=\"carousel\" id=\"offer-slider\" {...titles}>\n <div slot='items'>\n {this.renderSectionForOfferType(offer.type)}\n </div>\n </salla-slider>\n </div>\n );\n }\n\n private renderSectionForOfferType(offerType: OfferType | string) {\n if (this.isBankOffer) {\n return this.renderBankSection();\n }\n if (offerType == OfferType.BuyXGetY) {\n return this.renderBuyXGetYSection();\n }\n\n return this.renderDiscountTableSection();\n }\n\n /**\n * Generates content for the categories section.\n *\n * @param offeredCategories - An array of Category objects.\n * @returns An array of HTML elements representing categories.\n */\n private getCategoriesSection(category: Category) {\n return <div class=\"s-offer-slide-one-sixth swiper-slide\" innerHTML={this.categorySlot\n .replace(/\\{url\\}/g, category.url)\n .replace(/\\{icon\\}/g, category.icon || \"sicon-store\")\n .replace(/\\{name\\}/g, category.name)}></div>\n }\n\n private renderBuyXGetYSection() {\n const details = (this.offersList[0].details as BuyXGetYDetail)\n return [\n details.get.products?.map((product: Product) => (\n <div class=\"s-offer-slide-one-fourth\">\n {this.hasCustomComponent\n ? <this.productCardComponent product={product}></this.productCardComponent>\n : <salla-product-card shadow-on-hover product={product}></salla-product-card>}\n </div>\n )),\n details.get.categories?.map((category: Category) => this.getCategoriesSection(category))\n ];\n }\n\n /**\n * Generates content for the bank section.\n *\n * @param offeredBank - An array of Bank objects.\n * @param name - The title of the current offer.\n * @param description - The description of the current offer.\n * @returns An array of HTML elements representing banks.\n * \n * TODO: loop over the list and filter bank types and pass it to this function\n */\n private renderBankSection() {\n return this.offersList.map((bankOffer: Offer) => {\n return <div class={{ \"s-offer-slide-one-sixth\": this.isMultipleBank, \"s-offer-bank-wrapper-sinlge-item\": !this.isMultipleBank }}>\n <div class={{ \"s-offer-bank-wrapper\": true, \"s-offer-slide-one-sixth\": !this.isMultipleBank, \"s-offer-bank-wrapper-multi-spacer\": this.isMultipleBank }}>\n <div class=\"s-offer-bank-logo\">\n <img src={(bankOffer.details as BankOffer).logo || salla.url.cdn('images/s-empty.png')} data-src={(bankOffer.details as BankOffer).logo} alt={bankOffer.title + \" offer\"} />\n </div>\n <ul class=\"s-offer-bank-payment-wrapper\">\n {(bankOffer.details as BankOffer).payments.map((payment: string) => {\n return <li class=\"s-offer-bank-payment-single\">\n <img\n src={salla.url.cdn('images/payment/' + payment + '.png') || salla.url.cdn('images/s-empty.png')}\n data-src={salla.url.cdn('images/payment/' + payment + '.png')}\n alt=\"payment\" />\n </li>\n })}\n </ul>\n {this.isMultipleBank ?\n <p class=\"s-offer-bank-payment-discount-percent\">\n {`${this.product_discount_text} ${(bankOffer.details as BankOffer).discount_value}${(bankOffer.details as BankOffer).discount_type === \"percentage\" && '%'}`}\n </p>\n : \"\"}\n </div>\n {!this.isMultipleBank ?\n <div class=\"s-offer-bank-message s-offer-slide-one-fourth\">\n <h2>{this.offersList[0].title}</h2>\n <p innerHTML={this.generateBankDescription(this.offersList[0].description, (bankOffer.details as BankOffer).discount_value)}></p>\n </div>\n : \"\"}\n </div>\n })\n }\n\n private generateBankDescription(desc: string, value): string {\n return desc.replace(new RegExp(`${value} %`), `<span class=\"s-offer-bank-message-amount\">${value} %</span>`)\n }\n\n /**\n * Generates content for the discount table section.\n *\n * @param discountTable - An array of Discount objects.\n * @returns An array of HTML elements representing discounts_table.\n */\n private renderDiscountTableSection() {\n const offer: Offer = this.offersList[0];\n let show_discounted_price = (offer.details as DiscountDetailTable).show_price_after_discount;\n return (this.offersList[0].details as DiscountDetailTable).discounts?.map((discount: Discount) => <div class=\"s-offer-slide-one-fourth\">\n <div class=\"s-offer-slide-offer-entry\">\n <div class=\"s-offer-slide-offer-entry-price-quantity-container\">\n <p class=\"s-offer-slide-offer-entry-quantity\">{this.buy_quantity_text(discount.quantity)}</p>\n {show_discounted_price ?\n <div class=\"s-offer-slide-offer-entry-price\">\n <span>{this.offer_with_price_text}</span>\n <span class=\"s-offer-slide-offer-entry-price-amount\">{discount.discounted_amount}</span> <span>{this.userCurrency}</span>\n </div> : \"\"}\n </div>\n <p class=\"s-offer-slide-offer-entry-price-amount-percent\">{this.with_discount_text}\n (<span>{discount.percentage}{!!discount.percentage && '%'}</span>)</p>\n </div>\n </div>\n )\n }\n\n}\n"],"version":3}
@@ -1 +1 @@
1
- {"version":3,"file":"salla-offer.entry.cjs.js","sources":["src/components/salla-offer/interfaces.ts","src/components/salla-offer/salla-offer.scss?tag=salla-offer","src/components/salla-offer/salla-offer.tsx"],"sourcesContent":["export enum PageType {\n ProductDetail = \"product.single\",\n Cart = \"cart\"\n}\n\nexport enum OfferType {\n Conditional = \"conditional\",\n PercentageOrFixed = \"fixed\",\n DiscountsTable = \"discounts_table\",\n Bank = \"bank\",\n BuyXGetY = \"buy_x_get_y\"\n}\n\n\nexport interface DiscountDetailFixed {\n discount_type: \"fixed\";\n min_spend: number;\n discount_value: number;\n}\n\nexport interface DiscountDetailFreeProduct {\n discount_type: \"free_product\";\n min_spend: number;\n discount_value: number;\n}\n\nexport interface DiscountDetailConditional extends Array<DiscountDetailFixed | DiscountDetailFreeProduct> {}\n\nexport interface DiscountDetailPercentageFixed {\n apply_to: \"all\" | \"products\" | \"categories\" | \"payment_methods\";\n targets: Array<string | number>;\n ends_at: number;\n min_spend: number;\n discount_value: number;\n}\n\nexport interface Discount {\n discounted_amount: any;\n quantity: number;\n percentage: number;\n}\n\nexport interface DiscountDetailTable {\n apply_to: \"all\" | \"products\" | \"categories\" | \"payment_methods\" | \"order\";\n discount_value: number;\n ends_at: string;\n min_items: number;\n min_spend: number;\n show_price_after_discount: boolean;\n discounts: Discount[];\n}\n\nexport interface BankOffer {\n logo: string;\n discount_value: number;\n discount_type: string;\n minimum_spend: number;\n payments: string[];\n}\n\nexport interface BuyXGetYDetail {\n ends_at: number;\n buy: {\n source: \"product\" | \"category\";\n source_value: number[];\n quantity: number;\n };\n get: {\n source: \"products\" | \"category\";\n source_value: number[];\n type: \"free_product\" | \"percentage\" | \"fixed\";\n value: number;\n products?: Product[];//we will set this dynamically\n categories?: Category[];//we will set this dynamically\n };\n}\n\nexport interface Offer {\n id: number;\n title: string;\n description: string;\n type: OfferType | \"conditional\" | \"fixed\" | \"discounts_table\" | \"bank\" | \"buy_x_get_y\";\n details: DiscountDetailConditional | DiscountDetailPercentageFixed | DiscountDetailTable | BankOffer | BuyXGetYDetail;\n}\n\nexport interface Product {\n id: number;\n type: string;\n status: string;\n is_available: boolean;\n sku: string;\n name: string;\n price: { amount: number; currency: string; };\n promotion: { title: string; sub_title: string; };\n sale_price: { amount: number; currency: string; };\n regular_price: { amount: number; currency: string; };\n currency: string;\n url: string;\n thumbnail: string;\n has_special_price: boolean;\n favorite?: any;\n}\n\nexport interface Category {\n id?: string;\n id_?: number;\n name?: string;\n url?: string;\n icon?: string;\n sub_categories?: Category[];\n items?: any[] | null;\n}\n\nexport interface Currency {\n code: string | 'SAR';\n name: string;\n symbol: string;\n amount?: number;\n country_code?: string;\n}\n",".s-offer-wrapper .s-slider-block__title {\n h2 {\n font-size: 1.125rem;\n line-height: 1.75rem;\n color: #f87171;\n\n &::before {\n font-family: \"sallaicons\";\n content: \"\\ee30\" !important;\n position: absolute;\n top: 1rem;\n font-size: 3rem;\n font-weight: 400;\n line-height: 1;\n color: #fef2f2;\n }\n }\n}\n\n.s-offer-bank-wrapper-sinlge-item{\n display: flex;\n align-items: center !important;\n gap: 14px;\n}\n\n.s-offer-bank-wrapper {\n display: flex !important;\n width: 100% !important;\n}\n\n// .s-offer-bank-wrapper {\n // \n// }","import { Component, Element, Prop, State, h } from '@stencil/core';\nimport { Offer, Category, Product, Discount, Currency, BuyXGetYDetail, PageType, OfferType, BankOffer, DiscountDetailTable } from './interfaces';\n\n\n/**\n * `salla-offer` is a StencilJS component that displays offers, categories, products, banks, and discount information.\n * It uses the `salla-slider` component for carousel functionality.\n *\n * @slot category - The slot for customizing the category entry layout.\n * \n * @csspart custom - Custom CSS part to target specific elements in the component.\n *\n * @example\n * <salla-offer product-id=\"123\"></salla-offer>\n */\n@Component({\n tag: 'salla-offer',\n styleUrl: 'salla-offer.scss',\n})\nexport class SallaOffer {\n\n constructor() {\n // Language\n salla.lang.onLoaded(() => {\n this.offer_with_price_text = salla.lang.get('pages.offer.with_price');\n this.with_discount_text = salla.lang.get('pages.products.with_a_discount');\n this.product_discount_text = salla.lang.get('pages.products.discount');\n this.special_offer_text = salla.lang.get('pages.products.special_offer');\n this.multipleBankOfferTitleText = salla.lang.get('pages.offer.multiple_bank_offers_title');\n this.multipleBankOfferTitleDescription = salla.lang.get('pages.offer.multiple_bank_offers_message');\n this.buy_quantity_text(0);\n })\n\n salla.onReady(() => {\n this.currentPage = salla.config.get('page.slug')\n this.userCurrency = salla.config.get('currencies')[salla.config.get('user.currency_code')].symbol\n });\n\n this.categorySlot = this.host.querySelector('[slot=\"category\"]')?.innerHTML || '<a href={url} class=\"s-offer-slide-cat-entry\"><i class={icon}></i><h4>{name}</h4></a>';\n }\n\n /**\n * Custom Card Component for the Salla Products List.\n *\n * This component allows you to customize the appearance of individual product cards within a Salla Products List.\n *\n * @example\n * <salla-products-list product-card-component=\"my-custom-card-style1\" ...\n * <salla-products-list product-card-component=\"my-custom-card-style2\" ...\n */\n @Prop() productCardComponent: string = 'custom-salla-product-card';\n\n // Declare component state variables\n @State() offersList: Offer[] = [];\n @State() userCurrency: Currency;\n @State() isMultipleBank: boolean = false;\n @State() title?: string;\n @State() currentPage: string;\n @State() hasCustomComponent: boolean;\n\n @State() isBankOffer: boolean = false;\n @State() canRender: boolean = false;\n @State() showOffer: boolean = salla.config.get('store.settings.product.show_special_offers');\n\n // Default translated texts\n @State() offer_with_price_text: string = salla.lang.get('pages.offer.with_price', { price: '' });\n @State() with_discount_text: string = salla.lang.get('pages.products.with_a_discount')\n @State() product_discount_text: string = salla.lang.get('pages.products.discount')\n @State() special_offer_text: string = salla.lang.get('pages.products.special_offer')\n @State() multipleBankOfferTitleText: string = salla.lang.get('pages.offer.multiple_bank_offers_title')\n @State() multipleBankOfferTitleDescription: string = salla.lang.get('pages.offer.multiple_bank_offers_message')\n @State() buy_quantity_text: (quantity: number) => string = (quantity) => salla.lang.get('pages.offer.buy_quantity', { quantity })\n\n // Reference to the host element\n @Element() host: HTMLElement;\n\n private categorySlot: string;\n\n private getEndpointByPageName(): string {\n return {\n [PageType.Cart]: `offers/cart/${salla.storage.get('cart.id')}`,\n [PageType.ProductDetail]: `offers/product/${salla.config.get('page.id')}`,\n }[this.currentPage] || \"offers\";\n }\n\n componentWillLoad() {\n this.hasCustomComponent = !!customElements.get(this.productCardComponent);\n // let offers = this.getOffersFromStorage();\n // if (offers) {\n // return offers.then(offersFromStorage => this.offersList = offersFromStorage);\n // }\n\n return (new Promise(resolve => salla.onReady(resolve)))\n .then(() => {\n this.showOffer = !salla.url.is_page('product.single') || salla.config.get('store.settings.product.show_special_offers')\n if (this.showOffer) {\n return;\n }\n throw new Error(\"Merchant disabled showing the offers on product page\");\n }\n )\n .then(() => salla.api.request(this.getEndpointByPageName()))\n .then((res) => {\n if (!(this.offersList = res.data).length) {\n throw new Error('salla-offers:: There is no offers!');\n }\n //we support these offers only\n const offer = this.offersList.find(offer => [OfferType.Bank, OfferType.BuyXGetY, OfferType.DiscountsTable].includes(offer.type as any));\n if (!offer) {\n throw new Error('salla-offers:: Offer type not supported yet!');\n }\n //because there is no need for special handling for discounts table, just skip the other cases\n if (offer.type === OfferType.DiscountsTable) {\n return this.offersList = [offer];\n }\n\n //if it's banks offer, we need to include the other banks overs\n if ((this.isBankOffer = offer.type === OfferType.Bank)) {\n this.offersList = this.offersList.filter(offer => offer.type === OfferType.Bank);\n this.isMultipleBank = this.offersList.length > 1;\n return this.offersList;\n }\n //BuyXGetY offers\n const getY = (offer.details as BuyXGetYDetail).get;\n\n return getY.source === 'products'\n //todo:: avoid this request, and the handling for the products, just use `salla-products-slider` and don't forget to pass the customcard\n ? salla.product.api.fetch({ source: \"selected\", source_value: getY.source_value })\n .then((response: any) => {\n getY.products = response.data;\n (offer.details as any).get = getY;\n return this.offersList = [offer];\n })//set the products\n : salla.product.api.categories()//get all categories in one query, then extract only the selected one, instead of sending multi requests\n .then((res) => {\n getY.categories = this.findCategories(res.data, getY.source_value);\n (offer.details as any).get = getY;\n return this.offersList = [offer];\n });\n })\n .then((offers: Offer[]) => {\n salla.storage.set(this.getStorageKey(), { offers, stored_at: new Date().getTime() });\n this.canRender = true;\n })\n .catch((error) => {\n salla.logger.warn(error)\n });\n }\n\n componentDidLoad() {\n let nav = this.host.querySelector('.s-slider-block__title-nav');\n nav?.classList.add(\"s-offer-bank-payment-nav\")\n }\n\n\n findCategories(categories: Category[], ids: any[]): Category[] {\n let found: Category[] = [];\n\n for (const category of categories) {\n if (ids.includes(category.id_ || category.id)) { //here we are using || because we are planning to drop `id_`\n found.push(category);\n }\n if (category.sub_categories?.length > 0) {\n found = found.concat(this.findCategories(category.sub_categories, ids));\n }\n }\n\n return found;\n }\n\n //todo::add to the key params, to make sure it will support multi offers in the same page if it's wanted\n getStorageKey(): string {\n try {\n const pageSlug = salla.config.get('page.slug').replace('.', '_');\n const locale = salla.lang.getLocale();\n const currencyCode = salla.config.currency().code;\n\n if (!pageSlug || !locale || !currencyCode) {\n throw new Error('Unable to get the storage key.');\n }\n\n return `s-offers-${pageSlug}-${salla.config.get('page.id')}-${locale}-${currencyCode}`;\n } catch (error) {\n return '';\n }\n }\n\n //@ts-ignore\n getOffersFromStorage(): null | Promise<Offer[]> {\n let storageOffers = salla.storage.get(this.getStorageKey());\n //if the offers not existed, or it has been stored before 10 minutes from now, ignore it;\n if (!storageOffers || storageOffers.stored_at < (new Date().getTime() - 10 * 60 * 1000)) {\n salla.storage.remove(this.getStorageKey());\n return null;\n }\n this.canRender = true;\n\n //return it as resolve to support .then\n return Promise.resolve(storageOffers.offers);\n }\n\n render() {\n if (!this.offersList.length || !this.canRender || !this.showOffer) return null;\n const offer: Offer = this.offersList[0];\n\n const blockTitle = this.isBankOffer ? (this.isMultipleBank ? this.multipleBankOfferTitleText : null) : offer.title;\n const blockSubTitle = this.isBankOffer ? (this.isMultipleBank ? this.multipleBankOfferTitleDescription : null) : offer.description;\n\n const titles = {\n 'block-title': blockTitle,\n 'block-subTitle': blockSubTitle,\n 'show-controls': this.isMultipleBank\n };\n\n return (\n <div class=\"s-offer-wrapper\">\n {<p class=\"s-offer-corner-badge\">{this.special_offer_text}</p>}\n {/* discounts table is not a slider, it's a table🤔 */}\n {/* single bank offer is not a slider, it's a dom without slider🤔 */}\n <salla-slider type=\"carousel\" id=\"offer-slider\" {...titles}>\n <div slot='items'>\n {this.renderSectionForOfferType(offer.type)}\n </div>\n </salla-slider>\n </div>\n );\n }\n\n private renderSectionForOfferType(offerType: OfferType | string) {\n if (this.isBankOffer) {\n return this.renderBankSection();\n }\n if (offerType == OfferType.BuyXGetY) {\n return this.renderBuyXGetYSection();\n }\n\n return this.renderDiscountTableSection();\n }\n\n /**\n * Generates content for the categories section.\n *\n * @param offeredCategories - An array of Category objects.\n * @returns An array of HTML elements representing categories.\n */\n private getCategoriesSection(category: Category) {\n return <div class=\"s-offer-slide-one-sixth swiper-slide\" innerHTML={this.categorySlot\n .replace(/\\{url\\}/g, category.url)\n .replace(/\\{icon\\}/g, category.icon || \"sicon-store\")\n .replace(/\\{name\\}/g, category.name)}></div>\n }\n\n private renderBuyXGetYSection() {\n const details = (this.offersList[0].details as BuyXGetYDetail)\n return [\n details.get.products?.map((product: Product) => (\n <div class=\"s-offer-slide-one-fourth\">\n {this.hasCustomComponent\n ? <this.productCardComponent product={product}></this.productCardComponent>\n : <salla-product-card shadow-on-hover product={product}></salla-product-card>}\n </div>\n )),\n details.get.categories?.map((category: Category) => this.getCategoriesSection(category))\n ];\n }\n\n /**\n * Generates content for the bank section.\n *\n * @param offeredBank - An array of Bank objects.\n * @param name - The title of the current offer.\n * @param description - The description of the current offer.\n * @returns An array of HTML elements representing banks.\n * \n * TODO: loop over the list and filter bank types and pass it to this function\n */\n private renderBankSection() {\n return this.offersList.map((bankOffer: Offer) => {\n return <div class={{ \"s-offer-slide-one-sixth\": this.isMultipleBank, \"s-offer-bank-wrapper-sinlge-item\": !this.isMultipleBank }}>\n <div class={{ \"s-offer-bank-wrapper\": true, \"s-offer-slide-one-sixth\": !this.isMultipleBank, \"s-offer-bank-wrapper-multi-spacer\": this.isMultipleBank }}>\n <div class=\"s-offer-bank-logo\">\n <img src={(bankOffer.details as BankOffer).logo || salla.url.cdn('images/s-empty.png')} data-src={(bankOffer.details as BankOffer).logo} alt={bankOffer.title + \" offer\"} />\n </div>\n <ul class=\"s-offer-bank-payment-wrapper\">\n {(bankOffer.details as BankOffer).payments.map((payment: string) => {\n return <li class=\"s-offer-bank-payment-single\">\n <img\n src={salla.url.cdn('images/payment/' + payment + '.png') || salla.url.cdn('images/s-empty.png')}\n data-src={salla.url.cdn('images/payment/' + payment + '.png')}\n alt=\"payment\" />\n </li>\n })}\n </ul>\n {this.isMultipleBank ?\n <p class=\"s-offer-bank-payment-discount-percent\">\n {`${this.product_discount_text} ${(bankOffer.details as BankOffer).discount_value}${(bankOffer.details as BankOffer).discount_type === \"percentage\" && '%'}`}\n </p>\n : \"\"}\n </div>\n {!this.isMultipleBank ?\n <div class=\"s-offer-bank-message s-offer-slide-one-fourth\">\n <h2>{this.offersList[0].title}</h2>\n <p innerHTML={this.generateBankDescription(this.offersList[0].description, (bankOffer.details as BankOffer).discount_value)}></p>\n </div>\n : \"\"}\n </div>\n })\n }\n\n private generateBankDescription(desc: string, value): string {\n return desc.replace(new RegExp(`${value} %`), `<span class=\"s-offer-bank-message-amount\">${value} %</span>`)\n }\n\n /**\n * Generates content for the discount table section.\n *\n * @param discountTable - An array of Discount objects.\n * @returns An array of HTML elements representing discounts_table.\n */\n private renderDiscountTableSection() {\n const offer: Offer = this.offersList[0];\n let show_discounted_price = (offer.details as DiscountDetailTable).show_price_after_discount;\n return (this.offersList[0].details as DiscountDetailTable).discounts?.map((discount: Discount) => <div class=\"s-offer-slide-one-fourth\">\n <div class=\"s-offer-slide-offer-entry\">\n <div class=\"s-offer-slide-offer-entry-price-quantity-container\">\n <p class=\"s-offer-slide-offer-entry-quantity\">{this.buy_quantity_text(discount.quantity)}</p>\n {show_discounted_price ?\n <div class=\"s-offer-slide-offer-entry-price\">\n <span>{this.offer_with_price_text}</span>\n <span class=\"s-offer-slide-offer-entry-price-amount\">{discount.discounted_amount}</span> <span>{this.userCurrency}</span>\n </div> : \"\"}\n </div>\n <p class=\"s-offer-slide-offer-entry-price-amount-percent\">{this.with_discount_text}\n (<span>{discount.percentage}{!!discount.percentage && '%'}</span>)</p>\n </div>\n </div>\n )\n }\n\n}\n"],"names":["h"],"mappings":"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"}
1
+ {"version":3,"file":"salla-offer.entry.cjs.js","sources":["src/components/salla-offer/interfaces.ts","src/components/salla-offer/salla-offer.scss?tag=salla-offer","src/components/salla-offer/salla-offer.tsx"],"sourcesContent":["export enum PageType {\n ProductDetail = \"product.single\",\n Cart = \"cart\"\n}\n\nexport enum OfferType {\n Conditional = \"conditional\",\n PercentageOrFixed = \"fixed\",\n DiscountsTable = \"discounts_table\",\n Bank = \"bank\",\n BuyXGetY = \"buy_x_get_y\"\n}\n\n\nexport interface DiscountDetailFixed {\n discount_type: \"fixed\";\n min_spend: number;\n discount_value: number;\n}\n\nexport interface DiscountDetailFreeProduct {\n discount_type: \"free_product\";\n min_spend: number;\n discount_value: number;\n}\n\nexport interface DiscountDetailConditional extends Array<DiscountDetailFixed | DiscountDetailFreeProduct> {}\n\nexport interface DiscountDetailPercentageFixed {\n apply_to: \"all\" | \"products\" | \"categories\" | \"payment_methods\";\n targets: Array<string | number>;\n ends_at: number;\n min_spend: number;\n discount_value: number;\n}\n\nexport interface Discount {\n discounted_amount: any;\n quantity: number;\n percentage: number;\n}\n\nexport interface DiscountDetailTable {\n apply_to: \"all\" | \"products\" | \"categories\" | \"payment_methods\" | \"order\";\n discount_value: number;\n ends_at: string;\n min_items: number;\n min_spend: number;\n show_price_after_discount: boolean;\n discounts: Discount[];\n}\n\nexport interface BankOffer {\n logo: string;\n discount_value: number;\n discount_type: string;\n minimum_spend: number;\n payments: string[];\n}\n\nexport interface BuyXGetYDetail {\n ends_at: number;\n buy: {\n source: \"product\" | \"category\";\n source_value: number[];\n quantity: number;\n };\n get: {\n source: \"products\" | \"category\";\n source_value: number[];\n type: \"free_product\" | \"percentage\" | \"fixed\";\n value: number;\n products?: Product[];//we will set this dynamically\n categories?: Category[];//we will set this dynamically\n };\n}\n\nexport interface Offer {\n id: number;\n title: string;\n description: string;\n type: OfferType | \"conditional\" | \"fixed\" | \"discounts_table\" | \"bank\" | \"buy_x_get_y\";\n details: DiscountDetailConditional | DiscountDetailPercentageFixed | DiscountDetailTable | BankOffer | BuyXGetYDetail;\n}\n\nexport interface Product {\n id: number;\n type: string;\n status: string;\n is_available: boolean;\n sku: string;\n name: string;\n price: { amount: number; currency: string; };\n promotion: { title: string; sub_title: string; };\n sale_price: { amount: number; currency: string; };\n regular_price: { amount: number; currency: string; };\n currency: string;\n url: string;\n thumbnail: string;\n has_special_price: boolean;\n favorite?: any;\n}\n\nexport interface Category {\n id?: string;\n id_?: number;\n name?: string;\n url?: string;\n icon?: string;\n sub_categories?: Category[];\n items?: any[] | null;\n}\n\nexport interface Currency {\n code: string | 'SAR';\n name: string;\n symbol: string;\n amount?: number;\n country_code?: string;\n}\n",".s-offer-wrapper .s-slider-block__title {\n h2 {\n font-size: 1.125rem;\n line-height: 1.75rem;\n color: #f87171;\n\n &::before {\n font-family: \"sallaicons\";\n content: \"\\ee30\" !important;\n position: absolute;\n top: 1rem;\n font-size: 3rem;\n font-weight: 400;\n line-height: 1;\n color: #fef2f2;\n }\n }\n}\n\n.s-offer-bank-wrapper-sinlge-item{\n display: flex;\n align-items: center !important;\n gap: 14px;\n}\n\n.s-offer-bank-wrapper {\n display: flex !important;\n width: 100% !important;\n}\n\n// .s-offer-bank-wrapper {\n // \n// }","import { Component, Element, Prop, State, h } from '@stencil/core';\nimport { Offer, Category, Product, Discount, Currency, BuyXGetYDetail, PageType, OfferType, BankOffer, DiscountDetailTable } from './interfaces';\n\n\n/**\n * `salla-offer` is a StencilJS component that displays offers, categories, products, banks, and discount information.\n * It uses the `salla-slider` component for carousel functionality.\n *\n * @slot category - The slot for customizing the category entry layout.\n * \n * @csspart custom - Custom CSS part to target specific elements in the component.\n *\n * @example\n * <salla-offer product-id=\"123\"></salla-offer>\n */\n@Component({\n tag: 'salla-offer',\n styleUrl: 'salla-offer.scss',\n})\nexport class SallaOffer {\n\n constructor() {\n // Language\n salla.lang.onLoaded(() => {\n this.offer_with_price_text = salla.lang.get('pages.offer.with_price');\n this.with_discount_text = salla.lang.get('pages.products.with_a_discount');\n this.product_discount_text = salla.lang.get('pages.products.discount');\n this.special_offer_text = salla.lang.get('pages.products.special_offer');\n this.multipleBankOfferTitleText = salla.lang.get('pages.offer.multiple_bank_offers_title');\n this.multipleBankOfferTitleDescription = salla.lang.get('pages.offer.multiple_bank_offers_message');\n this.buy_quantity_text(0);\n })\n\n salla.onReady(() => {\n this.currentPage = salla.config.get('page.slug')\n this.userCurrency = salla.config.get('currencies')[salla.config.get('user.currency_code')].symbol\n });\n\n this.categorySlot = this.host.querySelector('[slot=\"category\"]')?.innerHTML || '<a href={url} class=\"s-offer-slide-cat-entry\"><i class={icon}></i><h4>{name}</h4></a>';\n }\n\n /**\n * Custom Card Component for the Salla Products List.\n *\n * This component allows you to customize the appearance of individual product cards within a Salla Products List.\n *\n * @example\n * <salla-products-list product-card-component=\"my-custom-card-style1\" ...\n * <salla-products-list product-card-component=\"my-custom-card-style2\" ...\n */\n @Prop() productCardComponent: string = 'custom-salla-product-card';\n\n // Declare component state variables\n @State() offersList: Offer[] = [];\n @State() userCurrency: Currency;\n @State() isMultipleBank: boolean = false;\n @State() title?: string;\n @State() currentPage: string;\n @State() hasCustomComponent: boolean;\n\n @State() isBankOffer: boolean = false;\n @State() canRender: boolean = false;\n @State() showOffer: boolean = salla.config.get('store.settings.product.show_special_offers');\n\n // Default translated texts\n @State() offer_with_price_text: string = salla.lang.get('pages.offer.with_price', { price: '' });\n @State() with_discount_text: string = salla.lang.get('pages.products.with_a_discount')\n @State() product_discount_text: string = salla.lang.get('pages.products.discount')\n @State() special_offer_text: string = salla.lang.get('pages.products.special_offer')\n @State() multipleBankOfferTitleText: string = salla.lang.get('pages.offer.multiple_bank_offers_title')\n @State() multipleBankOfferTitleDescription: string = salla.lang.get('pages.offer.multiple_bank_offers_message')\n @State() buy_quantity_text: (quantity: number) => string = (quantity) => salla.lang.get('pages.offer.buy_quantity', { quantity })\n\n // Reference to the host element\n @Element() host: HTMLElement;\n\n private categorySlot: string;\n\n private async getEndpointByPageName(): Promise<string> {\n if (this.currentPage == PageType.Cart) {\n const cartId = await Salla.cart.getCurrentCartId();\n return `offers/cart/${cartId}`;\n }\n\n if (this.currentPage == PageType.ProductDetail) {\n return `offers/product/${salla.config.get('page.id')}`;\n }\n\n return \"offers\";\n }\n\n componentWillLoad() {\n this.hasCustomComponent = !!customElements.get(this.productCardComponent);\n // let offers = this.getOffersFromStorage();\n // if (offers) {\n // return offers.then(offersFromStorage => this.offersList = offersFromStorage);\n // }\n\n return (new Promise(resolve => salla.onReady(resolve)))\n .then(() => {\n this.showOffer = !salla.url.is_page('product.single') || salla.config.get('store.settings.product.show_special_offers')\n if (this.showOffer) {\n return;\n }\n throw new Error(\"Merchant disabled showing the offers on product page\");\n }\n )\n .then(async () => salla.api.request(await this.getEndpointByPageName()))\n .then((res) => {\n if (!(this.offersList = res.data).length) {\n throw new Error('salla-offers:: There is no offers!');\n }\n //we support these offers only\n const offer = this.offersList.find(offer => [OfferType.Bank, OfferType.BuyXGetY, OfferType.DiscountsTable].includes(offer.type as any));\n if (!offer) {\n throw new Error('salla-offers:: Offer type not supported yet!');\n }\n //because there is no need for special handling for discounts table, just skip the other cases\n if (offer.type === OfferType.DiscountsTable) {\n return this.offersList = [offer];\n }\n\n //if it's banks offer, we need to include the other banks overs\n if ((this.isBankOffer = offer.type === OfferType.Bank)) {\n this.offersList = this.offersList.filter(offer => offer.type === OfferType.Bank);\n this.isMultipleBank = this.offersList.length > 1;\n return this.offersList;\n }\n //BuyXGetY offers\n const getY = (offer.details as BuyXGetYDetail).get;\n\n return getY.source === 'products'\n //todo:: avoid this request, and the handling for the products, just use `salla-products-slider` and don't forget to pass the customcard\n ? salla.product.api.fetch({ source: \"selected\", source_value: getY.source_value })\n .then((response: any) => {\n getY.products = response.data;\n (offer.details as any).get = getY;\n return this.offersList = [offer];\n })//set the products\n : salla.product.api.categories()//get all categories in one query, then extract only the selected one, instead of sending multi requests\n .then((res) => {\n getY.categories = this.findCategories(res.data, getY.source_value);\n (offer.details as any).get = getY;\n return this.offersList = [offer];\n });\n })\n .then((offers: Offer[]) => {\n salla.storage.set(this.getStorageKey(), { offers, stored_at: new Date().getTime() });\n this.canRender = true;\n })\n .catch((error) => {\n salla.logger.warn(error)\n });\n }\n\n componentDidLoad() {\n let nav = this.host.querySelector('.s-slider-block__title-nav');\n nav?.classList.add(\"s-offer-bank-payment-nav\")\n }\n\n\n findCategories(categories: Category[], ids: any[]): Category[] {\n let found: Category[] = [];\n\n for (const category of categories) {\n if (ids.includes(category.id_ || category.id)) { //here we are using || because we are planning to drop `id_`\n found.push(category);\n }\n if (category.sub_categories?.length > 0) {\n found = found.concat(this.findCategories(category.sub_categories, ids));\n }\n }\n\n return found;\n }\n\n //todo::add to the key params, to make sure it will support multi offers in the same page if it's wanted\n getStorageKey(): string {\n try {\n const pageSlug = salla.config.get('page.slug').replace('.', '_');\n const locale = salla.lang.getLocale();\n const currencyCode = salla.config.currency().code;\n\n if (!pageSlug || !locale || !currencyCode) {\n throw new Error('Unable to get the storage key.');\n }\n\n return `s-offers-${pageSlug}-${salla.config.get('page.id')}-${locale}-${currencyCode}`;\n } catch (error) {\n return '';\n }\n }\n\n //@ts-ignore\n getOffersFromStorage(): null | Promise<Offer[]> {\n let storageOffers = salla.storage.get(this.getStorageKey());\n //if the offers not existed, or it has been stored before 10 minutes from now, ignore it;\n if (!storageOffers || storageOffers.stored_at < (new Date().getTime() - 10 * 60 * 1000)) {\n salla.storage.remove(this.getStorageKey());\n return null;\n }\n this.canRender = true;\n\n //return it as resolve to support .then\n return Promise.resolve(storageOffers.offers);\n }\n\n render() {\n if (!this.offersList.length || !this.canRender || !this.showOffer) return null;\n const offer: Offer = this.offersList[0];\n\n const blockTitle = this.isBankOffer ? (this.isMultipleBank ? this.multipleBankOfferTitleText : null) : offer.title;\n const blockSubTitle = this.isBankOffer ? (this.isMultipleBank ? this.multipleBankOfferTitleDescription : null) : offer.description;\n\n const titles = {\n 'block-title': blockTitle,\n 'block-subTitle': blockSubTitle,\n 'show-controls': this.isMultipleBank\n };\n\n return (\n <div class=\"s-offer-wrapper\">\n {<p class=\"s-offer-corner-badge\">{this.special_offer_text}</p>}\n {/* discounts table is not a slider, it's a table🤔 */}\n {/* single bank offer is not a slider, it's a dom without slider🤔 */}\n <salla-slider type=\"carousel\" id=\"offer-slider\" {...titles}>\n <div slot='items'>\n {this.renderSectionForOfferType(offer.type)}\n </div>\n </salla-slider>\n </div>\n );\n }\n\n private renderSectionForOfferType(offerType: OfferType | string) {\n if (this.isBankOffer) {\n return this.renderBankSection();\n }\n if (offerType == OfferType.BuyXGetY) {\n return this.renderBuyXGetYSection();\n }\n\n return this.renderDiscountTableSection();\n }\n\n /**\n * Generates content for the categories section.\n *\n * @param offeredCategories - An array of Category objects.\n * @returns An array of HTML elements representing categories.\n */\n private getCategoriesSection(category: Category) {\n return <div class=\"s-offer-slide-one-sixth swiper-slide\" innerHTML={this.categorySlot\n .replace(/\\{url\\}/g, category.url)\n .replace(/\\{icon\\}/g, category.icon || \"sicon-store\")\n .replace(/\\{name\\}/g, category.name)}></div>\n }\n\n private renderBuyXGetYSection() {\n const details = (this.offersList[0].details as BuyXGetYDetail)\n return [\n details.get.products?.map((product: Product) => (\n <div class=\"s-offer-slide-one-fourth\">\n {this.hasCustomComponent\n ? <this.productCardComponent product={product}></this.productCardComponent>\n : <salla-product-card shadow-on-hover product={product}></salla-product-card>}\n </div>\n )),\n details.get.categories?.map((category: Category) => this.getCategoriesSection(category))\n ];\n }\n\n /**\n * Generates content for the bank section.\n *\n * @param offeredBank - An array of Bank objects.\n * @param name - The title of the current offer.\n * @param description - The description of the current offer.\n * @returns An array of HTML elements representing banks.\n * \n * TODO: loop over the list and filter bank types and pass it to this function\n */\n private renderBankSection() {\n return this.offersList.map((bankOffer: Offer) => {\n return <div class={{ \"s-offer-slide-one-sixth\": this.isMultipleBank, \"s-offer-bank-wrapper-sinlge-item\": !this.isMultipleBank }}>\n <div class={{ \"s-offer-bank-wrapper\": true, \"s-offer-slide-one-sixth\": !this.isMultipleBank, \"s-offer-bank-wrapper-multi-spacer\": this.isMultipleBank }}>\n <div class=\"s-offer-bank-logo\">\n <img src={(bankOffer.details as BankOffer).logo || salla.url.cdn('images/s-empty.png')} data-src={(bankOffer.details as BankOffer).logo} alt={bankOffer.title + \" offer\"} />\n </div>\n <ul class=\"s-offer-bank-payment-wrapper\">\n {(bankOffer.details as BankOffer).payments.map((payment: string) => {\n return <li class=\"s-offer-bank-payment-single\">\n <img\n src={salla.url.cdn('images/payment/' + payment + '.png') || salla.url.cdn('images/s-empty.png')}\n data-src={salla.url.cdn('images/payment/' + payment + '.png')}\n alt=\"payment\" />\n </li>\n })}\n </ul>\n {this.isMultipleBank ?\n <p class=\"s-offer-bank-payment-discount-percent\">\n {`${this.product_discount_text} ${(bankOffer.details as BankOffer).discount_value}${(bankOffer.details as BankOffer).discount_type === \"percentage\" && '%'}`}\n </p>\n : \"\"}\n </div>\n {!this.isMultipleBank ?\n <div class=\"s-offer-bank-message s-offer-slide-one-fourth\">\n <h2>{this.offersList[0].title}</h2>\n <p innerHTML={this.generateBankDescription(this.offersList[0].description, (bankOffer.details as BankOffer).discount_value)}></p>\n </div>\n : \"\"}\n </div>\n })\n }\n\n private generateBankDescription(desc: string, value): string {\n return desc.replace(new RegExp(`${value} %`), `<span class=\"s-offer-bank-message-amount\">${value} %</span>`)\n }\n\n /**\n * Generates content for the discount table section.\n *\n * @param discountTable - An array of Discount objects.\n * @returns An array of HTML elements representing discounts_table.\n */\n private renderDiscountTableSection() {\n const offer: Offer = this.offersList[0];\n let show_discounted_price = (offer.details as DiscountDetailTable).show_price_after_discount;\n return (this.offersList[0].details as DiscountDetailTable).discounts?.map((discount: Discount) => <div class=\"s-offer-slide-one-fourth\">\n <div class=\"s-offer-slide-offer-entry\">\n <div class=\"s-offer-slide-offer-entry-price-quantity-container\">\n <p class=\"s-offer-slide-offer-entry-quantity\">{this.buy_quantity_text(discount.quantity)}</p>\n {show_discounted_price ?\n <div class=\"s-offer-slide-offer-entry-price\">\n <span>{this.offer_with_price_text}</span>\n <span class=\"s-offer-slide-offer-entry-price-amount\">{discount.discounted_amount}</span> <span>{this.userCurrency}</span>\n </div> : \"\"}\n </div>\n <p class=\"s-offer-slide-offer-entry-price-amount-percent\">{this.with_discount_text}\n (<span>{discount.percentage}{!!discount.percentage && '%'}</span>)</p>\n </div>\n </div>\n )\n }\n\n}\n"],"names":["h"],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CyyWuThh.js');
6
+ var index = require('./index-B1jJnKON.js');
7
7
  var check = require('./check-CLRvuniI.js');
8
8
 
9
9
  var iconFileArchive = `<!-- Generated by IcoMoon.io -->
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CyyWuThh.js');
6
+ var index = require('./index-B1jJnKON.js');
7
7
  var Helper = require('./Helper-RxjfQWAX.js');
8
8
  require('./anime.es-BqW8JHZi.js');
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CyyWuThh.js');
6
+ var index = require('./index-B1jJnKON.js');
7
7
 
8
8
  const sallaPaymentsCss = ":host{display:block}";
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CyyWuThh.js');
6
+ var index = require('./index-B1jJnKON.js');
7
7
  var arrowLeft = require('./arrow-left-xSEmRpp6.js');
8
8
 
9
9
  var arrowRight = `<!-- Generated by IcoMoon.io -->
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CyyWuThh.js');
6
+ var index = require('./index-B1jJnKON.js');
7
7
  var check = require('./check-CLRvuniI.js');
8
8
  var camera = require('./camera-DytepEoK.js');
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CyyWuThh.js');
6
+ var index = require('./index-B1jJnKON.js');
7
7
  var check = require('./check-CLRvuniI.js');
8
8
 
9
9
  var IconStar2 = ` <svg width="18" height="17" view-box="0 0 18 17" fill="none" xmlns="http://www.w3.org/2000/svg">
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CyyWuThh.js');
6
+ var index = require('./index-B1jJnKON.js');
7
7
  var shoppingBag = require('./shopping-bag-C1gvTVHr.js');
8
8
  var Helper = require('./Helper-RxjfQWAX.js');
9
9
  require('./anime.es-BqW8JHZi.js');
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CyyWuThh.js');
6
+ var index = require('./index-B1jJnKON.js');
7
7
  var arrowLeft = require('./arrow-left-xSEmRpp6.js');
8
8
  var Helper = require('./Helper-RxjfQWAX.js');
9
9
  require('./anime.es-BqW8JHZi.js');
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CyyWuThh.js');
6
+ var index = require('./index-B1jJnKON.js');
7
7
  var twitter = require('./twitter-pOrUNjXi.js');
8
8
 
9
9
  var instagram = `<!-- Generated by IcoMoon.io -->
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CyyWuThh.js');
6
+ var index = require('./index-B1jJnKON.js');
7
7
 
8
8
  const sallaTooltipCss = ".s-tooltip-container{position:relative;display:inline-block}.s-tooltip-item{position:absolute;-webkit-transform:translateX(-39%);transform:translateX(-39%);background-color:#baf3e6;color:#004d5a;bottom:100%;left:50%;text-align:center;border-radius:5px;z-index:1;white-space:nowrap;opacity:0;-webkit-transition:opacity 0.3s;transition:opacity 0.3s;pointer-events:none;margin:0 0 16px 8px;padding:12px;max-width:150px;width:190px;white-space:normal;opacity:1}.s-tooltip-item::after{content:\"\";position:absolute;bottom:-10px;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#baf3e6 transparent transparent transparent}.s-tooltip-item:dir(ltr){-webkit-transform:translateX(-72%);transform:translateX(-72%)}";
9
9
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CyyWuThh.js');
6
+ var index = require('./index-B1jJnKON.js');
7
7
  var mail = require('./mail-CO8cFZH7.js');
8
8
 
9
9
  var AndroidPhoneIcon = `<!-- Generated by IcoMoon.io -->
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CyyWuThh.js');
6
+ var index = require('./index-B1jJnKON.js');
7
7
 
8
8
  const sallaWalletCss = ".s-wallet-table{min-width:100%}.s-wallet-table-balance-container{display:-ms-flexbox !important;display:flex !important;-ms-flex-align:center !important;align-items:center !important;-ms-flex-pack:start !important;justify-content:flex-start !important;gap:1rem}.s-wallet-table-balance-icon{border-radius:50%;width:52px;height:52px;font-size:25px;padding:16px 13px;background:var(--color-primary-reverse);color:var(--color-primary)}.s-wallet-table-empty-state{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center}.s-wallet-table-empty-state i{font-size:80px;margin:4rem 0 2rem;color:var(--infinte-color)}.s-wallet-table-transaction-status{padding:6px 19px !important;border-radius:20px;width:-webkit-max-content;width:-moz-max-content;width:max-content;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.s-wallet-table-transaction-status-default{background:#fff6eb;color:#a46f29}.s-wallet-table-transaction-status-cashback{background:#effbf6;color:#00af6c}.s-wallet-table-transaction-status-refund{background:#ecf3fe;color:#5196f3}.s-wallet-table-transaction-status-purchase{background:#feecec;color:#f55157}.s-wallet-table-transaction-status-icons-success{color:#00af6c}";
9
9
 
@@ -3,8 +3,8 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CyyWuThh.js');
7
- var appGlobals = require('./app-globals-KyQhbOUb.js');
6
+ var index = require('./index-B1jJnKON.js');
7
+ var appGlobals = require('./app-globals-Bk9IDSPX.js');
8
8
 
9
9
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
10
10
  /*
@@ -149,7 +149,7 @@ export class SallaBookingField {
149
149
  return (h("span", { class: "s-booking-field-reservations-time" }, h("i", { class: "s-booking-field-reservations-icon", innerHTML: TimeIcon }), h("span", null, reservation.from_timestamp, " - ", reservation.to_timestamp)));
150
150
  }
151
151
  render() {
152
- return (h(Host, { key: '9c5755ca98a3a3a1340414de0109133ffb6617c4' }, h("div", { key: 'dabd37fc3a9a1879fb0c5cb3899c28971d8724ef', class: "s-booking-field-main" }, this.option.required || this.reservations.length > 0 ? h("div", { class: "s-booking-field-price" }, h("span", null, salla.money(this.option.price))) : '', h("salla-button", { key: '15f8d038b76ada27f0289666497aaae7eee8ba42', class: "s-booking-field-book-now", size: "small", loaderPosition: "center", fill: "outline", onClick: event => this.openBookingModal(event, false) }, h("span", { key: 'e02c4da8a45ef524309eb3fc943e3ba15dbd2e9e', class: "s-booking-field-book-now-content" }, h("span", { key: '51c7a7f49cc84cf614ac558cca5ef291971364c0', innerHTML: BookingTime }), this.reservations.length ? this.editLabel : this.bookNowLabel))), this.reservations.length > 0 && (h("div", { key: 'ccbf9faf50176b947622d548055140730d460920', class: "s-booking-field-reservations" }, this.reservations.map((reservation, index) => (h("div", { key: index, class: "s-booking-field-reservations-item" }, this.renderReservationDate(reservation), this.renderReservationTime(reservation)))))), h("input", { key: '8c6ad98754aec705a0aead75c1637ed7135323cf', class: "s-hidden", name: this.option.name, required: this.option.required, value: JSON.stringify(this.reservations) === '[]' ? '' : JSON.stringify(this.reservations), ref: reservations => this.reservationsInput = reservations }), this.iframeReady && this.bookingModal()));
152
+ return (h(Host, { key: '9c5755ca98a3a3a1340414de0109133ffb6617c4' }, h("div", { key: 'dabd37fc3a9a1879fb0c5cb3899c28971d8724ef', class: "s-booking-field-main" }, this.option.required || this.reservations.length > 0 ? h("div", { class: "s-booking-field-price" }, h("span", { innerHTML: salla.money(this.option.price) })) : '', h("salla-button", { key: '7fbe8ff75abac48b86b7992c261ba0439514c786', class: "s-booking-field-book-now", size: "small", loaderPosition: "center", fill: "outline", onClick: event => this.openBookingModal(event, false) }, h("span", { key: '496907083ce40b1618c8a1b2228f91c70b83f60a', class: "s-booking-field-book-now-content" }, h("span", { key: 'e4455c6205055349b3137397f039125e0b3a6cf1', innerHTML: BookingTime }), this.reservations.length ? this.editLabel : this.bookNowLabel))), this.reservations.length > 0 && (h("div", { key: 'de68930ac2cab061c7f9b268f8887342528ba8e7', class: "s-booking-field-reservations" }, this.reservations.map((reservation, index) => (h("div", { key: index, class: "s-booking-field-reservations-item" }, this.renderReservationDate(reservation), this.renderReservationTime(reservation)))))), h("input", { key: 'f148bc7110984389035474c47fcc963a9fa14607', class: "s-hidden", name: this.option.name, required: this.option.required, value: JSON.stringify(this.reservations) === '[]' ? '' : JSON.stringify(this.reservations), ref: reservations => this.reservationsInput = reservations }), this.iframeReady && this.bookingModal()));
153
153
  }
154
154
  static get is() { return "salla-booking-field"; }
155
155
  static get originalStyleUrls() {
@@ -1 +1 @@
1
- {"version":3,"file":"salla-booking-field.js","sourceRoot":"","sources":["../../../src/components/salla-booking-field/salla-booking-field.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, Prop, h, Element, State, Event, EventEmitter } from '@stencil/core';\nimport { Option, Reservation } from './interfaces';\nimport BookingTime from '../../assets/svg/calendar-time.svg';\nimport Calendar from '../../assets/svg/calendar.svg';\nimport TimeIcon from '../../assets/svg/time.svg';\n\n@Component({\n tag: 'salla-booking-field',\n styleUrl: 'salla-booking-field.scss',\n})\nexport class SallaBookingField {\n /**\n * The booking option configuration\n */\n @Prop() option: Option;\n /**\n * The ID of the product for which the booking is being made\n */\n @Prop() productId: number;\n @Element() host: HTMLElement;\n @State() bookNowLabel: string = salla.lang.get('pages.cart.book_an_appointment', 'حجز موعد');\n @State() editLabel: string = salla.lang.get('pages.cart.edit_an_appointment', 'تعديل الموعد');\n @State() bookedLabel: string = salla.lang.get('pages.cart.booked_successfully', 'تمت اضافة الموعد بنجاح');\n @State() selectDate: string = salla.lang.get('pages.cart.select_appointment_date', 'حدد تاريخ الموعد');\n @State() bookingUrl: string = '';\n @State() iframeReady: boolean = false;\n @State() reservations: Reservation[] = [];\n @State() reservationsInput: HTMLInputElement;\n\n /**\n * Event emitted when the input is invalid.\n */\n @Event() invalidInput: EventEmitter<any>;\n\n private modal: HTMLSallaModalElement;\n private iframe: HTMLIFrameElement;\n\n constructor() {\n // Load translations\n salla.lang.onLoaded(() => this.setTranslations());\n // Register event listeners\n Salla.event.on('booking::open', (data) => this.handleBookingOpen(data));\n }\n\n private async setTranslations() {\n const setNestedAsync = (lang, key, value) => {\n return new Promise((resolve) => {\n salla.helpers.setNested(salla.lang.messages[lang], key, value);\n resolve(true);\n });\n };\n\n await setNestedAsync('ar.trans', 'pages.cart.book_an_appointment', 'حجز موعد');\n await setNestedAsync('en.trans', 'pages.cart.book_an_appointment', 'Book an Appointment');\n await setNestedAsync('ar.trans', 'pages.cart.edit_an_appointment', 'تعديل الموعد');\n await setNestedAsync('en.trans', 'pages.cart.edit_an_appointment', 'Edit an Appointment');\n await setNestedAsync('ar.trans', 'pages.cart.booked_successfully', 'تمت اضافة الموعد بنجاح');\n await setNestedAsync('en.trans', 'pages.cart.booked_successfully', 'Booked Successfully');\n await setNestedAsync('ar.trans', 'pages.cart.select_appointment_date', 'حدد تاريخ الموعد');\n await setNestedAsync('en.trans', 'pages.cart.select_appointment_date', 'Select appointment date');\n\n this.bookNowLabel = salla.lang.get('pages.cart.book_an_appointment');\n this.editLabel = salla.lang.get('pages.cart.edit_an_appointment');\n this.bookedLabel = salla.lang.get('pages.cart.booked_successfully');\n this.selectDate = salla.lang.get('pages.cart.select_appointment_date');\n }\n\n private openBookingModal(event: any, afterReload = false) {\n if (afterReload && (!event.detail || typeof event.detail !== 'number' || event.detail !== this.productId)) {\n return;\n }\n if (salla.config.isGuest()) {\n this.setAfterReloadEvent('booking::open-after-reload', this.productId);\n salla.event.dispatch('login::open');\n return;\n }\n salla.booking.add(this.productId, false)\n .then((resp) => {\n if (resp.data.redirect.to !== 'booking') {\n throw new Error('Unexpected redirect!');\n }\n salla.event.dispatch('booking::open', { url: resp.data.redirect.url, id: this.productId });\n })\n .catch((error) => {\n salla.error(salla.lang.get('common.errors.error_occurred'));\n salla.logger.error(error.response || error);\n });\n }\n\n private handleBookingOpen(data) {\n if (data.id !== this.productId) return;\n this.bookingUrl = salla.url.addParamToUrl('product_id', data.id, data.url);\n this.iframeReady = true;\n setTimeout(() => {\n this.modal.setTitle(this.selectDate);\n this.modal.open();\n }, 100);\n }\n\n private setAfterReloadEvent(event, payload) {\n salla.storage.set('afterReloadEvent', { event, payload });\n }\n\n private emitAfterReloadEvent() {\n const eventDetails = salla.storage.get('afterReloadEvent');\n if (eventDetails && eventDetails.event) {\n const customEvent = new CustomEvent(eventDetails.event, {\n detail: eventDetails.payload\n });\n window.dispatchEvent(customEvent)\n salla.storage.remove('afterReloadEvent');\n }\n }\n\n componentWillLoad() {\n if (this.option && this.option.details.length) {\n this.reservations = this.option.details;\n }\n }\n\n componentDidLoad() {\n window.addEventListener('booking::open-after-reload', (event) => this.openBookingModal(event, true));\n this.emitAfterReloadEvent();\n window.addEventListener('message', this.handleMessageEvent.bind(this));\n this.reservationsInput.addEventListener('invalid', e => this.invalidInput.emit(e));\n this.reservationsInput.addEventListener('input', () => {\n this.reservationsInput.setCustomValidity('');\n this.reservationsInput.reportValidity();\n });\n }\n\n private handleMessageEvent(event) {\n if (event.data.source !== 'booking') return;\n const action = event.data.type;\n const value = event.data.message;\n if (localStorage.getItem('debug')) console.log(`Received an action:${action}`, event.data);\n\n if (action === 'error') {\n if (value.fields?.reservation) {\n salla.notify.error(value.fields.reservation[0]);\n return;\n }\n const errorList = Object.values(value.fields || [value.message]).flat().map(error => `<li>${error}</li>`).join('');\n salla.notify.error(`<ul>${errorList}</ul>`);\n }\n\n if (action === 'success') {\n if (Number(value.productId) !== Number(this.productId)) return;\n this.reservations = value.data.reservations.map(schedule => {\n if (schedule.time && schedule.time.length > 0) {\n const timeSlot = schedule.time[0];\n return {\n date: schedule.date,\n day: schedule.day,\n from_timestamp: timeSlot.from,\n to_timestamp: timeSlot.to,\n };\n }\n return null;\n }).filter(item => item !== null);\n\n salla.notify.success(this.bookedLabel);\n this.modal?.close();\n setTimeout(() => window.location.reload());\n }\n\n if (action === 'height') {\n this.iframe.height = value?.height + 'px';\n }\n }\n\n private bookingModal() {\n return (\n <salla-modal class=\"s-booking-field-modal\" ref={modal => (this.modal = modal)} width=\"md\" position=\"middle\" noPadding>\n <iframe ref={iframe => (this.iframe = iframe)} src={this.bookingUrl} frameborder=\"0\"></iframe>\n </salla-modal>\n );\n }\n\n renderReservationDate(reservation: Reservation) {\n return (\n <span class={reservation.from_timestamp ? 's-booking-field-reservations-has-time' : ''}>\n <i class=\"s-booking-field-reservations-icon\" innerHTML={Calendar}></i>\n {reservation.date}\n </span>\n );\n }\n\n renderReservationTime(reservation: Reservation) {\n if (!reservation.from_timestamp) return '';\n return (\n <span class=\"s-booking-field-reservations-time\">\n <i class=\"s-booking-field-reservations-icon\" innerHTML={TimeIcon}></i>\n <span>\n {reservation.from_timestamp} - {reservation.to_timestamp}\n </span>\n </span>\n );\n }\n\n render() {\n return (\n <Host>\n <div class=\"s-booking-field-main\">\n {this.option.required || this.reservations.length > 0 ? <div class=\"s-booking-field-price\">\n <span>{salla.money(this.option.price)}</span>\n </div> : ''}\n <salla-button class=\"s-booking-field-book-now\" size=\"small\" loaderPosition=\"center\" fill=\"outline\" onClick={event => this.openBookingModal(event, false)}>\n <span class=\"s-booking-field-book-now-content\">\n <span innerHTML={BookingTime}></span>\n {this.reservations.length ? this.editLabel : this.bookNowLabel}\n </span>\n </salla-button>\n </div>\n {this.reservations.length > 0 && (\n <div class=\"s-booking-field-reservations\">\n {this.reservations.map((reservation, index) => (\n <div key={index} class=\"s-booking-field-reservations-item\">\n {this.renderReservationDate(reservation)}\n {this.renderReservationTime(reservation)}\n </div>\n ))}\n </div>\n )}\n <input\n class=\"s-hidden\"\n name={this.option.name}\n required={this.option.required}\n value={JSON.stringify(this.reservations) === '[]' ? '' : JSON.stringify(this.reservations)}\n ref={reservations => this.reservationsInput = reservations}\n />\n {this.iframeReady && this.bookingModal()}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"salla-booking-field.js","sourceRoot":"","sources":["../../../src/components/salla-booking-field/salla-booking-field.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, Prop, h, Element, State, Event, EventEmitter } from '@stencil/core';\nimport { Option, Reservation } from './interfaces';\nimport BookingTime from '../../assets/svg/calendar-time.svg';\nimport Calendar from '../../assets/svg/calendar.svg';\nimport TimeIcon from '../../assets/svg/time.svg';\n\n@Component({\n tag: 'salla-booking-field',\n styleUrl: 'salla-booking-field.scss',\n})\nexport class SallaBookingField {\n /**\n * The booking option configuration\n */\n @Prop() option: Option;\n /**\n * The ID of the product for which the booking is being made\n */\n @Prop() productId: number;\n @Element() host: HTMLElement;\n @State() bookNowLabel: string = salla.lang.get('pages.cart.book_an_appointment', 'حجز موعد');\n @State() editLabel: string = salla.lang.get('pages.cart.edit_an_appointment', 'تعديل الموعد');\n @State() bookedLabel: string = salla.lang.get('pages.cart.booked_successfully', 'تمت اضافة الموعد بنجاح');\n @State() selectDate: string = salla.lang.get('pages.cart.select_appointment_date', 'حدد تاريخ الموعد');\n @State() bookingUrl: string = '';\n @State() iframeReady: boolean = false;\n @State() reservations: Reservation[] = [];\n @State() reservationsInput: HTMLInputElement;\n\n /**\n * Event emitted when the input is invalid.\n */\n @Event() invalidInput: EventEmitter<any>;\n\n private modal: HTMLSallaModalElement;\n private iframe: HTMLIFrameElement;\n\n constructor() {\n // Load translations\n salla.lang.onLoaded(() => this.setTranslations());\n // Register event listeners\n Salla.event.on('booking::open', (data) => this.handleBookingOpen(data));\n }\n\n private async setTranslations() {\n const setNestedAsync = (lang, key, value) => {\n return new Promise((resolve) => {\n salla.helpers.setNested(salla.lang.messages[lang], key, value);\n resolve(true);\n });\n };\n\n await setNestedAsync('ar.trans', 'pages.cart.book_an_appointment', 'حجز موعد');\n await setNestedAsync('en.trans', 'pages.cart.book_an_appointment', 'Book an Appointment');\n await setNestedAsync('ar.trans', 'pages.cart.edit_an_appointment', 'تعديل الموعد');\n await setNestedAsync('en.trans', 'pages.cart.edit_an_appointment', 'Edit an Appointment');\n await setNestedAsync('ar.trans', 'pages.cart.booked_successfully', 'تمت اضافة الموعد بنجاح');\n await setNestedAsync('en.trans', 'pages.cart.booked_successfully', 'Booked Successfully');\n await setNestedAsync('ar.trans', 'pages.cart.select_appointment_date', 'حدد تاريخ الموعد');\n await setNestedAsync('en.trans', 'pages.cart.select_appointment_date', 'Select appointment date');\n\n this.bookNowLabel = salla.lang.get('pages.cart.book_an_appointment');\n this.editLabel = salla.lang.get('pages.cart.edit_an_appointment');\n this.bookedLabel = salla.lang.get('pages.cart.booked_successfully');\n this.selectDate = salla.lang.get('pages.cart.select_appointment_date');\n }\n\n private openBookingModal(event: any, afterReload = false) {\n if (afterReload && (!event.detail || typeof event.detail !== 'number' || event.detail !== this.productId)) {\n return;\n }\n if (salla.config.isGuest()) {\n this.setAfterReloadEvent('booking::open-after-reload', this.productId);\n salla.event.dispatch('login::open');\n return;\n }\n salla.booking.add(this.productId, false)\n .then((resp) => {\n if (resp.data.redirect.to !== 'booking') {\n throw new Error('Unexpected redirect!');\n }\n salla.event.dispatch('booking::open', { url: resp.data.redirect.url, id: this.productId });\n })\n .catch((error) => {\n salla.error(salla.lang.get('common.errors.error_occurred'));\n salla.logger.error(error.response || error);\n });\n }\n\n private handleBookingOpen(data) {\n if (data.id !== this.productId) return;\n this.bookingUrl = salla.url.addParamToUrl('product_id', data.id, data.url);\n this.iframeReady = true;\n setTimeout(() => {\n this.modal.setTitle(this.selectDate);\n this.modal.open();\n }, 100);\n }\n\n private setAfterReloadEvent(event, payload) {\n salla.storage.set('afterReloadEvent', { event, payload });\n }\n\n private emitAfterReloadEvent() {\n const eventDetails = salla.storage.get('afterReloadEvent');\n if (eventDetails && eventDetails.event) {\n const customEvent = new CustomEvent(eventDetails.event, {\n detail: eventDetails.payload\n });\n window.dispatchEvent(customEvent)\n salla.storage.remove('afterReloadEvent');\n }\n }\n\n componentWillLoad() {\n if (this.option && this.option.details.length) {\n this.reservations = this.option.details;\n }\n }\n\n componentDidLoad() {\n window.addEventListener('booking::open-after-reload', (event) => this.openBookingModal(event, true));\n this.emitAfterReloadEvent();\n window.addEventListener('message', this.handleMessageEvent.bind(this));\n this.reservationsInput.addEventListener('invalid', e => this.invalidInput.emit(e));\n this.reservationsInput.addEventListener('input', () => {\n this.reservationsInput.setCustomValidity('');\n this.reservationsInput.reportValidity();\n });\n }\n\n private handleMessageEvent(event) {\n if (event.data.source !== 'booking') return;\n const action = event.data.type;\n const value = event.data.message;\n if (localStorage.getItem('debug')) console.log(`Received an action:${action}`, event.data);\n\n if (action === 'error') {\n if (value.fields?.reservation) {\n salla.notify.error(value.fields.reservation[0]);\n return;\n }\n const errorList = Object.values(value.fields || [value.message]).flat().map(error => `<li>${error}</li>`).join('');\n salla.notify.error(`<ul>${errorList}</ul>`);\n }\n\n if (action === 'success') {\n if (Number(value.productId) !== Number(this.productId)) return;\n this.reservations = value.data.reservations.map(schedule => {\n if (schedule.time && schedule.time.length > 0) {\n const timeSlot = schedule.time[0];\n return {\n date: schedule.date,\n day: schedule.day,\n from_timestamp: timeSlot.from,\n to_timestamp: timeSlot.to,\n };\n }\n return null;\n }).filter(item => item !== null);\n\n salla.notify.success(this.bookedLabel);\n this.modal?.close();\n setTimeout(() => window.location.reload());\n }\n\n if (action === 'height') {\n this.iframe.height = value?.height + 'px';\n }\n }\n\n private bookingModal() {\n return (\n <salla-modal class=\"s-booking-field-modal\" ref={modal => (this.modal = modal)} width=\"md\" position=\"middle\" noPadding>\n <iframe ref={iframe => (this.iframe = iframe)} src={this.bookingUrl} frameborder=\"0\"></iframe>\n </salla-modal>\n );\n }\n\n renderReservationDate(reservation: Reservation) {\n return (\n <span class={reservation.from_timestamp ? 's-booking-field-reservations-has-time' : ''}>\n <i class=\"s-booking-field-reservations-icon\" innerHTML={Calendar}></i>\n {reservation.date}\n </span>\n );\n }\n\n renderReservationTime(reservation: Reservation) {\n if (!reservation.from_timestamp) return '';\n return (\n <span class=\"s-booking-field-reservations-time\">\n <i class=\"s-booking-field-reservations-icon\" innerHTML={TimeIcon}></i>\n <span>\n {reservation.from_timestamp} - {reservation.to_timestamp}\n </span>\n </span>\n );\n }\n\n render() {\n return (\n <Host>\n <div class=\"s-booking-field-main\">\n {this.option.required || this.reservations.length > 0 ? <div class=\"s-booking-field-price\">\n <span innerHTML={salla.money(this.option.price)}></span>\n </div> : ''}\n <salla-button class=\"s-booking-field-book-now\" size=\"small\" loaderPosition=\"center\" fill=\"outline\" onClick={event => this.openBookingModal(event, false)}>\n <span class=\"s-booking-field-book-now-content\">\n <span innerHTML={BookingTime}></span>\n {this.reservations.length ? this.editLabel : this.bookNowLabel}\n </span>\n </salla-button>\n </div>\n {this.reservations.length > 0 && (\n <div class=\"s-booking-field-reservations\">\n {this.reservations.map((reservation, index) => (\n <div key={index} class=\"s-booking-field-reservations-item\">\n {this.renderReservationDate(reservation)}\n {this.renderReservationTime(reservation)}\n </div>\n ))}\n </div>\n )}\n <input\n class=\"s-hidden\"\n name={this.option.name}\n required={this.option.required}\n value={JSON.stringify(this.reservations) === '[]' ? '' : JSON.stringify(this.reservations)}\n ref={reservations => this.reservationsInput = reservations}\n />\n {this.iframeReady && this.bookingModal()}\n </Host>\n );\n }\n}\n"]}
@@ -57,11 +57,15 @@ export class SallaOffer {
57
57
  });
58
58
  this.categorySlot = ((_a = this.host.querySelector('[slot="category"]')) === null || _a === void 0 ? void 0 : _a.innerHTML) || '<a href={url} class="s-offer-slide-cat-entry"><i class={icon}></i><h4>{name}</h4></a>';
59
59
  }
60
- getEndpointByPageName() {
61
- return {
62
- [PageType.Cart]: `offers/cart/${salla.storage.get('cart.id')}`,
63
- [PageType.ProductDetail]: `offers/product/${salla.config.get('page.id')}`,
64
- }[this.currentPage] || "offers";
60
+ async getEndpointByPageName() {
61
+ if (this.currentPage == PageType.Cart) {
62
+ const cartId = await Salla.cart.getCurrentCartId();
63
+ return `offers/cart/${cartId}`;
64
+ }
65
+ if (this.currentPage == PageType.ProductDetail) {
66
+ return `offers/product/${salla.config.get('page.id')}`;
67
+ }
68
+ return "offers";
65
69
  }
66
70
  componentWillLoad() {
67
71
  this.hasCustomComponent = !!customElements.get(this.productCardComponent);
@@ -77,7 +81,7 @@ export class SallaOffer {
77
81
  }
78
82
  throw new Error("Merchant disabled showing the offers on product page");
79
83
  })
80
- .then(() => salla.api.request(this.getEndpointByPageName()))
84
+ .then(async () => salla.api.request(await this.getEndpointByPageName()))
81
85
  .then((res) => {
82
86
  if (!(this.offersList = res.data).length) {
83
87
  throw new Error('salla-offers:: There is no offers!');