@salla.sa/twilight-components 2.11.111 → 2.11.113

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 (116) hide show
  1. package/dist/cjs/interfaces-56bf4b49.js.map +1 -1
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/salla-add-product-button_40.cjs.entry.js +8 -8
  4. package/dist/cjs/salla-add-product-button_40.cjs.entry.js.map +1 -1
  5. package/dist/cjs/salla-filters-widget.cjs.entry.js +1 -1
  6. package/dist/cjs/salla-filters-widget.cjs.entry.js.map +1 -1
  7. package/dist/cjs/salla-price-range.cjs.entry.js +57 -75
  8. package/dist/cjs/salla-price-range.cjs.entry.js.map +1 -1
  9. package/dist/cjs/salla-products-list.cjs.entry.js +3 -3
  10. package/dist/cjs/salla-products-list.cjs.entry.js.map +1 -1
  11. package/dist/cjs/salla-products-slider.cjs.entry.js +30 -38
  12. package/dist/cjs/salla-products-slider.cjs.entry.js.map +1 -1
  13. package/dist/cjs/twilight.cjs.js +1 -1
  14. package/dist/collection/components/salla-filters/interfaces.js.map +1 -1
  15. package/dist/collection/components/salla-filters-widget/salla-filters-widget.js +1 -1
  16. package/dist/collection/components/salla-filters-widget/salla-filters-widget.js.map +1 -1
  17. package/dist/collection/components/salla-price-range/salla-price-range.js +64 -86
  18. package/dist/collection/components/salla-price-range/salla-price-range.js.map +1 -1
  19. package/dist/collection/components/salla-products-list/salla-products-list.js +3 -3
  20. package/dist/collection/components/salla-products-list/salla-products-list.js.map +1 -1
  21. package/dist/collection/components/salla-products-slider/salla-products-slider.js +31 -38
  22. package/dist/collection/components/salla-products-slider/salla-products-slider.js.map +1 -1
  23. package/dist/collection/components/salla-search/salla-search.js +7 -7
  24. package/dist/collection/components/salla-search/salla-search.js.map +1 -1
  25. package/dist/collection/components/salla-search/search-response.js.map +1 -1
  26. package/dist/collection/components/salla-verify/salla-verify.js +1 -1
  27. package/dist/collection/components/salla-verify/salla-verify.js.map +1 -1
  28. package/dist/components/salla-filters-widget2.js +1 -1
  29. package/dist/components/salla-filters-widget2.js.map +1 -1
  30. package/dist/components/salla-price-range2.js +59 -79
  31. package/dist/components/salla-price-range2.js.map +1 -1
  32. package/dist/components/salla-products-list.js +3 -3
  33. package/dist/components/salla-products-list.js.map +1 -1
  34. package/dist/components/salla-products-slider.js +30 -38
  35. package/dist/components/salla-products-slider.js.map +1 -1
  36. package/dist/components/salla-search.js +7 -7
  37. package/dist/components/salla-search.js.map +1 -1
  38. package/dist/components/salla-verify2.js +1 -1
  39. package/dist/components/salla-verify2.js.map +1 -1
  40. package/dist/esm/interfaces-5bea5a45.js.map +1 -1
  41. package/dist/esm/loader.js +1 -1
  42. package/dist/esm/salla-add-product-button_40.entry.js +8 -8
  43. package/dist/esm/salla-add-product-button_40.entry.js.map +1 -1
  44. package/dist/esm/salla-filters-widget.entry.js +1 -1
  45. package/dist/esm/salla-filters-widget.entry.js.map +1 -1
  46. package/dist/esm/salla-price-range.entry.js +57 -75
  47. package/dist/esm/salla-price-range.entry.js.map +1 -1
  48. package/dist/esm/salla-products-list.entry.js +3 -3
  49. package/dist/esm/salla-products-list.entry.js.map +1 -1
  50. package/dist/esm/salla-products-slider.entry.js +30 -38
  51. package/dist/esm/salla-products-slider.entry.js.map +1 -1
  52. package/dist/esm/twilight.js +1 -1
  53. package/dist/esm-es5/interfaces-5bea5a45.js.map +1 -1
  54. package/dist/esm-es5/loader.js +1 -1
  55. package/dist/esm-es5/loader.js.map +1 -1
  56. package/dist/esm-es5/salla-add-product-button_40.entry.js +1 -1
  57. package/dist/esm-es5/salla-add-product-button_40.entry.js.map +1 -1
  58. package/dist/esm-es5/salla-filters-widget.entry.js +1 -1
  59. package/dist/esm-es5/salla-filters-widget.entry.js.map +1 -1
  60. package/dist/esm-es5/salla-price-range.entry.js +2 -2
  61. package/dist/esm-es5/salla-price-range.entry.js.map +1 -1
  62. package/dist/esm-es5/salla-products-list.entry.js +1 -1
  63. package/dist/esm-es5/salla-products-list.entry.js.map +1 -1
  64. package/dist/esm-es5/salla-products-slider.entry.js +1 -1
  65. package/dist/esm-es5/salla-products-slider.entry.js.map +1 -1
  66. package/dist/esm-es5/twilight.js +1 -1
  67. package/dist/esm-es5/twilight.js.map +1 -1
  68. package/dist/twilight/p-01a0d85b.system.js.map +1 -1
  69. package/dist/twilight/p-061fedeb.entry.js +5 -0
  70. package/dist/twilight/p-061fedeb.entry.js.map +1 -0
  71. package/dist/twilight/p-0e1ee9ae.entry.js +5 -0
  72. package/dist/twilight/p-0e1ee9ae.entry.js.map +1 -0
  73. package/dist/twilight/{p-fcc169b5.system.entry.js → p-11c9d4f1.system.entry.js} +2 -2
  74. package/dist/twilight/p-11c9d4f1.system.entry.js.map +1 -0
  75. package/dist/twilight/p-1726b13b.entry.js +5 -0
  76. package/dist/twilight/p-1726b13b.entry.js.map +1 -0
  77. package/dist/twilight/p-37389934.system.js +1 -1
  78. package/dist/twilight/p-37389934.system.js.map +1 -1
  79. package/dist/twilight/p-384e9a27.system.entry.js +5 -0
  80. package/dist/twilight/p-384e9a27.system.entry.js.map +1 -0
  81. package/dist/twilight/{p-54783694.system.entry.js → p-8dbe3def.system.entry.js} +2 -2
  82. package/dist/twilight/p-8dbe3def.system.entry.js.map +1 -0
  83. package/dist/twilight/{p-5b15c1a6.entry.js → p-aa4bff7e.entry.js} +2 -2
  84. package/dist/twilight/p-aa4bff7e.entry.js.map +1 -0
  85. package/dist/twilight/p-cda133d3.system.entry.js +5 -0
  86. package/dist/twilight/p-cda133d3.system.entry.js.map +1 -0
  87. package/dist/twilight/p-d3cc3770.js.map +1 -1
  88. package/dist/twilight/{p-3212e42c.entry.js → p-f1d68104.entry.js} +2 -2
  89. package/dist/twilight/p-f1d68104.entry.js.map +1 -0
  90. package/dist/twilight/p-f9861c95.system.entry.js +5 -0
  91. package/dist/twilight/p-f9861c95.system.entry.js.map +1 -0
  92. package/dist/twilight/twilight.esm.js +1 -1
  93. package/dist/twilight/twilight.esm.js.map +1 -1
  94. package/dist/types/components/salla-filters/interfaces.d.ts +10 -7
  95. package/dist/types/components/salla-filters-widget/salla-filters-widget.d.ts +1 -1
  96. package/dist/types/components/salla-price-range/salla-price-range.d.ts +5 -10
  97. package/dist/types/components/salla-products-slider/salla-products-slider.d.ts +4 -5
  98. package/dist/types/components/salla-search/search-response.d.ts +2 -1
  99. package/dist/types/components.d.ts +4 -4
  100. package/package.json +3 -3
  101. package/dist/twilight/p-3212e42c.entry.js.map +0 -1
  102. package/dist/twilight/p-3f03d17c.system.entry.js +0 -5
  103. package/dist/twilight/p-3f03d17c.system.entry.js.map +0 -1
  104. package/dist/twilight/p-46b7f931.system.entry.js +0 -5
  105. package/dist/twilight/p-46b7f931.system.entry.js.map +0 -1
  106. package/dist/twilight/p-54783694.system.entry.js.map +0 -1
  107. package/dist/twilight/p-5b15c1a6.entry.js.map +0 -1
  108. package/dist/twilight/p-d7a62fb3.system.entry.js +0 -5
  109. package/dist/twilight/p-d7a62fb3.system.entry.js.map +0 -1
  110. package/dist/twilight/p-def222e1.entry.js +0 -5
  111. package/dist/twilight/p-def222e1.entry.js.map +0 -1
  112. package/dist/twilight/p-e393f123.entry.js +0 -5
  113. package/dist/twilight/p-e393f123.entry.js.map +0 -1
  114. package/dist/twilight/p-e3dc0687.entry.js +0 -5
  115. package/dist/twilight/p-e3dc0687.entry.js.map +0 -1
  116. package/dist/twilight/p-fcc169b5.system.entry.js.map +0 -1
@@ -0,0 +1,5 @@
1
+ var __awaiter=this&&this.__awaiter||function(t,e,i,n){function r(t){return t instanceof i?t:new i((function(e){e(t)}))}return new(i||(i=Promise))((function(i,a){function o(t){try{c(n.next(t))}catch(t){a(t)}}function s(t){try{c(n["throw"](t))}catch(t){a(t)}}function c(t){t.done?i(t.value):r(t.value).then(o,s)}c((n=n.apply(t,e||[])).next())}))};var __generator=this&&this.__generator||function(t,e){var i={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,r,a,o;return o={next:s(0),throw:s(1),return:s(2)},typeof Symbol==="function"&&(o[Symbol.iterator]=function(){return this}),o;function s(t){return function(e){return c([t,e])}}function c(s){if(n)throw new TypeError("Generator is already executing.");while(o&&(o=0,s[0]&&(i=0)),i)try{if(n=1,r&&(a=s[0]&2?r["return"]:s[0]?r["throw"]||((a=r["return"])&&a.call(r),0):r.next)&&!(a=a.call(r,s[1])).done)return a;if(r=0,a)s=[s[0]&2,a.value];switch(s[0]){case 0:case 1:a=s;break;case 4:i.label++;return{value:s[1],done:false};case 5:i.label++;r=s[1];s=[0];continue;case 7:s=i.ops.pop();i.trys.pop();continue;default:if(!(a=i.trys,a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){i=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]<a[3])){i.label=s[1];break}if(s[0]===6&&i.label<a[1]){i.label=a[1];a=s;break}if(a&&i.label<a[2]){i.label=a[2];i.ops.push(s);break}if(a[2])i.ops.pop();i.trys.pop();continue}s=e.call(t,i)}catch(t){s=[6,t];r=0}finally{n=a=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:true}}};
2
+ /*!
3
+ * Crafted with ❤ by Salla
4
+ */System.register(["./p-5ee0461b.system.js"],(function(t){"use strict";var e,i,n,r;return{setters:[function(t){e=t.r;i=t.c;n=t.h;r=t.H}],execute:function(){var a=":host{display:block}.rtl .rtl-range-slider,[dir=rtl] .rtl-range-slider{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.rtl .rtl-range-numbers,[dir=rtl] .rtl-range-numbers{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.rtl .form-select,.rtl select,[dir=rtl] .form-select,[dir=rtl] select{background-position:left 0.5rem center;padding-right:12px}.rtl .menu-divide li:not(:last-child):after,[dir=rtl] .menu-divide li:not(:last-child):after{left:0;right:auto}input[type=range]::-webkit-slider-thumb{pointer-events:all;width:24px;height:24px;-webkit-appearance:none}[type=checkbox]:checked{background-size:80%}";var o=t("salla_price_range",function(){function t(t){e(this,t);this.changed=i(this,"changed",7);this.filterValues=[];this.minPrice=undefined;this.maxPrice=undefined;this.option=undefined;this.filtersData=undefined;this.min=0;this.max=1e4;this.priceOptions=undefined}t.prototype.connectedCallback=function(){var t;if(this.filtersData&&((t=this.filtersData)===null||t===void 0?void 0:t.price)){this.minPrice=this.filtersData.price.min;this.maxPrice=this.filtersData.price.max}if(this.option.values.length==1){return}if(this.option.values.length<=5){this.filterValues=this.option.values;return}var e=Math.ceil(this.option.values.length/5);for(var i=0;i<this.option.values.length;i+=e){this.filterValues.push(this.option.values.slice(i,i+e).reduce((function(t,e){t.to=e.to;t.count+=e.count;return t})))}};t.prototype.reset=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(t){this.minInput.value=null;this.maxInput.value=null;return[2]}))}))};t.prototype.getPriceLabel=function(t){if(isNaN(t.from)||t.from<1){return"اقل من ".concat(salla.money(t.to))}if(isNaN(t.to)||t.to<1){return"أكثر من ".concat(salla.money(t.from))}return"".concat(salla.money(t.from)," الى ").concat(salla.money(t.to))};t.prototype.handleMinMaxPrice=function(t,e){this.minPrice=e.from;this.maxPrice=e.to!="*"?e.to:null;this.changedEventHandler(t)};t.prototype.changedEventHandler=function(t,e){if(e===void 0){e=false}return __awaiter(this,void 0,void 0,(function(){var i;return __generator(this,(function(n){i=t?t.target.value*1:null;if(e){this.minInputValidation(i)}else{this.maxInputValidation(i)}this.isReady&&this.changed.emit({event:t,option:this.option,value:{max:this.maxPrice,min:this.minPrice}});return[2]}))}))};t.prototype.minInputValidation=function(t){if(t&&(t>this.max||t>this.maxPrice)){return}if(t<this.min){this.minPrice=this.min;return}if(t){this.minPrice=t}};t.prototype.maxInputValidation=function(t){if(t&&(t<this.min||t<this.minPrice)){return}if(t>this.max){this.maxPrice=this.max;return}if(t){this.maxPrice=t}};t.prototype.isChecked=function(t){if(!this.minPrice&&!this.maxPrice){return false}var e=(t.from<1||t.from=="*")&&this.minPrice==0||t.from==this.minPrice;var i=t.to=="*"||!t.to||t.to==this.maxPrice;return e&&i};t.prototype.render=function(){var t=this;return n(r,null,this.filterValues.map((function(e,i){return n("label",{class:"s-filters-label",htmlFor:"".concat(t.option.key,"-").concat(i)},n("input",{id:"".concat(t.option.key,"-").concat(i),name:"price",type:"radio",checked:t.isChecked(e),class:"s-filters-radio",onChange:function(i){return t.handleMinMaxPrice(i,e)}}),t.getPriceLabel(e))})),n("div",{class:"flex justify-center items-center"},n("div",{class:"relative max-w-xl w-full"},n("div",{class:"s-price-range-inputs"},n("div",{class:"s-price-range-relative"},n("div",{class:"s-price-range-currency"}," ",salla.config.currency().symbol),n("input",{type:"number",maxlength:"5",ref:function(e){return t.minInput=e},onInput:function(e){return t.changedEventHandler(e,true)},value:this.minPrice,placeholder:"من",class:"s-price-range-number-input"})),n("div",{class:"s-price-range-gray-text"}," -"),n("div",{class:"s-price-range-relative"},n("div",{class:"s-price-range-currency"}," ",salla.config.currency().symbol),n("input",{type:"number",maxlength:"5",placeholder:"الى",ref:function(e){return t.maxInput=e},onInput:function(e){return t.changedEventHandler(e)},value:this.maxPrice,class:"s-price-range-number-input","aria-describedby":"price-currency"}))))))};t.prototype.componentDidLoad=function(){this.isReady=true};return t}());o.style=a}}}));
5
+ //# sourceMappingURL=p-cda133d3.system.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["sallaPriceRangeCss","SallaPriceRange","exports","this","filterValues","class_1","prototype","connectedCallback","filtersData","_a","price","minPrice","min","maxPrice","max","option","values","length","chunkSize","Math","ceil","i","push","slice","reduce","final","currentValue","to","count","reset","minInput","value","maxInput","getPriceLabel","filterValue","isNaN","from","concat","salla","money","handleMinMaxPrice","event","changedEventHandler","isMin","target","minInputValidation","maxInputValidation","isReady","changed","emit","isChecked","isMinEqual","isMaxEqual","render","_this","h","Host","map","index","class","htmlFor","key","id","name","type","checked","onChange","e","config","currency","symbol","maxlength","ref","el","onInput","placeholder","componentDidLoad"],"sources":["src/components/salla-price-range/salla-price-range.scss?tag=salla-price-range","src/components/salla-price-range/salla-price-range.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n\n.rtl, [dir=\"rtl\"] {\n .rtl-range-slider {\n transform: rotateY(180deg);\n }\n\n .rtl-range-numbers{\n flex-direction: row-reverse;\n }\n\n .form-select, select{\n background-position: left 0.5rem center;\n padding-right: 12px;\n } \n\n // divide\n.menu-divide {\n li {\n &:not(:last-child) {\n &:after {\n left: 0;\n right: auto;\n }\n }\n }\n}\n}\n\ninput[type=range]::-webkit-slider-thumb {\n pointer-events: all;\n width: 24px;\n height: 24px;\n -webkit-appearance: none;\n}\n\n[type='checkbox']:checked{\n background-size: 80%;\n}","import {Component, Host, h, State, Prop, Event, Method} from '@stencil/core';\nimport {Filter, FilterValue} from \"../salla-filters/interfaces\";\n\n@Component({\n tag: 'salla-price-range',\n styleUrl: 'salla-price-range.scss',\n})\nexport class SallaPriceRange {\n @Prop({mutable: true}) minPrice;\n @Prop({mutable: true}) maxPrice;\n @Prop({reflect: true}) option: Filter;\n @Prop({reflect: true}) filtersData: any;\n @State() min = 0;\n @State() max = 10000;\n\n @State() priceOptions: any;\n\n @Event() changed: any;\n\n isReady: Boolean;\n minInput: HTMLInputElement;\n maxInput: HTMLInputElement;\n filterValues: Array<FilterValue> = [];\n\n\n connectedCallback() {\n if (this.filtersData && this.filtersData?.price) {\n this.minPrice = this.filtersData.price.min;\n this.maxPrice = this.filtersData.price.max;\n }\n\n //no need to show one option only\n if (this.option.values.length == 1) {\n return;\n }\n //here we may recive too many prices, we will group all inputs to\n if (this.option.values.length <= 5) {\n this.filterValues = this.option.values;\n return;\n }\n const chunkSize = Math.ceil(this.option.values.length / 5);\n for (let i = 0; i < this.option.values.length; i += chunkSize) {\n this.filterValues.push(\n this.option.values\n .slice(i, i + chunkSize)\n .reduce((final: FilterValue, currentValue: FilterValue) => {\n final.to = currentValue.to;\n final.count += currentValue.count;\n return final;\n })\n );\n // do whatever\n }\n }\n\n @Method()\n async reset() {\n //@ts-ignore\n this.minInput.value = null;\n this.maxInput.value = null;\n }\n\n private getPriceLabel(filterValue: FilterValue) {\n // @ts-ignore\n if (isNaN(filterValue.from) || filterValue.from < 1) {\n return `اقل من ${salla.money(filterValue.to)}`;\n }\n // @ts-ignore\n if (isNaN(filterValue.to) || filterValue.to < 1) {\n return `أكثر من ${salla.money(filterValue.from)}`;\n }\n\n return `${salla.money(filterValue.from)} الى ${salla.money(filterValue.to)}`;\n }\n\n\n private handleMinMaxPrice(event: Event, value: FilterValue): void {\n\n this.minPrice = value.from;\n this.maxPrice = value.to != '*' ? value.to : null;\n\n this.changedEventHandler(event);\n }\n\n private async changedEventHandler(event, isMin = false) {\n\n let value = event ? event.target.value * 1 : null\n if (isMin) {\n this.minInputValidation(value);\n } else {\n this.maxInputValidation(value)\n }\n\n\n this.isReady && this.changed.emit({\n event: event,\n option: this.option,\n value: {max: this.maxPrice, min: this.minPrice}\n })\n }\n\n\n minInputValidation(value) {\n if (value && (value > this.max || value > this.maxPrice)) {\n // this.minPrice = this.maxPrice;\n return;\n }\n\n if (value < this.min) {\n this.minPrice = this.min;\n return;\n }\n\n if (value) {\n this.minPrice = value;\n }\n }\n\n maxInputValidation(value) {\n if (value && (value < this.min || value < this.minPrice)) {\n // this.maxPrice = this.minPrice;\n return;\n }\n if (value > this.max) {\n this.maxPrice = this.max;\n return;\n }\n\n if (value) {\n this.maxPrice = value;\n }\n }\n\n private isChecked(filterValue: FilterValue) {\n if (!this.minPrice && !this.maxPrice) {\n return false;\n }\n\n //1 filterValue.from zero or * and this.minPrice not set or zero\n //2 filterValue.from == this.minPrice\n let isMinEqual = ((filterValue.from < 1 || filterValue.from == '*') && this.minPrice == 0) || filterValue.from == this.minPrice;\n\n //1 filterValue.to == \"*\" or null\n //2 filterValue.to == this.max\n let isMaxEqual = filterValue.to == '*' || !filterValue.to || filterValue.to == this.maxPrice;\n return isMinEqual && isMaxEqual;\n }\n\n\n render() {\n return (\n <Host>\n {\n this.filterValues.map((filterValue, index) => {\n return <label class=\"s-filters-label\" htmlFor={`${this.option.key}-${index}`}>\n <input\n id={`${this.option.key}-${index}`}\n name=\"price\"\n type=\"radio\"\n checked={this.isChecked(filterValue)}\n class=\"s-filters-radio\"\n onChange={e => this.handleMinMaxPrice(e, filterValue)}\n />\n {this.getPriceLabel(filterValue)}\n </label>\n })\n }\n\n\n <div class=\"flex justify-center items-center\">\n <div class=\"relative max-w-xl w-full\">\n <div class=\"s-price-range-inputs\">\n <div class=\"s-price-range-relative\">\n <div class=\"s-price-range-currency\"> {salla.config.currency().symbol}</div>\n <input\n type=\"number\"\n maxlength=\"5\"\n ref={el => this.minInput = el}\n onInput={(event) => this.changedEventHandler(event, true)}\n value={this.minPrice}\n placeholder=\"من\"\n class=\"s-price-range-number-input\"\n />\n </div>\n\n <div class=\"s-price-range-gray-text\"> -</div>\n <div class=\"s-price-range-relative\">\n <div class=\"s-price-range-currency\"> {salla.config.currency().symbol}</div>\n <input type=\"number\" maxlength=\"5\"\n placeholder=\"الى\"\n ref={el => this.maxInput = el}\n onInput={(event) => this.changedEventHandler(event)}\n value={this.maxPrice}\n class=\"s-price-range-number-input\" aria-describedby=\"price-currency\"/>\n </div>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n\n componentDidLoad() {\n this.isReady = true;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["FilterOptionTypes","FilterOptionInputType"],"sources":["./src/components/salla-filters/interfaces.ts"],"sourcesContent":["export enum FilterOptionTypes {\n // CATEGORIES = \"categories\",\n // BRANDs = \"brands\",\n // RATING = \"rating\",\n // PRICE = \"price\",\n // RADIO = \"radio\",\n VALUES = \"values\",\n VARIANTS = \"variants\",\n MINIMUM = \"minimum\",\n RANGE = \"range\",\n}\n\nexport enum FilterOptionInputType {\n CHECKBOX = \"checkbox\",\n RADIO = \"radio\",\n}\n\n\nexport interface Filter {\n label: string,\n key: \"categories\" | string,//todo:: add possible values\n inputType: FilterOptionInputType,\n type: FilterOptionTypes,\n values: Array<{ count: string, value: string }> | { min: number, max: number }\n}\n"],"mappings":";;;IAAYA,GAAZ,SAAYA,GAMVA,EAAA,mBACAA,EAAA,uBACAA,EAAA,qBACAA,EAAA,gBACD,EAVD,CAAYA,MAAiB,K,IAYjBC,GAAZ,SAAYA,GACVA,EAAA,uBACAA,EAAA,gBACD,EAHD,CAAYA,MAAqB,Y"}
1
+ {"version":3,"names":["FilterOptionTypes","FilterOptionInputType"],"sources":["./src/components/salla-filters/interfaces.ts"],"sourcesContent":["export enum FilterOptionTypes {\n // CATEGORIES = \"categories\",\n // BRANDs = \"brands\",\n // RATING = \"rating\",\n // PRICE = \"price\",\n // RADIO = \"radio\",\n VALUES = \"values\",\n VARIANTS = \"variants\",\n MINIMUM = \"minimum\",\n RANGE = \"range\",\n}\n\nexport enum FilterOptionInputType {\n CHECKBOX = \"checkbox\",\n RADIO = \"radio\",\n}\n\nexport interface FilterValue {\n key: string,\n count: string,\n value: string,\n from?: number| \"*\",\n to?: number | \"*\"\n}\n\nexport interface Filter {\n label: string,\n key: \"categories\" | string,//todo:: add possible values\n inputType: FilterOptionInputType,\n type: FilterOptionTypes,\n min?: number,\n max?: number,\n values: Array<FilterValue>\n}\n"],"mappings":";;;IAAYA,GAAZ,SAAYA,GAMVA,EAAA,mBACAA,EAAA,uBACAA,EAAA,qBACAA,EAAA,gBACD,EAVD,CAAYA,MAAiB,K,IAYjBC,GAAZ,SAAYA,GACVA,EAAA,uBACAA,EAAA,gBACD,EAHD,CAAYA,MAAqB,Y"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Crafted with ❤ by Salla
3
3
  */
4
- import{r as s,h as t,H as i,g as e}from"./p-3c7d3f26.js";import{a as r}from"./p-201c8085.js";const l=`\x3c!-- Generated by IcoMoon.io --\x3e\n<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n<title>shopping-bag</title>\n<path d="M28 10.667h-4v-2.667c0-4.412-3.588-8-8-8s-8 3.588-8 8v2.667h-4c-0.736 0-1.333 0.596-1.333 1.333v13.333c0 3.676 2.991 6.667 6.667 6.667h13.333c3.676 0 6.667-2.991 6.667-6.667v-13.333c0-0.737-0.597-1.333-1.333-1.333zM10.667 8c0-2.941 2.392-5.333 5.333-5.333s5.333 2.392 5.333 5.333v2.667h-10.667zM26.667 25.333c0 2.205-1.795 4-4 4h-13.333c-2.205 0-4-1.795-4-4v-12h2.667v2.667c0 0.737 0.597 1.333 1.333 1.333s1.333-0.596 1.333-1.333v-2.667h10.667v2.667c0 0.737 0.597 1.333 1.333 1.333s1.333-0.596 1.333-1.333v-2.667h2.667z"></path>\n</svg>\n`;const a="";const n=class{constructor(t){s(this,t);this.source=undefined;this.sourceValue=undefined;this.limit=undefined;this.sortBy=undefined;this.filtersResults=undefined;this.horizontalCards=undefined;this.page=1;this.nextPage=undefined;this.hasInfiniteScroll=undefined;this.hasCustomComponent=undefined;this.sourceValueIsValid=undefined;this.placeholderText=undefined;this.isReady=undefined;this.showPlaceholder=undefined;this.parsedFilters=undefined}connectedCallback(){salla.onReady((()=>{this.hasCustomComponent=!!customElements.get("custom-salla-product-card");this.sourceValueIsValid=!!(this.getSourceValue()||this.isSourceWithoutValue());this.hasInfiniteScroll=!["json","selected","related","landing-page"].includes(this.getSource());try{let s=new URLSearchParams(window.location.search);this.sortBy=this.sortBy||s.get("sort")||s.get("by");let t=s.get("filters");this.parsedFilters=t?JSON.parse(decodeURIComponent(t)):{}}catch(s){salla.logger.warn("failed to get filters from url",s.message)}this.buildNextPageUrl();this.createStatusDom();this.isReady=true}));if(!this.sourceValueIsValid){salla.logger.warn(`source-value prop is required for source [${this.getSource()}]`);return}salla.event.on("salla-filters::changed",(s=>this.setFilters(s)))}async setFilters(s){this.parsedFilters=s;return this.reload()}async reload(){salla.infiniteScroll.destroy(this.infiniteScroll);this.buildNextPageUrl();this.wrapper.innerHTML="";this.init()}isFilterable(){return salla.config.get("store.settings.product.filters")&&this.filtersResults}isSourceWithoutValue(){return["offers","latest","sales"].includes(this.getSource())}animateItems(){r({targets:"salla-products-list salla-product-card",opacity:[0,1],duration:1200,translateY:[20,0],delay:function(s,t){return t*100}})}createStatusDom(){this.status=document.createElement("div");this.status.className="s-infinite-scroll-wrapper";this.status.innerHTML=`<div class="s-infinite-scroll-status">\n <p class="s-infinite-scroll-last infinite-scroll-last s-hidden" >${salla.lang.get("common.elements.end_of_content")}</p>\n <p class="s-infinite-scroll-error infinite-scroll-error s-hidden">${salla.lang.get("common.elements.failed_to_load_more")}</p>\n </div>\n <a href="#" class="s-infinite-scroll-btn s-button-btn">\n <span class="s-button-loader s-button-loader-center s-infinite-scroll-btn-loader" style="display: none"></span>\n </a>`;this.btnLoader=this.status.querySelector(".s-button-loader");salla.lang.onLoaded((()=>{this.status.querySelector(".s-infinite-scroll-last").innerHTML=salla.lang.get("common.elements.end_of_content");this.status.querySelector(".s-infinite-scroll-error").innerHTML=salla.lang.get("common.elements.failed_to_load_more");this.placeholderText=salla.lang.get("pages.categories.no_products")}))}initBaseNextPageUrl(s){this.nextPage=salla.url.api(`products?source=${s}`);if(this.limit){this.nextPage+=`&per_page=${this.limit>32?32:this.limit}`}if(this.sortBy){this.nextPage+=`&sort=${this.sortBy}`}this.nextPage+="&filterable=1";for(const[s,t]of Object.entries(this.parsedFilters||{})){if(["string","number"].includes(typeof t)){this.nextPage+=`&filters[${s}]=${t}`}else if(Array.isArray(t)){t.forEach((t=>this.nextPage+=`&filters[${s}][]=${t}`))}else if(typeof t==="object"){for(const[i,e]of Object.entries(t)){this.nextPage+=`&filters[${s}][${i}]=${e}`}}}}buildNextPageUrl(){let s=this.getSource();if(s==="json"){return}this.initBaseNextPageUrl(s);if(this.isSourceWithoutValue()){return}if(["search","related","landing-page"].includes(s)){this.nextPage+=`&source_value=${this.getSourceValue()}`;return}try{this.nextPage+=`&source_value[]=${this.getSourceValue().join("&source_value[]=")}`}catch(t){salla.logger.warn(`source-value prop should be array of ids ex source-value="[1,2,3]" for the source [${s}]`);this.sourceValueIsValid=false}}getSource(){return{"brands.single":"brands","product.index":"categories","product.index.latest":"latest","product.index.offers":"offers","product.index.search":"search","landing-page":"landing-page","product.index.tag":"tags","product.index.sales":"sales","components.most_sales_products":"sales"}[this.source||salla.config.get("page.slug")]||this.source||"latest"}getSourceValue(){let s=this.getSource();if(!["search","json","offers","latest","sales"].includes(s)){if(this.sourceValue&&Array.isArray(JSON.parse(this.sourceValue))&&JSON.parse(this.sourceValue).length){return JSON.parse(this.sourceValue)}if(this.sourceValue&&typeof JSON.parse(this.sourceValue)=="number"){return[JSON.parse(this.sourceValue)]}if(!this.sourceValue&&["categories","tags","brands","landing-page"].includes(this.getSource())){return[salla.config.get("page.id")]}}if(this.sourceValue){return this.sourceValue}if(s==="search"){return new URLSearchParams(window.location.search).get("q")}return salla.config.get("page.id")}loading(s=true){this.btnLoader.style.display=s?"inherit":"none"}getItemHTML(s){let t=this.hasCustomComponent?"custom-salla-product-card":"salla-product-card";let i=document.createElement(t);i.product=s;if(this.getSource()=="landing-page"&&!this.hasCustomComponent){i.toggleAttribute("hide-add-btn",true);i.classList.add("s-product-card-fit-height")}if(this.horizontalCards&&!this.hasCustomComponent){i.toggleAttribute("horizontal",true);i.toggleAttribute("shadow-on-hover",true)}return i}fetchProducts(){salla.product.fetch({source:this.getSource(),source_value:this.getSourceValue(),limit:this.limit}).then((s=>{if(!s.data.length){this.showPlaceholder=true;this.loading(false);return}this.handleResponse(s).forEach((s=>this.wrapper.append(s)))}))}initiateInfiniteScroll(){if(!this.hasInfiniteScroll){return}this.host.insertAdjacentElement("beforeend",this.status);this.infiniteScroll=salla.infiniteScroll.initiate(this.wrapper,this.wrapper,{path:()=>this.nextPage,history:false,nextPage:this.nextPage,scrollThreshold:100},true);this.infiniteScroll.on("request",(()=>this.loading()));this.infiniteScroll.on("load",(s=>{var t;if(!((t=s.data)===null||t===void 0?void 0:t.length)){this.showPlaceholder=true;salla.infiniteScroll.destroy(this.infiniteScroll);this.loading(false);return}else{this.showPlaceholder=false}this.infiniteScroll.appendItems(this.handleResponse(s));if(this.infiniteScroll.pageIndex==2){this.animateItems()}}));this.infiniteScroll.on("error",(()=>{this.status.querySelector(".s-infinite-scroll-error").classList.remove("s-hidden");this.loading(false)}));salla.onReady((()=>salla.infiniteScroll.loadNextPage(this.infiniteScroll)))}canRender(){return this.sourceValueIsValid&&this.isReady}render(){if(!this.canRender()){return""}if(this.showPlaceholder){return t("div",{class:"s-products-list-placeholder"},t("span",{innerHTML:l}),t("p",null,this.placeholderText))}return t(i,{class:"s-products-list"},t("div",{class:{"s-products-list-wrapper":true,"s-products-list-horizontal-cards":this.horizontalCards&&!this.filtersResults,"s-products-list-vertical-cards":!this.horizontalCards&&!this.filtersResults,"s-products-list-filters-results":this.filtersResults},ref:s=>this.wrapper=s}))}componentDidLoad(){if(!this.canRender()){return}if(this.getSource()==="json"){if(!this.getSourceValue().length){this.showPlaceholder=true;return}this.getSourceValue().map((s=>this.wrapper.append(this.getItemHTML(s))));return}if(this.getSource()==="selected"){if(!this.getSourceValue().length){this.showPlaceholder=true;return}this.fetchProducts();return}this.init()}init(){this.initiateInfiniteScroll();this.loading()}handleResponse(s){var t;if(s.filters&&this.isFilterable()){this.filtersResults=true;salla.event.emit("filters::fetched",{filters:s.filters})}else if(this.isFilterable()){salla.event.emit("filters::hidden")}this.nextPage=s.cursor?s.cursor.next:this.nextPage;this.loading(false);if(this.hasInfiniteScroll&&!this.nextPage){this.infiniteScroll.option({scrollThreshold:false,loadOnScroll:false});this.status.querySelector(".s-infinite-scroll-last").classList.remove("s-hidden")}return((t=s.data)===null||t===void 0?void 0:t.map((s=>this.getItemHTML(s))))||[]}get host(){return e(this)}};n.style=a;export{n as salla_products_list};
5
- //# sourceMappingURL=p-3212e42c.entry.js.map
4
+ import{r as s,h as t,H as i,g as e}from"./p-3c7d3f26.js";import{a as r}from"./p-201c8085.js";const l=`\x3c!-- Generated by IcoMoon.io --\x3e\n<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n<title>shopping-bag</title>\n<path d="M28 10.667h-4v-2.667c0-4.412-3.588-8-8-8s-8 3.588-8 8v2.667h-4c-0.736 0-1.333 0.596-1.333 1.333v13.333c0 3.676 2.991 6.667 6.667 6.667h13.333c3.676 0 6.667-2.991 6.667-6.667v-13.333c0-0.737-0.597-1.333-1.333-1.333zM10.667 8c0-2.941 2.392-5.333 5.333-5.333s5.333 2.392 5.333 5.333v2.667h-10.667zM26.667 25.333c0 2.205-1.795 4-4 4h-13.333c-2.205 0-4-1.795-4-4v-12h2.667v2.667c0 0.737 0.597 1.333 1.333 1.333s1.333-0.596 1.333-1.333v-2.667h10.667v2.667c0 0.737 0.597 1.333 1.333 1.333s1.333-0.596 1.333-1.333v-2.667h2.667z"></path>\n</svg>\n`;const a="";const n=class{constructor(t){s(this,t);this.source=undefined;this.sourceValue=undefined;this.limit=undefined;this.sortBy=undefined;this.filtersResults=undefined;this.horizontalCards=undefined;this.page=1;this.nextPage=undefined;this.hasInfiniteScroll=undefined;this.hasCustomComponent=undefined;this.sourceValueIsValid=undefined;this.placeholderText=undefined;this.isReady=undefined;this.showPlaceholder=undefined;this.parsedFilters=undefined}connectedCallback(){salla.onReady((()=>{this.hasCustomComponent=!!customElements.get("custom-salla-product-card");this.sourceValueIsValid=!!(this.getSourceValue()||this.isSourceWithoutValue());this.hasInfiniteScroll=!["json","selected","related","landing-page"].includes(this.getSource());try{let s=new URLSearchParams(window.location.search);this.sortBy=this.sortBy||s.get("sort")||s.get("by");let t=s.get("filters");this.parsedFilters=t?JSON.parse(decodeURIComponent(t)):{}}catch(s){salla.logger.warn("failed to get filters from url",s.message)}this.buildNextPageUrl();this.createStatusDom();this.isReady=true}));if(!this.sourceValueIsValid){salla.logger.warn(`source-value prop is required for source [${this.getSource()}]`);return}salla.event.on("salla-filters::changed",(s=>this.setFilters(s)))}async setFilters(s){this.parsedFilters=s;return this.reload()}async reload(){salla.infiniteScroll.destroy(this.infiniteScroll);this.buildNextPageUrl();this.wrapper.innerHTML="";this.init()}isFilterable(){return salla.config.get("store.settings.product.filters")&&this.filtersResults}isSourceWithoutValue(){return["offers","latest","sales"].includes(this.getSource())}animateItems(){r({targets:"salla-products-list salla-product-card",opacity:[0,1],duration:1200,translateY:[20,0],delay:function(s,t){return t*100}})}createStatusDom(){this.status=document.createElement("div");this.status.className="s-infinite-scroll-wrapper";this.status.innerHTML=`<div class="s-infinite-scroll-status">\n <p class="s-infinite-scroll-last infinite-scroll-last s-hidden" >${salla.lang.get("common.elements.end_of_content")}</p>\n <p class="s-infinite-scroll-error infinite-scroll-error s-hidden">${salla.lang.get("common.elements.failed_to_load_more")}</p>\n </div>\n <a href="#" class="s-infinite-scroll-btn s-button-btn">\n <span class="s-button-loader s-button-loader-center s-infinite-scroll-btn-loader" style="display: none"></span>\n </a>`;this.btnLoader=this.status.querySelector(".s-button-loader");salla.lang.onLoaded((()=>{this.status.querySelector(".s-infinite-scroll-last").innerHTML=salla.lang.get("common.elements.end_of_content");this.status.querySelector(".s-infinite-scroll-error").innerHTML=salla.lang.get("common.elements.failed_to_load_more");this.placeholderText=salla.lang.get("pages.categories.no_products")}))}initBaseNextPageUrl(s){this.nextPage=salla.url.api(`products?source=${s}`);if(this.limit){this.nextPage+=`&per_page=${this.limit>32?32:this.limit}`}if(this.sortBy){this.nextPage+=`&sort=${this.sortBy}`}this.nextPage+="&filterable=1";for(const[s,t]of Object.entries(this.parsedFilters||{})){if(["string","number"].includes(typeof t)){this.nextPage+=`&filters[${s}]=${t}`}else if(Array.isArray(t)){t.forEach((t=>this.nextPage+=`&filters[${s}][]=${t}`))}else if(typeof t==="object"){for(const[i,e]of Object.entries(t)){this.nextPage+=`&filters[${s}][${i}]=${e}`}}}}buildNextPageUrl(){let s=this.getSource();if(s==="json"){return}this.initBaseNextPageUrl(s);if(this.isSourceWithoutValue()){return}if(["search","related","landing-page"].includes(s)){this.nextPage+=`&source_value=${this.getSourceValue()}`;return}try{this.nextPage+=`&source_value[]=${this.getSourceValue().join("&source_value[]=")}`}catch(t){salla.logger.warn(`source-value prop should be array of ids ex source-value="[1,2,3]" for the source [${s}]`);this.sourceValueIsValid=false}}getSource(){return{"brands.single":"brands","product.index":"categories","product.index.latest":"latest","product.index.offers":"offers","product.index.search":"search","landing-page":"landing-page","product.index.tag":"tags","product.index.sales":"sales","components.most_sales_products":"sales"}[this.source||salla.config.get("page.slug")]||this.source||"latest"}getSourceValue(){let s=this.getSource();if(!["search","json","offers","latest","sales"].includes(s)){if(this.sourceValue&&Array.isArray(JSON.parse(this.sourceValue))&&JSON.parse(this.sourceValue).length){return JSON.parse(this.sourceValue)}if(this.sourceValue&&typeof JSON.parse(this.sourceValue)=="number"){return[JSON.parse(this.sourceValue)]}if(!this.sourceValue&&["categories","tags","brands"].includes(this.getSource())){return[salla.config.get("page.id")]}}if(this.sourceValue){return this.sourceValue}if(s==="search"){return new URLSearchParams(window.location.search).get("q")}return salla.config.get("page.id")}loading(s=true){this.btnLoader.style.display=s?"inherit":"none"}getItemHTML(s){let t=this.hasCustomComponent?"custom-salla-product-card":"salla-product-card";let i=document.createElement(t);i.product=s;if(this.getSource()=="landing-page"&&!this.hasCustomComponent){i.toggleAttribute("hide-add-btn",true);i.classList.add("s-product-card-fit-height")}if(this.horizontalCards&&!this.hasCustomComponent){i.toggleAttribute("horizontal",true);i.toggleAttribute("shadow-on-hover",true)}return i}fetchProducts(){salla.product.fetch({source:this.getSource(),source_value:this.getSourceValue(),limit:this.limit}).then((s=>{if(!s.data.length){this.showPlaceholder=true;this.loading(false);return}this.handleResponse(s).forEach((s=>this.wrapper.append(s)))}))}initiateInfiniteScroll(){if(!this.hasInfiniteScroll){return}this.host.insertAdjacentElement("beforeend",this.status);this.infiniteScroll=salla.infiniteScroll.initiate(this.wrapper,this.wrapper,{path:()=>this.nextPage,history:false,nextPage:this.nextPage,scrollThreshold:100},true);this.infiniteScroll.on("request",(()=>this.loading()));this.infiniteScroll.on("load",(s=>{var t;if(!((t=s.data)===null||t===void 0?void 0:t.length)){this.showPlaceholder=true;salla.infiniteScroll.destroy(this.infiniteScroll);this.loading(false);return}else{this.showPlaceholder=false}this.infiniteScroll.appendItems(this.handleResponse(s));if(this.infiniteScroll.pageIndex==2){this.animateItems()}}));this.infiniteScroll.on("error",(()=>{this.status.querySelector(".s-infinite-scroll-error").classList.remove("s-hidden");this.loading(false)}));salla.onReady((()=>salla.infiniteScroll.loadNextPage(this.infiniteScroll)))}canRender(){return this.sourceValueIsValid&&this.isReady}render(){if(!this.canRender()){return""}if(this.showPlaceholder){return t("div",{class:"s-products-list-placeholder"},t("span",{innerHTML:l}),t("p",null,this.placeholderText))}return t(i,{class:"s-products-list"},t("div",{class:{"s-products-list-wrapper":true,"s-products-list-horizontal-cards":this.horizontalCards&&!this.filtersResults,"s-products-list-vertical-cards":!this.horizontalCards&&!this.filtersResults,"s-products-list-filters-results":this.filtersResults},ref:s=>this.wrapper=s}))}componentDidLoad(){if(!this.canRender()){return}if(this.getSource()==="json"){if(!this.getSourceValue().length){this.showPlaceholder=true;return}this.getSourceValue().map((s=>this.wrapper.append(this.getItemHTML(s))));return}if(this.getSource()==="selected"||this.getSource()==="landing-page"){if(this.getSource()==="selected"&&!this.getSourceValue().length){this.showPlaceholder=true;return}this.fetchProducts();return}this.init()}init(){this.initiateInfiniteScroll();this.loading()}handleResponse(s){var t;if(s.filters&&this.isFilterable()){this.filtersResults=true;salla.event.emit("filters::fetched",{filters:s.filters})}else if(this.isFilterable()){salla.event.emit("filters::hidden")}this.nextPage=s.cursor?s.cursor.next:this.nextPage;this.loading(false);if(this.hasInfiniteScroll&&!this.nextPage){this.infiniteScroll.option({scrollThreshold:false,loadOnScroll:false});this.status.querySelector(".s-infinite-scroll-last").classList.remove("s-hidden")}return((t=s.data)===null||t===void 0?void 0:t.map((s=>this.getItemHTML(s))))||[]}get host(){return e(this)}};n.style=a;export{n as salla_products_list};
5
+ //# sourceMappingURL=p-f1d68104.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["sallaProductsListCss","SallaProductsList","connectedCallback","salla","onReady","this","hasCustomComponent","customElements","get","sourceValueIsValid","getSourceValue","isSourceWithoutValue","hasInfiniteScroll","includes","getSource","searchParams","URLSearchParams","window","location","search","sortBy","filters","parsedFilters","JSON","parse","decodeURIComponent","e","logger","warn","message","buildNextPageUrl","createStatusDom","isReady","event","on","setFilters","async","reload","infiniteScroll","destroy","wrapper","innerHTML","init","isFilterable","config","filtersResults","animateItems","anime","targets","opacity","duration","translateY","delay","_el","i","status","document","createElement","className","lang","btnLoader","querySelector","onLoaded","placeholderText","initBaseNextPageUrl","source","nextPage","url","api","limit","key","value","Object","entries","Array","isArray","forEach","item","k","v","join","sourceValue","length","loading","isLoading","style","display","getItemHTML","product","customComponentTag","customComponent","toggleAttribute","classList","add","horizontalCards","fetchProducts","fetch","source_value","then","res","data","showPlaceholder","handleResponse","card","append","initiateInfiniteScroll","host","insertAdjacentElement","initiate","path","history","scrollThreshold","response","_a","appendItems","pageIndex","remove","loadNextPage","canRender","render","h","class","ShoppingBag","Host","ref","componentDidLoad","map","emit","cursor","next","option","loadOnScroll"],"sources":["./src/components/salla-products-list/salla-products-list.scss?tag=salla-products-list","./src/components/salla-products-list/salla-products-list.tsx"],"sourcesContent":["\n","import {Component, Host, h, Prop, State, Element, Method} from '@stencil/core';\nimport anime from 'animejs';\nimport ShoppingBag from '../../assets/svg/shopping-bag.svg';\n\n@Component({\n tag: 'salla-products-list',\n styleUrl: 'salla-products-list.scss'\n})\nexport class SallaProductsList {\n connectedCallback() {\n salla.onReady(() => {\n this.hasCustomComponent = !!customElements.get('custom-salla-product-card');\n this.sourceValueIsValid = !!(this.getSourceValue() || this.isSourceWithoutValue());\n this.hasInfiniteScroll = !['json', 'selected', 'related', 'landing-page'].includes(this.getSource());\n try {\n let searchParams = new URLSearchParams(window.location.search);\n this.sortBy = this.sortBy || searchParams.get('sort') || searchParams.get('by');\n let filters = searchParams.get('filters')\n this.parsedFilters = filters ? JSON.parse(decodeURIComponent(filters)) : {};\n } catch (e) {\n salla.logger.warn('failed to get filters from url', e.message);\n }\n this.buildNextPageUrl();\n this.createStatusDom();\n\n this.isReady = true;\n });\n\n if (!this.sourceValueIsValid) {\n salla.logger.warn(`source-value prop is required for source [${this.getSource()}]`);\n return;\n }\n salla.event.on('salla-filters::changed', filters => this.setFilters(filters))\n\n\n }\n\n @Method()\n async setFilters(filters) {\n this.parsedFilters = filters;\n return this.reload();\n }\n\n\n @Method()\n async reload() {\n salla.infiniteScroll.destroy(this.infiniteScroll);\n this.buildNextPageUrl();\n this.wrapper.innerHTML = '';\n this.init();\n }\n\n\n private status: HTMLDivElement;\n private btnLoader: HTMLAnchorElement;\n @Element() host: HTMLElement;\n private wrapper: any;\n private infiniteScroll: any;\n /**\n * The source of the products list\n * @type {string}\n * */\n @Prop({\n reflect: true,\n mutable: true\n }) source: 'categories' | 'latest' | 'related' | 'brands' | 'json' | 'search' | 'tags' | 'selected' | 'offers' | 'landing-page' | 'sales';\n\n /**\n * The source value, cloud be different values as following:\n * - array of ids when `source` in ['categories', 'brands', 'tags', 'selected']\n * - keyword when `source` = 'search'\n * - products payload when `source` = 'json'\n * - product_id when `source` = 'related'\n *\n * @type {string}\n * */\n @Prop({mutable: true}) sourceValue: any;\n\n /**\n * Limit for number of products in the list.\n */\n @Prop({mutable: true}) limit: number;\n\n /**\n * Sorting the list of products\n */\n @Prop({mutable: true}) sortBy?: string | 'ourSuggest' | 'bestSell' | 'topRated' | 'priceFromTopToLow' | 'priceFromLowToTop';\n\n /**\n * should listen to filters events `salla-filters::changed` and re-render\n */\n @Prop({reflect: true, mutable: true}) filtersResults: boolean;\n\n /**\n * Horizontal cards\n */\n @Prop({reflect: true}) horizontalCards: boolean\n\n // State\n @State() page: number = 1;\n @State() nextPage: string;\n @State() hasInfiniteScroll: boolean;\n @State() hasCustomComponent: boolean;\n @State() sourceValueIsValid: boolean;\n @State() placeholderText: string;\n @State() isReady: boolean;\n @State() showPlaceholder: boolean;\n @State() parsedFilters: any;\n\n private isFilterable() {\n return salla.config.get('store.settings.product.filters') && this.filtersResults;\n }\n\n private isSourceWithoutValue() {\n return ['offers', 'latest', 'sales'].includes(this.getSource());\n }\n\n private animateItems() {\n anime({\n targets: 'salla-products-list salla-product-card',\n opacity: [0, 1],\n duration: 1200,\n translateY: [20, 0],\n delay: function (_el, i) {\n return i * 100;\n },\n })\n }\n\n private createStatusDom() {\n this.status = document.createElement('div');\n this.status.className = 's-infinite-scroll-wrapper';\n this.status.innerHTML = `<div class=\"s-infinite-scroll-status\">\n <p class=\"s-infinite-scroll-last infinite-scroll-last s-hidden\" >${salla.lang.get('common.elements.end_of_content')}</p>\n <p class=\"s-infinite-scroll-error infinite-scroll-error s-hidden\">${salla.lang.get('common.elements.failed_to_load_more')}</p>\n </div>\n <a href=\"#\" class=\"s-infinite-scroll-btn s-button-btn\">\n <span class=\"s-button-loader s-button-loader-center s-infinite-scroll-btn-loader\" style=\"display: none\"></span>\n </a>`;\n this.btnLoader = this.status.querySelector('.s-button-loader');\n salla.lang.onLoaded(() => {\n this.status.querySelector('.s-infinite-scroll-last').innerHTML = salla.lang.get('common.elements.end_of_content');\n this.status.querySelector('.s-infinite-scroll-error').innerHTML = salla.lang.get('common.elements.failed_to_load_more');\n this.placeholderText = salla.lang.get('pages.categories.no_products');\n });\n }\n\n private initBaseNextPageUrl(source: string) {\n\n this.nextPage = salla.url.api(`products?source=${source}`);\n\n if (this.limit) {\n this.nextPage += `&per_page=${this.limit > 32 ? 32 : this.limit}`;\n }\n if (this.sortBy) {\n this.nextPage += `&sort=${this.sortBy}`;\n }\n // if (!this.isFilterable()) {\n // return this.nextPage;\n // }\n this.nextPage += '&filterable=1';\n for (const [key, value] of Object.entries(this.parsedFilters || {})) {\n if ([\"string\", \"number\"].includes(typeof value)) {\n this.nextPage += `&filters[${key}]=${value}`;\n } else if (Array.isArray(value)) {\n (value as any).forEach(item => this.nextPage += `&filters[${key}][]=${item}`)\n } else if (typeof value === 'object') {\n for (const [k, v] of Object.entries(value)) {\n this.nextPage += `&filters[${key}][${k}]=${v}`;\n }\n }\n }\n }\n\n private buildNextPageUrl() {\n let source = this.getSource();\n if (source === 'json') {\n return;\n }\n this.initBaseNextPageUrl(source);\n if (this.isSourceWithoutValue()) {\n return;\n }\n\n if (['search', 'related', 'landing-page'].includes(source)) {\n this.nextPage += `&source_value=${this.getSourceValue()}`;\n return;\n }\n\n try {\n this.nextPage += `&source_value[]=${this.getSourceValue().join('&source_value[]=')}`;\n } catch (e) {\n salla.logger.warn(`source-value prop should be array of ids ex source-value=\"[1,2,3]\" for the source [${source}]`);\n this.sourceValueIsValid = false;\n }\n }\n\n private getSource() {\n return {\n 'brands.single': 'brands',\n 'product.index': 'categories',\n 'product.index.latest': 'latest',\n 'product.index.offers': 'offers',\n 'product.index.search': 'search',\n 'landing-page': 'landing-page',\n 'product.index.tag': 'tags',\n 'product.index.sales': 'sales',\n 'components.most_sales_products': 'sales',//temporary, delete it after two days from now\n }[this.source || salla.config.get('page.slug')] || this.source || 'latest';\n }\n\n private getSourceValue() {\n let source = this.getSource();\n\n //todo:: enhance this code, it call JSON.parse too many times.\n if (!['search', 'json', 'offers', 'latest', 'sales'].includes(source)) {\n if (this.sourceValue && Array.isArray(JSON.parse(this.sourceValue)) && JSON.parse(this.sourceValue).length) {\n return JSON.parse(this.sourceValue);\n }\n\n if (this.sourceValue && typeof JSON.parse(this.sourceValue) == 'number') {\n return [JSON.parse(this.sourceValue)];\n }\n if (!this.sourceValue && ['categories', 'tags', 'brands'].includes(this.getSource())) {\n return [salla.config.get('page.id')];\n }\n }\n\n if (this.sourceValue) {\n return this.sourceValue;\n }\n\n\n if (source === 'search') {\n return (new URLSearchParams(window.location.search)).get('q');\n }\n\n return salla.config.get('page.id');\n }\n\n\n private loading(isLoading = true) {\n this.btnLoader.style.display = isLoading ? 'inherit' : 'none';\n }\n\n private getItemHTML(product) {\n let customComponentTag: string = this.hasCustomComponent ? 'custom-salla-product-card' : 'salla-product-card';\n let customComponent: HTMLSallaProductCardElement = document.createElement(customComponentTag) as HTMLSallaProductCardElement;\n customComponent.product = product;\n // customComponent.setAttribute('product', JSON.stringify(product));\n if (this.getSource() == 'landing-page' && !this.hasCustomComponent) {\n customComponent.toggleAttribute('hide-add-btn', true);\n customComponent.classList.add('s-product-card-fit-height');\n }\n if (this.horizontalCards && !this.hasCustomComponent) {\n customComponent.toggleAttribute('horizontal', true);\n customComponent.toggleAttribute('shadow-on-hover', true);\n }\n return customComponent;\n }\n\n private fetchProducts() {\n salla.product.fetch({\n source: this.getSource(),\n source_value: this.getSourceValue(),\n limit: this.limit\n })\n .then(res => {\n if (!res.data.length) {\n this.showPlaceholder = true;\n this.loading(false);\n return;\n }\n this.handleResponse(res).forEach(card => this.wrapper.append(card));\n })\n }\n \n private initiateInfiniteScroll() {\n if (!this.hasInfiniteScroll) {\n return;\n }\n\n this.host.insertAdjacentElement('beforeend', this.status);\n this.infiniteScroll = salla.infiniteScroll.initiate(this.wrapper, this.wrapper, {\n path: () => this.nextPage,\n history: false,\n nextPage: this.nextPage,\n scrollThreshold: 100,\n }, /* infinite via api*/true);\n this.infiniteScroll.on('request', () => this.loading())\n this.infiniteScroll.on('load', response => {\n if (!response.data?.length) {\n this.showPlaceholder = true;\n salla.infiniteScroll.destroy(this.infiniteScroll);\n this.loading(false);\n return;\n }else{\n this.showPlaceholder = false;\n\n }\n this.infiniteScroll.appendItems(this.handleResponse(response))\n if (this.infiniteScroll.pageIndex == 2) {\n this.animateItems();\n }\n })\n this.infiniteScroll.on('error', () => {\n this.status.querySelector('.s-infinite-scroll-error').classList.remove('s-hidden')\n this.loading(false);\n });\n salla.onReady(() => salla.infiniteScroll.loadNextPage(this.infiniteScroll))\n }\n\n private canRender() {\n return this.sourceValueIsValid && this.isReady;\n }\n\n render() {\n if (!this.canRender()) {\n return '';\n }\n if (this.showPlaceholder) {\n return <div class=\"s-products-list-placeholder\">\n <span innerHTML={ShoppingBag}/>\n <p>{this.placeholderText}</p>\n </div>;\n }\n return (\n <Host class=\"s-products-list\">\n <div class={{\n \"s-products-list-wrapper\": true,\n 's-products-list-horizontal-cards': this.horizontalCards && !this.filtersResults,\n 's-products-list-vertical-cards': !this.horizontalCards && !this.filtersResults,\n 's-products-list-filters-results': this.filtersResults,\n }}\n ref={wrapper => this.wrapper = wrapper}/>\n </Host>\n );\n }\n\n componentDidLoad() {\n if (!this.canRender()) {\n return;\n }\n\n // Handle json source\n if (this.getSource() === 'json') {\n if (!this.getSourceValue().length) {\n this.showPlaceholder = true;\n return;\n }\n this.getSourceValue().map(product => this.wrapper.append(this.getItemHTML(product)));\n return;\n }\n // Handle selected source\n if (this.getSource() === 'selected' || this.getSource() === 'landing-page') {\n if (this.getSource() === 'selected' && !this.getSourceValue().length) {\n this.showPlaceholder = true;\n return;\n }\n this.fetchProducts()\n return;\n }\n this.init();\n }\n\n private init() {\n this.initiateInfiniteScroll();\n this.loading();\n }\n\n private handleResponse(response): Array<HTMLElement> {\n //💡 when source is related, cursor will not be existed\n if (response.filters && this.isFilterable()) {\n this.filtersResults = true;\n salla.event.emit('filters::fetched', {filters: response.filters});\n } else if (this.isFilterable()) {\n salla.event.emit('filters::hidden');\n }\n this.nextPage = response.cursor ? response.cursor.next : this.nextPage;\n this.loading(false);\n if (this.hasInfiniteScroll && !this.nextPage) {\n this.infiniteScroll.option({scrollThreshold: false, loadOnScroll: false});\n this.status.querySelector('.s-infinite-scroll-last').classList.remove('s-hidden');\n }\n return response.data?.map(product => this.getItemHTML(product)) || [];\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Crafted with ❤ by Salla
3
+ */
4
+ System.register(["./p-5ee0461b.system.js"],(function(e){"use strict";var t,s,r,i;return{setters:[function(e){t=e.r;s=e.h;r=e.H;i=e.g}],execute:function(){var u="";var a=e("salla_products_slider",function(){function e(e){var s=this;t(this,e);this.blockTitle=undefined;this.subTitle=undefined;this.sliderId=undefined;this.displayAllUrl=undefined;this.source=undefined;this.sourceValue=undefined;this.limit=undefined;this.productsData=undefined;this.isReady=undefined;this.sourceValueIsValid=undefined;this.hasCustomComponent=undefined;this.apiUrl="";this.parsedSourceValue=undefined;salla.onReady((function(){s.sourceValueIsValid=!!(s.getSource()||s.isSourceWithoutValue());if(!s.sourceValueIsValid){salla.logger.warn("source-value prop is required for source [".concat(s.getSource(),"]"));return}s.hasCustomComponent=!!customElements.get("custom-salla-product-card")}))}e.prototype.isSourceWithoutValue=function(){return["offers","latest","sales"].includes(this.getSource())};e.prototype.getItemHTML=function(e){if(this.hasCustomComponent){return s("div",{class:"s-products-slider-card"},s("custom-salla-product-card",{product:e,source:this.getSource(),"source-value":this.getSourceValue()}))}return s("div",{class:"s-products-slider-card"},s("salla-product-card",{"show-quantity":this.getSource()=="landing-page","hide-add-btn":this.getSource()=="landing-page","shadow-on-hover":true,product:e}))};e.prototype.getSource=function(){return{"brands.single":"brands","product.index":"categories","product.index.latest":"latest","product.index.offers":"offers","product.index.search":"search","landing-page":"landing-page","product.index.tag":"tags"}[this.source||salla.config.get("page.slug")]||this.source||"latest"};e.prototype.getSourceValue=function(){var e=this.getSource();if(!["search","json","offers","latest","sales"].includes(e)){if(this.sourceValue&&Array.isArray(JSON.parse(this.sourceValue))&&JSON.parse(this.sourceValue).length){return JSON.parse(this.sourceValue)}if(this.sourceValue&&typeof JSON.parse(this.sourceValue)=="number"){return[JSON.parse(this.sourceValue)]}if(!this.sourceValue&&["categories","tags","brands"].includes(this.getSource())){return[salla.config.get("page.id")]}}if(this.sourceValue){return this.sourceValue}if(e==="search"){return new URLSearchParams(window.location.search).get("q")}return salla.config.get("page.id")};e.prototype.canRender=function(){return this.sourceValueIsValid&&this.isReady};e.prototype.componentWillLoad=function(){var e=this;if(this.source==="json"){this.productsData=this.getSourceValue();this.isReady=true;return}return salla.product.fetch({source:this.getSource(),source_value:this.getSourceValue(),limit:this.limit}).then((function(t){e.productsData=t.data;e.isReady=true}))};e.prototype.render=function(){var e=this;var t;if(this.getSource()=="related"&&!salla.config.get("store.settings.product.related_products_enabled")||!this.canRender()){return}return s(r,{class:"s-products-slider-wrapper"},s("salla-slider",{class:"s-products-slider-slider",id:this.sliderId||"s-products-slider-".concat(Math.random().toString(36).substr(2,9)),type:"carousel","block-title":this.blockTitle,"block-subTitle":this.subTitle,"display-all-url":this.displayAllUrl},s("div",{slot:"items"},(t=this.productsData)===null||t===void 0?void 0:t.map((function(t){return e.getItemHTML(t)})))))};Object.defineProperty(e.prototype,"host",{get:function(){return i(this)},enumerable:false,configurable:true});return e}());a.style=u}}}));
5
+ //# sourceMappingURL=p-f9861c95.system.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["sallaProductsSliderCss","SallaProductsSlider","exports","class_1","hostRef","_this","this","salla","onReady","sourceValueIsValid","getSource","isSourceWithoutValue","logger","warn","concat","hasCustomComponent","customElements","get","prototype","includes","getItemHTML","product","h","class","source","getSourceValue","config","sourceValue","Array","isArray","JSON","parse","length","URLSearchParams","window","location","search","canRender","isReady","componentWillLoad","productsData","fetch","source_value","limit","then","res","data","render","Host","id","sliderId","Math","random","toString","substr","type","blockTitle","subTitle","displayAllUrl","slot","_a","map"],"sources":["src/components/salla-products-slider/salla-products-slider.scss?tag=salla-products-slider","src/components/salla-products-slider/salla-products-slider.tsx"],"sourcesContent":[".s-products-slider{\n &-wrapper{\n\n }\n &-slider{\n\n }\n &-card{\n\n }\n}","import {Component, Host, h, Prop, Element, State} from '@stencil/core';\n\n@Component({\n tag: 'salla-products-slider',\n styleUrl: 'salla-products-slider.scss'\n})\n\n//todo:: extends this component from salla-products-list or the opposite\nexport class SallaProductsSlider {\n constructor() {\n salla.onReady(() => {\n this.sourceValueIsValid = !!(this.getSource() || this.isSourceWithoutValue());\n if (!this.sourceValueIsValid) {\n salla.logger.warn(`source-value prop is required for source [${this.getSource()}]`);\n return;\n }\n this.hasCustomComponent = !!customElements.get('custom-salla-product-card');\n });\n }\n private isSourceWithoutValue() {\n return ['offers', 'latest', 'sales'].includes(this.getSource());\n }\n\n @Element() host: HTMLElement;\n //todo:: support limit, default =10, make sure that maximum is 32,\n\n /**\n * Title of the block - works only if slider is true\n * @type {string}\n * @default ''\n * */\n @Prop() blockTitle: string;\n\n /**\n * Sub title of the block - works only if slider is true\n * @type {string}\n * @default ''\n * */\n @Prop() subTitle: string;\n\n /**\n * Slider Id, if not provided will be generated automatically\n * @type {string}\n * @default ''\n * */\n @Prop() sliderId: string;\n\n /**\n * Display 'ALL' URL\n * @type {string}\n * @default ''\n * */\n @Prop() displayAllUrl: string;\n\n /**\n * Source of the products, if api will get the products from the API, if json will get the products from the products prop\n * @type {string}\n * @default ''\n * */\n @Prop({\n reflect: true,\n mutable: true\n }) source: 'categories' | 'latest' | 'related' | 'brands' | 'json' | 'tags' | 'selected' | 'offers' | 'landing-page';\n\n /**\n * The source value, cloud be different values as following:\n * - array of ids when `source` in ['categories', 'brands', 'tags', 'selected']\n * - products payload when `source` = 'json'\n * - product_id when `source` = 'related'\n *\n * @type {string}\n * */\n @Prop() sourceValue: string;\n\n /**\n * Limit for number of products in the list.\n */\n @Prop({mutable: true}) limit: number;\n\n\n @State() productsData: any;\n @State() isReady: boolean;\n @State() sourceValueIsValid: boolean;\n @State() hasCustomComponent: boolean;\n @State() apiUrl: string = '';\n @State() parsedSourceValue: any;\n\n private getItemHTML(product) {\n if (this.hasCustomComponent) {\n return <div class=\"s-products-slider-card\">\n <custom-salla-product-card product={product} source={this.getSource()} source-value={this.getSourceValue()}/>\n </div>;\n }\n\n return <div class=\"s-products-slider-card\">\n <salla-product-card\n show-quantity={this.getSource() == 'landing-page'}\n hide-add-btn={this.getSource() == 'landing-page'}\n shadow-on-hover={true}\n product={product}/>\n </div>;\n }\n\n private getSource() {\n return {\n 'brands.single': 'brands',\n 'product.index': 'categories',\n 'product.index.latest': 'latest',\n 'product.index.offers': 'offers',\n 'product.index.search': 'search',\n 'landing-page': 'landing-page',\n 'product.index.tag': 'tags',\n }[this.source || salla.config.get('page.slug')] || this.source || 'latest';\n }\n\n private getSourceValue() {\n let source = this.getSource();\n\n //todo:: enhance this code, it call JSON.parse too many times.\n if (!['search', 'json', 'offers', 'latest', 'sales'].includes(source)) {\n if (this.sourceValue && Array.isArray(JSON.parse(this.sourceValue)) && JSON.parse(this.sourceValue).length) {\n return JSON.parse(this.sourceValue);\n }\n\n if (this.sourceValue && typeof JSON.parse(this.sourceValue) == 'number') {\n return [JSON.parse(this.sourceValue)];\n }\n if (!this.sourceValue && ['categories', 'tags', 'brands'].includes(this.getSource())) {\n return [salla.config.get('page.id')];\n }\n }\n\n if (this.sourceValue) {\n return this.sourceValue;\n }\n\n\n if (source === 'search') {\n return (new URLSearchParams(window.location.search)).get('q');\n }\n\n return salla.config.get('page.id');\n }\n\n private canRender() {\n return this.sourceValueIsValid && this.isReady;\n }\n\n componentWillLoad() {\n if (this.source === 'json') {\n this.productsData = this.getSourceValue();\n this.isReady = true\n return;\n }\n return salla.product.fetch({\n source: this.getSource(),\n source_value: this.getSourceValue(),\n limit: this.limit,\n }).then(res => {\n this.productsData = res.data\n this.isReady = true\n })\n }\n\n render() {\n if ((this.getSource() == 'related' && !salla.config.get('store.settings.product.related_products_enabled')) || !this.canRender()) {\n return;\n }\n return (\n <Host class=\"s-products-slider-wrapper\">\n <salla-slider\n class=\"s-products-slider-slider\"\n id={this.sliderId || `s-products-slider-${Math.random().toString(36).substr(2, 9)}`}\n type=\"carousel\"\n block-title={this.blockTitle}\n block-subTitle={this.subTitle}\n display-all-url={this.displayAllUrl}\n >\n <div slot=\"items\">\n {this.productsData?.map(product => this.getItemHTML(product))}\n </div>\n </salla-slider>\n </Host>\n );\n }\n\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Crafted with ❤ by Salla
3
3
  */
4
- import{p as e,b as a}from"./p-3c7d3f26.js";export{s as setNonce}from"./p-3c7d3f26.js";import{g as t}from"./p-1edec127.js";import"./p-f84bae34.js";const l=()=>{const a=import.meta.url;const t={};if(a!==""){t.resourcesUrl=new URL(".",a).href}return e(t)};l().then((e=>{t();return a(JSON.parse('[["p-5b15c1a6",[[4,"salla-gifting",{"productId":[2,"product-id"],"widgetSubtitle":[1,"widget-subtitle"],"sectionTitle":[32],"sectionSubtitle":[32],"sectionBtnText":[32],"giftDetails":[32],"selectImageForYourGift":[32],"selectImageOrUpload":[32],"selectGiftMessage":[32],"giftCustomText":[32],"textId":[32],"incorrectGiftText":[32],"nextStep":[32],"senderNameLabel":[32],"receiverNameFieldLabel":[32],"receiverMobileFieldLabel":[32],"receiverEmailFieldLabel":[32],"emailPlaceholder":[32],"sendLater":[32],"selectSendDateAndTime":[32],"canNotEditOrderAfterSelectDate":[32],"sendGift":[32],"donationRequired":[32],"currentStep":[32],"showCalendar":[32],"showGiftText":[32],"currentLang":[32],"parentClass":[32],"errors":[32],"gift":[32],"selectedGiftTextOption":[32],"showTextArea":[32],"selectedImage":[32],"uploadedImage":[32],"selectedText":[32],"senderName":[32],"errorMessage":[32],"hasError":[32],"quantity":[32],"deliveryDate":[32],"timeZone":[32],"receiverName":[32],"receiverMobile":[32],"receiverCountryCode":[32],"receiverEmail":[32],"open":[64],"close":[64],"goToStep2":[64]}],[4,"salla-loyalty",{"prizePoints":[1544,"prize-points"],"customerPoints":[1538,"customer-points"],"prizeTitle":[1537,"prize-title"],"allowEmail":[4,"allow-email"],"allowMobile":[4,"allow-mobile"],"requireEmail":[4,"require-email"],"guestMessage":[1025,"guest-message"],"loyaltyProgram":[32],"buttonLoading":[32],"selectedItem":[32],"askConfirmation":[32],"is_loggedin":[32],"hasError":[32],"errorMessage":[32],"translationLoaded":[32],"open":[64],"close":[64],"resetExchange":[64],"exchangeLoyaltyPoint":[64]}],[4,"salla-product-size-guide",{"guides":[32],"productId":[32],"placeholder_title":[32],"placeholder_description":[32],"modal_title":[32],"hasError":[32],"open":[64],"close":[64]}],[4,"salla-login-modal",{"isEmailAllowed":[1028,"is-email-allowed"],"isMobileAllowed":[1028,"is-mobile-allowed"],"isEmailRequired":[1028,"is-email-required"],"supportWebAuth":[516,"support-web-auth"],"currentTabName":[32],"regType":[32],"translationLoaded":[32],"title":[32],"emailErrorMsg":[32],"firstNameErrorMsg":[32],"lastNameErrorMsg":[32],"dragAndDrop":[32],"browseFromFiles":[32],"customFields":[32],"uploadedImage":[32],"open":[64]},[[8,"verified","onVerified"]]],[0,"salla-offer-modal",{"offer":[32],"offer_name":[32],"offer_message":[32],"hasError":[32],"errorMessage":[32],"productID":[32],"offer_type":[32],"translationLoaded":[32],"addToCartLabel":[32],"open":[64],"showOffer":[64]}],[0,"salla-rating-modal",{"orderId":[2,"order-id"],"order":[32],"hasError":[32],"errorMessage":[32],"translationLoaded":[32],"open":[64],"close":[64]}],[4,"salla-scopes",{"selection":[1],"searchDisplayLimit":[2,"search-display-limit"],"translationLoaded":[32],"mode":[32],"current_scope":[32],"scopes":[32],"originalScopesList":[32],"selected_scope":[32],"isOpenedBefore":[32],"hasError":[32],"loading":[32],"close":[64],"open":[64],"handleSubmit":[64]}],[0,"salla-localization-modal",{"language":[1537],"currency":[1537],"translationLoaded":[32],"languages":[32],"currencies":[32],"hasError":[32],"errorMessage":[32],"open":[64],"close":[64],"submit":[64]}],[0,"salla-quick-order",{"quickOrderTitle":[1025,"quick-order-title"],"subTitle":[1025,"sub-title"],"payButtonTitle":[1025,"pay-button-title"],"confirmPayButtonTitle":[1025,"confirm-pay-button-title"],"agreementText":[1025,"agreement-text"],"isEmailRequired":[1028,"is-email-required"],"productId":[1025,"product-id"],"thanksMessage":[1025,"thanks-message"],"quickOrderStyle":[1025,"quick-order-style"],"user":[32],"isAvailable":[32],"oneClick":[32],"expanded":[32],"isTermsRequired":[32],"countryCode":[32],"submitSucess":[32],"placeHolderEmail":[32],"emailOptional":[32],"agreementShowText":[32],"agreementModalHead":[32],"userNameLabel":[32],"termsChecked":[32]}],[0,"salla-user-settings",{"isNotifiable":[516,"is-notifiable"],"deactivateAccount":[32],"promotionalMsgs":[32],"deactivateDesc":[32],"promotionalMsgsDesc":[32],"sorryForLeavingText":[32],"warningText":[32],"keepAccount":[32],"buttonLoading":[32]}],[0,"salla-search",{"inline":[4],"oval":[4],"height":[2],"translationLoaded":[32],"results":[32],"loading":[32],"typing":[32],"debounce":[32],"search_term":[32]},[[0,"keydown","handleKeyDown"]]],[4,"salla-social-share",{"url":[513],"urlName":[513,"url-name"],"platforms":[513],"opened":[32],"allPlatforms":[32],"platformIcons":[32],"convertedPlatforms":[32],"open":[64]}],[4,"salla-cart-summary",{"showCartLabel":[4,"show-cart-label"],"cartSummaryCount":[32],"cartSummaryTotal":[32],"cartLabel":[32],"animateToCart":[64]}],[4,"salla-infinite-scroll",{"nextPage":[1,"next-page"],"autoload":[1028],"container":[1],"item":[1],"loadMore":[32],"noMore":[32],"failedToLoad":[32]}],[0,"salla-maintenance-alert",{"title":[32],"message":[32],"buttonTitle":[32]}],[4,"salla-quantity-input",{"quantity":[32],"decrease":[64],"increase":[64],"setValue":[64]}],[4,"salla-user-menu",{"inline":[516],"avatarOnly":[516,"avatar-only"],"showHeader":[516,"show-header"],"relativeDropdown":[516,"relative-dropdown"],"accountLoading":[32],"opened":[32],"notifications":[32],"orders":[32],"pending_orders":[32],"wishlist":[32],"profile":[32],"rating":[32],"logout":[32],"hello":[32],"first_name":[32],"last_name":[32],"avatar":[32],"is_loggedIn":[32],"badges":[32],"hasBadges":[32],"OrderUpdate":[32]}],[4,"salla-product-card",{"product":[1],"horizontal":[4],"shadowOnHover":[4,"shadow-on-hover"],"hideAddBtn":[4,"hide-add-btn"],"fullImage":[4,"full-image"],"minimal":[4],"isSpecial":[4,"is-special"],"showQuantity":[4,"show-quantity"],"productData":[32],"fitImageHeight":[32],"remained":[32],"outOfStock":[32],"donationAmount":[32],"startingPrice":[32],"addToCart":[32],"placeholder":[32]}],[4,"salla-map",{"name":[1],"required":[4],"readonly":[4],"searchable":[1028],"lat":[1026],"lng":[1026],"apiKey":[1025,"api-key"],"modalTitle":[1,"modal-title"],"zoom":[1026],"theme":[1025],"modalActivityTitle":[32],"confirmButtonTitle":[32],"locateButtonTitle":[32],"locateButtonEdit":[32],"searchPlaceholder":[32],"searchInputValue":[32],"formattedAddress":[32],"geolocationError":[32],"searchInput":[32],"mapInput":[32],"mapElement":[32],"selectedLat":[32],"selectedLng":[32],"open":[64]}],[4,"salla-verify",{"display":[1],"type":[1025],"autoReload":[4,"auto-reload"],"supportWebAuth":[4,"support-web-auth"],"translationLoaded":[32],"title":[32],"resendAfter":[32],"isProfileVerify":[32],"getCode":[64],"open":[64]}],[4,"salla-color-picker",{"name":[1],"required":[4],"color":[1537],"format":[1],"showCancelButton":[4,"show-cancel-button"],"showTextField":[4,"show-text-field"],"enableAlpha":[4,"enable-alpha"],"widgetColor":[32],"setPickerOption":[64],"movePopUp":[64],"setColorValue":[64],"openPicker":[64],"closePicker":[64],"destroyPicker":[64]}],[4,"salla-add-product-button",{"channels":[513],"subscribedOptions":[1,"subscribed-options"],"quickBuy":[1540,"quick-buy"],"quantity":[514],"donatingAmount":[514,"donating-amount"],"notifyOptionsAvailability":[516,"notify-options-availability"],"productId":[520,"product-id"],"supportStickyBar":[516,"support-sticky-bar"],"productStatus":[513,"product-status"],"productType":[513,"product-type"],"hasOutOfStockOption":[32],"hasSubscribedOptions":[32],"selectedOptions":[32],"showQuickBuy":[32]}],[0,"salla-count-down",{"date":[1],"boxed":[4],"size":[1],"color":[1],"labeled":[4],"endText":[1,"end-text"],"digits":[1],"endOfDay":[4,"end-of-day"],"daysLabel":[32],"hoursLabel":[32],"minutesLabel":[32],"secondsLabel":[32],"endLabel":[32],"invalidDate":[32],"offerEnded":[32],"countInterval":[32],"days":[32],"hours":[32],"minutes":[32],"seconds":[32],"endCountDown":[64]}],[0,"salla-datetime-picker",{"value":[1537],"required":[4],"name":[513],"placeholder":[1],"allowInput":[4,"allow-input"],"allowInvalidPreload":[4,"allow-invalid-preload"],"altFormat":[1,"alt-format"],"altInput":[4,"alt-input"],"altInputClass":[1,"alt-input-class"],"appendTo":[16],"ariaDateFormat":[1,"aria-date-format"],"autoFillDefaultTime":[4,"auto-fill-default-time"],"clickOpens":[4,"click-opens"],"closeOnSelect":[4,"close-on-select"],"conjunction":[1],"dateFormat":[1,"date-format"],"defaultDate":[8,"default-date"],"defaultHour":[2,"default-hour"],"defaultMinute":[2,"default-minute"],"defaultSeconds":[2,"default-seconds"],"disable":[16],"disableMobile":[4,"disable-mobile"],"enable":[16],"enableSeconds":[4,"enable-seconds"],"enableTime":[4,"enable-time"],"formatDate":[16],"hourIncrement":[2,"hour-increment"],"inline":[4],"locale":[1],"maxDate":[8,"max-date"],"maxTime":[8,"max-time"],"minDate":[8,"min-date"],"minTime":[8,"min-time"],"minuteIncrement":[2,"minute-increment"],"mode":[1],"monthSelectorType":[1,"month-selector-type"],"nextArrow":[1,"next-arrow"],"noCalendar":[4,"no-calendar"],"dateParser":[16],"position":[1],"positionElement":[16],"prevArrow":[1,"prev-arrow"],"shorthandCurrentMonth":[4,"shorthand-current-month"],"static":[4],"showMonths":[2,"show-months"],"time_24hr":[4,"time_-2-4hr"],"weekNumbers":[4,"week-numbers"],"wrap":[4]}],[4,"salla-tab-content",{"name":[1],"isSelected":[32],"getChild":[64]}],[4,"salla-tab-header",{"name":[1],"activeClass":[1,"active-class"],"height":[8],"centered":[4],"isSelected":[32],"getChild":[64]}],[4,"salla-tabs",{"backgroundColor":[1,"background-color"],"vertical":[4]},[[0,"tabSelected","onSelectedTab"]]],[0,"salla-product-availability",{"channels":[1],"notifyOptionsAvailability":[4,"notify-options-availability"],"productId":[2,"product-id"],"isSubscribed":[1028,"is-subscribed"],"translationLoaded":[32],"title_":[32],"isVisitorSubscribed":[32]}],[0,"salla-quick-buy",{"type":[1025],"productId":[1025,"product-id"],"amount":[1538],"currency":[1025],"options":[16],"isRequireShipping":[1028,"is-require-shipping"],"isApplePayActive":[32],"quickBuy":[32]}],[0,"salla-file-upload",{"value":[1537],"files":[513],"height":[513],"cartItemId":[1,"cart-item-id"],"profileImage":[516,"profile-image"],"name":[1537],"payloadName":[1,"payload-name"],"accept":[1537],"fileId":[2,"file-id"],"url":[1025],"method":[1],"formData":[1,"form-data"],"required":[4],"maxFileSize":[1,"max-file-size"],"disabled":[4],"allowDrop":[4,"allow-drop"],"allowBrowse":[4,"allow-browse"],"allowPaste":[4,"allow-paste"],"allowMultiple":[4,"allow-multiple"],"allowReplace":[4,"allow-replace"],"allowRevert":[4,"allow-revert"],"allowRemove":[4,"allow-remove"],"allowProcess":[4,"allow-process"],"allowReorder":[4,"allow-reorder"],"storeAsFile":[4,"store-as-file"],"forceRevert":[4,"force-revert"],"maxFilesCount":[2,"max-files-count"],"maxParallelUploads":[2,"max-parallel-uploads"],"checkValidity":[4,"check-validity"],"itemInsertLocation":[1,"item-insert-location"],"itemInsertInterval":[2,"item-insert-interval"],"credits":[4],"dropOnPage":[4,"drop-on-page"],"dropOnElement":[4,"drop-on-element"],"dropValidation":[4,"drop-validation"],"ignoredFiles":[16],"instantUpload":[1028,"instant-upload"],"chunkUploads":[4,"chunk-uploads"],"chunkForce":[4,"chunk-force"],"chunkSize":[2,"chunk-size"],"chunkRetryDelays":[16],"labelDecimalSeparator":[1,"label-decimal-separator"],"labelThousandsSeparator":[1,"label-thousands-separator"],"labelIdle":[1025,"label-idle"],"iconRemove":[1,"icon-remove"],"iconProcess":[1,"icon-process"],"iconRetry":[1,"icon-retry"],"iconUndo":[1,"icon-undo"],"setOption":[64]}],[0,"salla-progress-bar",{"donation":[1],"target":[1026],"value":[1026],"height":[1025],"header":[1025],"stripped":[1028],"message":[1025],"unit":[1025],"color":[1025]}],[0,"salla-rating-stars",{"name":[1],"size":[1],"value":[2],"reviews":[2]}],[4,"salla-list-tile",{"href":[1],"target":[1]}],[4,"salla-slider",{"blockTitle":[513,"block-title"],"listenToThumbnailsOption":[516,"listen-to-thumbnails-option"],"blockSubtitle":[513,"block-subtitle"],"displayAllUrl":[513,"display-all-url"],"arrowsCentered":[516,"arrows-centered"],"verticalThumbs":[516,"vertical-thumbs"],"gridThumbs":[516,"grid-thumbs"],"vertical":[516],"autoHeight":[516,"auto-height"],"showControls":[516,"show-controls"],"controlsOuter":[516,"controls-outer"],"showThumbsControls":[4,"show-thumbs-controls"],"autoPlay":[4,"auto-play"],"slidesPerView":[1,"slides-per-view"],"pagination":[4],"centered":[4],"loop":[4],"direction":[1537],"type":[1],"sliderConfig":[520,"slider-config"],"thumbsConfig":[520,"thumbs-config"],"currentIndex":[32],"isEnd":[32],"isBeginning":[32],"swiperScript":[32],"displayAllTitle":[32],"slideTo":[64],"slideNext":[64],"slidePrev":[64],"slideToLoop":[64],"slideNextLoop":[64],"slidePrevLoop":[64],"slideReset":[64],"slideToClosest":[64],"update":[64],"updateAutoHeight":[64],"updateSlides":[64],"updateProgress":[64],"updateSlidesClasses":[64],"getSlides":[64]}],[4,"salla-placeholder",{"icon":[1],"alignment":[1],"iconSize":[1,"icon-size"],"translationLoaded":[32]}],[0,"salla-skeleton",{"type":[1],"width":[1],"height":[1]}],[0,"salla-tel-input",{"phone":[1025],"name":[1],"countryCode":[1025,"country-code"],"mobileRequired":[32],"countryCodeLabel":[32],"mobileLabel":[32],"tooShort":[32],"tooLong":[32],"invalidCountryCode":[32],"invalidNumber":[32],"errorMap":[32],"getValues":[64],"isValid":[64]}],[4,"salla-modal",{"isClosable":[1028,"is-closable"],"width":[513],"position":[513],"visible":[516],"hasSkeleton":[516,"has-skeleton"],"isLoading":[1540,"is-loading"],"subTitleFirst":[4,"sub-title-first"],"noPadding":[4,"no-padding"],"subTitle":[1,"sub-title"],"centered":[4],"iconStyle":[1,"icon-style"],"modalTitle":[32],"open":[64],"close":[64],"setTitle":[64],"loading":[64],"stopLoading":[64]},[[0,"keyup","handleKeyUp"]]],[0,"salla-loading",{"size":[8],"width":[8],"color":[1],"bgColor":[1,"bg-color"]}],[4,"salla-button",{"shape":[513],"color":[513],"fill":[513],"size":[513],"width":[513],"loading":[516],"disabled":[516],"loaderPosition":[1,"loader-position"],"href":[1],"load":[64],"stop":[64],"setText":[64],"disable":[64],"enable":[64]}]]],["p-def222e1",[[0,"salla-products-slider",{"blockTitle":[1,"block-title"],"subTitle":[1,"sub-title"],"sliderId":[1,"slider-id"],"displayAllUrl":[1,"display-all-url"],"source":[1537],"sourceValue":[1,"source-value"],"limit":[1026],"productsData":[32],"isReady":[32],"sourceValueIsValid":[32],"hasCustomComponent":[32],"apiUrl":[32],"parsedSourceValue":[32]}]]],["p-32908dae",[[0,"salla-product-options",{"productId":[2,"product-id"],"options":[1],"optionsData":[32],"outOfStockText":[32],"donationAmount":[32],"selectedOptions":[32],"canDisabled":[32],"selectedSkus":[32],"selectedOutSkus":[32],"getSelectedOptionsData":[64],"reportValidity":[64],"hasOutOfStockOption":[64],"getSelectedOptions":[64],"getOption":[64]}]]],["p-cd5cb2f7",[[0,"salla-filters",{"filters":[1040],"isSidebarOpen":[32],"filtersData":[32],"apply":[32],"reset":[32],"getFilters":[64],"applyFilters":[64],"resetFilters":[64]}]]],["p-16e25100",[[0,"salla-comment-form",{"type":[1537],"showAvatar":[4,"show-avatar"],"itemId":[1544,"item-id"],"placeholder":[32],"submitText":[32],"canComment":[32]}]]],["p-bce1b49b",[[0,"salla-installment",{"price":[1],"language":[1],"currency":[1],"tamaraIsActive":[32],"tabbyIsActive":[32],"spotiiIsActive":[32]}]]],["p-8f0fd469",[[0,"salla-loyalty-prize-item",{"item":[16]}]]],["p-3212e42c",[[0,"salla-products-list",{"source":[1537],"sourceValue":[1032,"source-value"],"limit":[1026],"sortBy":[1025,"sort-by"],"filtersResults":[1540,"filters-results"],"horizontalCards":[516,"horizontal-cards"],"page":[32],"nextPage":[32],"hasInfiniteScroll":[32],"hasCustomComponent":[32],"sourceValueIsValid":[32],"placeholderText":[32],"isReady":[32],"showPlaceholder":[32],"parsedFilters":[32],"setFilters":[64],"reload":[64]}]]],["p-e393f123",[[0,"salla-price-range",{"minPrice":[1026,"min-price"],"maxPrice":[1026,"max-price"],"option":[16],"filtersData":[520,"filters-data"],"min":[32],"max":[32],"minthumb":[32],"maxthumb":[32],"priceOptions":[32],"reset":[64]}]]],["p-e3dc0687",[[4,"salla-filters-widget",{"widgetTitle":[1025,"widget-title"],"withLoadMore":[1028,"with-load-more"],"filtersData":[16],"option":[16],"isOpen":[32],"isShowMore":[32],"reset":[64],"showMore":[64],"toggleWidget":[64]}]]],["p-dc422f49",[[4,"salla-conditional-fields",null,[[0,"change","changeHandler"]]]]]]'),e)}));
4
+ import{p as e,b as a}from"./p-3c7d3f26.js";export{s as setNonce}from"./p-3c7d3f26.js";import{g as t}from"./p-1edec127.js";import"./p-f84bae34.js";const l=()=>{const a=import.meta.url;const t={};if(a!==""){t.resourcesUrl=new URL(".",a).href}return e(t)};l().then((e=>{t();return a(JSON.parse('[["p-aa4bff7e",[[4,"salla-gifting",{"productId":[2,"product-id"],"widgetSubtitle":[1,"widget-subtitle"],"sectionTitle":[32],"sectionSubtitle":[32],"sectionBtnText":[32],"giftDetails":[32],"selectImageForYourGift":[32],"selectImageOrUpload":[32],"selectGiftMessage":[32],"giftCustomText":[32],"textId":[32],"incorrectGiftText":[32],"nextStep":[32],"senderNameLabel":[32],"receiverNameFieldLabel":[32],"receiverMobileFieldLabel":[32],"receiverEmailFieldLabel":[32],"emailPlaceholder":[32],"sendLater":[32],"selectSendDateAndTime":[32],"canNotEditOrderAfterSelectDate":[32],"sendGift":[32],"donationRequired":[32],"currentStep":[32],"showCalendar":[32],"showGiftText":[32],"currentLang":[32],"parentClass":[32],"errors":[32],"gift":[32],"selectedGiftTextOption":[32],"showTextArea":[32],"selectedImage":[32],"uploadedImage":[32],"selectedText":[32],"senderName":[32],"errorMessage":[32],"hasError":[32],"quantity":[32],"deliveryDate":[32],"timeZone":[32],"receiverName":[32],"receiverMobile":[32],"receiverCountryCode":[32],"receiverEmail":[32],"open":[64],"close":[64],"goToStep2":[64]}],[4,"salla-loyalty",{"prizePoints":[1544,"prize-points"],"customerPoints":[1538,"customer-points"],"prizeTitle":[1537,"prize-title"],"allowEmail":[4,"allow-email"],"allowMobile":[4,"allow-mobile"],"requireEmail":[4,"require-email"],"guestMessage":[1025,"guest-message"],"loyaltyProgram":[32],"buttonLoading":[32],"selectedItem":[32],"askConfirmation":[32],"is_loggedin":[32],"hasError":[32],"errorMessage":[32],"translationLoaded":[32],"open":[64],"close":[64],"resetExchange":[64],"exchangeLoyaltyPoint":[64]}],[4,"salla-product-size-guide",{"guides":[32],"productId":[32],"placeholder_title":[32],"placeholder_description":[32],"modal_title":[32],"hasError":[32],"open":[64],"close":[64]}],[4,"salla-login-modal",{"isEmailAllowed":[1028,"is-email-allowed"],"isMobileAllowed":[1028,"is-mobile-allowed"],"isEmailRequired":[1028,"is-email-required"],"supportWebAuth":[516,"support-web-auth"],"currentTabName":[32],"regType":[32],"translationLoaded":[32],"title":[32],"emailErrorMsg":[32],"firstNameErrorMsg":[32],"lastNameErrorMsg":[32],"dragAndDrop":[32],"browseFromFiles":[32],"customFields":[32],"uploadedImage":[32],"open":[64]},[[8,"verified","onVerified"]]],[0,"salla-offer-modal",{"offer":[32],"offer_name":[32],"offer_message":[32],"hasError":[32],"errorMessage":[32],"productID":[32],"offer_type":[32],"translationLoaded":[32],"addToCartLabel":[32],"open":[64],"showOffer":[64]}],[0,"salla-rating-modal",{"orderId":[2,"order-id"],"order":[32],"hasError":[32],"errorMessage":[32],"translationLoaded":[32],"open":[64],"close":[64]}],[4,"salla-scopes",{"selection":[1],"searchDisplayLimit":[2,"search-display-limit"],"translationLoaded":[32],"mode":[32],"current_scope":[32],"scopes":[32],"originalScopesList":[32],"selected_scope":[32],"isOpenedBefore":[32],"hasError":[32],"loading":[32],"close":[64],"open":[64],"handleSubmit":[64]}],[0,"salla-localization-modal",{"language":[1537],"currency":[1537],"translationLoaded":[32],"languages":[32],"currencies":[32],"hasError":[32],"errorMessage":[32],"open":[64],"close":[64],"submit":[64]}],[0,"salla-quick-order",{"quickOrderTitle":[1025,"quick-order-title"],"subTitle":[1025,"sub-title"],"payButtonTitle":[1025,"pay-button-title"],"confirmPayButtonTitle":[1025,"confirm-pay-button-title"],"agreementText":[1025,"agreement-text"],"isEmailRequired":[1028,"is-email-required"],"productId":[1025,"product-id"],"thanksMessage":[1025,"thanks-message"],"quickOrderStyle":[1025,"quick-order-style"],"user":[32],"isAvailable":[32],"oneClick":[32],"expanded":[32],"isTermsRequired":[32],"countryCode":[32],"submitSucess":[32],"placeHolderEmail":[32],"emailOptional":[32],"agreementShowText":[32],"agreementModalHead":[32],"userNameLabel":[32],"termsChecked":[32]}],[0,"salla-user-settings",{"isNotifiable":[516,"is-notifiable"],"deactivateAccount":[32],"promotionalMsgs":[32],"deactivateDesc":[32],"promotionalMsgsDesc":[32],"sorryForLeavingText":[32],"warningText":[32],"keepAccount":[32],"buttonLoading":[32]}],[0,"salla-search",{"inline":[4],"oval":[4],"height":[2],"translationLoaded":[32],"results":[32],"loading":[32],"typing":[32],"debounce":[32],"search_term":[32]},[[0,"keydown","handleKeyDown"]]],[4,"salla-social-share",{"url":[513],"urlName":[513,"url-name"],"platforms":[513],"opened":[32],"allPlatforms":[32],"platformIcons":[32],"convertedPlatforms":[32],"open":[64]}],[4,"salla-cart-summary",{"showCartLabel":[4,"show-cart-label"],"cartSummaryCount":[32],"cartSummaryTotal":[32],"cartLabel":[32],"animateToCart":[64]}],[4,"salla-infinite-scroll",{"nextPage":[1,"next-page"],"autoload":[1028],"container":[1],"item":[1],"loadMore":[32],"noMore":[32],"failedToLoad":[32]}],[0,"salla-maintenance-alert",{"title":[32],"message":[32],"buttonTitle":[32]}],[4,"salla-quantity-input",{"quantity":[32],"decrease":[64],"increase":[64],"setValue":[64]}],[4,"salla-user-menu",{"inline":[516],"avatarOnly":[516,"avatar-only"],"showHeader":[516,"show-header"],"relativeDropdown":[516,"relative-dropdown"],"accountLoading":[32],"opened":[32],"notifications":[32],"orders":[32],"pending_orders":[32],"wishlist":[32],"profile":[32],"rating":[32],"logout":[32],"hello":[32],"first_name":[32],"last_name":[32],"avatar":[32],"is_loggedIn":[32],"badges":[32],"hasBadges":[32],"OrderUpdate":[32]}],[4,"salla-product-card",{"product":[1],"horizontal":[4],"shadowOnHover":[4,"shadow-on-hover"],"hideAddBtn":[4,"hide-add-btn"],"fullImage":[4,"full-image"],"minimal":[4],"isSpecial":[4,"is-special"],"showQuantity":[4,"show-quantity"],"productData":[32],"fitImageHeight":[32],"remained":[32],"outOfStock":[32],"donationAmount":[32],"startingPrice":[32],"addToCart":[32],"placeholder":[32]}],[4,"salla-map",{"name":[1],"required":[4],"readonly":[4],"searchable":[1028],"lat":[1026],"lng":[1026],"apiKey":[1025,"api-key"],"modalTitle":[1,"modal-title"],"zoom":[1026],"theme":[1025],"modalActivityTitle":[32],"confirmButtonTitle":[32],"locateButtonTitle":[32],"locateButtonEdit":[32],"searchPlaceholder":[32],"searchInputValue":[32],"formattedAddress":[32],"geolocationError":[32],"searchInput":[32],"mapInput":[32],"mapElement":[32],"selectedLat":[32],"selectedLng":[32],"open":[64]}],[4,"salla-verify",{"display":[1],"type":[1025],"autoReload":[4,"auto-reload"],"supportWebAuth":[4,"support-web-auth"],"translationLoaded":[32],"title":[32],"resendAfter":[32],"isProfileVerify":[32],"getCode":[64],"open":[64]}],[4,"salla-color-picker",{"name":[1],"required":[4],"color":[1537],"format":[1],"showCancelButton":[4,"show-cancel-button"],"showTextField":[4,"show-text-field"],"enableAlpha":[4,"enable-alpha"],"widgetColor":[32],"setPickerOption":[64],"movePopUp":[64],"setColorValue":[64],"openPicker":[64],"closePicker":[64],"destroyPicker":[64]}],[4,"salla-add-product-button",{"channels":[513],"subscribedOptions":[1,"subscribed-options"],"quickBuy":[1540,"quick-buy"],"quantity":[514],"donatingAmount":[514,"donating-amount"],"notifyOptionsAvailability":[516,"notify-options-availability"],"productId":[520,"product-id"],"supportStickyBar":[516,"support-sticky-bar"],"productStatus":[513,"product-status"],"productType":[513,"product-type"],"hasOutOfStockOption":[32],"hasSubscribedOptions":[32],"selectedOptions":[32],"showQuickBuy":[32]}],[0,"salla-count-down",{"date":[1],"boxed":[4],"size":[1],"color":[1],"labeled":[4],"endText":[1,"end-text"],"digits":[1],"endOfDay":[4,"end-of-day"],"daysLabel":[32],"hoursLabel":[32],"minutesLabel":[32],"secondsLabel":[32],"endLabel":[32],"invalidDate":[32],"offerEnded":[32],"countInterval":[32],"days":[32],"hours":[32],"minutes":[32],"seconds":[32],"endCountDown":[64]}],[0,"salla-datetime-picker",{"value":[1537],"required":[4],"name":[513],"placeholder":[1],"allowInput":[4,"allow-input"],"allowInvalidPreload":[4,"allow-invalid-preload"],"altFormat":[1,"alt-format"],"altInput":[4,"alt-input"],"altInputClass":[1,"alt-input-class"],"appendTo":[16],"ariaDateFormat":[1,"aria-date-format"],"autoFillDefaultTime":[4,"auto-fill-default-time"],"clickOpens":[4,"click-opens"],"closeOnSelect":[4,"close-on-select"],"conjunction":[1],"dateFormat":[1,"date-format"],"defaultDate":[8,"default-date"],"defaultHour":[2,"default-hour"],"defaultMinute":[2,"default-minute"],"defaultSeconds":[2,"default-seconds"],"disable":[16],"disableMobile":[4,"disable-mobile"],"enable":[16],"enableSeconds":[4,"enable-seconds"],"enableTime":[4,"enable-time"],"formatDate":[16],"hourIncrement":[2,"hour-increment"],"inline":[4],"locale":[1],"maxDate":[8,"max-date"],"maxTime":[8,"max-time"],"minDate":[8,"min-date"],"minTime":[8,"min-time"],"minuteIncrement":[2,"minute-increment"],"mode":[1],"monthSelectorType":[1,"month-selector-type"],"nextArrow":[1,"next-arrow"],"noCalendar":[4,"no-calendar"],"dateParser":[16],"position":[1],"positionElement":[16],"prevArrow":[1,"prev-arrow"],"shorthandCurrentMonth":[4,"shorthand-current-month"],"static":[4],"showMonths":[2,"show-months"],"time_24hr":[4,"time_-2-4hr"],"weekNumbers":[4,"week-numbers"],"wrap":[4]}],[4,"salla-tab-content",{"name":[1],"isSelected":[32],"getChild":[64]}],[4,"salla-tab-header",{"name":[1],"activeClass":[1,"active-class"],"height":[8],"centered":[4],"isSelected":[32],"getChild":[64]}],[4,"salla-tabs",{"backgroundColor":[1,"background-color"],"vertical":[4]},[[0,"tabSelected","onSelectedTab"]]],[0,"salla-product-availability",{"channels":[1],"notifyOptionsAvailability":[4,"notify-options-availability"],"productId":[2,"product-id"],"isSubscribed":[1028,"is-subscribed"],"translationLoaded":[32],"title_":[32],"isVisitorSubscribed":[32]}],[0,"salla-quick-buy",{"type":[1025],"productId":[1025,"product-id"],"amount":[1538],"currency":[1025],"options":[16],"isRequireShipping":[1028,"is-require-shipping"],"isApplePayActive":[32],"quickBuy":[32]}],[0,"salla-file-upload",{"value":[1537],"files":[513],"height":[513],"cartItemId":[1,"cart-item-id"],"profileImage":[516,"profile-image"],"name":[1537],"payloadName":[1,"payload-name"],"accept":[1537],"fileId":[2,"file-id"],"url":[1025],"method":[1],"formData":[1,"form-data"],"required":[4],"maxFileSize":[1,"max-file-size"],"disabled":[4],"allowDrop":[4,"allow-drop"],"allowBrowse":[4,"allow-browse"],"allowPaste":[4,"allow-paste"],"allowMultiple":[4,"allow-multiple"],"allowReplace":[4,"allow-replace"],"allowRevert":[4,"allow-revert"],"allowRemove":[4,"allow-remove"],"allowProcess":[4,"allow-process"],"allowReorder":[4,"allow-reorder"],"storeAsFile":[4,"store-as-file"],"forceRevert":[4,"force-revert"],"maxFilesCount":[2,"max-files-count"],"maxParallelUploads":[2,"max-parallel-uploads"],"checkValidity":[4,"check-validity"],"itemInsertLocation":[1,"item-insert-location"],"itemInsertInterval":[2,"item-insert-interval"],"credits":[4],"dropOnPage":[4,"drop-on-page"],"dropOnElement":[4,"drop-on-element"],"dropValidation":[4,"drop-validation"],"ignoredFiles":[16],"instantUpload":[1028,"instant-upload"],"chunkUploads":[4,"chunk-uploads"],"chunkForce":[4,"chunk-force"],"chunkSize":[2,"chunk-size"],"chunkRetryDelays":[16],"labelDecimalSeparator":[1,"label-decimal-separator"],"labelThousandsSeparator":[1,"label-thousands-separator"],"labelIdle":[1025,"label-idle"],"iconRemove":[1,"icon-remove"],"iconProcess":[1,"icon-process"],"iconRetry":[1,"icon-retry"],"iconUndo":[1,"icon-undo"],"setOption":[64]}],[0,"salla-progress-bar",{"donation":[1],"target":[1026],"value":[1026],"height":[1025],"header":[1025],"stripped":[1028],"message":[1025],"unit":[1025],"color":[1025]}],[0,"salla-rating-stars",{"name":[1],"size":[1],"value":[2],"reviews":[2]}],[4,"salla-list-tile",{"href":[1],"target":[1]}],[4,"salla-slider",{"blockTitle":[513,"block-title"],"listenToThumbnailsOption":[516,"listen-to-thumbnails-option"],"blockSubtitle":[513,"block-subtitle"],"displayAllUrl":[513,"display-all-url"],"arrowsCentered":[516,"arrows-centered"],"verticalThumbs":[516,"vertical-thumbs"],"gridThumbs":[516,"grid-thumbs"],"vertical":[516],"autoHeight":[516,"auto-height"],"showControls":[516,"show-controls"],"controlsOuter":[516,"controls-outer"],"showThumbsControls":[4,"show-thumbs-controls"],"autoPlay":[4,"auto-play"],"slidesPerView":[1,"slides-per-view"],"pagination":[4],"centered":[4],"loop":[4],"direction":[1537],"type":[1],"sliderConfig":[520,"slider-config"],"thumbsConfig":[520,"thumbs-config"],"currentIndex":[32],"isEnd":[32],"isBeginning":[32],"swiperScript":[32],"displayAllTitle":[32],"slideTo":[64],"slideNext":[64],"slidePrev":[64],"slideToLoop":[64],"slideNextLoop":[64],"slidePrevLoop":[64],"slideReset":[64],"slideToClosest":[64],"update":[64],"updateAutoHeight":[64],"updateSlides":[64],"updateProgress":[64],"updateSlidesClasses":[64],"getSlides":[64]}],[4,"salla-placeholder",{"icon":[1],"alignment":[1],"iconSize":[1,"icon-size"],"translationLoaded":[32]}],[0,"salla-skeleton",{"type":[1],"width":[1],"height":[1]}],[0,"salla-tel-input",{"phone":[1025],"name":[1],"countryCode":[1025,"country-code"],"mobileRequired":[32],"countryCodeLabel":[32],"mobileLabel":[32],"tooShort":[32],"tooLong":[32],"invalidCountryCode":[32],"invalidNumber":[32],"errorMap":[32],"getValues":[64],"isValid":[64]}],[4,"salla-modal",{"isClosable":[1028,"is-closable"],"width":[513],"position":[513],"visible":[516],"hasSkeleton":[516,"has-skeleton"],"isLoading":[1540,"is-loading"],"subTitleFirst":[4,"sub-title-first"],"noPadding":[4,"no-padding"],"subTitle":[1,"sub-title"],"centered":[4],"iconStyle":[1,"icon-style"],"modalTitle":[32],"open":[64],"close":[64],"setTitle":[64],"loading":[64],"stopLoading":[64]},[[0,"keyup","handleKeyUp"]]],[0,"salla-loading",{"size":[8],"width":[8],"color":[1],"bgColor":[1,"bg-color"]}],[4,"salla-button",{"shape":[513],"color":[513],"fill":[513],"size":[513],"width":[513],"loading":[516],"disabled":[516],"loaderPosition":[1,"loader-position"],"href":[1],"load":[64],"stop":[64],"setText":[64],"disable":[64],"enable":[64]}]]],["p-0e1ee9ae",[[0,"salla-products-slider",{"blockTitle":[1,"block-title"],"subTitle":[1,"sub-title"],"sliderId":[1,"slider-id"],"displayAllUrl":[1,"display-all-url"],"source":[1537],"sourceValue":[1,"source-value"],"limit":[1026],"productsData":[32],"isReady":[32],"sourceValueIsValid":[32],"hasCustomComponent":[32],"apiUrl":[32],"parsedSourceValue":[32]}]]],["p-32908dae",[[0,"salla-product-options",{"productId":[2,"product-id"],"options":[1],"optionsData":[32],"outOfStockText":[32],"donationAmount":[32],"selectedOptions":[32],"canDisabled":[32],"selectedSkus":[32],"selectedOutSkus":[32],"getSelectedOptionsData":[64],"reportValidity":[64],"hasOutOfStockOption":[64],"getSelectedOptions":[64],"getOption":[64]}]]],["p-cd5cb2f7",[[0,"salla-filters",{"filters":[1040],"isSidebarOpen":[32],"filtersData":[32],"apply":[32],"reset":[32],"getFilters":[64],"applyFilters":[64],"resetFilters":[64]}]]],["p-16e25100",[[0,"salla-comment-form",{"type":[1537],"showAvatar":[4,"show-avatar"],"itemId":[1544,"item-id"],"placeholder":[32],"submitText":[32],"canComment":[32]}]]],["p-bce1b49b",[[0,"salla-installment",{"price":[1],"language":[1],"currency":[1],"tamaraIsActive":[32],"tabbyIsActive":[32],"spotiiIsActive":[32]}]]],["p-8f0fd469",[[0,"salla-loyalty-prize-item",{"item":[16]}]]],["p-f1d68104",[[0,"salla-products-list",{"source":[1537],"sourceValue":[1032,"source-value"],"limit":[1026],"sortBy":[1025,"sort-by"],"filtersResults":[1540,"filters-results"],"horizontalCards":[516,"horizontal-cards"],"page":[32],"nextPage":[32],"hasInfiniteScroll":[32],"hasCustomComponent":[32],"sourceValueIsValid":[32],"placeholderText":[32],"isReady":[32],"showPlaceholder":[32],"parsedFilters":[32],"setFilters":[64],"reload":[64]}]]],["p-1726b13b",[[0,"salla-price-range",{"minPrice":[1032,"min-price"],"maxPrice":[1032,"max-price"],"option":[16],"filtersData":[520,"filters-data"],"min":[32],"max":[32],"priceOptions":[32],"reset":[64]}]]],["p-061fedeb",[[4,"salla-filters-widget",{"widgetTitle":[1025,"widget-title"],"withLoadMore":[1028,"with-load-more"],"filtersData":[16],"option":[16],"isOpen":[32],"isShowMore":[32],"reset":[64],"showMore":[64],"toggleWidget":[64]}]]],["p-dc422f49",[[4,"salla-conditional-fields",null,[[0,"change","changeHandler"]]]]]]'),e)}));
5
5
  //# sourceMappingURL=twilight.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["patchBrowser","importMeta","import","meta","url","opts","resourcesUrl","URL","href","promiseResolve","then","options","globalScripts","bootstrapLazy","JSON","parse"],"sources":["./node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v3.0.0 | MIT Licensed | https://stenciljs.com\n */\nimport { BUILD, NAMESPACE } from '@stencil/core/internal/app-data';\nimport { consoleDevInfo, plt, win, doc, promiseResolve, H } from '@stencil/core';\n/**\n * Helper method for querying a `meta` tag that contains a nonce value\n * out of a DOM's head.\n *\n * @param doc The DOM containing the `head` to query against\n * @returns The content of the meta tag representing the nonce value, or `undefined` if no tag\n * exists or the tag has no content.\n */\nfunction queryNonceMetaTagContent(doc) {\n var _a, _b, _c;\n return (_c = (_b = (_a = doc.head) === null || _a === void 0 ? void 0 : _a.querySelector('meta[name=\"csp-nonce\"]')) === null || _b === void 0 ? void 0 : _b.getAttribute('content')) !== null && _c !== void 0 ? _c : undefined;\n}\n// TODO(STENCIL-661): Remove code related to the dynamic import shim\nconst getDynamicImportFunction = (namespace) => `__sc_import_${namespace.replace(/\\s|-/g, '_')}`;\nconst patchBrowser = () => {\n // NOTE!! This fn cannot use async/await!\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo('Running in development mode.');\n }\n // TODO(STENCIL-659): Remove code implementing the CSS variable shim\n if (BUILD.cssVarShim) {\n // shim css vars\n // TODO(STENCIL-659): Remove code implementing the CSS variable shim\n plt.$cssShim$ = win.__cssshim;\n }\n if (BUILD.cloneNodeFix) {\n // opted-in to polyfill cloneNode() for slot polyfilled components\n patchCloneNodeFix(H.prototype);\n }\n if (BUILD.profile && !performance.mark) {\n // not all browsers support performance.mark/measure (Safari 10)\n // because the mark/measure APIs are designed to write entries to a buffer in the browser that does not exist,\n // simply stub the implementations out.\n // TODO(STENCIL-323): Remove this patch when support for older browsers is removed (breaking)\n // @ts-ignore\n performance.mark = performance.measure = () => {\n /*noop*/\n };\n performance.getEntriesByName = () => [];\n }\n // @ts-ignore\n const scriptElm = \n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n BUILD.scriptDataOpts || BUILD.safari10 || BUILD.dynamicImportShim\n ? Array.from(doc.querySelectorAll('script')).find((s) => new RegExp(`\\/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) ||\n s.getAttribute('data-stencil-namespace') === NAMESPACE)\n : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? scriptElm['data-opts'] || {} : {};\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n if (BUILD.safari10 && 'onbeforeload' in scriptElm && !history.scrollRestoration /* IS_ESM_BUILD */) {\n // Safari < v11 support: This IF is true if it's Safari below v11.\n // This fn cannot use async/await since Safari didn't support it until v11,\n // however, Safari 10 did support modules. Safari 10 also didn't support \"nomodule\",\n // so both the ESM file and nomodule file would get downloaded. Only Safari\n // has 'onbeforeload' in the script, and \"history.scrollRestoration\" was added\n // to Safari in v11. Return a noop then() so the async/await ESM code doesn't continue.\n // IS_ESM_BUILD is replaced at build time so this check doesn't happen in systemjs builds.\n return {\n then() {\n /* promise noop */\n },\n };\n }\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n if (!BUILD.safari10 && importMeta !== '') {\n opts.resourcesUrl = new URL('.', importMeta).href;\n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n }\n else if (BUILD.dynamicImportShim || BUILD.safari10) {\n opts.resourcesUrl = new URL('.', new URL(scriptElm.getAttribute('data-resources-url') || scriptElm.src, win.location.href)).href;\n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n if (BUILD.dynamicImportShim) {\n patchDynamicImport(opts.resourcesUrl, scriptElm);\n }\n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n if (BUILD.dynamicImportShim && !win.customElements) {\n // module support, but no custom elements support (Old Edge)\n // @ts-ignore\n return import(/* webpackChunkName: \"polyfills-dom\" */ './dom.js').then(() => opts);\n }\n }\n return promiseResolve(opts);\n};\n// TODO(STENCIL-661): Remove code related to the dynamic import shim\nconst patchDynamicImport = (base, orgScriptElm) => {\n const importFunctionName = getDynamicImportFunction(NAMESPACE);\n try {\n // test if this browser supports dynamic imports\n // There is a caching issue in V8, that breaks using import() in Function\n // By generating a random string, we can workaround it\n // Check https://bugs.chromium.org/p/chromium/issues/detail?id=990810 for more info\n win[importFunctionName] = new Function('w', `return import(w);//${Math.random()}`);\n }\n catch (e) {\n // this shim is specifically for browsers that do support \"esm\" imports\n // however, they do NOT support \"dynamic\" imports\n // basically this code is for old Edge, v18 and below\n const moduleMap = new Map();\n win[importFunctionName] = (src) => {\n var _a;\n const url = new URL(src, base).href;\n let mod = moduleMap.get(url);\n if (!mod) {\n const script = doc.createElement('script');\n script.type = 'module';\n script.crossOrigin = orgScriptElm.crossOrigin;\n script.src = URL.createObjectURL(new Blob([`import * as m from '${url}'; window.${importFunctionName}.m = m;`], {\n type: 'application/javascript',\n }));\n // Apply CSP nonce to the script tag if it exists\n const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);\n if (nonce != null) {\n script.setAttribute('nonce', nonce);\n }\n mod = new Promise((resolve) => {\n script.onload = () => {\n resolve(win[importFunctionName].m);\n script.remove();\n };\n });\n moduleMap.set(url, mod);\n doc.head.appendChild(script);\n }\n return mod;\n };\n }\n};\nconst patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function (deep) {\n if (this.nodeName === 'TEMPLATE') {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n // Node.ATTRIBUTE_NODE === 2, and checking because IE11\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport { patchBrowser };\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(options => {\n globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"mappings":";;;kJAmBA,MAAMA,EAAe,KAkCjB,MAAMC,EAAaC,OAAOC,KAAKC,IAC/B,MAAMC,EAA6D,GAiBnE,GAAuBJ,IAAe,GAAI,CACtCI,EAAKC,aAAe,IAAIC,IAAI,IAAKN,GAAYO,IAGrD,CAcI,OAAOC,EAAeJ,EAAK,ECrF/BL,IAAeU,MAAKC,IAClBC,IACA,OAAOC,EAAcC,KAAAC,MAAA,kvfAAuCJ,EAAA"}
1
+ {"version":3,"names":["patchBrowser","importMeta","import","meta","url","opts","resourcesUrl","URL","href","promiseResolve","then","options","globalScripts","bootstrapLazy","JSON","parse"],"sources":["./node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v3.0.0 | MIT Licensed | https://stenciljs.com\n */\nimport { BUILD, NAMESPACE } from '@stencil/core/internal/app-data';\nimport { consoleDevInfo, plt, win, doc, promiseResolve, H } from '@stencil/core';\n/**\n * Helper method for querying a `meta` tag that contains a nonce value\n * out of a DOM's head.\n *\n * @param doc The DOM containing the `head` to query against\n * @returns The content of the meta tag representing the nonce value, or `undefined` if no tag\n * exists or the tag has no content.\n */\nfunction queryNonceMetaTagContent(doc) {\n var _a, _b, _c;\n return (_c = (_b = (_a = doc.head) === null || _a === void 0 ? void 0 : _a.querySelector('meta[name=\"csp-nonce\"]')) === null || _b === void 0 ? void 0 : _b.getAttribute('content')) !== null && _c !== void 0 ? _c : undefined;\n}\n// TODO(STENCIL-661): Remove code related to the dynamic import shim\nconst getDynamicImportFunction = (namespace) => `__sc_import_${namespace.replace(/\\s|-/g, '_')}`;\nconst patchBrowser = () => {\n // NOTE!! This fn cannot use async/await!\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo('Running in development mode.');\n }\n // TODO(STENCIL-659): Remove code implementing the CSS variable shim\n if (BUILD.cssVarShim) {\n // shim css vars\n // TODO(STENCIL-659): Remove code implementing the CSS variable shim\n plt.$cssShim$ = win.__cssshim;\n }\n if (BUILD.cloneNodeFix) {\n // opted-in to polyfill cloneNode() for slot polyfilled components\n patchCloneNodeFix(H.prototype);\n }\n if (BUILD.profile && !performance.mark) {\n // not all browsers support performance.mark/measure (Safari 10)\n // because the mark/measure APIs are designed to write entries to a buffer in the browser that does not exist,\n // simply stub the implementations out.\n // TODO(STENCIL-323): Remove this patch when support for older browsers is removed (breaking)\n // @ts-ignore\n performance.mark = performance.measure = () => {\n /*noop*/\n };\n performance.getEntriesByName = () => [];\n }\n // @ts-ignore\n const scriptElm = \n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n BUILD.scriptDataOpts || BUILD.safari10 || BUILD.dynamicImportShim\n ? Array.from(doc.querySelectorAll('script')).find((s) => new RegExp(`\\/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) ||\n s.getAttribute('data-stencil-namespace') === NAMESPACE)\n : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? scriptElm['data-opts'] || {} : {};\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n if (BUILD.safari10 && 'onbeforeload' in scriptElm && !history.scrollRestoration /* IS_ESM_BUILD */) {\n // Safari < v11 support: This IF is true if it's Safari below v11.\n // This fn cannot use async/await since Safari didn't support it until v11,\n // however, Safari 10 did support modules. Safari 10 also didn't support \"nomodule\",\n // so both the ESM file and nomodule file would get downloaded. Only Safari\n // has 'onbeforeload' in the script, and \"history.scrollRestoration\" was added\n // to Safari in v11. Return a noop then() so the async/await ESM code doesn't continue.\n // IS_ESM_BUILD is replaced at build time so this check doesn't happen in systemjs builds.\n return {\n then() {\n /* promise noop */\n },\n };\n }\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n if (!BUILD.safari10 && importMeta !== '') {\n opts.resourcesUrl = new URL('.', importMeta).href;\n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n // TODO(STENCIL-663): Remove code related to deprecated `safari10` field.\n }\n else if (BUILD.dynamicImportShim || BUILD.safari10) {\n opts.resourcesUrl = new URL('.', new URL(scriptElm.getAttribute('data-resources-url') || scriptElm.src, win.location.href)).href;\n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n if (BUILD.dynamicImportShim) {\n patchDynamicImport(opts.resourcesUrl, scriptElm);\n }\n // TODO(STENCIL-661): Remove code related to the dynamic import shim\n if (BUILD.dynamicImportShim && !win.customElements) {\n // module support, but no custom elements support (Old Edge)\n // @ts-ignore\n return import(/* webpackChunkName: \"polyfills-dom\" */ './dom.js').then(() => opts);\n }\n }\n return promiseResolve(opts);\n};\n// TODO(STENCIL-661): Remove code related to the dynamic import shim\nconst patchDynamicImport = (base, orgScriptElm) => {\n const importFunctionName = getDynamicImportFunction(NAMESPACE);\n try {\n // test if this browser supports dynamic imports\n // There is a caching issue in V8, that breaks using import() in Function\n // By generating a random string, we can workaround it\n // Check https://bugs.chromium.org/p/chromium/issues/detail?id=990810 for more info\n win[importFunctionName] = new Function('w', `return import(w);//${Math.random()}`);\n }\n catch (e) {\n // this shim is specifically for browsers that do support \"esm\" imports\n // however, they do NOT support \"dynamic\" imports\n // basically this code is for old Edge, v18 and below\n const moduleMap = new Map();\n win[importFunctionName] = (src) => {\n var _a;\n const url = new URL(src, base).href;\n let mod = moduleMap.get(url);\n if (!mod) {\n const script = doc.createElement('script');\n script.type = 'module';\n script.crossOrigin = orgScriptElm.crossOrigin;\n script.src = URL.createObjectURL(new Blob([`import * as m from '${url}'; window.${importFunctionName}.m = m;`], {\n type: 'application/javascript',\n }));\n // Apply CSP nonce to the script tag if it exists\n const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);\n if (nonce != null) {\n script.setAttribute('nonce', nonce);\n }\n mod = new Promise((resolve) => {\n script.onload = () => {\n resolve(win[importFunctionName].m);\n script.remove();\n };\n });\n moduleMap.set(url, mod);\n doc.head.appendChild(script);\n }\n return mod;\n };\n }\n};\nconst patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function (deep) {\n if (this.nodeName === 'TEMPLATE') {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n // Node.ATTRIBUTE_NODE === 2, and checking because IE11\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport { patchBrowser };\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(options => {\n globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"mappings":";;;kJAmBA,MAAMA,EAAe,KAkCjB,MAAMC,EAAaC,OAAOC,KAAKC,IAC/B,MAAMC,EAA6D,GAiBnE,GAAuBJ,IAAe,GAAI,CACtCI,EAAKC,aAAe,IAAIC,IAAI,IAAKN,GAAYO,IAGrD,CAcI,OAAOC,EAAeJ,EAAK,ECrF/BL,IAAeU,MAAKC,IAClBC,IACA,OAAOC,EAAcC,KAAAC,MAAA,ktfAAuCJ,EAAA"}
@@ -8,16 +8,19 @@ export declare enum FilterOptionInputType {
8
8
  CHECKBOX = "checkbox",
9
9
  RADIO = "radio"
10
10
  }
11
+ export interface FilterValue {
12
+ key: string;
13
+ count: string;
14
+ value: string;
15
+ from?: number | "*";
16
+ to?: number | "*";
17
+ }
11
18
  export interface Filter {
12
19
  label: string;
13
20
  key: "categories" | string;
14
21
  inputType: FilterOptionInputType;
15
22
  type: FilterOptionTypes;
16
- values: Array<{
17
- count: string;
18
- value: string;
19
- }> | {
20
- min: number;
21
- max: number;
22
- };
23
+ min?: number;
24
+ max?: number;
25
+ values: Array<FilterValue>;
23
26
  }
@@ -17,7 +17,7 @@ export declare class SallaFiltersWidget {
17
17
  reset(): Promise<void>;
18
18
  showMore(): Promise<void>;
19
19
  toggleWidget(): Promise<void>;
20
- renderFilterOption(option: Filter): any;
20
+ renderFilterOption(option: Filter): "" | any[];
21
21
  private isSelectedOption;
22
22
  private getOptionLabel;
23
23
  render(): any;
@@ -1,24 +1,19 @@
1
- import { Filter } from "../salla-filters/interfaces";
1
+ import { Filter, FilterValue } from "../salla-filters/interfaces";
2
2
  export declare class SallaPriceRange {
3
- constructor();
4
- minPrice: number;
5
- maxPrice: number;
3
+ minPrice: any;
4
+ maxPrice: any;
6
5
  option: Filter;
7
6
  filtersData: any;
8
7
  min: number;
9
8
  max: number;
10
- minthumb: number;
11
- maxthumb: number;
12
9
  priceOptions: any;
13
10
  changed: any;
14
11
  isReady: Boolean;
15
- rightHandle: HTMLDivElement;
16
- leftHandle: HTMLDivElement;
17
- activeBar: HTMLDivElement;
18
12
  minInput: HTMLInputElement;
19
13
  maxInput: HTMLInputElement;
14
+ filterValues: Array<FilterValue>;
15
+ connectedCallback(): void;
20
16
  reset(): Promise<void>;
21
- private generatePriceOptions;
22
17
  private getPriceLabel;
23
18
  private handleMinMaxPrice;
24
19
  private changedEventHandler;
@@ -1,5 +1,6 @@
1
1
  export declare class SallaProductsSlider {
2
2
  constructor();
3
+ private isSourceWithoutValue;
3
4
  host: HTMLElement;
4
5
  /**
5
6
  * Title of the block - works only if slider is true
@@ -41,8 +42,8 @@ export declare class SallaProductsSlider {
41
42
  * */
42
43
  sourceValue: string;
43
44
  /**
44
- * Limit for number of products in the list.
45
- */
45
+ * Limit for number of products in the list.
46
+ */
46
47
  limit: number;
47
48
  productsData: any;
48
49
  isReady: boolean;
@@ -51,11 +52,9 @@ export declare class SallaProductsSlider {
51
52
  apiUrl: string;
52
53
  parsedSourceValue: any;
53
54
  private getItemHTML;
54
- private getUrlPrefix;
55
- getApiUrl(): any;
56
55
  private getSource;
57
56
  private getSourceValue;
58
57
  private canRender;
59
- componentWillLoad(): void;
58
+ componentWillLoad(): any;
60
59
  render(): any;
61
60
  }
@@ -1,3 +1,4 @@
1
+ import { ProductDetail } from "@salla.sa/twilight/types/api/product";
1
2
  type Nullable<T> = T | undefined | null | '';
2
3
  type Price = {
3
4
  amount: string;
@@ -29,7 +30,7 @@ type SortOption = {
29
30
  name: string;
30
31
  };
31
32
  export default interface SearchProductsResponse {
32
- data: Product[];
33
+ data: ProductDetail[];
33
34
  cursor: {
34
35
  current: number;
35
36
  previous: Nullable<string>;
@@ -981,8 +981,8 @@ export namespace Components {
981
981
  }
982
982
  interface SallaPriceRange {
983
983
  "filtersData": any;
984
- "maxPrice": number;
985
- "minPrice": number;
984
+ "maxPrice": any;
985
+ "minPrice": any;
986
986
  "option": Filter;
987
987
  "reset": () => Promise<void>;
988
988
  }
@@ -2970,8 +2970,8 @@ declare namespace LocalJSX {
2970
2970
  }
2971
2971
  interface SallaPriceRange {
2972
2972
  "filtersData"?: any;
2973
- "maxPrice"?: number;
2974
- "minPrice"?: number;
2973
+ "maxPrice"?: any;
2974
+ "minPrice"?: any;
2975
2975
  "onChanged"?: (event: SallaPriceRangeCustomEvent<any>) => void;
2976
2976
  "option"?: Filter;
2977
2977
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salla.sa/twilight-components",
3
- "version": "2.11.111",
3
+ "version": "2.11.113",
4
4
  "license": "GPL-3.0",
5
5
  "author": "Salla Team <support@salla.dev> (https://salla.dev)",
6
6
  "bugs": {
@@ -78,7 +78,7 @@
78
78
  },
79
79
  "dependencies": {
80
80
  "@salla.sa/applepay": "*",
81
- "@salla.sa/twilight": "^2.11.111",
81
+ "@salla.sa/twilight": "^2.11.113",
82
82
  "@salla.sa/twilight-tailwind-theme": "^2.11.111",
83
83
  "@types/node": "^18.15.3",
84
84
  "animejs": "^3.2.1",
@@ -96,5 +96,5 @@
96
96
  "vanilla-lazyload": "^17.8.3",
97
97
  "vanilla-picker": "^2.12.1"
98
98
  },
99
- "gitHead": "a9513cd8242a5ee4d9f8189269d15df419955cce"
99
+ "gitHead": "a3df23f4460fcd8deb8cd89643d2d99b20bb2262"
100
100
  }
@@ -1 +0,0 @@
1
- {"version":3,"names":["sallaProductsListCss","SallaProductsList","connectedCallback","salla","onReady","this","hasCustomComponent","customElements","get","sourceValueIsValid","getSourceValue","isSourceWithoutValue","hasInfiniteScroll","includes","getSource","searchParams","URLSearchParams","window","location","search","sortBy","filters","parsedFilters","JSON","parse","decodeURIComponent","e","logger","warn","message","buildNextPageUrl","createStatusDom","isReady","event","on","setFilters","async","reload","infiniteScroll","destroy","wrapper","innerHTML","init","isFilterable","config","filtersResults","animateItems","anime","targets","opacity","duration","translateY","delay","_el","i","status","document","createElement","className","lang","btnLoader","querySelector","onLoaded","placeholderText","initBaseNextPageUrl","source","nextPage","url","api","limit","key","value","Object","entries","Array","isArray","forEach","item","k","v","join","sourceValue","length","loading","isLoading","style","display","getItemHTML","product","customComponentTag","customComponent","toggleAttribute","classList","add","horizontalCards","fetchProducts","fetch","source_value","then","res","data","showPlaceholder","handleResponse","card","append","initiateInfiniteScroll","host","insertAdjacentElement","initiate","path","history","scrollThreshold","response","_a","appendItems","pageIndex","remove","loadNextPage","canRender","render","h","class","ShoppingBag","Host","ref","componentDidLoad","map","emit","cursor","next","option","loadOnScroll"],"sources":["./src/components/salla-products-list/salla-products-list.scss?tag=salla-products-list","./src/components/salla-products-list/salla-products-list.tsx"],"sourcesContent":["\n","import {Component, Host, h, Prop, State, Element, Method} from '@stencil/core';\nimport anime from 'animejs';\nimport ShoppingBag from '../../assets/svg/shopping-bag.svg';\n\n@Component({\n tag: 'salla-products-list',\n styleUrl: 'salla-products-list.scss'\n})\nexport class SallaProductsList {\n connectedCallback() {\n salla.onReady(() => {\n this.hasCustomComponent = !!customElements.get('custom-salla-product-card');\n this.sourceValueIsValid = !!(this.getSourceValue() || this.isSourceWithoutValue());\n this.hasInfiniteScroll = !['json', 'selected', 'related', 'landing-page'].includes(this.getSource());\n try {\n let searchParams = new URLSearchParams(window.location.search);\n this.sortBy = this.sortBy || searchParams.get('sort') || searchParams.get('by');\n let filters = searchParams.get('filters')\n this.parsedFilters = filters ? JSON.parse(decodeURIComponent(filters)) : {};\n } catch (e) {\n salla.logger.warn('failed to get filters from url', e.message);\n }\n this.buildNextPageUrl();\n this.createStatusDom();\n\n this.isReady = true;\n });\n\n if (!this.sourceValueIsValid) {\n salla.logger.warn(`source-value prop is required for source [${this.getSource()}]`);\n return;\n }\n salla.event.on('salla-filters::changed', filters => this.setFilters(filters))\n\n\n }\n\n @Method()\n async setFilters(filters) {\n this.parsedFilters = filters;\n return this.reload();\n }\n\n\n @Method()\n async reload() {\n salla.infiniteScroll.destroy(this.infiniteScroll);\n this.buildNextPageUrl();\n this.wrapper.innerHTML = '';\n this.init();\n }\n\n\n private status: HTMLDivElement;\n private btnLoader: HTMLAnchorElement;\n @Element() host: HTMLElement;\n private wrapper: any;\n private infiniteScroll: any;\n /**\n * The source of the products list\n * @type {string}\n * */\n @Prop({\n reflect: true,\n mutable: true\n }) source: 'categories' | 'latest' | 'related' | 'brands' | 'json' | 'search' | 'tags' | 'selected' | 'offers' | 'landing-page' | 'sales';\n\n /**\n * The source value, cloud be different values as following:\n * - array of ids when `source` in ['categories', 'brands', 'tags', 'selected']\n * - keyword when `source` = 'search'\n * - products payload when `source` = 'json'\n * - product_id when `source` = 'related'\n *\n * @type {string}\n * */\n @Prop({mutable: true}) sourceValue: any;\n\n /**\n * Limit for number of products in the list.\n */\n @Prop({mutable: true}) limit: number;\n\n /**\n * Sorting the list of products\n */\n @Prop({mutable: true}) sortBy?: string | 'ourSuggest' | 'bestSell' | 'topRated' | 'priceFromTopToLow' | 'priceFromLowToTop';\n\n /**\n * should listen to filters events `salla-filters::changed` and re-render\n */\n @Prop({reflect: true, mutable: true}) filtersResults: boolean;\n\n /**\n * Horizontal cards\n */\n @Prop({reflect: true}) horizontalCards: boolean\n\n // State\n @State() page: number = 1;\n @State() nextPage: string;\n @State() hasInfiniteScroll: boolean;\n @State() hasCustomComponent: boolean;\n @State() sourceValueIsValid: boolean;\n @State() placeholderText: string;\n @State() isReady: boolean;\n @State() showPlaceholder: boolean;\n @State() parsedFilters: any;\n\n private isFilterable() {\n return salla.config.get('store.settings.product.filters') && this.filtersResults;\n }\n\n private isSourceWithoutValue() {\n return ['offers', 'latest', 'sales'].includes(this.getSource());\n }\n\n private animateItems() {\n anime({\n targets: 'salla-products-list salla-product-card',\n opacity: [0, 1],\n duration: 1200,\n translateY: [20, 0],\n delay: function (_el, i) {\n return i * 100;\n },\n })\n }\n\n private createStatusDom() {\n this.status = document.createElement('div');\n this.status.className = 's-infinite-scroll-wrapper';\n this.status.innerHTML = `<div class=\"s-infinite-scroll-status\">\n <p class=\"s-infinite-scroll-last infinite-scroll-last s-hidden\" >${salla.lang.get('common.elements.end_of_content')}</p>\n <p class=\"s-infinite-scroll-error infinite-scroll-error s-hidden\">${salla.lang.get('common.elements.failed_to_load_more')}</p>\n </div>\n <a href=\"#\" class=\"s-infinite-scroll-btn s-button-btn\">\n <span class=\"s-button-loader s-button-loader-center s-infinite-scroll-btn-loader\" style=\"display: none\"></span>\n </a>`;\n this.btnLoader = this.status.querySelector('.s-button-loader');\n salla.lang.onLoaded(() => {\n this.status.querySelector('.s-infinite-scroll-last').innerHTML = salla.lang.get('common.elements.end_of_content');\n this.status.querySelector('.s-infinite-scroll-error').innerHTML = salla.lang.get('common.elements.failed_to_load_more');\n this.placeholderText = salla.lang.get('pages.categories.no_products');\n });\n }\n\n private initBaseNextPageUrl(source: string) {\n\n this.nextPage = salla.url.api(`products?source=${source}`);\n\n if (this.limit) {\n this.nextPage += `&per_page=${this.limit > 32 ? 32 : this.limit}`;\n }\n if (this.sortBy) {\n this.nextPage += `&sort=${this.sortBy}`;\n }\n // if (!this.isFilterable()) {\n // return this.nextPage;\n // }\n this.nextPage += '&filterable=1';\n for (const [key, value] of Object.entries(this.parsedFilters || {})) {\n if ([\"string\", \"number\"].includes(typeof value)) {\n this.nextPage += `&filters[${key}]=${value}`;\n } else if (Array.isArray(value)) {\n (value as any).forEach(item => this.nextPage += `&filters[${key}][]=${item}`)\n } else if (typeof value === 'object') {\n for (const [k, v] of Object.entries(value)) {\n this.nextPage += `&filters[${key}][${k}]=${v}`;\n }\n }\n }\n }\n\n private buildNextPageUrl() {\n let source = this.getSource();\n if (source === 'json') {\n return;\n }\n this.initBaseNextPageUrl(source);\n if (this.isSourceWithoutValue()) {\n return;\n }\n\n if (['search', 'related', 'landing-page'].includes(source)) {\n this.nextPage += `&source_value=${this.getSourceValue()}`;\n return;\n }\n\n try {\n this.nextPage += `&source_value[]=${this.getSourceValue().join('&source_value[]=')}`;\n } catch (e) {\n salla.logger.warn(`source-value prop should be array of ids ex source-value=\"[1,2,3]\" for the source [${source}]`);\n this.sourceValueIsValid = false;\n }\n }\n\n private getSource() {\n return {\n 'brands.single': 'brands',\n 'product.index': 'categories',\n 'product.index.latest': 'latest',\n 'product.index.offers': 'offers',\n 'product.index.search': 'search',\n 'landing-page': 'landing-page',\n 'product.index.tag': 'tags',\n 'product.index.sales': 'sales',\n 'components.most_sales_products': 'sales',//temporary, delete it after two days from now\n }[this.source || salla.config.get('page.slug')] || this.source || 'latest';\n }\n\n private getSourceValue() {\n let source = this.getSource();\n\n //todo:: enhance this code, it call JSON.parse too many times.\n if (!['search', 'json', 'offers', 'latest', 'sales'].includes(source)) {\n if (this.sourceValue && Array.isArray(JSON.parse(this.sourceValue)) && JSON.parse(this.sourceValue).length) {\n return JSON.parse(this.sourceValue);\n }\n\n if (this.sourceValue && typeof JSON.parse(this.sourceValue) == 'number') {\n return [JSON.parse(this.sourceValue)];\n }\n if (!this.sourceValue && ['categories', 'tags', 'brands', 'landing-page'].includes(this.getSource())) {\n return [salla.config.get('page.id')];\n }\n }\n\n if (this.sourceValue) {\n return this.sourceValue;\n }\n\n\n if (source === 'search') {\n return (new URLSearchParams(window.location.search)).get('q');\n }\n\n return salla.config.get('page.id');\n }\n\n\n private loading(isLoading = true) {\n this.btnLoader.style.display = isLoading ? 'inherit' : 'none';\n }\n\n private getItemHTML(product) {\n let customComponentTag: string = this.hasCustomComponent ? 'custom-salla-product-card' : 'salla-product-card';\n let customComponent: HTMLSallaProductCardElement = document.createElement(customComponentTag) as HTMLSallaProductCardElement;\n customComponent.product = product;\n // customComponent.setAttribute('product', JSON.stringify(product));\n if (this.getSource() == 'landing-page' && !this.hasCustomComponent) {\n customComponent.toggleAttribute('hide-add-btn', true);\n customComponent.classList.add('s-product-card-fit-height');\n }\n if (this.horizontalCards && !this.hasCustomComponent) {\n customComponent.toggleAttribute('horizontal', true);\n customComponent.toggleAttribute('shadow-on-hover', true);\n }\n return customComponent;\n }\n\n private fetchProducts() {\n salla.product.fetch({\n source: this.getSource(),\n source_value: this.getSourceValue(),\n limit: this.limit\n })\n .then(res => {\n if (!res.data.length) {\n this.showPlaceholder = true;\n this.loading(false);\n return;\n }\n this.handleResponse(res).forEach(card => this.wrapper.append(card));\n })\n }\n \n private initiateInfiniteScroll() {\n if (!this.hasInfiniteScroll) {\n return;\n }\n\n this.host.insertAdjacentElement('beforeend', this.status);\n this.infiniteScroll = salla.infiniteScroll.initiate(this.wrapper, this.wrapper, {\n path: () => this.nextPage,\n history: false,\n nextPage: this.nextPage,\n scrollThreshold: 100,\n }, /* infinite via api*/true);\n this.infiniteScroll.on('request', () => this.loading())\n this.infiniteScroll.on('load', response => {\n if (!response.data?.length) {\n this.showPlaceholder = true;\n salla.infiniteScroll.destroy(this.infiniteScroll);\n this.loading(false);\n return;\n }else{\n this.showPlaceholder = false;\n\n }\n this.infiniteScroll.appendItems(this.handleResponse(response))\n if (this.infiniteScroll.pageIndex == 2) {\n this.animateItems();\n }\n })\n this.infiniteScroll.on('error', () => {\n this.status.querySelector('.s-infinite-scroll-error').classList.remove('s-hidden')\n this.loading(false);\n });\n salla.onReady(() => salla.infiniteScroll.loadNextPage(this.infiniteScroll))\n }\n\n private canRender() {\n return this.sourceValueIsValid && this.isReady;\n }\n\n render() {\n if (!this.canRender()) {\n return '';\n }\n if (this.showPlaceholder) {\n return <div class=\"s-products-list-placeholder\">\n <span innerHTML={ShoppingBag}/>\n <p>{this.placeholderText}</p>\n </div>;\n }\n return (\n <Host class=\"s-products-list\">\n <div class={{\n \"s-products-list-wrapper\": true,\n 's-products-list-horizontal-cards': this.horizontalCards && !this.filtersResults,\n 's-products-list-vertical-cards': !this.horizontalCards && !this.filtersResults,\n 's-products-list-filters-results': this.filtersResults,\n }}\n ref={wrapper => this.wrapper = wrapper}/>\n </Host>\n );\n }\n\n componentDidLoad() {\n if (!this.canRender()) {\n return;\n }\n\n // Handle json source\n if (this.getSource() === 'json') {\n if (!this.getSourceValue().length) {\n this.showPlaceholder = true;\n return;\n }\n this.getSourceValue().map(product => this.wrapper.append(this.getItemHTML(product)));\n return;\n }\n // Handle selected source\n if (this.getSource() === 'selected') {\n if (!this.getSourceValue().length) {\n this.showPlaceholder = true;\n return;\n }\n this.fetchProducts()\n return;\n }\n this.init();\n }\n\n private init() {\n this.initiateInfiniteScroll();\n this.loading();\n }\n\n private handleResponse(response): Array<HTMLElement> {\n //💡 when source is related, cursor will not be existed\n if (response.filters && this.isFilterable()) {\n this.filtersResults = true;\n salla.event.emit('filters::fetched', {filters: response.filters});\n } else if (this.isFilterable()) {\n salla.event.emit('filters::hidden');\n }\n this.nextPage = response.cursor ? response.cursor.next : this.nextPage;\n this.loading(false);\n if (this.hasInfiniteScroll && !this.nextPage) {\n this.infiniteScroll.option({scrollThreshold: false, loadOnScroll: false});\n this.status.querySelector('.s-infinite-scroll-last').classList.remove('s-hidden');\n }\n return response.data?.map(product => this.getItemHTML(product)) || [];\n }\n}\n"],"mappings":"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"}