@salla.sa/twilight-components 2.14.577 → 2.14.579

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 (341) hide show
  1. package/dist/cjs/{catalog-recommendations-HZzTK7-G.js → catalog-recommendations-Bxs1t6wk.js} +16 -1
  2. package/dist/cjs/{filepond-iflxa4A5.js → filepond-DBIghBBz.js} +1 -1
  3. package/dist/cjs/{filepond-plugin-file-poster-NZ84xlKh.js → filepond-plugin-file-poster-D9QbEXdw.js} +1 -1
  4. package/dist/cjs/{filepond-plugin-file-validate-size-m8Z_JlZX.js → filepond-plugin-file-validate-size-CcTLgsV2.js} +1 -1
  5. package/dist/cjs/{filepond-plugin-file-validate-type-BfF6LYAT.js → filepond-plugin-file-validate-type-wroI9jAT.js} +1 -1
  6. package/dist/cjs/{filepond-plugin-image-edit-DfRJ3iRj.js → filepond-plugin-image-edit-DvJ0qDXd.js} +1 -1
  7. package/dist/cjs/{filepond-plugin-image-exif-orientation-BZxYZai-.js → filepond-plugin-image-exif-orientation-Tv2WgHma.js} +1 -1
  8. package/dist/cjs/{filepond-plugin-image-preview-BQ7HvH2d.js → filepond-plugin-image-preview-Bkcpwdkp.js} +1 -1
  9. package/dist/cjs/{index-CSe-ijAV.js → index-Brycy0hH.js} +3 -3
  10. package/dist/cjs/{intlTelInput-DHfYz8vv.js → intlTelInput-BnpKZAn8.js} +1 -1
  11. package/dist/cjs/loader.cjs.js +1 -1
  12. package/dist/cjs/salla-accordion-body_2.cjs.entry.js +1 -1
  13. package/dist/cjs/salla-accordion_6.cjs.entry.js +1 -1
  14. package/dist/cjs/salla-add-product-button_5.cjs.entry.js +14 -3
  15. package/dist/cjs/salla-advertisement.cjs.entry.js +1 -1
  16. package/dist/cjs/salla-alert_2.cjs.entry.js +1 -1
  17. package/dist/cjs/salla-app-install-alert.cjs.entry.js +1 -1
  18. package/dist/cjs/salla-applied-filters.cjs.entry.js +1 -1
  19. package/dist/cjs/salla-apps-icons.cjs.entry.js +1 -1
  20. package/dist/cjs/salla-attachment-view_9.cjs.entry.js +10 -10
  21. package/dist/cjs/salla-badge.cjs.entry.js +1 -1
  22. package/dist/cjs/salla-basket-gap.cjs.entry.js +83 -5
  23. package/dist/cjs/salla-bullet-delivery_3.cjs.entry.js +1 -1
  24. package/dist/cjs/salla-cart-coupons.cjs.entry.js +1 -1
  25. package/dist/cjs/salla-cart-item-offers_2.cjs.entry.js +1 -1
  26. package/dist/cjs/salla-cart-summary-card.cjs.entry.js +1 -1
  27. package/dist/cjs/salla-cashback-banner.cjs.entry.js +1 -1
  28. package/dist/cjs/salla-comment-factors.cjs.entry.js +1 -1
  29. package/dist/cjs/salla-comment-form_9.cjs.entry.js +1 -1
  30. package/dist/cjs/salla-conditional-offer.cjs.entry.js +1 -1
  31. package/dist/cjs/salla-contacts.cjs.entry.js +1 -1
  32. package/dist/cjs/salla-cookies-bar.cjs.entry.js +1 -1
  33. package/dist/cjs/salla-count-down.cjs.entry.js +1 -1
  34. package/dist/cjs/salla-custom-fields.cjs.entry.js +1 -1
  35. package/dist/cjs/salla-delivery-promise.cjs.entry.js +1 -1
  36. package/dist/cjs/salla-edit-order-button.cjs.entry.js +1 -1
  37. package/dist/cjs/salla-filters-widget.cjs.entry.js +1 -1
  38. package/dist/cjs/salla-filters.cjs.entry.js +1 -1
  39. package/dist/cjs/salla-fulfillment-methods.cjs.entry.js +1 -1
  40. package/dist/cjs/salla-gift-card-redeem.cjs.entry.js +1 -1
  41. package/dist/cjs/salla-gifting.cjs.entry.js +1 -1
  42. package/dist/cjs/salla-hook.cjs.entry.js +1 -1
  43. package/dist/cjs/salla-infinite-scroll.cjs.entry.js +1 -1
  44. package/dist/cjs/salla-installment.cjs.entry.js +1 -1
  45. package/dist/cjs/salla-list-tile.cjs.entry.js +1 -1
  46. package/dist/cjs/salla-localization-modal.cjs.entry.js +1 -1
  47. package/dist/cjs/salla-login-modal.cjs.entry.js +1 -1
  48. package/dist/cjs/salla-loyalty-banner_10.cjs.entry.js +1 -1
  49. package/dist/cjs/salla-loyalty-exchange-product-card.cjs.entry.js +1 -1
  50. package/dist/cjs/salla-loyalty-points-banner.cjs.entry.js +1 -1
  51. package/dist/cjs/salla-loyalty-points-history.cjs.entry.js +1 -1
  52. package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +1 -1
  53. package/dist/cjs/salla-loyalty.cjs.entry.js +1 -1
  54. package/dist/cjs/salla-maintenance-alert.cjs.entry.js +1 -1
  55. package/dist/cjs/salla-map_3.cjs.entry.js +1 -1
  56. package/dist/cjs/salla-menu.cjs.entry.js +1 -1
  57. package/dist/cjs/salla-metadata.cjs.entry.js +1 -1
  58. package/dist/cjs/salla-multiple-bundle-product-cart_2.cjs.entry.js +1 -1
  59. package/dist/cjs/salla-multiple-bundle-product-options-modal_2.cjs.entry.js +1 -1
  60. package/dist/cjs/salla-multiple-bundle-product.cjs.entry.js +1 -1
  61. package/dist/cjs/salla-next-order-coupon.cjs.entry.js +1 -1
  62. package/dist/cjs/salla-notification-item_2.cjs.entry.js +1 -1
  63. package/dist/cjs/salla-offer-modal.cjs.entry.js +1 -1
  64. package/dist/cjs/salla-offer.cjs.entry.js +1 -1
  65. package/dist/cjs/salla-order-branch.cjs.entry.js +1 -1
  66. package/dist/cjs/salla-order-cancel.cjs.entry.js +1 -1
  67. package/dist/cjs/salla-order-details-multiple-bundle-product.cjs.entry.js +1 -1
  68. package/dist/cjs/salla-order-details-options.cjs.entry.js +1 -1
  69. package/dist/cjs/salla-order-details.cjs.entry.js +1 -1
  70. package/dist/cjs/salla-order-edit-item.cjs.entry.js +1 -1
  71. package/dist/cjs/salla-order-edit-product-card.cjs.entry.js +1 -1
  72. package/dist/cjs/salla-order-edit.cjs.entry.js +1 -1
  73. package/dist/cjs/salla-order-options-modal.cjs.entry.js +1 -1
  74. package/dist/cjs/salla-order-shipments.cjs.entry.js +1 -1
  75. package/dist/cjs/salla-order-summary.cjs.entry.js +1 -1
  76. package/dist/cjs/salla-order-totals-card.cjs.entry.js +1 -1
  77. package/dist/cjs/salla-orders.cjs.entry.js +1 -1
  78. package/dist/cjs/salla-payments.cjs.entry.js +1 -1
  79. package/dist/cjs/salla-placeholder.cjs.entry.js +1 -1
  80. package/dist/cjs/salla-price-range.cjs.entry.js +1 -1
  81. package/dist/cjs/salla-product-card-embed.cjs.entry.js +1 -1
  82. package/dist/cjs/salla-product-card.cjs.entry.js +1 -1
  83. package/dist/cjs/salla-product-size-guide.cjs.entry.js +1 -1
  84. package/dist/cjs/salla-products-list.cjs.entry.js +1 -1
  85. package/dist/cjs/salla-products-slider.cjs.entry.js +1 -1
  86. package/dist/cjs/salla-quick-order.cjs.entry.js +1 -1
  87. package/dist/cjs/salla-rating-modal-v2.cjs.entry.js +1 -1
  88. package/dist/cjs/salla-rating-modal.cjs.entry.js +1 -1
  89. package/dist/cjs/salla-review-factors-tags.cjs.entry.js +1 -1
  90. package/dist/cjs/salla-review-order-item.cjs.entry.js +1 -1
  91. package/dist/cjs/salla-scopes.cjs.entry.js +1 -1
  92. package/dist/cjs/salla-search-product-card.cjs.entry.js +1 -1
  93. package/dist/cjs/salla-search.cjs.entry.js +1 -1
  94. package/dist/cjs/salla-skeleton.cjs.entry.js +1 -1
  95. package/dist/cjs/salla-social-share.cjs.entry.js +1 -1
  96. package/dist/cjs/salla-social.cjs.entry.js +1 -1
  97. package/dist/cjs/salla-tab-content_3.cjs.entry.js +1 -1
  98. package/dist/cjs/salla-tiered-offer.cjs.entry.js +1 -1
  99. package/dist/cjs/salla-tooltip.cjs.entry.js +1 -1
  100. package/dist/cjs/salla-trust-badges.cjs.entry.js +1 -1
  101. package/dist/cjs/salla-user-menu.cjs.entry.js +1 -1
  102. package/dist/cjs/salla-user-profile.cjs.entry.js +1 -1
  103. package/dist/cjs/salla-user-settings.cjs.entry.js +1 -1
  104. package/dist/cjs/salla-verify.cjs.entry.js +1 -1
  105. package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
  106. package/dist/cjs/salla-wishlist-actions.cjs.entry.js +1 -1
  107. package/dist/cjs/salla-wishlist-summary.cjs.entry.js +1 -1
  108. package/dist/cjs/twilight.cjs.js +1 -1
  109. package/dist/cjs/{vanilla-picker-Brk9Mb54.js → vanilla-picker-DoQGicjv.js} +1 -1
  110. package/dist/collection/components/salla-basket-gap/salla-basket-gap.js +81 -3
  111. package/dist/collection/components/salla-bought-together/salla-bought-together.js +12 -1
  112. package/dist/collection/shared/catalog-recommendations.js +16 -1
  113. package/dist/components/catalog-recommendations.js +16 -1
  114. package/dist/components/index.js +3 -3
  115. package/dist/components/salla-basket-gap.js +81 -3
  116. package/dist/components/salla-bought-together.js +12 -1
  117. package/dist/esm/{catalog-recommendations-CRW60UDr.js → catalog-recommendations-DIAyA5MP.js} +16 -1
  118. package/dist/esm/{filepond-plugin-file-poster-CHpnwHYe.js → filepond-plugin-file-poster-ifZZJbSt.js} +1 -1
  119. package/dist/esm/{filepond-plugin-file-validate-size-BwHBxxMg.js → filepond-plugin-file-validate-size-Di-mYkQm.js} +1 -1
  120. package/dist/esm/{filepond-plugin-file-validate-type-BD-yTEPO.js → filepond-plugin-file-validate-type-CvQPSQLD.js} +1 -1
  121. package/dist/esm/{filepond-plugin-image-edit-DKc0Yw10.js → filepond-plugin-image-edit-BwN5C4U-.js} +1 -1
  122. package/dist/esm/{filepond-plugin-image-exif-orientation-CepmNFGF.js → filepond-plugin-image-exif-orientation-DskcwcEc.js} +1 -1
  123. package/dist/esm/{filepond-plugin-image-preview-FhnzagMd.js → filepond-plugin-image-preview-CNRRNBsw.js} +1 -1
  124. package/dist/esm/{filepond-Qm94dFPs.js → filepond-uH9_9tud.js} +1 -1
  125. package/dist/esm/{index-BAXTlrSC.js → index-Cv0bGFJf.js} +3 -3
  126. package/dist/esm/{intlTelInput-BJlOPJYY.js → intlTelInput-U4fk8hXD.js} +1 -1
  127. package/dist/esm/loader.js +2 -2
  128. package/dist/esm/salla-accordion-body_2.entry.js +1 -1
  129. package/dist/esm/salla-accordion_6.entry.js +1 -1
  130. package/dist/esm/salla-add-product-button_5.entry.js +14 -3
  131. package/dist/esm/salla-advertisement.entry.js +1 -1
  132. package/dist/esm/salla-alert_2.entry.js +1 -1
  133. package/dist/esm/salla-app-install-alert.entry.js +1 -1
  134. package/dist/esm/salla-applied-filters.entry.js +1 -1
  135. package/dist/esm/salla-apps-icons.entry.js +1 -1
  136. package/dist/esm/salla-attachment-view_9.entry.js +10 -10
  137. package/dist/esm/salla-badge.entry.js +1 -1
  138. package/dist/esm/salla-basket-gap.entry.js +83 -5
  139. package/dist/esm/salla-bullet-delivery_3.entry.js +1 -1
  140. package/dist/esm/salla-cart-coupons.entry.js +1 -1
  141. package/dist/esm/salla-cart-item-offers_2.entry.js +1 -1
  142. package/dist/esm/salla-cart-summary-card.entry.js +1 -1
  143. package/dist/esm/salla-cashback-banner.entry.js +1 -1
  144. package/dist/esm/salla-comment-factors.entry.js +1 -1
  145. package/dist/esm/salla-comment-form_9.entry.js +1 -1
  146. package/dist/esm/salla-conditional-offer.entry.js +1 -1
  147. package/dist/esm/salla-contacts.entry.js +1 -1
  148. package/dist/esm/salla-cookies-bar.entry.js +1 -1
  149. package/dist/esm/salla-count-down.entry.js +1 -1
  150. package/dist/esm/salla-custom-fields.entry.js +1 -1
  151. package/dist/esm/salla-delivery-promise.entry.js +1 -1
  152. package/dist/esm/salla-edit-order-button.entry.js +1 -1
  153. package/dist/esm/salla-filters-widget.entry.js +1 -1
  154. package/dist/esm/salla-filters.entry.js +1 -1
  155. package/dist/esm/salla-fulfillment-methods.entry.js +1 -1
  156. package/dist/esm/salla-gift-card-redeem.entry.js +1 -1
  157. package/dist/esm/salla-gifting.entry.js +1 -1
  158. package/dist/esm/salla-hook.entry.js +1 -1
  159. package/dist/esm/salla-infinite-scroll.entry.js +1 -1
  160. package/dist/esm/salla-installment.entry.js +1 -1
  161. package/dist/esm/salla-list-tile.entry.js +1 -1
  162. package/dist/esm/salla-localization-modal.entry.js +1 -1
  163. package/dist/esm/salla-login-modal.entry.js +1 -1
  164. package/dist/esm/salla-loyalty-banner_10.entry.js +1 -1
  165. package/dist/esm/salla-loyalty-exchange-product-card.entry.js +1 -1
  166. package/dist/esm/salla-loyalty-points-banner.entry.js +1 -1
  167. package/dist/esm/salla-loyalty-points-history.entry.js +1 -1
  168. package/dist/esm/salla-loyalty-prize-item.entry.js +1 -1
  169. package/dist/esm/salla-loyalty.entry.js +1 -1
  170. package/dist/esm/salla-maintenance-alert.entry.js +1 -1
  171. package/dist/esm/salla-map_3.entry.js +1 -1
  172. package/dist/esm/salla-menu.entry.js +1 -1
  173. package/dist/esm/salla-metadata.entry.js +1 -1
  174. package/dist/esm/salla-multiple-bundle-product-cart_2.entry.js +1 -1
  175. package/dist/esm/salla-multiple-bundle-product-options-modal_2.entry.js +1 -1
  176. package/dist/esm/salla-multiple-bundle-product.entry.js +1 -1
  177. package/dist/esm/salla-next-order-coupon.entry.js +1 -1
  178. package/dist/esm/salla-notification-item_2.entry.js +1 -1
  179. package/dist/esm/salla-offer-modal.entry.js +1 -1
  180. package/dist/esm/salla-offer.entry.js +1 -1
  181. package/dist/esm/salla-order-branch.entry.js +1 -1
  182. package/dist/esm/salla-order-cancel.entry.js +1 -1
  183. package/dist/esm/salla-order-details-multiple-bundle-product.entry.js +1 -1
  184. package/dist/esm/salla-order-details-options.entry.js +1 -1
  185. package/dist/esm/salla-order-details.entry.js +1 -1
  186. package/dist/esm/salla-order-edit-item.entry.js +1 -1
  187. package/dist/esm/salla-order-edit-product-card.entry.js +1 -1
  188. package/dist/esm/salla-order-edit.entry.js +1 -1
  189. package/dist/esm/salla-order-options-modal.entry.js +1 -1
  190. package/dist/esm/salla-order-shipments.entry.js +1 -1
  191. package/dist/esm/salla-order-summary.entry.js +1 -1
  192. package/dist/esm/salla-order-totals-card.entry.js +1 -1
  193. package/dist/esm/salla-orders.entry.js +1 -1
  194. package/dist/esm/salla-payments.entry.js +1 -1
  195. package/dist/esm/salla-placeholder.entry.js +1 -1
  196. package/dist/esm/salla-price-range.entry.js +1 -1
  197. package/dist/esm/salla-product-card-embed.entry.js +1 -1
  198. package/dist/esm/salla-product-card.entry.js +1 -1
  199. package/dist/esm/salla-product-size-guide.entry.js +1 -1
  200. package/dist/esm/salla-products-list.entry.js +1 -1
  201. package/dist/esm/salla-products-slider.entry.js +1 -1
  202. package/dist/esm/salla-quick-order.entry.js +1 -1
  203. package/dist/esm/salla-rating-modal-v2.entry.js +1 -1
  204. package/dist/esm/salla-rating-modal.entry.js +1 -1
  205. package/dist/esm/salla-review-factors-tags.entry.js +1 -1
  206. package/dist/esm/salla-review-order-item.entry.js +1 -1
  207. package/dist/esm/salla-scopes.entry.js +1 -1
  208. package/dist/esm/salla-search-product-card.entry.js +1 -1
  209. package/dist/esm/salla-search.entry.js +1 -1
  210. package/dist/esm/salla-skeleton.entry.js +1 -1
  211. package/dist/esm/salla-social-share.entry.js +1 -1
  212. package/dist/esm/salla-social.entry.js +1 -1
  213. package/dist/esm/salla-tab-content_3.entry.js +1 -1
  214. package/dist/esm/salla-tiered-offer.entry.js +1 -1
  215. package/dist/esm/salla-tooltip.entry.js +1 -1
  216. package/dist/esm/salla-trust-badges.entry.js +1 -1
  217. package/dist/esm/salla-user-menu.entry.js +1 -1
  218. package/dist/esm/salla-user-profile.entry.js +1 -1
  219. package/dist/esm/salla-user-settings.entry.js +1 -1
  220. package/dist/esm/salla-verify.entry.js +1 -1
  221. package/dist/esm/salla-wallet.entry.js +1 -1
  222. package/dist/esm/salla-wishlist-actions.entry.js +1 -1
  223. package/dist/esm/salla-wishlist-summary.entry.js +1 -1
  224. package/dist/esm/twilight.js +2 -2
  225. package/dist/esm/{vanilla-picker-C_cY41gl.js → vanilla-picker-CsYJ2Gx8.js} +1 -1
  226. package/dist/twilight/{p-ce1d3ad9.entry.js → p-00e10a64.entry.js} +1 -1
  227. package/dist/twilight/{p-ab3ad37f.entry.js → p-00ff9799.entry.js} +1 -1
  228. package/dist/twilight/{p-7f3e110c.entry.js → p-01339b84.entry.js} +1 -1
  229. package/dist/twilight/{p-10a68a21.entry.js → p-01af3487.entry.js} +1 -1
  230. package/dist/twilight/{p-1fbb0b22.entry.js → p-02a96323.entry.js} +1 -1
  231. package/dist/twilight/{p-e0d834a7.entry.js → p-04e7c9af.entry.js} +1 -1
  232. package/dist/twilight/{p-9e054110.entry.js → p-04fd3d15.entry.js} +1 -1
  233. package/dist/twilight/{p-a79c04a2.entry.js → p-07e0bad0.entry.js} +1 -1
  234. package/dist/twilight/{p-08cedab0.entry.js → p-0c188a09.entry.js} +1 -1
  235. package/dist/twilight/{p-cc1b3318.entry.js → p-0db0b088.entry.js} +1 -1
  236. package/dist/twilight/{p-7d08dcfb.entry.js → p-100831b8.entry.js} +1 -1
  237. package/dist/twilight/{p-6bfe12d5.entry.js → p-10e4fc53.entry.js} +1 -1
  238. package/dist/twilight/{p-abc3e5d5.entry.js → p-1523f751.entry.js} +1 -1
  239. package/dist/twilight/{p-e4ff7a77.entry.js → p-16bc5fe2.entry.js} +1 -1
  240. package/dist/twilight/{p-9920bbad.entry.js → p-174453fd.entry.js} +1 -1
  241. package/dist/twilight/{p-80302c52.entry.js → p-175e00a9.entry.js} +1 -1
  242. package/dist/twilight/{p-1fd6a10e.entry.js → p-1870aa20.entry.js} +1 -1
  243. package/dist/twilight/{p-d3cf9f8a.entry.js → p-18cc0497.entry.js} +1 -1
  244. package/dist/twilight/{p-fa6f2b27.entry.js → p-197385ef.entry.js} +1 -1
  245. package/dist/twilight/{p-00a727c3.entry.js → p-1ac4c8b5.entry.js} +1 -1
  246. package/dist/twilight/{p-0bcca7f8.entry.js → p-1db9cb44.entry.js} +1 -1
  247. package/dist/twilight/{p-3a3815a2.entry.js → p-1f8fb466.entry.js} +1 -1
  248. package/dist/twilight/{p-fc500047.entry.js → p-226766f8.entry.js} +1 -1
  249. package/dist/twilight/{p-2e4064eb.entry.js → p-297b11aa.entry.js} +1 -1
  250. package/dist/twilight/{p-b55fb51b.entry.js → p-2a79781f.entry.js} +1 -1
  251. package/dist/twilight/{p-e66856c5.entry.js → p-2e8673b0.entry.js} +1 -1
  252. package/dist/twilight/{p-b356f3f6.entry.js → p-335d602b.entry.js} +1 -1
  253. package/dist/twilight/{p-637670fa.entry.js → p-34d20d89.entry.js} +1 -1
  254. package/dist/twilight/{p-13abf9ca.entry.js → p-353d7c2b.entry.js} +1 -1
  255. package/dist/twilight/{p-f514b9f5.entry.js → p-37b99097.entry.js} +1 -1
  256. package/dist/twilight/{p-8fc2eb01.entry.js → p-393f2d5a.entry.js} +1 -1
  257. package/dist/twilight/{p-97fee81d.entry.js → p-3a02cd71.entry.js} +1 -1
  258. package/dist/twilight/{p-292a0b4a.entry.js → p-3eefc1f9.entry.js} +1 -1
  259. package/dist/twilight/{p-884104a3.entry.js → p-43d19714.entry.js} +1 -1
  260. package/dist/twilight/{p-5c4e2ed3.entry.js → p-480beded.entry.js} +1 -1
  261. package/dist/twilight/{p-dd18ac5c.entry.js → p-48ea970a.entry.js} +1 -1
  262. package/dist/twilight/{p-423d852d.entry.js → p-49d915b2.entry.js} +1 -1
  263. package/dist/twilight/{p-13c35685.entry.js → p-4f358102.entry.js} +1 -1
  264. package/dist/twilight/{p-99b9bf66.entry.js → p-52a2d067.entry.js} +1 -1
  265. package/dist/twilight/{p-806083b4.entry.js → p-551b8be9.entry.js} +1 -1
  266. package/dist/twilight/{p-072ee78f.entry.js → p-5d140f6a.entry.js} +1 -1
  267. package/dist/twilight/{p-0227316e.entry.js → p-5d1dcdd6.entry.js} +1 -1
  268. package/dist/twilight/{p-5a77257c.entry.js → p-5d61bc8b.entry.js} +1 -1
  269. package/dist/twilight/{p-f2e13d28.entry.js → p-610c0b50.entry.js} +1 -1
  270. package/dist/twilight/{p-faadae59.entry.js → p-613c8c04.entry.js} +1 -1
  271. package/dist/twilight/{p-56609a91.entry.js → p-6161d5c7.entry.js} +1 -1
  272. package/dist/twilight/{p-6de608eb.entry.js → p-6204194f.entry.js} +1 -1
  273. package/dist/twilight/{p-d3556d1f.entry.js → p-6491fe73.entry.js} +1 -1
  274. package/dist/twilight/{p-ea7846fd.entry.js → p-6845c140.entry.js} +1 -1
  275. package/dist/twilight/{p-f0ca37fc.entry.js → p-6adb877c.entry.js} +1 -1
  276. package/dist/twilight/{p-3153f560.entry.js → p-6bdf61dd.entry.js} +1 -1
  277. package/dist/twilight/{p-c38fb150.entry.js → p-70f498b4.entry.js} +1 -1
  278. package/dist/twilight/{p-DGzNHmGp.js → p-79sdW-RJ.js} +1 -1
  279. package/dist/twilight/{p-c90600b1.entry.js → p-821fbdd7.entry.js} +1 -1
  280. package/dist/twilight/{p-2c543420.entry.js → p-83c54d44.entry.js} +1 -1
  281. package/dist/twilight/{p-162fa48e.entry.js → p-8444cf02.entry.js} +1 -1
  282. package/dist/twilight/{p-e944f02a.entry.js → p-84b61b96.entry.js} +1 -1
  283. package/dist/twilight/{p-a73a785d.entry.js → p-84d740c5.entry.js} +1 -1
  284. package/dist/twilight/{p-58c1bf51.entry.js → p-85474877.entry.js} +1 -1
  285. package/dist/twilight/{p-e7c4d4cc.entry.js → p-87c03c55.entry.js} +1 -1
  286. package/dist/twilight/p-888f6120.entry.js +4 -0
  287. package/dist/twilight/{p-fdc97278.entry.js → p-8cca3ae6.entry.js} +1 -1
  288. package/dist/twilight/{p-9b4a0dd3.entry.js → p-914c39e7.entry.js} +1 -1
  289. package/dist/twilight/{p-6605f258.entry.js → p-92ae62e1.entry.js} +1 -1
  290. package/dist/twilight/{p-8a865d37.entry.js → p-94f8ac6a.entry.js} +1 -1
  291. package/dist/twilight/{p-0806da7e.entry.js → p-97a6f87f.entry.js} +1 -1
  292. package/dist/twilight/{p-dda4d231.entry.js → p-9a89449c.entry.js} +1 -1
  293. package/dist/twilight/{p-665bc308.entry.js → p-9b7d25bb.entry.js} +1 -1
  294. package/dist/twilight/{p-a2d07dba.entry.js → p-9c4035fd.entry.js} +1 -1
  295. package/dist/twilight/{p-3cef6be2.entry.js → p-9f233039.entry.js} +1 -1
  296. package/dist/twilight/{p-e95fd91e.entry.js → p-9f726d38.entry.js} +1 -1
  297. package/dist/twilight/{p-SguJQlDo.js → p-BFHiJkJo.js} +1 -1
  298. package/dist/twilight/{p-DnrvXyI6.js → p-BHxYBHNJ.js} +1 -1
  299. package/dist/twilight/{p-_f6GlygH.js → p-BV-RAvFu.js} +1 -1
  300. package/dist/twilight/p-ByRaVyQz.js +9 -0
  301. package/dist/twilight/p-Cv0bGFJf.js +5 -0
  302. package/dist/twilight/{p-BWpg3MwW.js → p-D6cd_mQ5.js} +1 -1
  303. package/dist/twilight/{p-CvebbG3m.js → p-DBruGj-x.js} +1 -1
  304. package/dist/twilight/p-DIAyA5MP.js +4 -0
  305. package/dist/twilight/{p-C6WaobtY.js → p-DuHvhlSw.js} +1 -1
  306. package/dist/twilight/{p-51fb8841.entry.js → p-a03c154f.entry.js} +1 -1
  307. package/dist/twilight/{p-a9fcdac5.entry.js → p-a16a3f5a.entry.js} +1 -1
  308. package/dist/twilight/{p-411c1ab0.entry.js → p-a5b16153.entry.js} +1 -1
  309. package/dist/twilight/{p-44a6598e.entry.js → p-b12845d7.entry.js} +1 -1
  310. package/dist/twilight/{p-bf845ea7.entry.js → p-b4468092.entry.js} +1 -1
  311. package/dist/twilight/{p-51d83216.entry.js → p-b5f3c4c8.entry.js} +1 -1
  312. package/dist/twilight/{p-3dd612a6.entry.js → p-bbd4d8fd.entry.js} +1 -1
  313. package/dist/twilight/{p-8c750736.entry.js → p-c414faf1.entry.js} +1 -1
  314. package/dist/twilight/{p-c63ff8ef.entry.js → p-c4bbe239.entry.js} +1 -1
  315. package/dist/twilight/{p-70451662.entry.js → p-c8775e6f.entry.js} +1 -1
  316. package/dist/twilight/{p-2ba4956f.entry.js → p-c9bf5222.entry.js} +1 -1
  317. package/dist/twilight/{p-18c41e9a.entry.js → p-cac35bf1.entry.js} +1 -1
  318. package/dist/twilight/{p-7b0cf8a1.entry.js → p-cdde65a4.entry.js} +1 -1
  319. package/dist/twilight/{p-59a7ca2e.entry.js → p-cf27d7e1.entry.js} +1 -1
  320. package/dist/twilight/{p-5f464161.entry.js → p-cf348533.entry.js} +1 -1
  321. package/dist/twilight/{p-03c959bb.entry.js → p-d2b78693.entry.js} +1 -1
  322. package/dist/twilight/{p-bb35af04.entry.js → p-d4cca956.entry.js} +1 -1
  323. package/dist/twilight/p-d8a37909.entry.js +4 -0
  324. package/dist/twilight/{p-28cdaf6b.entry.js → p-dbde8a51.entry.js} +1 -1
  325. package/dist/twilight/{p-1762fd86.entry.js → p-e2303e51.entry.js} +1 -1
  326. package/dist/twilight/{p-898ce93b.entry.js → p-e305800c.entry.js} +1 -1
  327. package/dist/twilight/{p-2e3a56de.entry.js → p-f16f0a66.entry.js} +1 -1
  328. package/dist/twilight/{p-c2e871ae.entry.js → p-f71f35c9.entry.js} +1 -1
  329. package/dist/twilight/{p-7d37b650.entry.js → p-fa50faa3.entry.js} +1 -1
  330. package/dist/twilight/{p-ce80fb8f.entry.js → p-fc9f812a.entry.js} +1 -1
  331. package/dist/twilight/{p-DpI1J-G1.js → p-fca8mBDM.js} +1 -1
  332. package/dist/twilight/{p-84cff600.entry.js → p-fe94f5ba.entry.js} +1 -1
  333. package/dist/twilight/twilight.esm.js +1 -1
  334. package/dist/types/components/salla-basket-gap/salla-basket-gap.d.ts +15 -0
  335. package/dist/types/components/salla-bought-together/salla-bought-together.d.ts +2 -0
  336. package/package.json +5 -5
  337. package/dist/twilight/p-073e1363.entry.js +0 -4
  338. package/dist/twilight/p-6f9bc285.entry.js +0 -4
  339. package/dist/twilight/p-BAXTlrSC.js +0 -5
  340. package/dist/twilight/p-CRW60UDr.js +0 -4
  341. package/dist/twilight/p-D5lNzFgl.js +0 -9
@@ -44,6 +44,11 @@ const SallaBasketGap$1 = /*@__PURE__*/ proxyCustomElement(class SallaBasketGap e
44
44
  this.placeholder = '';
45
45
  this.fetchGeneration = 0;
46
46
  this.isSyncingCart = false;
47
+ /** The recommendations response that produced the rendered list; attributes every event below. */
48
+ this.requestId = null;
49
+ this.listViewTracked = false;
50
+ /** Ids of the last list actually announced, so an unchanged re-fetch is not re-counted. */
51
+ this.lastListViewedKey = '';
47
52
  this.cartItemChangedHandler = (response) => {
48
53
  const items = response?.data?.cart?.items ?? [];
49
54
  const ids = items.map((i) => String(i.product_id)).filter(Boolean);
@@ -72,6 +77,7 @@ const SallaBasketGap$1 = /*@__PURE__*/ proxyCustomElement(class SallaBasketGap e
72
77
  cartItem,
73
78
  cartId: event?.detail?.data?.id,
74
79
  source: 'basket_gap',
80
+ request_id: this.requestId,
75
81
  }]);
76
82
  };
77
83
  salla.lang.onLoaded(() => {
@@ -116,6 +122,64 @@ const SallaBasketGap$1 = /*@__PURE__*/ proxyCustomElement(class SallaBasketGap e
116
122
  document.lazyLoadInstance?.update(this.host.querySelectorAll('.lazy'));
117
123
  this.positionUnderCartItems();
118
124
  }
125
+ componentDidRender() {
126
+ if (!this.products.length || this.listViewTracked || this.intersectionObserver)
127
+ return;
128
+ // The section is injected below the cart items, so it is usually out of view on
129
+ // load — an impression is only real once it is actually on screen.
130
+ const observer = new IntersectionObserver((entries) => {
131
+ // A callback queued before disconnect() still runs. Without this check a
132
+ // callback left over from the list BEFORE a cart-driven refetch would announce
133
+ // the new list before it is rendered, disconnect the new observer (the old code
134
+ // disconnected whichever observer was current, not the one that fired) and mark
135
+ // the impression done — so the new list never got a real one.
136
+ if (this.intersectionObserver !== observer)
137
+ return;
138
+ if (!entries.some((entry) => entry.isIntersecting))
139
+ return;
140
+ this.listViewTracked = true;
141
+ observer.disconnect();
142
+ this.intersectionObserver = undefined;
143
+ this.emitListViewed();
144
+ }, { threshold: 0.1 });
145
+ this.intersectionObserver = observer;
146
+ observer.observe(this.host);
147
+ }
148
+ emitListViewed() {
149
+ // A cart change re-fetches, and the section is usually still on screen, so the
150
+ // observer re-arms and fires immediately. Only a genuinely different list is a new
151
+ // impression.
152
+ const key = this.products.map((product) => product.id).join(',');
153
+ if (key === this.lastListViewedKey)
154
+ return;
155
+ this.lastListViewedKey = key;
156
+ salla.event.emit('salla-basket-gap::list.viewed', {
157
+ products: this.products,
158
+ source: 'basket_gap',
159
+ request_id: this.requestId,
160
+ });
161
+ }
162
+ /**
163
+ * One delegated listener per card rather than a handler on each anchor: the click is
164
+ * only a product click when it lands on a product link, not on the add button or the
165
+ * offer badge.
166
+ */
167
+ handleCardClick(event, product) {
168
+ // Duck-typed rather than `instanceof Element`: that global does not exist in
169
+ // Stencil's non-browser runtime, where the check would throw instead of skip.
170
+ const target = event.target;
171
+ if (typeof target?.closest === 'function' && target.closest('a[href]')) {
172
+ this.emitProductClicked(product);
173
+ }
174
+ }
175
+ emitProductClicked(product) {
176
+ salla.event.emit('salla-basket-gap::product.clicked', [{
177
+ product,
178
+ position: this.products.indexOf(product) + 1,
179
+ source: 'basket_gap',
180
+ request_id: this.requestId,
181
+ }]);
182
+ }
119
183
  /**
120
184
  * Cart item rows on the storefront cart page (excluding the order-options block).
121
185
  * Kept defensive: themes that don't use the `form[id^="item-"]` pattern return none.
@@ -181,6 +245,8 @@ const SallaBasketGap$1 = /*@__PURE__*/ proxyCustomElement(class SallaBasketGap e
181
245
  this.host.addEventListener('success', this.addButtonSuccessHandler);
182
246
  }
183
247
  disconnectedCallback() {
248
+ this.intersectionObserver?.disconnect();
249
+ this.intersectionObserver = undefined;
184
250
  salla.event.off('cart::item.added', this.cartItemChangedHandler);
185
251
  salla.event.off('cart::item.deleted', this.cartItemChangedHandler);
186
252
  salla.event.off('cart::before.add.item', this.beforeAddItemHandler);
@@ -208,6 +274,8 @@ const SallaBasketGap$1 = /*@__PURE__*/ proxyCustomElement(class SallaBasketGap e
208
274
  .then((ids) => {
209
275
  if (generation !== this.fetchGeneration)
210
276
  return;
277
+ // Held until the products it describes are actually rendered — see fetchProducts.
278
+ const requestId = ids._requestId || null;
211
279
  // Pass objectIDs as the authoritative cart list so the filter is not
212
280
  // affected by stale storage when called from a live cart event.
213
281
  const cartIds = this.getCartProductIds(objectIDs);
@@ -216,7 +284,7 @@ const SallaBasketGap$1 = /*@__PURE__*/ proxyCustomElement(class SallaBasketGap e
216
284
  this.canRender = false;
217
285
  return;
218
286
  }
219
- return this.fetchProducts(filteredIds.slice(0, this.limit), generation);
287
+ return this.fetchProducts(filteredIds.slice(0, this.limit), generation, requestId);
220
288
  })
221
289
  .catch(() => {
222
290
  if (generation !== this.fetchGeneration)
@@ -229,7 +297,7 @@ const SallaBasketGap$1 = /*@__PURE__*/ proxyCustomElement(class SallaBasketGap e
229
297
  this.isLoading = false;
230
298
  });
231
299
  }
232
- fetchProducts(ids, generation) {
300
+ fetchProducts(ids, generation, requestId = null) {
233
301
  return salla.api.withoutNotifier(() => salla.product.api.fetch({
234
302
  source: 'selected',
235
303
  source_value: ids,
@@ -237,7 +305,17 @@ const SallaBasketGap$1 = /*@__PURE__*/ proxyCustomElement(class SallaBasketGap e
237
305
  })).then((response) => {
238
306
  if (generation !== this.fetchGeneration)
239
307
  return;
308
+ // List, id and impression state flip together. Assigning the id earlier left a
309
+ // window where an observer already watching an unscrolled section could fire and
310
+ // report the PREVIOUS products under the NEW id — and mark the impression done,
311
+ // so the real one for the new list never fired.
240
312
  this.products = response?.data ?? [];
313
+ this.requestId = requestId;
314
+ // A refreshed list is a new impression: the cart changed and the shopper sees a
315
+ // different set of products, so a pending observer is re-armed by componentDidRender.
316
+ this.listViewTracked = false;
317
+ this.intersectionObserver?.disconnect();
318
+ this.intersectionObserver = undefined;
241
319
  this.canRender = this.products.length > 0;
242
320
  }).catch(() => {
243
321
  if (generation !== this.fetchGeneration)
@@ -265,7 +343,7 @@ const SallaBasketGap$1 = /*@__PURE__*/ proxyCustomElement(class SallaBasketGap e
265
343
  }
266
344
  getProductCard(product) {
267
345
  const discountLabel = this.getDiscountLabel(product);
268
- return (h("div", { key: product.id, class: "s-basket-gap-card" }, h("a", { href: product.url, class: "s-basket-gap-card-image" }, h("img", { class: "lazy", src: this.placeholder, "data-src": product.image?.url, alt: product.image?.alt || product.name })), h("div", { class: "s-basket-gap-card-info" }, h("h3", { class: "s-basket-gap-card-name" }, h("a", { href: product.url }, product.name)), product.is_on_sale
346
+ return (h("div", { key: product.id, class: "s-basket-gap-card", onClick: (event) => this.handleCardClick(event, product) }, h("a", { href: product.url, class: "s-basket-gap-card-image" }, h("img", { class: "lazy", src: this.placeholder, "data-src": product.image?.url, alt: product.image?.alt || product.name })), h("div", { class: "s-basket-gap-card-info" }, h("h3", { class: "s-basket-gap-card-name" }, h("a", { href: product.url }, product.name)), product.is_on_sale
269
347
  ? h("div", { class: "s-basket-gap-card-sale-price" }, h("span", { innerHTML: salla.money(product.sale_price) }), h("del", { innerHTML: salla.money(product.regular_price) }))
270
348
  : h("span", { class: "s-basket-gap-card-price", innerHTML: salla.money(product.price) }), product.weight_label && (h("span", { class: "s-basket-gap-card-weight" }, this.weightLabel, " ", product.weight_label))), h("div", { class: "s-basket-gap-card-actions" }, (product.promotion_title || product.discount_ends || product.is_on_sale) && (h("div", { class: "s-basket-gap-card-offer" }, h("i", { class: "sicon-gift" }), discountLabel && h("span", null, discountLabel), product.discount_ends && [
271
349
  // auto-segments drops the days box under 24h left, and the hours box under 1h.
@@ -26,6 +26,8 @@ const SallaBoughtTogether$1 = /*@__PURE__*/ proxyCustomElement(class SallaBought
26
26
  this.buyTogetherFor = salla.lang.get('pages.products.buy_together_for');
27
27
  this.resolvedProductId = 0;
28
28
  this.listViewTracked = false;
29
+ /** The recommendations response that produced the rendered list; attributes every event below. */
30
+ this.requestId = null;
29
31
  salla.lang.onLoaded(() => {
30
32
  this.title = salla.lang.get('pages.products.bought_together_title');
31
33
  this.subtitle = salla.lang.get('pages.products.bought_together_subtitle');
@@ -52,6 +54,7 @@ const SallaBoughtTogether$1 = /*@__PURE__*/ proxyCustomElement(class SallaBought
52
54
  this.canRender = false;
53
55
  return;
54
56
  }
57
+ this.requestId = recommendedIds._requestId || null;
55
58
  const ids = [String(this.resolvedProductId), ...recommendedIds.slice(0, this.limit)];
56
59
  return salla.product.fetch({ source: 'selected', source_value: ids });
57
60
  })
@@ -101,6 +104,8 @@ const SallaBoughtTogether$1 = /*@__PURE__*/ proxyCustomElement(class SallaBought
101
104
  .filter(p => !this.isMainProduct(p.id));
102
105
  salla.event.emit('salla-bought-together::list.viewed', {
103
106
  products: recommendedProducts,
107
+ source: 'pdp_fbt',
108
+ request_id: this.requestId,
104
109
  });
105
110
  }
106
111
  isMainProduct(id) {
@@ -112,7 +117,12 @@ const SallaBoughtTogether$1 = /*@__PURE__*/ proxyCustomElement(class SallaBought
112
117
  return index === -1 ? -1 : index + 1;
113
118
  }
114
119
  emitProductClicked(product, position) {
115
- salla.event.emit('salla-bought-together::product.clicked', [{ product, position }]);
120
+ salla.event.emit('salla-bought-together::product.clicked', [{
121
+ product,
122
+ position,
123
+ source: 'pdp_fbt',
124
+ request_id: this.requestId,
125
+ }]);
116
126
  }
117
127
  toggleProduct(id) {
118
128
  const next = new Set(this.selectedIds);
@@ -153,6 +163,7 @@ const SallaBoughtTogether$1 = /*@__PURE__*/ proxyCustomElement(class SallaBought
153
163
  position,
154
164
  cartItem,
155
165
  cartId: response?.data?.id,
166
+ request_id: this.requestId,
156
167
  }]);
157
168
  }
158
169
  }
@@ -51,6 +51,7 @@ function toNumericId(value) {
51
51
  function fetchRecommendations(path, params) {
52
52
  const url = new URL(getRecommendationsUrl(path));
53
53
  Object.entries(params).forEach(([key, value]) => url.searchParams.set(key, value));
54
+ let requestId = null;
54
55
  // Native fetch (not salla.api) so only the explicit allow-listed headers are
55
56
  // sent — no axios default headers to trip the recommendations CORS preflight.
56
57
  // Best-effort feature: callers hide their section via .catch(), so no notifier.
@@ -65,9 +66,23 @@ function fetchRecommendations(path, params) {
65
66
  if (!response.ok) {
66
67
  throw new Error(`Recommendations request failed: ${response.status}`);
67
68
  }
69
+ // Going around `salla.api` also goes around the axios response interceptor that
70
+ // harvests this id for `salla.recommendations`, so it is captured here instead.
71
+ // The recommendations worker generates one when the client sends none and
72
+ // CORS-exposes it, so it is present on every response.
73
+ requestId = response.headers?.get?.('s-request-id') ?? null;
68
74
  return response.json();
69
75
  })
70
- .then((payload) => extractRecommendationIds(payload));
76
+ .then((payload) => {
77
+ const ids = extractRecommendationIds(payload);
78
+ // Rides along on the id list so callers keep their `string[]` contract, and the
79
+ // section that renders these ids can attribute its events to the response that
80
+ // produced them. Non-enumerable, so the value still behaves as a plain array.
81
+ if (requestId) {
82
+ Object.defineProperty(ids, '_requestId', { value: requestId });
83
+ }
84
+ return ids;
85
+ });
71
86
  }
72
87
  function fetchCartBoughtTogether(productIds) {
73
88
  const ids = productIds
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Crafted with ❤ by Salla
3
3
  */
4
- import { d as getDefaultExportFromCjs } from './index-BAXTlrSC.js';
4
+ import { d as getDefaultExportFromCjs } from './index-Cv0bGFJf.js';
5
5
 
6
6
  function _mergeNamespaces(n, m) {
7
7
  m.forEach(function (e) {
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Crafted with ❤ by Salla
3
3
  */
4
- import { d as getDefaultExportFromCjs } from './index-BAXTlrSC.js';
4
+ import { d as getDefaultExportFromCjs } from './index-Cv0bGFJf.js';
5
5
 
6
6
  function _mergeNamespaces(n, m) {
7
7
  m.forEach(function (e) {
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Crafted with ❤ by Salla
3
3
  */
4
- import { d as getDefaultExportFromCjs } from './index-BAXTlrSC.js';
4
+ import { d as getDefaultExportFromCjs } from './index-Cv0bGFJf.js';
5
5
 
6
6
  function _mergeNamespaces(n, m) {
7
7
  m.forEach(function (e) {
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Crafted with ❤ by Salla
3
3
  */
4
- import { d as getDefaultExportFromCjs } from './index-BAXTlrSC.js';
4
+ import { d as getDefaultExportFromCjs } from './index-Cv0bGFJf.js';
5
5
 
6
6
  function _mergeNamespaces(n, m) {
7
7
  m.forEach(function (e) {
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Crafted with ❤ by Salla
3
3
  */
4
- import { d as getDefaultExportFromCjs } from './index-BAXTlrSC.js';
4
+ import { d as getDefaultExportFromCjs } from './index-Cv0bGFJf.js';
5
5
 
6
6
  function _mergeNamespaces(n, m) {
7
7
  m.forEach(function (e) {
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Crafted with ❤ by Salla
3
3
  */
4
- import { d as getDefaultExportFromCjs } from './index-BAXTlrSC.js';
4
+ import { d as getDefaultExportFromCjs } from './index-Cv0bGFJf.js';
5
5
 
6
6
  function _mergeNamespaces(n, m) {
7
7
  m.forEach(function (e) {
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Crafted with ❤ by Salla
3
3
  */
4
- import { d as getDefaultExportFromCjs } from './index-BAXTlrSC.js';
4
+ import { d as getDefaultExportFromCjs } from './index-Cv0bGFJf.js';
5
5
 
6
6
  function _mergeNamespaces(n, m) {
7
7
  m.forEach(function (e) {