@mframework/layer-commerce 0.0.3

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 (355) hide show
  1. package/README.md +101 -0
  2. package/app/cart/useCart.ts +1 -0
  3. package/app/components/ChevronIcon/ChevronIcon.config.ts +17 -0
  4. package/app/components/DateSelect/DateSelect.config.ts +15 -0
  5. package/app/components/Field/Field.config.ts +14 -0
  6. package/app/components/FieldDate/FieldDate.config.ts +16 -0
  7. package/app/components/Form/Form.type.ts +8 -0
  8. package/app/components/Product/Product.config.ts +19 -0
  9. package/app/components/Product/Stock.config.ts +15 -0
  10. package/app/components/ProductCustomizableOption/ProductCustomizableOption.config.ts +5 -0
  11. package/app/components/ProductGallery/ProductGallery.config.ts +15 -0
  12. package/app/components/ProductReviews/ProductReviews.config.ts +8 -0
  13. package/app/composables/_types.ts +18 -0
  14. package/app/composables/adapters/abstract/cartAdapter.ts +0 -0
  15. package/app/composables/adapters/abstract/categoryAdapter.ts +0 -0
  16. package/app/composables/adapters/abstract/customerAdapter.ts +0 -0
  17. package/app/composables/adapters/abstract/inventoryAdapter.ts +0 -0
  18. package/app/composables/adapters/abstract/orderAdapter.ts +0 -0
  19. package/app/composables/adapters/abstract/productAdapter.ts +7 -0
  20. package/app/composables/cart/registry.ts +20 -0
  21. package/app/composables/cart/types.ts +18 -0
  22. package/app/composables/cart/useCart.ts +15 -0
  23. package/app/composables/config.ts +19 -0
  24. package/app/composables/defs/apiDefinitions.ts +55 -0
  25. package/app/composables/defs/extension.feature +40 -0
  26. package/app/composables/defs/extension.mocks.ts +39 -0
  27. package/app/composables/defs/extension.test.ts +280 -0
  28. package/app/composables/defs/extension.ts +236 -0
  29. package/app/composables/defs/index.ts +3 -0
  30. package/app/composables/defs/typeHelpers.ts +8 -0
  31. package/app/composables/defs/types.ts +136 -0
  32. package/app/composables/domain/product.ts +12 -0
  33. package/app/composables/featured-products.ts +20 -0
  34. package/app/composables/helpers/contextualizedNormalizers.feature +14 -0
  35. package/app/composables/helpers/contextualizedNormalizers.test.ts +85 -0
  36. package/app/composables/helpers/contextualizedNormalizers.ts +20 -0
  37. package/app/composables/helpers/index.ts +1 -0
  38. package/app/composables/index.ts +9 -0
  39. package/app/composables/methods/auth.ts +83 -0
  40. package/app/composables/methods/cart.ts +119 -0
  41. package/app/composables/methods/category.ts +27 -0
  42. package/app/composables/methods/checkout.ts +54 -0
  43. package/app/composables/methods/customer.ts +52 -0
  44. package/app/composables/methods/helpers.ts +5 -0
  45. package/app/composables/methods/index.ts +75 -0
  46. package/app/composables/methods/order.ts +39 -0
  47. package/app/composables/methods/product.ts +95 -0
  48. package/app/composables/methods/settings.ts +16 -0
  49. package/app/composables/models/cart.ts +95 -0
  50. package/app/composables/models/category.ts +13 -0
  51. package/app/composables/models/checkout.ts +17 -0
  52. package/app/composables/models/customer.ts +16 -0
  53. package/app/composables/models/facets.ts +25 -0
  54. package/app/composables/models/index.ts +94 -0
  55. package/app/composables/models/order.ts +43 -0
  56. package/app/composables/models/product.ts +73 -0
  57. package/app/composables/models/shared.ts +75 -0
  58. package/app/composables/orders.ts +69 -0
  59. package/app/composables/products/registry.ts +86 -0
  60. package/app/composables/products/types.ts +8 -0
  61. package/app/composables/products/useEvents.ts +26 -0
  62. package/app/composables/products/useGiftCards.ts +29 -0
  63. package/app/composables/products/useProducts.ts +12 -0
  64. package/app/composables/products/useSubscriptions.ts +29 -0
  65. package/app/composables/products.ts +30 -0
  66. package/app/composables/registry.ts +24 -0
  67. package/app/composables/useAuth.ts +43 -0
  68. package/app/composables/useBreakpoints/index.ts +1 -0
  69. package/app/composables/useBreakpoints/useBreakpoints.ts +28 -0
  70. package/app/composables/useCache.ts +38 -0
  71. package/app/composables/useCart/__tests__/useCart.spec.ts +11 -0
  72. package/app/composables/useCart/index.ts +1 -0
  73. package/app/composables/useCart/types.ts +17 -0
  74. package/app/composables/useCart/useCart.ts +46 -0
  75. package/app/composables/useCartShippingMethods/__tests__/useCartShippingMethods.spec.ts +11 -0
  76. package/app/composables/useCartShippingMethods/index.ts +1 -0
  77. package/app/composables/useCartShippingMethods/types.ts +17 -0
  78. package/app/composables/useCartShippingMethods/useCartShippingMethods.ts +47 -0
  79. package/app/composables/useCatalog.ts +26 -0
  80. package/app/composables/useContent.ts +26 -0
  81. package/app/composables/useCustomer/__tests__/useCustomer.spec.ts +25 -0
  82. package/app/composables/useCustomer/index.ts +2 -0
  83. package/app/composables/useCustomer/types.ts +17 -0
  84. package/app/composables/useCustomer/useCustomer.ts +40 -0
  85. package/app/composables/useCustomerAddress/__tests__/useCustomerAddress.spec.ts +11 -0
  86. package/app/composables/useCustomerAddress/index.ts +2 -0
  87. package/app/composables/useCustomerAddress/types.ts +17 -0
  88. package/app/composables/useCustomerAddress/useCustomerAddress.ts +55 -0
  89. package/app/composables/useCustomerOrder/__tests__/useCustomerOrder.spec.ts +11 -0
  90. package/app/composables/useCustomerOrder/adress.ts +10 -0
  91. package/app/composables/useCustomerOrder/index.ts +2 -0
  92. package/app/composables/useCustomerOrder/product.ts +37 -0
  93. package/app/composables/useCustomerOrder/types.ts +40 -0
  94. package/app/composables/useCustomerOrder/useCustomerOrder.ts +63 -0
  95. package/app/composables/useCustomerOrders/__tests__/useCustomerOrders.spec.ts +11 -0
  96. package/app/composables/useCustomerOrders/index.ts +2 -0
  97. package/app/composables/useCustomerOrders/types.ts +20 -0
  98. package/app/composables/useCustomerOrders/useCustomerOrders.ts +56 -0
  99. package/app/composables/useCustomerReturns/__tests__/useCustomerReturns.spec.ts +11 -0
  100. package/app/composables/useCustomerReturns/index.ts +2 -0
  101. package/app/composables/useCustomerReturns/types.ts +17 -0
  102. package/app/composables/useCustomerReturns/useCustomerReturns.ts +41 -0
  103. package/app/composables/useHandleError/index.ts +1 -0
  104. package/app/composables/useHandleError/types.ts +11 -0
  105. package/app/composables/useHandleError/useHandleError.ts +27 -0
  106. package/app/composables/useInventory.ts +29 -0
  107. package/app/composables/useLoading.ts +21 -0
  108. package/app/composables/useNotification.ts +21 -0
  109. package/app/composables/usePageTitle.ts +20 -0
  110. package/app/composables/useProduct/index.ts +2 -0
  111. package/app/composables/useProduct/types.ts +17 -0
  112. package/app/composables/useProduct/useProduct.ts +42 -0
  113. package/app/composables/useProductAttribute/__tests__/useProduct.mock.ts +31 -0
  114. package/app/composables/useProductAttribute/__tests__/useProductAttribute.spec.ts +14 -0
  115. package/app/composables/useProductAttribute/index.ts +1 -0
  116. package/app/composables/useProductAttribute/useProductAttribute.ts +37 -0
  117. package/app/composables/useProductRecommended/__tests__/useProductRecommended.spec.ts +12 -0
  118. package/app/composables/useProductRecommended/index.ts +1 -0
  119. package/app/composables/useProductRecommended/types.ts +17 -0
  120. package/app/composables/useProductRecommended/useProductRecommended.ts +43 -0
  121. package/app/composables/useProductReviews/__tests__/productReviews.mock.ts +20 -0
  122. package/app/composables/useProductReviews/__tests__/useProductReviews.spec.ts +22 -0
  123. package/app/composables/useProductReviews/index.ts +2 -0
  124. package/app/composables/useProductReviews/types.ts +17 -0
  125. package/app/composables/useProductReviews/useProductReviews.ts +46 -0
  126. package/app/composables/useProducts/__tests__/useProducts.spec.ts +11 -0
  127. package/app/composables/useProducts/types.ts +22 -0
  128. package/app/composables/useProducts/useProducts.ts +41 -0
  129. package/app/composables/useTax.ts +27 -0
  130. package/app/composables/validationRules/index.ts +1 -0
  131. package/app/composables/validationRules/password.feature +67 -0
  132. package/app/composables/validationRules/password.test.ts +89 -0
  133. package/app/composables/validationRules/password.ts +25 -0
  134. package/app/normalizers/Cart.query.ts +729 -0
  135. package/app/normalizers/Cart.type.ts +285 -0
  136. package/app/normalizers/Category.query.ts +146 -0
  137. package/app/normalizers/Category.type.ts +55 -0
  138. package/app/normalizers/CheckEmail.query.ts +28 -0
  139. package/app/normalizers/Checkout.query.ts +253 -0
  140. package/app/normalizers/Checkout.type.ts +77 -0
  141. package/app/normalizers/CmsBlock.query.ts +57 -0
  142. package/app/normalizers/CmsBlock.type.ts +25 -0
  143. package/app/normalizers/CmsPage.query.ts +59 -0
  144. package/app/normalizers/CmsPage.type.ts +26 -0
  145. package/app/normalizers/Config.query.ts +224 -0
  146. package/app/normalizers/Config.type.ts +196 -0
  147. package/app/normalizers/ContactForm.query.ts +49 -0
  148. package/app/normalizers/CreditMemo.type.ts +49 -0
  149. package/app/normalizers/GiftCard.type.ts +24 -0
  150. package/app/normalizers/Invoice.type.ts +58 -0
  151. package/app/normalizers/Menu.query.ts +54 -0
  152. package/app/normalizers/Menu.type.ts +22 -0
  153. package/app/normalizers/MyAccount.query.ts +268 -0
  154. package/app/normalizers/MyAccount.type.ts +129 -0
  155. package/app/normalizers/NewsletterSubscription.query.ts +38 -0
  156. package/app/normalizers/Order.query.ts +741 -0
  157. package/app/normalizers/Order.type.ts +268 -0
  158. package/app/normalizers/Payment.type.ts +28 -0
  159. package/app/normalizers/ProductAlerts.query.ts +23 -0
  160. package/app/normalizers/ProductCompare.query.ts +226 -0
  161. package/app/normalizers/ProductCompare.type.ts +90 -0
  162. package/app/normalizers/ProductList.query.ts +1620 -0
  163. package/app/normalizers/ProductList.type.ts +726 -0
  164. package/app/normalizers/Region.query.ts +58 -0
  165. package/app/normalizers/Region.type.ts +23 -0
  166. package/app/normalizers/Return.type.ts +50 -0
  167. package/app/normalizers/Review.query.ts +81 -0
  168. package/app/normalizers/Review.type.ts +42 -0
  169. package/app/normalizers/Slider.query.ts +72 -0
  170. package/app/normalizers/Slider.type.ts +26 -0
  171. package/app/normalizers/StoreInPickUp.query.ts +54 -0
  172. package/app/normalizers/StoreInPickUp.type.ts +59 -0
  173. package/app/normalizers/Subscription.type.ts +25 -0
  174. package/app/normalizers/Transaction.type.ts +20 -0
  175. package/app/normalizers/UrlRewrites.query.ts +55 -0
  176. package/app/normalizers/UrlRewrites.type.ts +25 -0
  177. package/app/normalizers/Wishlist.query.ts +202 -0
  178. package/app/normalizers/Wishlist.type.ts +42 -0
  179. package/app/pages/brand/[...slug].vue +76 -0
  180. package/app/pages/brands.vue +67 -0
  181. package/app/pages/cart.vue +142 -0
  182. package/app/pages/compare.vue +166 -0
  183. package/app/pages/departments/[...slug].vue +353 -0
  184. package/app/pages/departments/category/[...slug].vue +114 -0
  185. package/app/pages/incentive/[...id].vue +66 -0
  186. package/app/pages/invoice/[id].vue +309 -0
  187. package/app/pages/order/[id].vue +327 -0
  188. package/app/pages/product/[...id].vue +309 -0
  189. package/app/pages/product/showcases/index.vue +86 -0
  190. package/app/pages/shipment/[...id].vue +176 -0
  191. package/app/pages/shop/[...slug].vue +158 -0
  192. package/app/pages/shops.vue +76 -0
  193. package/app/pages/subscription/[...id].vue +147 -0
  194. package/app/pages/transaction/[...id].vue +74 -0
  195. package/app/routes/CategoryPage/CategoryPage.config.ts +28 -0
  196. package/app/routes/CategoryPage/CategoryPage.type.ts +8 -0
  197. package/app/routes/Checkout/Checkout.config.ts +3 -0
  198. package/app/routes/Checkout/Checkout.type.ts +14 -0
  199. package/app/routes/MyAccount/MyAccount.config.ts +1 -0
  200. package/app/routes/SearchPage/SearchPage.config.ts +1 -0
  201. package/app/routes/UrlRewrites/UrlRewrites.config.ts +5 -0
  202. package/app/stores/Cart/Cart.type.ts +26 -0
  203. package/app/stores/MyAccount/MyAccount.action.ts +7 -0
  204. package/app/stores/Notification/Notification.action.ts +40 -0
  205. package/app/stores/Notification/Notification.type.ts +16 -0
  206. package/app/stores/Popup/Popup.action.ts +30 -0
  207. package/app/stores/Product/Product.dispatcher.ts +53 -0
  208. package/app/stores/Product/Product.reducer.ts +12 -0
  209. package/app/stores/ProductList/ProductList.dispatcher.ts +35 -0
  210. package/app/stores/ProductList/ProductList.reducer.ts +13 -0
  211. package/app/stores/Store.type.ts +31 -0
  212. package/app/stores/Wishlist/Wishlist.type.ts +12 -0
  213. package/app/stores/cart.ts +218 -0
  214. package/app/stores/cartStore.ts +224 -0
  215. package/app/stores/checkout.ts +18 -0
  216. package/app/stores/compare.ts +65 -0
  217. package/app/stores/currency.js +29 -0
  218. package/app/stores/digital-products.js +11 -0
  219. package/app/stores/orders.ts +172 -0
  220. package/app/stores/product.ts +34 -0
  221. package/app/stores/productList.ts +35 -0
  222. package/app/stores/productListInfo.ts +0 -0
  223. package/app/stores/products.ts +118 -0
  224. package/app/stores/recentlyViewedProducts.ts +56 -0
  225. package/app/stores/review.ts +33 -0
  226. package/app/stores/storeInPickUp.ts +21 -0
  227. package/app/stores/user.ts +20 -0
  228. package/app/stores/wishlist.ts +46 -0
  229. package/app/types/Account.type.ts +141 -0
  230. package/app/types/Breadcrumbs.type.ts +23 -0
  231. package/app/types/CMS.type.ts +33 -0
  232. package/app/types/Category.type.ts +67 -0
  233. package/app/types/Checkout.type.ts +58 -0
  234. package/app/types/Common.type.ts +77 -0
  235. package/app/types/Config.type.ts +47 -0
  236. package/app/types/Device.type.ts +37 -0
  237. package/app/types/Direction.type.ts +23 -0
  238. package/app/types/Downloadable.type.ts +24 -0
  239. package/app/types/Error.type.ts +22 -0
  240. package/app/types/Field.type.ts +151 -0
  241. package/app/types/Global.type.ts +156 -0
  242. package/app/types/Graphql.type.ts +4497 -0
  243. package/app/types/Layout.type.ts +18 -0
  244. package/app/types/Menu.type.ts +39 -0
  245. package/app/types/MiniCart.type.ts +61 -0
  246. package/app/types/NotificationList.type.ts +34 -0
  247. package/app/types/Order.type.ts +174 -0
  248. package/app/types/Price.type.ts +72 -0
  249. package/app/types/ProductCompare.type.ts +24 -0
  250. package/app/types/ProductList.type.ts +351 -0
  251. package/app/types/Rating.type.ts +42 -0
  252. package/app/types/Router.type.ts +67 -0
  253. package/app/types/Slider.type.ts +25 -0
  254. package/app/types/StockStatus.type.ts +21 -0
  255. package/app/types/domain/index.ts +94 -0
  256. package/app/types/index.ts +33 -0
  257. package/app/types/shims.d.ts +52 -0
  258. package/app/types/tilework-opus.d.ts +48 -0
  259. package/app/utils/Address/Address.type.ts +28 -0
  260. package/app/utils/Address/index.ts +325 -0
  261. package/app/utils/Auth/IsSignedIn.ts +4 -0
  262. package/app/utils/Auth/Token.ts +9 -0
  263. package/app/utils/Base64/Base64.ts +16 -0
  264. package/app/utils/Base64/index.ts +12 -0
  265. package/app/utils/Browser/Browser.ts +29 -0
  266. package/app/utils/Browser/index.ts +12 -0
  267. package/app/utils/BrowserDatabase/BrowserDatabase.ts +70 -0
  268. package/app/utils/BrowserDatabase/index.ts +12 -0
  269. package/app/utils/CSS/CSS.ts +65 -0
  270. package/app/utils/CSS/index.ts +12 -0
  271. package/app/utils/Cache/Cache.ts +99 -0
  272. package/app/utils/Cart/Cart.ts +300 -0
  273. package/app/utils/Cart/Cart.type.ts +76 -0
  274. package/app/utils/Cart/Token.ts +59 -0
  275. package/app/utils/Cart/index.ts +13 -0
  276. package/app/utils/Category/Filters.ts +39 -0
  277. package/app/utils/Category/index.ts +12 -0
  278. package/app/utils/Common/index.ts +32 -0
  279. package/app/utils/Compare/Compare.ts +89 -0
  280. package/app/utils/Compare/index.ts +12 -0
  281. package/app/utils/Currency/Currency.ts +84 -0
  282. package/app/utils/Currency/index.ts +12 -0
  283. package/app/utils/DynamicReducer/DynamicReducer.type.ts +14 -0
  284. package/app/utils/DynamicReducer/Helper.ts +30 -0
  285. package/app/utils/DynamicReducer/index.tsx +35 -0
  286. package/app/utils/ElementTransition/ElementTransition.ts +100 -0
  287. package/app/utils/Form/Extract.ts +316 -0
  288. package/app/utils/Form/Form.ts +46 -0
  289. package/app/utils/Form/Form.type.ts +60 -0
  290. package/app/utils/Form/Transform.ts +33 -0
  291. package/app/utils/FormPortalCollector/index.ts +45 -0
  292. package/app/utils/History/History.type.ts +31 -0
  293. package/app/utils/History/index.ts +17 -0
  294. package/app/utils/Manipulations/Array.ts +18 -0
  295. package/app/utils/Manipulations/Date.ts +36 -0
  296. package/app/utils/Manipulations/index.ts +14 -0
  297. package/app/utils/Media/Media.ts +27 -0
  298. package/app/utils/Media/index.ts +13 -0
  299. package/app/utils/Menu/Menu.ts +116 -0
  300. package/app/utils/Menu/Menu.type.ts +37 -0
  301. package/app/utils/Menu/index.ts +12 -0
  302. package/app/utils/Mobile/index.ts +13 -0
  303. package/app/utils/Mobile/isMobile.ts +34 -0
  304. package/app/utils/Orders/Orders.ts +71 -0
  305. package/app/utils/Orders/Orders.type.ts +19 -0
  306. package/app/utils/Orders/index.ts +13 -0
  307. package/app/utils/Polyfill/index.ts +336 -0
  308. package/app/utils/Preload/CategoryPreload.ts +74 -0
  309. package/app/utils/Preload/ProductPreload.ts +28 -0
  310. package/app/utils/Preload/index.ts +75 -0
  311. package/app/utils/Price/Price.config.ts +189 -0
  312. package/app/utils/Price/Price.ts +63 -0
  313. package/app/utils/Price/index.ts +12 -0
  314. package/app/utils/Product/Extract.ts +652 -0
  315. package/app/utils/Product/Product.ts +575 -0
  316. package/app/utils/Product/Product.type.ts +260 -0
  317. package/app/utils/Product/Transform.ts +382 -0
  318. package/app/utils/Product/index.ts +12 -0
  319. package/app/utils/Promise/MakeCancelable.ts +44 -0
  320. package/app/utils/Promise/Promise.type.ts +15 -0
  321. package/app/utils/Promise/index.ts +13 -0
  322. package/app/utils/Query/Field.ts +71 -0
  323. package/app/utils/Query/Fragment.ts +22 -0
  324. package/app/utils/Query/PrepareDocument.ts +119 -0
  325. package/app/utils/Query/Query.type.ts +26 -0
  326. package/app/utils/Query/index.ts +15 -0
  327. package/app/utils/Request/Config.ts +21 -0
  328. package/app/utils/Request/DataContainer.ts +102 -0
  329. package/app/utils/Request/Debounce.ts +48 -0
  330. package/app/utils/Request/Error.ts +31 -0
  331. package/app/utils/Request/Hash.ts +88 -0
  332. package/app/utils/Request/LowPriorityLoad.ts +32 -0
  333. package/app/utils/Request/LowPriorityRender.ts +55 -0
  334. package/app/utils/Request/Mutation.ts +25 -0
  335. package/app/utils/Request/Query.ts +25 -0
  336. package/app/utils/Request/QueryDispatcher.ts +135 -0
  337. package/app/utils/Request/Request.ts +310 -0
  338. package/app/utils/Store/Store.type.ts +26 -0
  339. package/app/utils/Store/index.ts +71 -0
  340. package/app/utils/Url/Url.ts +297 -0
  341. package/app/utils/Url/index.ts +12 -0
  342. package/app/utils/Validator/Config.ts +96 -0
  343. package/app/utils/Validator/Validator.ts +268 -0
  344. package/app/utils/Validator/Validator.type.ts +47 -0
  345. package/app/utils/Validator/index.ts +12 -0
  346. package/app/utils/Wishlist/Wishlist.ts +65 -0
  347. package/app/utils/Wishlist/index.ts +12 -0
  348. package/app/utils/client.ts +280 -0
  349. package/app/utils/index.ts +53 -0
  350. package/app/utils/normalizer.ts +23 -0
  351. package/app/utils/normalizers/magento.ts +29 -0
  352. package/app/utils/normalizers/shopify.ts +29 -0
  353. package/nuxt.config.ts +11 -0
  354. package/package.json +43 -0
  355. package/tsconfig.json +45 -0
@@ -0,0 +1,336 @@
1
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
2
+ // @ts-nocheck
3
+ /* eslint-disable */
4
+
5
+ //smoothscroll.js file
6
+
7
+ /*
8
+ * smoothscroll polyfill - v0.3.5
9
+ * https://iamdustan.github.io/smoothscroll
10
+ * 2016 (c) Dustan Kasten, Jeremias Menichelli - MIT License
11
+ */
12
+
13
+ (function(w, d, undefined) {
14
+ 'use strict';
15
+
16
+ /*
17
+ * aliases
18
+ * w: window global object
19
+ * d: document
20
+ * undefined: undefined
21
+ */
22
+
23
+ // polyfill
24
+ function polyfill() {
25
+ // return when scrollBehavior interface is supported
26
+ if ('scrollBehavior' in d.documentElement.style) {
27
+ return;
28
+ }
29
+
30
+ /*
31
+ * globals
32
+ */
33
+ var Element = w.HTMLElement || w.Element;
34
+ var SCROLL_TIME = 468;
35
+
36
+ /*
37
+ * object gathering original scroll methods
38
+ */
39
+ var original = {
40
+ scroll: w.scroll || w.scrollTo,
41
+ scrollBy: w.scrollBy,
42
+ elScroll: Element.prototype.scroll || scrollElement,
43
+ scrollIntoView: Element.prototype.scrollIntoView
44
+ };
45
+
46
+ /*
47
+ * define timing method
48
+ */
49
+ var now = w.performance && w.performance.now
50
+ ? w.performance.now.bind(w.performance) : Date.now;
51
+
52
+ /**
53
+ * changes scroll position inside an element
54
+ * @method scrollElement
55
+ * @param {Number} x
56
+ * @param {Number} y
57
+ */
58
+ function scrollElement(x, y) {
59
+ this.scrollLeft = x;
60
+ this.scrollTop = y;
61
+ }
62
+
63
+ /**
64
+ * returns result of applying ease math function to a number
65
+ * @method ease
66
+ * @param {Number} k
67
+ * @returns {Number}
68
+ */
69
+ function ease(k) {
70
+ return 0.5 * (1 - Math.cos(Math.PI * k));
71
+ }
72
+
73
+ /**
74
+ * indicates if a smooth behavior should be applied
75
+ * @method shouldBailOut
76
+ * @param {Number|Object} x
77
+ * @returns {Boolean}
78
+ */
79
+ function shouldBailOut(x) {
80
+ if (typeof x !== 'object'
81
+ || x === null
82
+ || x.behavior === undefined
83
+ || x.behavior === 'auto'
84
+ || x.behavior === 'instant') {
85
+ // first arg not an object/null
86
+ // or behavior is auto, instant or undefined
87
+ return true;
88
+ }
89
+
90
+ if (typeof x === 'object'
91
+ && x.behavior === 'smooth') {
92
+ // first argument is an object and behavior is smooth
93
+ return false;
94
+ }
95
+
96
+ // throw error when behavior is not supported
97
+ throw new TypeError('behavior not valid');
98
+ }
99
+
100
+ /**
101
+ * finds scrollable parent of an element
102
+ * @method findScrollableParent
103
+ * @param {Node} el
104
+ * @returns {Node} el
105
+ */
106
+ function findScrollableParent(el) {
107
+ var isBody;
108
+ var hasScrollableSpace;
109
+ var hasVisibleOverflow;
110
+
111
+ do {
112
+ el = el.parentNode;
113
+
114
+ // set condition variables
115
+ isBody = el === d.body;
116
+ hasScrollableSpace =
117
+ el.clientHeight < el.scrollHeight ||
118
+ el.clientWidth < el.scrollWidth;
119
+ hasVisibleOverflow =
120
+ w.getComputedStyle(el, null).overflow === 'visible';
121
+ } while (!isBody && !(hasScrollableSpace && !hasVisibleOverflow));
122
+
123
+ isBody = hasScrollableSpace = hasVisibleOverflow = null;
124
+
125
+ return el;
126
+ }
127
+
128
+ /**
129
+ * self invoked function that, given a context, steps through scrolling
130
+ * @method step
131
+ * @param {Object} context
132
+ */
133
+ function step(context) {
134
+ var time = now();
135
+ var value;
136
+ var currentX;
137
+ var currentY;
138
+ var elapsed = (time - context.startTime) / SCROLL_TIME;
139
+
140
+ // avoid elapsed times higher than one
141
+ elapsed = elapsed > 1 ? 1 : elapsed;
142
+
143
+ // apply easing to elapsed time
144
+ value = ease(elapsed);
145
+
146
+ currentX = context.startX + (context.x - context.startX) * value;
147
+ currentY = context.startY + (context.y - context.startY) * value;
148
+
149
+ context.method.call(context.scrollable, currentX, currentY);
150
+
151
+ // scroll more if we have not reached our destination
152
+ if (currentX !== context.x || currentY !== context.y) {
153
+ w.requestAnimationFrame(step.bind(w, context));
154
+ }
155
+ }
156
+
157
+ /**
158
+ * scrolls window with a smooth behavior
159
+ * @method smoothScroll
160
+ * @param {Object|Node} el
161
+ * @param {Number} x
162
+ * @param {Number} y
163
+ */
164
+ function smoothScroll(el, x, y) {
165
+ var scrollable;
166
+ var startX;
167
+ var startY;
168
+ var method;
169
+ var startTime = now();
170
+
171
+ // define scroll context
172
+ if (el === d.body) {
173
+ scrollable = w;
174
+ startX = w.scrollX || w.pageXOffset;
175
+ startY = w.scrollY || w.pageYOffset;
176
+ method = original.scroll;
177
+ } else {
178
+ scrollable = el;
179
+ startX = el.scrollLeft;
180
+ startY = el.scrollTop;
181
+ method = scrollElement;
182
+ }
183
+
184
+ // scroll looping over a frame
185
+ step({
186
+ scrollable: scrollable,
187
+ method: method,
188
+ startTime: startTime,
189
+ startX: startX,
190
+ startY: startY,
191
+ x: x,
192
+ y: y
193
+ });
194
+ }
195
+
196
+ /*
197
+ * ORIGINAL METHODS OVERRIDES
198
+ */
199
+
200
+ // w.scroll and w.scrollTo
201
+ w.scroll = w.scrollTo = function() {
202
+ // avoid smooth behavior if not required
203
+ if (shouldBailOut(arguments[0])) {
204
+ original.scroll.call(
205
+ w,
206
+ arguments[0].left || arguments[0],
207
+ arguments[0].top || arguments[1]
208
+ );
209
+
210
+ return;
211
+ }
212
+
213
+ // LET THE SMOOTHNESS BEGIN!
214
+ smoothScroll.call(
215
+ w,
216
+ d.body,
217
+ ~~arguments[0].left,
218
+ ~~arguments[0].top
219
+ );
220
+ };
221
+
222
+ // w.scrollBy
223
+ w.scrollBy = function() {
224
+ // avoid smooth behavior if not required
225
+ if (shouldBailOut(arguments[0])) {
226
+ original.scrollBy.call(
227
+ w,
228
+ arguments[0].left || arguments[0],
229
+ arguments[0].top || arguments[1]
230
+ );
231
+
232
+ return;
233
+ }
234
+
235
+ // LET THE SMOOTHNESS BEGIN!
236
+ smoothScroll.call(
237
+ w,
238
+ d.body,
239
+ ~~arguments[0].left + (w.scrollX || w.pageXOffset),
240
+ ~~arguments[0].top + (w.scrollY || w.pageYOffset)
241
+ );
242
+ };
243
+
244
+ // Element.prototype.scroll and Element.prototype.scrollTo
245
+ Element.prototype.scroll = Element.prototype.scrollTo = function() {
246
+ // avoid smooth behavior if not required
247
+ if (shouldBailOut(arguments[0])) {
248
+ original.elScroll.call(
249
+ this,
250
+ arguments[0].left || arguments[0],
251
+ arguments[0].top || arguments[1]
252
+ );
253
+
254
+ return;
255
+ }
256
+
257
+ // LET THE SMOOTHNESS BEGIN!
258
+ smoothScroll.call(
259
+ this,
260
+ this,
261
+ arguments[0].left,
262
+ arguments[0].top
263
+ );
264
+ };
265
+
266
+ // Element.prototype.scrollBy
267
+ Element.prototype.scrollBy = function() {
268
+ var arg0 = arguments[0];
269
+
270
+ if (typeof arg0 === 'object') {
271
+ this.scroll({
272
+ left: arg0.left + this.scrollLeft,
273
+ top: arg0.top + this.scrollTop,
274
+ behavior: arg0.behavior
275
+ });
276
+ } else {
277
+ this.scroll(
278
+ this.scrollLeft + arg0,
279
+ this.scrollTop + arguments[1]
280
+ );
281
+ }
282
+ };
283
+
284
+ // Element.prototype.scrollIntoView
285
+ Element.prototype.scrollIntoView = function() {
286
+ // avoid smooth behavior if not required
287
+ if (shouldBailOut(arguments[0])) {
288
+ original.scrollIntoView.call(this, arguments[0] || true);
289
+
290
+ return;
291
+ }
292
+
293
+ // LET THE SMOOTHNESS BEGIN!
294
+ var scrollableParent = findScrollableParent(this);
295
+ var parentRects = scrollableParent.getBoundingClientRect();
296
+ var clientRects = this.getBoundingClientRect();
297
+
298
+ if (scrollableParent !== d.body) {
299
+ // reveal element inside parent
300
+ smoothScroll.call(
301
+ this,
302
+ scrollableParent,
303
+ scrollableParent.scrollLeft + clientRects.left - parentRects.left,
304
+ scrollableParent.scrollTop + clientRects.top - parentRects.top
305
+ );
306
+ // reveal parent in viewport
307
+ w.scrollBy({
308
+ left: parentRects.left,
309
+ top: parentRects.top,
310
+ behavior: 'smooth'
311
+ });
312
+ } else {
313
+ const top = arguments[0].block === 'center'
314
+ ? clientRects.top - clientRects.height
315
+ : clientRects.top;
316
+
317
+ // reveal element in viewport
318
+ w.scrollBy({
319
+ left: clientRects.left,
320
+ top: top,
321
+ behavior: 'smooth'
322
+ });
323
+ }
324
+ };
325
+ }
326
+
327
+ if (typeof exports === 'object') {
328
+ // commonjs
329
+ module.exports = { polyfill: polyfill };
330
+ } else {
331
+ // global
332
+ polyfill();
333
+ }
334
+ })(window, document);
335
+
336
+ export default {};
@@ -0,0 +1,74 @@
1
+ /**
2
+ * M Framework - Flexible backend agnostic framework.
3
+ *
4
+ * Copyright © Meeovi, LTD. All rights reserved.
5
+ * See LICENSE for license details.
6
+ *
7
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
8
+ * @package mframework/mframework
9
+ * @link https://github.com/meeovi/mframework
10
+ */
11
+
12
+ import { ProductListOptions } from '../../normalizers/ProductList.type';
13
+ import { SortDirections } from '../../routes/CategoryPage/CategoryPage.config';
14
+ import ProductListDispatcher from '../../stores/ProductList/ProductList.dispatcher';
15
+ import history from '../../utils/History';
16
+ import getStore from '../../utils/Store';
17
+ import { getQueryParam } from '../../utils/Url';
18
+
19
+ /** @namespace ../../utils/Preload/CategoryPreload */
20
+ export class CategoryPreload {
21
+ productListOptions = (): Partial<ProductListOptions> => ({
22
+ isNext: false,
23
+ isPlp: true,
24
+ noAttributes: false,
25
+ noVariants: false,
26
+ args: {
27
+ sort: getQueryParam('sortKey', history.location) || 'position',
28
+ filter: {
29
+ priceRange: this.getSelectedPriceRangeFromUrl(),
30
+ customFilters: this.getSelectedFiltersFromUrl(),
31
+ categoryIds: window.actionName?.id,
32
+ },
33
+ search: '',
34
+ pageSize: 24,
35
+ currentPage: this.getPageFromUrl(),
36
+ },
37
+ });
38
+
39
+ getPageFromUrl() {
40
+ const { location } = history;
41
+
42
+ return +(getQueryParam('page', location) || 1);
43
+ }
44
+
45
+ getSelectedFiltersFromUrl() {
46
+ const { location } = history;
47
+ const selectedFiltersString = (getQueryParam('customFilters', location, false) || '').split(';');
48
+
49
+ return selectedFiltersString.reduce((acc, filter) => {
50
+ if (!filter) {
51
+ return acc;
52
+ }
53
+ const [key, value] = filter.split(':');
54
+
55
+ return { ...acc, [key]: value.split(',') };
56
+ }, {});
57
+ }
58
+
59
+ getSelectedPriceRangeFromUrl() {
60
+ const { location } = history;
61
+ const min = +getQueryParam('priceMin', location);
62
+ const max = +getQueryParam('priceMax', location);
63
+
64
+ return { min, max };
65
+ }
66
+
67
+ dispatch = getStore().dispatch;
68
+
69
+ preloadProducts() {
70
+ ProductListDispatcher.handleData(this.dispatch, this.productListOptions());
71
+ }
72
+ }
73
+
74
+ export default new CategoryPreload();
@@ -0,0 +1,28 @@
1
+ /**
2
+ * M Framework - Flexible backend agnostic framework.
3
+ *
4
+ * Copyright © Meeovi, LTD. All rights reserved.
5
+ * See LICENSE for license details.
6
+ *
7
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
8
+ * @package mframework/mframework
9
+ * @link https://github.com/meeovi/mframework
10
+ */
11
+
12
+ import { ProductListOptions } from '../../normalizers/ProductList.type';
13
+ import ProductDispatcher from '../../stores/Product/Product.dispatcher';
14
+ import getStore from '../../utils/Store';
15
+
16
+ /** @namespace ../../utils/Preload/ProductPreload */
17
+ export class ProductPreload {
18
+ options: Partial<ProductListOptions> = {
19
+ isSingleProduct: true,
20
+ args: { filter: { productID: window.actionName?.id } },
21
+ };
22
+
23
+ preloadProduct() {
24
+ ProductDispatcher.handleData(getStore().dispatch, this.options);
25
+ }
26
+ }
27
+
28
+ export default new ProductPreload();
@@ -0,0 +1,75 @@
1
+ /**
2
+ * M Framework - Flexible backend agnostic framework.
3
+ *
4
+ * Copyright © Meeovi, LTD. All rights reserved.
5
+ * See LICENSE for license details.
6
+ *
7
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
8
+ * @package mframework/mframework
9
+ * @link https://github.com/meeovi/mframework
10
+ */
11
+
12
+ import { UrlRewritePageType } from '../../routes/UrlRewrites/UrlRewrites.config';
13
+ import ProductReducer from '../../stores/Product/Product.reducer';
14
+ import ProductListReducer from '../../stores/ProductList/ProductList.reducer';
15
+ import BrowserDatabase from '../../utils/BrowserDatabase';
16
+ import { isMobile } from '../../utils/Mobile';
17
+ import getStore, { injectReducers } from '../../utils/Store';
18
+
19
+ import CategoryPreload from './CategoryPreload';
20
+ import ProductPreload from './ProductPreload';
21
+
22
+ injectReducers(getStore(), {
23
+ ProductReducer,
24
+ ProductListReducer,
25
+ });
26
+
27
+ const { actionName: { type = '' } = {} } = window;
28
+
29
+ export const criticalChunkLoad = {
30
+ CategoryChunk: {
31
+ test: type === UrlRewritePageType.CATEGORY,
32
+ importChunk: () => CategoryPreload.preloadProducts(),
33
+ },
34
+ CmsChunk: {
35
+ test: type === UrlRewritePageType.CMS_PAGE,
36
+ importChunk: () => {
37
+ const isAndroid = isMobile.android();
38
+ const isIos = isMobile.iOS() && isMobile.safari();
39
+
40
+ if ((isAndroid || isIos)
41
+ && !isMobile.standaloneMode()
42
+ && !BrowserDatabase.getItem('postpone_installation')
43
+ && !BrowserDatabase.getItem('app_installed')
44
+ ) {
45
+ window.isInstallPromptAvailable = true;
46
+ }
47
+
48
+ const {
49
+ actionName: {
50
+ cmsPage: {
51
+ content = '',
52
+ } = {},
53
+ } = {},
54
+ } = window;
55
+
56
+ if (!content.trim().length) {
57
+ window.isPriorityLoaded = true;
58
+ }
59
+ },
60
+ },
61
+ ProductChunk: {
62
+ test: type === UrlRewritePageType.PRODUCT,
63
+ importChunk: () => ProductPreload.preloadProduct(),
64
+ },
65
+ };
66
+
67
+ export const importBooster = Object.values(criticalChunkLoad).find(({ test }) => test);
68
+
69
+ if (!importBooster) {
70
+ window.isPriorityLoaded = true;
71
+ } else {
72
+ window.isPriorityLoaded = false;
73
+ window.isPrefetchValueUsed = true;
74
+ importBooster.importChunk();
75
+ }
@@ -0,0 +1,189 @@
1
+ /**
2
+ * M Framework - Flexible backend agnostic framework.
3
+ *
4
+ * Copyright © Meeovi, LTD. All rights reserved.
5
+ * See LICENSE for license details.
6
+ *
7
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
8
+ * @package mframework/mframework-theme
9
+ * @link https://github.com/meeovi/mframework-theme
10
+ */
11
+ export const TIER_PRICES = 'TIER_PRICES';
12
+
13
+ export const HUNDRED_PERCENT = 100;
14
+
15
+ export enum CurrencyMap {
16
+ AED = 'د.إ',
17
+ AFN = '؋',
18
+ ALL = 'L',
19
+ AMD = '֏',
20
+ ANG = 'ƒ',
21
+ AOA = 'Kz',
22
+ ARS = '$',
23
+ AUD = '$',
24
+ AWG = 'ƒ',
25
+ AZN = '₼',
26
+ BAM = 'KM',
27
+ BBD = 'Bds$',
28
+ BDT = '৳',
29
+ BGN = 'лв',
30
+ BHD = '.د.ب',
31
+ BIF = 'FBu',
32
+ BMD = '$',
33
+ BND = 'B$',
34
+ BOB = '$b',
35
+ BRL = 'R$',
36
+ BSD = 'B$',
37
+ BTC = '฿',
38
+ BTN = 'Nu.',
39
+ BWP = 'P',
40
+ BYR = 'Br',
41
+ BYN = 'Br',
42
+ BZD = 'BZ$',
43
+ CAD = 'CA$',
44
+ CDF = 'FC',
45
+ CHF = 'CHF',
46
+ CLP = '$',
47
+ CNY = '¥',
48
+ COP = '$',
49
+ CRC = '₡',
50
+ CUC = 'CUC$',
51
+ CUP = '₱',
52
+ CVE = '$',
53
+ CZK = 'Kč',
54
+ DJF = 'Fdj',
55
+ DKK = 'kr',
56
+ DOP = 'RD$',
57
+ DZD = 'دج',
58
+ EEK = 'kr',
59
+ EGP = '£',
60
+ ERN = 'Nfk',
61
+ ETB = 'Br',
62
+ ETH = 'Ξ',
63
+ EUR = '€',
64
+ FJD = 'FJ$',
65
+ FKP = '£',
66
+ GBP = '£',
67
+ GEL = '₾',
68
+ GGP = '£',
69
+ GHC = '₵',
70
+ GHS = 'GH₵',
71
+ GIP = '£',
72
+ GMD = 'D',
73
+ GNF = 'FG',
74
+ GTQ = 'Q',
75
+ GYD = 'G$',
76
+ HKD = 'HK$',
77
+ HNL = 'L',
78
+ HRK = 'kn',
79
+ HTG = 'G',
80
+ HUF = 'Ft',
81
+ IDR = 'Rp',
82
+ ILS = '₪',
83
+ IMP = '£',
84
+ INR = '₹',
85
+ IQD = 'ع.د',
86
+ IRR = '﷼',
87
+ ISK = 'kr',
88
+ JEP = '£',
89
+ JMD = 'J$',
90
+ JOD = 'JD',
91
+ JPY = '¥',
92
+ KES = 'KSh',
93
+ KGS = 'лв',
94
+ KHR = '៛',
95
+ KMF = 'CF',
96
+ KPW = '₩',
97
+ KRW = '₩',
98
+ KWD = 'KD',
99
+ KYD = '$',
100
+ KZT = 'лв',
101
+ LAK = '₭',
102
+ LBP = '£',
103
+ LKR = '₨',
104
+ LRD = 'L$',
105
+ LSL = 'M',
106
+ LTC = 'Ł',
107
+ LTL = 'Lt',
108
+ LVL = 'Ls',
109
+ LYD = 'LD',
110
+ MAD = 'MAD',
111
+ MDL = 'lei',
112
+ MGA = 'Ar',
113
+ MKD = 'ден',
114
+ MMK = 'K',
115
+ MNT = '₮',
116
+ MOP = 'MOP$',
117
+ MRO = 'UM',
118
+ MRU = 'UM',
119
+ MUR = '₨',
120
+ MVR = 'Rf',
121
+ MWK = 'MK',
122
+ MXN = 'Mex$',
123
+ MYR = 'RM',
124
+ MZN = 'MT',
125
+ NAD = '$',
126
+ NGN = '₦',
127
+ NIO = 'C$',
128
+ NOK = 'kr',
129
+ NPR = '₨',
130
+ NZD = '$',
131
+ OMR = '﷼',
132
+ PAB = 'B/.',
133
+ PEN = 'S/.',
134
+ PGK = 'K',
135
+ PHP = '₱',
136
+ PKR = '₨',
137
+ PLN = 'zł',
138
+ PYG = 'Gs',
139
+ QAR = '﷼',
140
+ RMB = '¥',
141
+ RON = 'lei',
142
+ RSD = 'Дин.',
143
+ RUB = '₽',
144
+ RWF = 'R₣',
145
+ SAR = '﷼',
146
+ SBD = 'Si$',
147
+ SCR = '₨',
148
+ SDG = 'ج.س.',
149
+ SEK = 'kr',
150
+ SGD = '$',
151
+ SHP = '£',
152
+ SLL = 'Le',
153
+ SOS = 'S',
154
+ SRD = '$',
155
+ SSP = '£',
156
+ STD = 'Db',
157
+ STN = 'Db',
158
+ SVC = '₡',
159
+ SYP = '£',
160
+ SZL = 'E',
161
+ THB = '฿',
162
+ TJS = 'SM',
163
+ TMT = 'T',
164
+ TND = 'د.ت',
165
+ TOP = 'T$',
166
+ TRL = '₤',
167
+ TRY = '₺',
168
+ TTD = 'TT$',
169
+ TVD = '$',
170
+ TWD = 'NT$',
171
+ TZS = 'TSh',
172
+ UAH = '₴',
173
+ UGX = 'USh',
174
+ USD = '$',
175
+ UYU = '$U',
176
+ UZS = 'лв',
177
+ VEF = 'Bs',
178
+ VND = '₫',
179
+ VUV = 'VT',
180
+ WST = 'WS$',
181
+ XAF = 'FCFA',
182
+ XBT = 'Ƀ',
183
+ XCD = '$',
184
+ XOF = 'CFA',
185
+ XPF = '₣',
186
+ YER = '﷼',
187
+ ZAR = 'R',
188
+ ZWD = 'Z$',
189
+ }