ng-easycommerce-v18 0.0.1

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 (244) hide show
  1. package/.editorconfig +16 -0
  2. package/README.md +27 -0
  3. package/angular.json +48 -0
  4. package/package.json +58 -0
  5. package/projects/ng-easycommerce/README.md +24 -0
  6. package/projects/ng-easycommerce/ng-package.json +7 -0
  7. package/projects/ng-easycommerce/package.json +12 -0
  8. package/projects/ng-easycommerce/src/lib/api/connection.service.ts +79 -0
  9. package/projects/ng-easycommerce/src/lib/api/index.ts +1 -0
  10. package/projects/ng-easycommerce/src/lib/assets/ec-i18n/ct.json +274 -0
  11. package/projects/ng-easycommerce/src/lib/assets/ec-i18n/en.json +380 -0
  12. package/projects/ng-easycommerce/src/lib/assets/ec-i18n/es.json +387 -0
  13. package/projects/ng-easycommerce/src/lib/assets/ec-i18n/fr.json +266 -0
  14. package/projects/ng-easycommerce/src/lib/assets/ec-i18n/gl.json +274 -0
  15. package/projects/ng-easycommerce/src/lib/assets/ec-i18n/pr.json +274 -0
  16. package/projects/ng-easycommerce/src/lib/assets/recaptcha/recaptcha-site-keys.json +4 -0
  17. package/projects/ng-easycommerce/src/lib/assets/recaptcha/recaptcha-sites-prod.json +39 -0
  18. package/projects/ng-easycommerce/src/lib/assets/recaptcha/recaptcha-sites.json +53 -0
  19. package/projects/ng-easycommerce/src/lib/classes/checkout/index.ts +1 -0
  20. package/projects/ng-easycommerce/src/lib/classes/checkout/steps.ts +37 -0
  21. package/projects/ng-easycommerce/src/lib/classes/filters/attributes-filter.ts +74 -0
  22. package/projects/ng-easycommerce/src/lib/classes/filters/category-filter.ts +57 -0
  23. package/projects/ng-easycommerce/src/lib/classes/filters/dynamics-filter.ts +57 -0
  24. package/projects/ng-easycommerce/src/lib/classes/filters/filter-factory.ts +23 -0
  25. package/projects/ng-easycommerce/src/lib/classes/filters/filter.ts +89 -0
  26. package/projects/ng-easycommerce/src/lib/classes/filters/index.ts +6 -0
  27. package/projects/ng-easycommerce/src/lib/classes/filters/sort-filter.ts +93 -0
  28. package/projects/ng-easycommerce/src/lib/classes/index.ts +3 -0
  29. package/projects/ng-easycommerce/src/lib/classes/user.ts +68 -0
  30. package/projects/ng-easycommerce/src/lib/constants/api.constants.service.ts +69 -0
  31. package/projects/ng-easycommerce/src/lib/constants/core.constants.service.ts +210 -0
  32. package/projects/ng-easycommerce/src/lib/constants/index.ts +2 -0
  33. package/projects/ng-easycommerce/src/lib/ec-components/abstractions-components/block-ec.component.ts +107 -0
  34. package/projects/ng-easycommerce/src/lib/ec-components/abstractions-components/index.ts +2 -0
  35. package/projects/ng-easycommerce/src/lib/ec-components/abstractions-components/menu-ec.component.ts +102 -0
  36. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/auth-ec.component.html +10 -0
  37. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/auth-ec.component.scss +0 -0
  38. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/auth-ec.component.ts +13 -0
  39. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.html +19 -0
  40. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.scss +0 -0
  41. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.ts +34 -0
  42. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.html +31 -0
  43. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.scss +0 -0
  44. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.ts +55 -0
  45. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/index.ts +6 -0
  46. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.html +30 -0
  47. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.scss +0 -0
  48. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.ts +92 -0
  49. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.html +55 -0
  50. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.scss +0 -0
  51. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.ts +102 -0
  52. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.html +233 -0
  53. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.scss +0 -0
  54. package/projects/ng-easycommerce/src/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.ts +149 -0
  55. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.html +113 -0
  56. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.scss +12 -0
  57. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.ts +100 -0
  58. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.html +111 -0
  59. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.scss +0 -0
  60. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.ts +77 -0
  61. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.html +62 -0
  62. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.scss +0 -0
  63. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.ts +89 -0
  64. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.html +1 -0
  65. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.scss +0 -0
  66. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.ts +33 -0
  67. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.html +1 -0
  68. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.scss +0 -0
  69. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.ts +81 -0
  70. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.html +40 -0
  71. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.scss +0 -0
  72. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.ts +97 -0
  73. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/blocks-ec.component.html +41 -0
  74. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/blocks-ec.component.scss +0 -0
  75. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/blocks-ec.component.ts +86 -0
  76. package/projects/ng-easycommerce/src/lib/ec-components/blocks-ec/index.ts +4 -0
  77. package/projects/ng-easycommerce/src/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.html +20 -0
  78. package/projects/ng-easycommerce/src/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.scss +0 -0
  79. package/projects/ng-easycommerce/src/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.ts +30 -0
  80. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-ec.component.html +1 -0
  81. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-ec.component.scss +0 -0
  82. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-ec.component.ts +24 -0
  83. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.html +1 -0
  84. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.scss +0 -0
  85. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.ts +51 -0
  86. package/projects/ng-easycommerce/src/lib/ec-components/cart-ec/index.ts +2 -0
  87. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/checkout-ec.component.html +56 -0
  88. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/checkout-ec.component.scss +38 -0
  89. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/checkout-ec.component.ts +67 -0
  90. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.html +836 -0
  91. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.scss +0 -0
  92. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.ts +302 -0
  93. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.html +32 -0
  94. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.scss +0 -0
  95. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.ts +52 -0
  96. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.html +12 -0
  97. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.scss +0 -0
  98. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.ts +48 -0
  99. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.html +195 -0
  100. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.scss +0 -0
  101. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.ts +103 -0
  102. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.html +28 -0
  103. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.scss +0 -0
  104. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.ts +26 -0
  105. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/index.ts +3 -0
  106. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.html +33 -0
  107. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.scss +0 -0
  108. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.ts +116 -0
  109. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.html +13 -0
  110. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.scss +0 -0
  111. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.ts +26 -0
  112. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.html +111 -0
  113. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.scss +0 -0
  114. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.ts +111 -0
  115. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.html +33 -0
  116. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.scss +0 -0
  117. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.ts +39 -0
  118. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/success-ec/success-ec.component.html +59 -0
  119. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/success-ec/success-ec.component.scss +0 -0
  120. package/projects/ng-easycommerce/src/lib/ec-components/checkout-ec/success-ec/success-ec.component.ts +65 -0
  121. package/projects/ng-easycommerce/src/lib/ec-components/collection-ec/collection-ec.component.html +16 -0
  122. package/projects/ng-easycommerce/src/lib/ec-components/collection-ec/collection-ec.component.scss +0 -0
  123. package/projects/ng-easycommerce/src/lib/ec-components/collection-ec/collection-ec.component.ts +83 -0
  124. package/projects/ng-easycommerce/src/lib/ec-components/coupon-ec/coupon-ec.component.html +1 -0
  125. package/projects/ng-easycommerce/src/lib/ec-components/coupon-ec/coupon-ec.component.scss +0 -0
  126. package/projects/ng-easycommerce/src/lib/ec-components/coupon-ec/coupon-ec.component.ts +32 -0
  127. package/projects/ng-easycommerce/src/lib/ec-components/filters-ec/filters-ec.component.html +1 -0
  128. package/projects/ng-easycommerce/src/lib/ec-components/filters-ec/filters-ec.component.scss +0 -0
  129. package/projects/ng-easycommerce/src/lib/ec-components/filters-ec/filters-ec.component.ts +45 -0
  130. package/projects/ng-easycommerce/src/lib/ec-components/filters-sort-ec/filters-sort-ec.component.html +1 -0
  131. package/projects/ng-easycommerce/src/lib/ec-components/filters-sort-ec/filters-sort-ec.component.scss +0 -0
  132. package/projects/ng-easycommerce/src/lib/ec-components/filters-sort-ec/filters-sort-ec.component.ts +49 -0
  133. package/projects/ng-easycommerce/src/lib/ec-components/footer-ec/footer-ec.component.html +1 -0
  134. package/projects/ng-easycommerce/src/lib/ec-components/footer-ec/footer-ec.component.scss +0 -0
  135. package/projects/ng-easycommerce/src/lib/ec-components/footer-ec/footer-ec.component.spec.ts +23 -0
  136. package/projects/ng-easycommerce/src/lib/ec-components/footer-ec/footer-ec.component.ts +18 -0
  137. package/projects/ng-easycommerce/src/lib/ec-components/header-ec/header-ec.component.html +1 -0
  138. package/projects/ng-easycommerce/src/lib/ec-components/header-ec/header-ec.component.scss +0 -0
  139. package/projects/ng-easycommerce/src/lib/ec-components/header-ec/header-ec.component.spec.ts +23 -0
  140. package/projects/ng-easycommerce/src/lib/ec-components/header-ec/header-ec.component.ts +22 -0
  141. package/projects/ng-easycommerce/src/lib/ec-components/home-ec/home-ec.component.html +1 -0
  142. package/projects/ng-easycommerce/src/lib/ec-components/home-ec/home-ec.component.scss +0 -0
  143. package/projects/ng-easycommerce/src/lib/ec-components/home-ec/home-ec.component.spec.ts +23 -0
  144. package/projects/ng-easycommerce/src/lib/ec-components/home-ec/home-ec.component.ts +16 -0
  145. package/projects/ng-easycommerce/src/lib/ec-components/index.ts +17 -0
  146. package/projects/ng-easycommerce/src/lib/ec-components/product-detail-ec/product-detail-ec.component.html +0 -0
  147. package/projects/ng-easycommerce/src/lib/ec-components/product-detail-ec/product-detail-ec.component.scss +0 -0
  148. package/projects/ng-easycommerce/src/lib/ec-components/product-detail-ec/product-detail-ec.component.ts +82 -0
  149. package/projects/ng-easycommerce/src/lib/ec-components/product-ec/product-ec.component.html +31 -0
  150. package/projects/ng-easycommerce/src/lib/ec-components/product-ec/product-ec.component.scss +0 -0
  151. package/projects/ng-easycommerce/src/lib/ec-components/product-ec/product-ec.component.ts +46 -0
  152. package/projects/ng-easycommerce/src/lib/ec-components/variants-ec/variants-ec.component.html +65 -0
  153. package/projects/ng-easycommerce/src/lib/ec-components/variants-ec/variants-ec.component.scss +8 -0
  154. package/projects/ng-easycommerce/src/lib/ec-components/variants-ec/variants-ec.component.ts +20 -0
  155. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/index.ts +4 -0
  156. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/index.ts +3 -0
  157. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.html +7 -0
  158. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.scss +0 -0
  159. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.ts +13 -0
  160. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.html +5 -0
  161. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.scss +0 -0
  162. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.ts +13 -0
  163. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.html +3 -0
  164. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.scss +0 -0
  165. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.ts +13 -0
  166. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.html +11 -0
  167. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.scss +0 -0
  168. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.ts +177 -0
  169. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/price-ec/price-ec.component.html +47 -0
  170. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/price-ec/price-ec.component.scss +0 -0
  171. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/price-ec/price-ec.component.ts +22 -0
  172. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.html +6 -0
  173. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.scss +0 -0
  174. package/projects/ng-easycommerce/src/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.ts +70 -0
  175. package/projects/ng-easycommerce/src/lib/ec-guards/auth.guard.ts +19 -0
  176. package/projects/ng-easycommerce/src/lib/ec-guards/index.ts +1 -0
  177. package/projects/ng-easycommerce/src/lib/ec-pipe/ec-currency-symbol.pipe.ts +99 -0
  178. package/projects/ng-easycommerce/src/lib/ec-pipe/index.ts +1 -0
  179. package/projects/ng-easycommerce/src/lib/ec-services/addressing.service.ts +199 -0
  180. package/projects/ng-easycommerce/src/lib/ec-services/analytics/analytics.service.ts +76 -0
  181. package/projects/ng-easycommerce/src/lib/ec-services/analytics/doppler.service.ts +38 -0
  182. package/projects/ng-easycommerce/src/lib/ec-services/analytics/facebook-pixel.service.ts +214 -0
  183. package/projects/ng-easycommerce/src/lib/ec-services/analytics/google-analytics.service.ts +284 -0
  184. package/projects/ng-easycommerce/src/lib/ec-services/analytics/gtm.service.ts +413 -0
  185. package/projects/ng-easycommerce/src/lib/ec-services/analytics/index.ts +6 -0
  186. package/projects/ng-easycommerce/src/lib/ec-services/analytics/metricool-pixel.service.ts +46 -0
  187. package/projects/ng-easycommerce/src/lib/ec-services/auth.service.ts +438 -0
  188. package/projects/ng-easycommerce/src/lib/ec-services/auth.storage.service.ts +54 -0
  189. package/projects/ng-easycommerce/src/lib/ec-services/blocks-repository.service.ts +67 -0
  190. package/projects/ng-easycommerce/src/lib/ec-services/blocks.service.ts +48 -0
  191. package/projects/ng-easycommerce/src/lib/ec-services/cart.service.ts +492 -0
  192. package/projects/ng-easycommerce/src/lib/ec-services/channel.service.ts +81 -0
  193. package/projects/ng-easycommerce/src/lib/ec-services/checkout.service.ts +196 -0
  194. package/projects/ng-easycommerce/src/lib/ec-services/currency.service.ts +179 -0
  195. package/projects/ng-easycommerce/src/lib/ec-services/filters.service.ts +133 -0
  196. package/projects/ng-easycommerce/src/lib/ec-services/form.service.ts +82 -0
  197. package/projects/ng-easycommerce/src/lib/ec-services/index.ts +24 -0
  198. package/projects/ng-easycommerce/src/lib/ec-services/local-storage.service.ts +54 -0
  199. package/projects/ng-easycommerce/src/lib/ec-services/ngx-local-storage.service.ts +66 -0
  200. package/projects/ng-easycommerce/src/lib/ec-services/options.service.ts +274 -0
  201. package/projects/ng-easycommerce/src/lib/ec-services/order-utility.service.ts +52 -0
  202. package/projects/ng-easycommerce/src/lib/ec-services/pagination.service.ts +172 -0
  203. package/projects/ng-easycommerce/src/lib/ec-services/parameters.service.ts +67 -0
  204. package/projects/ng-easycommerce/src/lib/ec-services/payment.service.ts +63 -0
  205. package/projects/ng-easycommerce/src/lib/ec-services/product-detail.service.ts +288 -0
  206. package/projects/ng-easycommerce/src/lib/ec-services/products.service.ts +162 -0
  207. package/projects/ng-easycommerce/src/lib/ec-services/re-captcha.service.ts +126 -0
  208. package/projects/ng-easycommerce/src/lib/ec-services/shipment.service.ts +174 -0
  209. package/projects/ng-easycommerce/src/lib/ec-services/stores.service.ts +27 -0
  210. package/projects/ng-easycommerce/src/lib/ec-services/toast.service.ts +84 -0
  211. package/projects/ng-easycommerce/src/lib/interceptors/auth.interceptor.ts +43 -0
  212. package/projects/ng-easycommerce/src/lib/interceptors/index.ts +1 -0
  213. package/projects/ng-easycommerce/src/lib/interfaces/analytics/event-key.ts +14 -0
  214. package/projects/ng-easycommerce/src/lib/interfaces/analytics/facebook-pixel-data.ts +5 -0
  215. package/projects/ng-easycommerce/src/lib/interfaces/analytics/gtm-config.ts +6 -0
  216. package/projects/ng-easycommerce/src/lib/interfaces/analytics/index.ts +3 -0
  217. package/projects/ng-easycommerce/src/lib/interfaces/blocks.ts +56 -0
  218. package/projects/ng-easycommerce/src/lib/interfaces/checkout.ts +14 -0
  219. package/projects/ng-easycommerce/src/lib/interfaces/connection.ts +8 -0
  220. package/projects/ng-easycommerce/src/lib/interfaces/coupon.ts +5 -0
  221. package/projects/ng-easycommerce/src/lib/interfaces/currency.ts +10 -0
  222. package/projects/ng-easycommerce/src/lib/interfaces/deserializable.ts +3 -0
  223. package/projects/ng-easycommerce/src/lib/interfaces/environment.ts +6 -0
  224. package/projects/ng-easycommerce/src/lib/interfaces/filter.ts +59 -0
  225. package/projects/ng-easycommerce/src/lib/interfaces/index.ts +18 -0
  226. package/projects/ng-easycommerce/src/lib/interfaces/options.ts +28 -0
  227. package/projects/ng-easycommerce/src/lib/interfaces/pagination.ts +27 -0
  228. package/projects/ng-easycommerce/src/lib/interfaces/parameter.ts +15 -0
  229. package/projects/ng-easycommerce/src/lib/interfaces/product.ts +81 -0
  230. package/projects/ng-easycommerce/src/lib/interfaces/step.ts +19 -0
  231. package/projects/ng-easycommerce/src/lib/interfaces/storage.ts +7 -0
  232. package/projects/ng-easycommerce/src/lib/interfaces/store.ts +17 -0
  233. package/projects/ng-easycommerce/src/lib/interfaces/types/index.ts +1 -0
  234. package/projects/ng-easycommerce/src/lib/interfaces/types/user.type.ts +5 -0
  235. package/projects/ng-easycommerce/src/lib/providers/index.ts +1 -0
  236. package/projects/ng-easycommerce/src/lib/providers/provideEnvironment.ts +24 -0
  237. package/projects/ng-easycommerce/src/lib/stores/currency.store.ts +20 -0
  238. package/projects/ng-easycommerce/src/lib/stores/index.ts +1 -0
  239. package/projects/ng-easycommerce/src/public-api.ts +24 -0
  240. package/projects/ng-easycommerce/tsconfig.lib.json +15 -0
  241. package/projects/ng-easycommerce/tsconfig.lib.prod.json +11 -0
  242. package/projects/ng-easycommerce/tsconfig.spec.json +15 -0
  243. package/tsconfig.doc.json +4 -0
  244. package/tsconfig.json +37 -0
@@ -0,0 +1,284 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { inject, Injectable, Renderer2, RendererFactory2 } from '@angular/core';
3
+ import { AnalyticEventKey } from '../../interfaces';
4
+ import { NavigationEnd, Router } from '@angular/router';
5
+ import { filter } from 'rxjs';
6
+ /**
7
+ * Funcion que sera dada por el script que se inserta en el inicializador de Google Analytics.
8
+ */
9
+ declare var gtag: Function;
10
+ declare var dataLayer: any[];
11
+
12
+ /**
13
+ * Servicio encargado de manejar el analytics de google.
14
+ * @class GoogleAnalyticsService
15
+ */
16
+ @Injectable({
17
+ providedIn: 'root'
18
+ })
19
+ export class GoogleAnalyticsService {
20
+ /**
21
+ * Se encarga de crear el elemento HTML con las configuraciones para
22
+ * que se pueda ejecutar el servicio.
23
+ */
24
+ private renderer: Renderer2;
25
+ /**
26
+ * Indica cuando el servicio esta habilitado.
27
+ */
28
+ private enabled: boolean = false;
29
+
30
+ private rendererFactory: RendererFactory2 = inject(RendererFactory2);
31
+ private document: any = inject(DOCUMENT);
32
+ /**
33
+ * Servicio de ruteo de angular.
34
+ */
35
+ private router:Router = inject(Router);
36
+
37
+ constructor() {
38
+ this.renderer = this.rendererFactory.createRenderer(null, null);
39
+ }
40
+ /**
41
+ * Inicializa el Servicio de analytics con sus configuraciones.
42
+ * @param gtm_id id provisto por Google Tag Manager.
43
+ */
44
+ initialize(gtm_id: string) {
45
+ if (!document.getElementById('google_tag_manager')) {
46
+ console.log('hay elemento')
47
+ const declaration = this.renderer.createElement('script');
48
+ declaration.async = true;
49
+ declaration.id = 'google_tag_manager';
50
+ declaration.src = `https://www.googletagmanager.com/gtag/js?id=${gtm_id}`;
51
+ const initialization = this.renderer.createElement('script');
52
+ initialization.text = `window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', '${gtm_id}')`;
53
+ this.renderer.appendChild(this.document.head, initialization);
54
+ this.renderer.appendChild(this.document.head, declaration);
55
+ this.enabled = true;
56
+ }
57
+ setTimeout(() => this.startListeningPageViews(gtm_id), 1000);
58
+ }
59
+ /**
60
+ *
61
+ * @param gtm_id
62
+ */
63
+ private startListeningPageViews(gtm_id:any){
64
+ this.router.events.pipe(
65
+ filter(event => event instanceof NavigationEnd)
66
+ ).subscribe((event: NavigationEnd) => {
67
+ gtag('config', gtm_id, {
68
+ 'page_path': event.urlAfterRedirects
69
+ })
70
+ })
71
+ }
72
+ /**
73
+ * Ejecuta el evento pasado por parametro.
74
+ * @param event_name Nombre del evento.
75
+ * @param data Data extra para agregar al evento.
76
+ * @returns
77
+ */
78
+ callEvent(event_name: AnalyticEventKey, data = {}){
79
+ if (!this.enabled) return;
80
+ let event = this.translateEventName(event_name);
81
+ event && gtag('event', this.translateEventName(event_name), this.evalEvent(event_name, data));
82
+ }
83
+ /**
84
+ * Traduce el evento recibido y devuelve el nombre de la función que lo va a tratar.
85
+ * @param event_name
86
+ * @returns
87
+ */
88
+ translateEventName(event_name: AnalyticEventKey){
89
+ switch (event_name) {
90
+ case 'view_item': return 'view_item';
91
+ case 'view_item_list': return 'view_item_list';
92
+ case 'checkout_init': return 'begin_checkout';
93
+ case 'shipping_info': return 'add_shipping_info';
94
+ case 'add_payment_info': return 'add_payment_info';
95
+ case 'purchase': return 'purchase';
96
+ case 'add_to_cart': return 'add_to_cart';
97
+ case 'remove_from_cart': return 'remove_from_cart';
98
+ case 'sign_up': return 'sign_up';
99
+ default: return null;
100
+ //default: return event_name;
101
+ }
102
+ }
103
+ /**
104
+ * Evalua el evento y devuelve los datos de las funciones relacionadas.
105
+ * @param event_name Nombre del evento
106
+ * @param data Data extra para agregar al evento
107
+ * @returns
108
+ */
109
+ evalEvent(event_name:AnalyticEventKey, data:any){
110
+ switch (event_name) {
111
+ case 'view_item': return this.toViewItem(data);
112
+ case 'view_item_list': return this.toViewItemList(data);
113
+ case 'checkout_init': return this.toCheckoutInit(data);
114
+ case 'shipping_info': return this.toShippingInfo(data);
115
+ case 'add_payment_info': return this.toPaymentInfo(data);
116
+ case 'purchase': return this.toPurchase(data);
117
+ case 'add_to_cart': return this.toAddToCart(data);
118
+ case 'remove_from_cart': return this.toRemoveToCart(data);
119
+ case 'sign_up': return this.toSignUp(data);
120
+ default: return data;
121
+ }
122
+ }
123
+ /**
124
+ * Evento que se dispara cuando se quiere comprar un producto.
125
+ * @param data
126
+ * @returns
127
+ */
128
+ private toPurchase(data:any){
129
+ return {
130
+ coupon: this.toCartDiscount(data),
131
+ currency: data.currency,
132
+ shipping: data.totals.shipping,
133
+ tax: data.totals.taxes,
134
+ value: data.totals.total,
135
+ transaction_id: data.number,
136
+ items: data.items.map((item:any) => ({
137
+ id: item.product.id,
138
+ name: item.product.name,
139
+ category: item.product.category,
140
+ price: item.total,
141
+ quantity: item.quantity
142
+ }))
143
+ }
144
+ }
145
+ /**
146
+ * Evento que se dispara cuando se inicializa en checkout.
147
+ * @param data
148
+ * @returns
149
+ */
150
+ private toCheckoutInit(data:any){
151
+ return {
152
+ coupon: this.toCartDiscount(data),
153
+ currency: data.currency || "USD",
154
+ items: data.items.map((item:any) => ({
155
+ id: item.product.id,
156
+ name: item.product.name,
157
+ category: item.product.category,
158
+ price: item.total,
159
+ quantity: item.quantity
160
+ })),
161
+ value: data.totals?.total || 0,
162
+ }
163
+ }
164
+ /**
165
+ * Evento que se dispara con los descuentos en el carrito.
166
+ * @param data
167
+ * @returns
168
+ */
169
+ private toCartDiscount(data:any){
170
+ let strDiscount = ''
171
+ strDiscount = data.cartDiscounts.map((itemDiscount:any) => itemDiscount?.type).join()
172
+ return strDiscount == '' ? 'not-discount' : strDiscount
173
+ }
174
+ /**
175
+ * Evento que se dispara cuando se agrega un producto al carrito.
176
+ * @param data
177
+ * @returns
178
+ */
179
+ private toAddToCart(data:any){
180
+ let lastProduct = data.items?.length && data.items[data.items.length - 1]
181
+ return {
182
+ currency: data.currency || "USD",
183
+ items: [this.toItem({ quantity: lastProduct.quantity, ...lastProduct.product })],
184
+ value: lastProduct.total || 0,
185
+ }
186
+ }
187
+ /**
188
+ * Cambia la variable **enabled** a `false`
189
+ * @returns
190
+ */
191
+ disable() {this.enabled = false; }
192
+ /**
193
+ * Evento que se dispara cuando se interactua a las vista del producto.
194
+ * @param product
195
+ * @returns
196
+ */
197
+ private toViewItem(product:any){
198
+ return {
199
+ currency: product.currency,
200
+ items: [this.toItem(product)],
201
+ value: product.variants[0]?.saleprice || product.variants[0]?.price,
202
+ }
203
+ }
204
+ /**
205
+ * Evento que se dispara cuando se interactua con el listado de productos.
206
+ * @param data
207
+ * @returns
208
+ */
209
+ private toViewItemList(data:any){
210
+ return {
211
+ items: data.products.map((product:any) => this.toItem(product)),
212
+ item_list_name: data.item_list_name || 'Collection',
213
+ item_list_id: data.item_list_id || 'collection'
214
+ }
215
+ }
216
+ /**
217
+ * Evento que se dispara cuando se quita un item del carrito.
218
+ * @param product
219
+ * @returns
220
+ */
221
+ private toRemoveToCart(product:any){
222
+ let productParam = product.product
223
+ return {
224
+ currency: product.currency || "USD",
225
+ items: [this.toItem({ quantity: product.quantity, ...productParam })],
226
+ value: (productParam.variants[0]?.saleprice || productParam.variants[0]?.price) * product.quantity || 1,
227
+ }
228
+ }
229
+
230
+ private toItem = (product:any) => ({
231
+ item_name: product.name,
232
+ item_id: product.id,
233
+ item_brand: product.attributes?.length ? product.attributes[0].name : '',
234
+ item_category: product.category,
235
+ price: product.variants[0]?.saleprice || product.variants[0]?.price,
236
+ quantity: product.quantity || 1,
237
+ })
238
+ /**
239
+ * Evento que se dispara cuando se consulta la información de pago.
240
+ * @param data
241
+ * @returns
242
+ */
243
+ private toPaymentInfo(data:any){
244
+ return {
245
+ coupon: this.toCartDiscount(data),
246
+ currency: data.currency || "USD",
247
+ items: data.items.map((item:any) => ({
248
+ id: item.product.id,
249
+ name: item.product.name,
250
+ category: item.product.category,
251
+ price: item.total,
252
+ quantity: item.quantity
253
+ })),
254
+ payment_type: data.payments[0]?.method?.code || 'not-payments',
255
+ value: data.totals?.total || 0,
256
+ }
257
+ }
258
+ /**
259
+ * Evento que se dispara cuando se interactua con los métodos de envío.
260
+ * @param data
261
+ * @returns
262
+ */
263
+ private toShippingInfo(data:any){
264
+ return {
265
+ coupon: this.toCartDiscount(data),
266
+ currency: data.currency || "USD",
267
+ items: data.items.map((item:any) => ({
268
+ id: item.product.id,
269
+ name: item.product.name,
270
+ category: item.product.category,
271
+ price: item.total,
272
+ quantity: item.quantity
273
+ })),
274
+ shipping_tier: data.shipments[0]?.method?.code || 'not-shipping',
275
+ value: data.totals?.total || 0,
276
+ }
277
+ }
278
+
279
+ private toSignUp(data:any){
280
+ return {
281
+ ...data
282
+ }
283
+ }
284
+ }
@@ -0,0 +1,413 @@
1
+ import { afterRender, inject, Injectable, Renderer2, RendererFactory2 } from '@angular/core';
2
+ import { AnalyticEventKey, GoogleTagManagerConfig } from '../../interfaces';
3
+ import { NavigationEnd, Router } from '@angular/router';
4
+ import { DOCUMENT } from '@angular/common';
5
+ /**
6
+ * Servicio que se encarga de manejar el analytics de GTM.
7
+ */
8
+ @Injectable({
9
+ providedIn: 'root'
10
+ })
11
+ export class GTMService {
12
+ /**
13
+ * Indica si se esta cargando el servicio.
14
+ */
15
+ private isLoaded: boolean = false;
16
+ /**
17
+ * Indica cuando el servicio esta habilitado.
18
+ */
19
+ private enabled: boolean = false;
20
+ /**
21
+ * Se encarga de crear el elemento HTML con las configuraciones para
22
+ * que se pueda ejecutar el servicio.
23
+ */
24
+ private renderer: Renderer2;
25
+ /**
26
+ * Almacena el objecto window del navegador.
27
+ */
28
+ private window: any;
29
+
30
+ private rendererFactory: RendererFactory2 = inject(RendererFactory2);
31
+ private document: any = inject(DOCUMENT);
32
+ /**
33
+ * Servicio de ruteo de angular.
34
+ */
35
+ private router: Router = inject(Router);
36
+ /**
37
+ * Configuración de Google Tag Manager.
38
+ */
39
+ private config: GoogleTagManagerConfig = { id: null }
40
+
41
+ constructor() {
42
+ this.renderer = this.rendererFactory.createRenderer(null, null);
43
+ afterRender(() => {
44
+ this.window = window;
45
+ })
46
+ }
47
+ /**
48
+ * Obtiene el dataLayer del objecto window
49
+ * @returns
50
+ */
51
+ public getDataLayer(): any[] {
52
+ const window = this.window;
53
+ window.dataLayer = window.dataLayer || [];
54
+ return window.dataLayer;
55
+ }
56
+ /**
57
+ * Agrega datos al dataLayer.
58
+ * @param obj
59
+ */
60
+ private pushOnDataLayer(obj: object): void {
61
+ const dataLayer = this.getDataLayer();
62
+ dataLayer.push(obj);
63
+ }
64
+ /**
65
+ * Agrega el script de GTM para que empiece a capturar eventos.
66
+ * @returns
67
+ */
68
+ public addGtmToDom(): Promise<boolean> {
69
+ return new Promise(
70
+ (resolve, reject) => {
71
+ if (this.isLoaded) {
72
+ return resolve(this.isLoaded);
73
+ }
74
+ //const doc = this.browserGlobals.documentRef();
75
+ this.pushOnDataLayer({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });
76
+
77
+ const gtmScript = this.document.createElement('script') //doc.createElement('script');
78
+ gtmScript.id = 'GTMscript';
79
+ gtmScript.async = true;
80
+ gtmScript.src = this.applyGtmQueryParams(this.config["gtm_resource_path"] ? this.config["gtm_resource_path"] : 'https://www.googletagmanager.com/gtm.js');
81
+ gtmScript.addEventListener('load', () => {
82
+ return resolve(this.isLoaded = true);
83
+ });
84
+ gtmScript.addEventListener('error', () => {
85
+ return reject(false);
86
+ });
87
+ this.document.head.insertBefore(gtmScript, this.document.head.firstChild);
88
+ }
89
+ );
90
+ }
91
+
92
+ private applyGtmQueryParams(url: string): string {
93
+ if (url.indexOf('?') === -1) {
94
+ url += '?';
95
+ }
96
+ return (url + Object.keys(this.config).filter((k) => this.config[k]).map((k) => `${k}=${this.config[k]
97
+ }`).join('&'));
98
+ }
99
+ /**
100
+ * Inicializa el Servicio de analytics con sus configuraciones.
101
+ * @param config Configuraciones de Google Tag Manager
102
+ */
103
+ public initialize(config: GoogleTagManagerConfig) {
104
+ this.config = config || this.config;
105
+ this.addGtmToDom().then(() => {
106
+ this.router.events.forEach(item => {
107
+ if (item instanceof NavigationEnd) {
108
+ const gtmTag = {
109
+ event: 'page',
110
+ pageName: item.url
111
+ };
112
+ this.pushTag(gtmTag);
113
+ }
114
+ });
115
+ })
116
+ }
117
+
118
+ public pushTag(item: object): Promise<void> {
119
+ return new Promise<void>((resolve, reject) => {
120
+ if (!this.isLoaded) {
121
+ this.addGtmToDom().then(() => {
122
+ this.pushOnDataLayer(item);
123
+ return resolve();
124
+ }).catch(() => reject());
125
+ } else {
126
+ this.pushOnDataLayer(item);
127
+ return resolve();
128
+ }
129
+ });
130
+ }
131
+ /**
132
+ * Ejecuta el evento pasado por parametro.
133
+ * @param event_name Nombre del evento.
134
+ * @param data Data extra para agregar al evento.
135
+ * @returns
136
+ */
137
+ callEvent(event_name: AnalyticEventKey, data = {}) {
138
+ if (!this.isLoaded) return;
139
+ let event = this.translateEventName(event_name);
140
+ event && this.pushTag({ ecommerce: null })
141
+ event && this.pushTag({ 'event': this.translateEventName(event_name), ecommerce: this.evalEvent(event_name, data) })
142
+ }
143
+ /**
144
+ * Traduce el evento recibido y devuelve el nombre de la función que lo va a tratar.
145
+ * @param event_name
146
+ * @returns
147
+ */
148
+ translateEventName(event_name: AnalyticEventKey) {
149
+ switch (event_name) {
150
+ case 'view_item': return 'view_item';
151
+ case 'view_item_list': return 'view_item_list';
152
+ case 'checkout_init': return 'begin_checkout';
153
+ case 'shipping_info': return 'add_shipping_info';
154
+ case 'add_payment_info': return 'add_payment_info';
155
+ case 'purchase': return 'purchase';
156
+ case 'add_to_cart': return 'add_to_cart';
157
+ case 'remove_from_cart': return 'remove_from_cart';
158
+ case 'sign_up': return 'sign_up';
159
+ case 'select_promotion': return 'select_promotion';
160
+ case 'select_item': return 'select_item';
161
+ default: return null;
162
+ }
163
+ }
164
+ /**
165
+ * Evalua el evento y devuelve los datos de las funciones relacionadas.
166
+ * @param event_name Nombre del evento
167
+ * @param data Data extra para agregar al evento
168
+ * @returns
169
+ */
170
+ evalEvent(event_name: AnalyticEventKey, data: any) {
171
+ switch (event_name) {
172
+ case 'view_item': return this.toViewItem(data);
173
+ case 'view_item_list': return this.toViewItemList(data);
174
+ case 'checkout_init': return this.toCheckoutInit(data);
175
+ case 'shipping_info': return this.toShippingInfo(data);
176
+ case 'add_payment_info': return this.toPaymentInfo(data);
177
+ case 'purchase': return this.toPurchase(data);
178
+ case 'add_to_cart': return this.toAddToCart(data);
179
+ case 'remove_from_cart': return this.toRemoveToCart(data);
180
+ case 'sign_up': return this.toSignUp(data);
181
+ case 'select_promotion': return this.toSelectPromotion(data);
182
+ case 'select_item': return this.toSelectItem(data);
183
+ default: return data;
184
+ }
185
+ }
186
+ /**
187
+ * Evento que se dispara cuando se quiere comprar un producto.
188
+ * @param data
189
+ * @returns
190
+ */
191
+ private toPurchase(data: any) {
192
+ return {
193
+ coupon: this.toCartDiscount(data),
194
+ currency: data.currency,
195
+ shipping: data.totals.shipping,
196
+ tax: data.totals.taxes,
197
+ value: data.totals.total,
198
+ transaction_id: data.number,
199
+ countItems: data.items?.length || 0,
200
+ items: data.items.map((item: any) => ({
201
+ item_id: item.product.id,
202
+ item_name: item.product.name,
203
+ //coupon:'',
204
+ discount: item.product.discount || 0,
205
+ //index:'',
206
+ item_brand: item.product.attributes?.length ? item.product.attributes[0].name : '',
207
+ item_category: item.product.category,
208
+ item_variant: item.product.variants[0]?.code || '',
209
+ //location_id: '',
210
+ price: item.product.variants[0]?.saleprice || item.product.variants[0]?.price,
211
+ quantity: item.quantity || 1,
212
+ }))
213
+ }
214
+ }
215
+ /**
216
+ * Evento que se dispara cuando se inicializa en checkout.
217
+ * @param data
218
+ * @returns
219
+ */
220
+ private toCheckoutInit(data: any) {
221
+ return {
222
+ coupon: this.toCartDiscount(data),
223
+ currency: data.currency || "USD",
224
+ items: data.items.map((item: any) => ({
225
+ item_id: item.product.id,
226
+ item_name: item.product.name,
227
+ //coupon:'',
228
+ discount: item.product.discount || 0,
229
+ //index:'',
230
+ item_brand: item.product.attributes?.length ? item.product.attributes[0].name : '',
231
+ item_category: item.product.category,
232
+ //item_list_id: '',
233
+ //item_list_name: '',
234
+ item_variant: item.product.variants[0]?.code || '',
235
+ //location_id: '',
236
+ price: item.product.variants[0]?.saleprice || item.product.variants[0]?.price,
237
+ quantity: item.quantity || 1,
238
+ })),
239
+ value: data.totals?.total || 0,
240
+ }
241
+ }
242
+ /**
243
+ * Evento que se dispara con los descuentos en el carrito.
244
+ * @param data
245
+ * @returns
246
+ */
247
+ private toCartDiscount(data: any) {
248
+ let strDiscount = ''
249
+ strDiscount = data.cartDiscounts.map((itemDiscount: any) => itemDiscount?.type).join()
250
+ return strDiscount == '' ? 'not-discount' : strDiscount
251
+ }
252
+ /**
253
+ * Evento que se dispara cuando se agrega un producto al carrito.
254
+ * @param data
255
+ * @returns
256
+ */
257
+ private toAddToCart(data: any) {
258
+ let lastProduct = data.items?.length && data.items[data.items.length - 1]
259
+ return {
260
+ currency: data.currency || "USD",
261
+ items: [this.toItem({ quantity: lastProduct.quantity, ...lastProduct.product })],
262
+ value: lastProduct.total || 0,
263
+ }
264
+ }
265
+ /**
266
+ * Cambia la variable **enabled** a `false`
267
+ * @returns
268
+ */
269
+ disable() { this.enabled = false }
270
+ /**
271
+ * Evento que se dispara cuando se interactua a las vista del producto.
272
+ * @param product
273
+ * @returns
274
+ */
275
+ private toViewItem(product: any) {
276
+ return {
277
+ currency: product.currency,
278
+ value: product.price,
279
+ items: [this.toItem(product)]
280
+
281
+ }
282
+ }
283
+ /**
284
+ * Evento que se dispara cuando se interactua con el listado de productos.
285
+ * @param data
286
+ * @returns
287
+ */
288
+ private toViewItemList(data: any) {
289
+ return {
290
+ items: data.products.map((product: any) => this.toItem(product)),
291
+ item_list_name: data.item_list_name || 'Collection',
292
+ item_list_id: data.item_list_id || 0
293
+ }
294
+
295
+
296
+ }
297
+ /**
298
+ * Evento que se dispara cuando se quita un item del carrito.
299
+ * @param product
300
+ * @returns
301
+ */
302
+ private toRemoveToCart(product: any) {
303
+ let productParam = product.product
304
+ return {
305
+ currency: product.currency || "USD",
306
+ items: [this.toItem({ quantity: product.quantity, ...productParam })],
307
+ value: (productParam.variants[0]?.saleprice || productParam.variants[0]?.price) * product.quantity || 1,
308
+ }
309
+ }
310
+
311
+ private toItem = (product: any) => ({
312
+ item_id: product.id,
313
+ item_name: product.name,
314
+ //coupon:'',
315
+ discount: product.discount || 0,
316
+ //index:'',
317
+ item_brand: product.attributes?.length ? product.attributes[0].name : '',
318
+ item_category: product.category,
319
+ //item_list_id: '',
320
+ //item_list_name: '',
321
+ item_variant: product.variants[0]?.code || '',
322
+ //location_id: '',
323
+ price: product.variants[0]?.saleprice || product.variants[0]?.price,
324
+ quantity: product.quantity || 1,
325
+ })
326
+ /**
327
+ * Evento que se dispara cuando se consulta la información de pago.
328
+ * @param data
329
+ * @returns
330
+ */
331
+ private toPaymentInfo(data: any) {
332
+ return {
333
+ coupon: this.toCartDiscount(data),
334
+ currency: data.currency || "USD",
335
+ payment_type: data.payments[0]?.method?.code || 'not-payments',
336
+ value: data.totals?.total || 0,
337
+ items: data.items.map((item: any) => ({
338
+ item_id: item.product.id,
339
+ item_name: item.product.name,
340
+ //coupon:'',
341
+ discount: item.product.discount || 0,
342
+ //index:'',
343
+ item_brand: item.product.attributes?.length ? item.product.attributes[0].name : '',
344
+ item_category: item.product.category,
345
+ //item_list_id: '',
346
+ //item_list_name: '',
347
+ item_variant: item.product.variants[0]?.code || '',
348
+ //location_id: '',
349
+ price: item.product.variants[0]?.saleprice || item.product.variants[0]?.price,
350
+ quantity: item.quantity || 1,
351
+ })),
352
+ }
353
+ }
354
+ /**
355
+ * Evento que se dispara cuando se interactua con los métodos de envío.
356
+ * @param data
357
+ * @returns
358
+ */
359
+ private toShippingInfo(data: any) {
360
+ return {
361
+ coupon: this.toCartDiscount(data),
362
+ currency: data.currency || "USD",
363
+ shipping_tier: data.shipments[0]?.method?.code || 'not-shipping',
364
+ value: data.totals?.total || 0,
365
+ items: data.items.map((item: any) => ({
366
+ item_id: item.product.id,
367
+ item_name: item.product.name,
368
+ //coupon:'',
369
+ discount: item.product.discount || 0,
370
+ //index:'',
371
+ item_brand: item.product.attributes?.length ? item.product.attributes[0].name : '',
372
+ item_category: item.product.category,
373
+ //item_list_id: '',
374
+ //item_list_name: '',
375
+ item_variant: item.product.variants[0]?.code || '',
376
+ //location_id: '',
377
+ price: item.product.variants[0]?.saleprice || item.product.variants[0]?.price,
378
+ quantity: item.quantity || 1,
379
+ })),
380
+ }
381
+ }
382
+
383
+ private toSignUp(data: any) {
384
+ return {
385
+ ...data
386
+ }
387
+ }
388
+ /**
389
+ * Evento que se dispara cuando se interactua con una promoción.
390
+ * @param data
391
+ * @returns
392
+ */
393
+ private toSelectPromotion(data: any) {
394
+ console.log(data);
395
+ return {
396
+ promotion_id: data.id || '',
397
+ promotion_name: data.code || data.name,
398
+ promotion_title: data.subtitle,
399
+ location_id: data.priority || 0
400
+ }
401
+ }
402
+ /**
403
+ * Evento que se disapra cuando se interactua al seleccionar un item.
404
+ * @param data
405
+ * @returns
406
+ */
407
+ private toSelectItem(data: any) {
408
+ console.log(data);
409
+ return {
410
+ items: this.toItem(data)
411
+ }
412
+ }
413
+ }
@@ -0,0 +1,6 @@
1
+ export * from './facebook-pixel.service';
2
+ export * from './analytics.service';
3
+ export * from './doppler.service';
4
+ export * from './metricool-pixel.service';
5
+ export * from './google-analytics.service';
6
+ export * from './gtm.service';