@salla.sa/twilight-components 2.14.348 → 2.14.350
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.
- package/dist/cjs/{filepond-plugin-file-poster-CStjlaHV.js → filepond-plugin-file-poster-DUgrMVOZ.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-validate-size-DrcM89vc.js → filepond-plugin-file-validate-size-C14LEY_l.js} +1 -1
- package/dist/cjs/{filepond-plugin-file-validate-type-DnIoL6mq.js → filepond-plugin-file-validate-type-AbHwQAHY.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-edit-DLV0U0gb.js → filepond-plugin-image-edit-5ydXOhOa.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-exif-orientation-tPl3p3z_.js → filepond-plugin-image-exif-orientation-D0oIUOy-.js} +1 -1
- package/dist/cjs/{filepond-plugin-image-preview-WTfIQM6C.js → filepond-plugin-image-preview-Bf_VUYwr.js} +1 -1
- package/dist/cjs/{filepond-B_sfbQx7.js → filepond-qUaAgMcd.js} +1 -1
- package/dist/cjs/{index-CkpcUCU5.js → index-BRdJtc1o.js} +2 -2
- package/dist/cjs/{index-4jrFyN8u.js → index-DKEcPhG9.js} +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/salla-accordion_62.cjs.entry.js +100 -28
- package/dist/cjs/salla-advertisement.cjs.entry.js +1 -1
- package/dist/cjs/salla-app-install-alert.cjs.entry.js +1 -1
- package/dist/cjs/salla-apps-icons.cjs.entry.js +1 -1
- package/dist/cjs/salla-cart-item-offers.cjs.entry.js +1 -1
- package/dist/cjs/salla-conditional-offer.cjs.entry.js +1 -1
- package/dist/cjs/salla-contacts.cjs.entry.js +1 -1
- package/dist/cjs/salla-custom-fields.cjs.entry.js +1 -1
- package/dist/cjs/salla-filters-widget.cjs.entry.js +1 -1
- package/dist/cjs/salla-filters.cjs.entry.js +1 -1
- package/dist/cjs/salla-hook.cjs.entry.js +1 -1
- package/dist/cjs/salla-installment.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +1 -1
- package/dist/cjs/salla-loyalty-program.cjs.entry.js +1 -1
- package/dist/cjs/salla-metadata.cjs.entry.js +1 -1
- package/dist/cjs/salla-notification-item.cjs.entry.js +1 -1
- package/dist/cjs/salla-notifications.cjs.entry.js +1 -1
- package/dist/cjs/salla-offer.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-details-multiple-bundle-product.cjs.entry.js +1 -11
- package/dist/cjs/salla-order-details-options.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-details.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-summary.cjs.entry.js +1 -1
- package/dist/cjs/salla-order-totals-card.cjs.entry.js +1 -1
- package/dist/cjs/salla-orders.cjs.entry.js +1 -1
- package/dist/cjs/salla-payments.cjs.entry.js +1 -1
- package/dist/cjs/salla-price-range.cjs.entry.js +1 -1
- package/dist/cjs/salla-review-card.cjs.entry.js +1 -1
- package/dist/cjs/salla-reviews-page.cjs.entry.js +1 -1
- package/dist/cjs/salla-reviews.cjs.entry.js +1 -1
- package/dist/cjs/salla-social.cjs.entry.js +1 -1
- package/dist/cjs/salla-tiered-offer.cjs.entry.js +1 -1
- package/dist/cjs/salla-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/salla-trust-badges.cjs.entry.js +1 -1
- package/dist/cjs/salla-verify.cjs.entry.js +1 -1
- package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
- package/dist/cjs/twilight.cjs.js +2 -2
- package/dist/cjs/{vanilla-picker-BBejdpPH.js → vanilla-picker-CYHmsxIw.js} +1 -1
- package/dist/collection/components/salla-count-down/salla-count-down.js +125 -1
- package/dist/collection/components/salla-order-details/salla-order-details-multiple-bundle-product.js +0 -10
- package/dist/collection/components/salla-product-options/salla-product-options.js +44 -10
- package/dist/collection/components/salla-slider/salla-slider.css +4 -0
- package/dist/collection/components/salla-slider/salla-slider.js +35 -7
- package/dist/components/index.js +2 -2
- package/dist/components/salla-count-down2.js +24 -2
- package/dist/components/salla-order-details-multiple-bundle-product2.js +0 -10
- package/dist/components/salla-product-options2.js +44 -10
- package/dist/components/salla-slider2.js +36 -8
- package/dist/esm/{filepond-BBd4zIxi.js → filepond-DDOVDszb.js} +1 -1
- package/dist/esm/{filepond-plugin-file-poster-Vvhvcuu3.js → filepond-plugin-file-poster-DK5QZAmf.js} +1 -1
- package/dist/esm/{filepond-plugin-file-validate-size-NvdGUEr-.js → filepond-plugin-file-validate-size-BoUr1T-f.js} +1 -1
- package/dist/esm/{filepond-plugin-file-validate-type-BwVZhOLd.js → filepond-plugin-file-validate-type-USfq-Egq.js} +1 -1
- package/dist/esm/{filepond-plugin-image-edit-BOgZn2vW.js → filepond-plugin-image-edit-BzsOppMe.js} +1 -1
- package/dist/esm/{filepond-plugin-image-exif-orientation-BmbDj4hl.js → filepond-plugin-image-exif-orientation-D2x3fkHF.js} +1 -1
- package/dist/esm/{filepond-plugin-image-preview-CDsLWAPe.js → filepond-plugin-image-preview-CAbtIGaT.js} +1 -1
- package/dist/esm/{index-LmL2BolE.js → index-CkAdPgup.js} +2 -2
- package/dist/esm/{index-BhHl4h44.js → index-unlRcuKr.js} +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/salla-accordion_62.entry.js +100 -28
- package/dist/esm/salla-advertisement.entry.js +1 -1
- package/dist/esm/salla-app-install-alert.entry.js +1 -1
- package/dist/esm/salla-apps-icons.entry.js +1 -1
- package/dist/esm/salla-cart-item-offers.entry.js +1 -1
- package/dist/esm/salla-conditional-offer.entry.js +1 -1
- package/dist/esm/salla-contacts.entry.js +1 -1
- package/dist/esm/salla-custom-fields.entry.js +1 -1
- package/dist/esm/salla-filters-widget.entry.js +1 -1
- package/dist/esm/salla-filters.entry.js +1 -1
- package/dist/esm/salla-hook.entry.js +1 -1
- package/dist/esm/salla-installment.entry.js +1 -1
- package/dist/esm/salla-loyalty-prize-item.entry.js +1 -1
- package/dist/esm/salla-loyalty-program.entry.js +1 -1
- package/dist/esm/salla-metadata.entry.js +1 -1
- package/dist/esm/salla-notification-item.entry.js +1 -1
- package/dist/esm/salla-notifications.entry.js +1 -1
- package/dist/esm/salla-offer.entry.js +1 -1
- package/dist/esm/salla-order-details-multiple-bundle-product.entry.js +1 -11
- package/dist/esm/salla-order-details-options.entry.js +1 -1
- package/dist/esm/salla-order-details.entry.js +1 -1
- package/dist/esm/salla-order-summary.entry.js +1 -1
- package/dist/esm/salla-order-totals-card.entry.js +1 -1
- package/dist/esm/salla-orders.entry.js +1 -1
- package/dist/esm/salla-payments.entry.js +1 -1
- package/dist/esm/salla-price-range.entry.js +1 -1
- package/dist/esm/salla-review-card.entry.js +1 -1
- package/dist/esm/salla-reviews-page.entry.js +1 -1
- package/dist/esm/salla-reviews.entry.js +1 -1
- package/dist/esm/salla-social.entry.js +1 -1
- package/dist/esm/salla-tiered-offer.entry.js +1 -1
- package/dist/esm/salla-tooltip.entry.js +1 -1
- package/dist/esm/salla-trust-badges.entry.js +1 -1
- package/dist/esm/salla-verify.entry.js +1 -1
- package/dist/esm/salla-wallet.entry.js +1 -1
- package/dist/esm/twilight.js +3 -3
- package/dist/esm/{vanilla-picker-nCA1ATQw.js → vanilla-picker-7Rdeecyw.js} +1 -1
- package/dist/twilight/{p-133f1a48.entry.js → p-0162ae20.entry.js} +1 -1
- package/dist/twilight/{p-388fb59e.entry.js → p-0587a19b.entry.js} +1 -1
- package/dist/twilight/{p-312c1af1.entry.js → p-0eb554c0.entry.js} +1 -1
- package/dist/twilight/{p-8c111815.entry.js → p-100f7787.entry.js} +1 -1
- package/dist/twilight/{p-45cd70b8.entry.js → p-17618bb7.entry.js} +1 -1
- package/dist/twilight/{p-2ed7cfba.entry.js → p-1d2131a2.entry.js} +1 -1
- package/dist/twilight/{p-3d69e45a.entry.js → p-25e36e28.entry.js} +1 -1
- package/dist/twilight/{p-07add349.entry.js → p-478033b6.entry.js} +1 -1
- package/dist/twilight/{p-6c648552.entry.js → p-4bb743c7.entry.js} +1 -1
- package/dist/twilight/{p-c38c65f0.entry.js → p-50098fb9.entry.js} +1 -1
- package/dist/twilight/{p-74aaf06c.entry.js → p-50e1eb99.entry.js} +1 -1
- package/dist/twilight/{p-c302d3e3.entry.js → p-57bf3aff.entry.js} +1 -1
- package/dist/twilight/{p-fbbd8d5d.entry.js → p-6c0dd774.entry.js} +1 -1
- package/dist/twilight/{p-f1f60ef7.entry.js → p-7c33b8f3.entry.js} +1 -1
- package/dist/twilight/{p-d2ed15e9.entry.js → p-815175b1.entry.js} +1 -1
- package/dist/twilight/p-82f05641.entry.js +4 -0
- package/dist/twilight/{p-b30a12dc.entry.js → p-843a8d82.entry.js} +1 -1
- package/dist/twilight/p-8565cac6.entry.js +4 -0
- package/dist/twilight/{p-48b90fb3.entry.js → p-9b1184eb.entry.js} +1 -1
- package/dist/twilight/{p-v9xIxXO9.js → p-BCXFmuAu.js} +1 -1
- package/dist/twilight/{p-TSs7NqKJ.js → p-BHSXg2s-.js} +1 -1
- package/dist/twilight/{p-D1_qMmD0.js → p-BXAV6QCo.js} +1 -1
- package/dist/twilight/{p-CIEz2m31.js → p-BY-pqCWB.js} +1 -1
- package/dist/twilight/{p-Bf4kQRcH.js → p-BgVF6sgk.js} +1 -1
- package/dist/twilight/p-Ciq2A6DK.js +9 -0
- package/dist/twilight/{p-LmL2BolE.js → p-CkAdPgup.js} +1 -1
- package/dist/twilight/{p-xUcnsSlW.js → p-DGD3SzSN.js} +1 -1
- package/dist/twilight/{p-qNQwLhxq.js → p-De1xuTRp.js} +1 -1
- package/dist/twilight/{p-c0pjDpvN.js → p-DhexS4-2.js} +1 -1
- package/dist/twilight/{p-4d47725f.entry.js → p-a4b3ddc4.entry.js} +1 -1
- package/dist/twilight/{p-549ff403.entry.js → p-a61b0f9c.entry.js} +1 -1
- package/dist/twilight/{p-7c85a102.entry.js → p-aa32cabd.entry.js} +1 -1
- package/dist/twilight/{p-0aef5345.entry.js → p-abcf3b2d.entry.js} +1 -1
- package/dist/twilight/{p-63e9750c.entry.js → p-affbe255.entry.js} +1 -1
- package/dist/twilight/{p-06956c1d.entry.js → p-b5b851dc.entry.js} +1 -1
- package/dist/twilight/{p-bcec0cf0.entry.js → p-b6cddbff.entry.js} +1 -1
- package/dist/twilight/{p-09dceb55.entry.js → p-b8872e5f.entry.js} +1 -1
- package/dist/twilight/{p-cd2c9076.entry.js → p-b8e7613a.entry.js} +1 -1
- package/dist/twilight/{p-f74f1591.entry.js → p-b9648b3c.entry.js} +1 -1
- package/dist/twilight/{p-966ed241.entry.js → p-bd0fda0b.entry.js} +1 -1
- package/dist/twilight/{p-03870195.entry.js → p-c18da320.entry.js} +1 -1
- package/dist/twilight/{p-950f9a87.entry.js → p-c4f190b2.entry.js} +1 -1
- package/dist/twilight/{p-4cd30c07.entry.js → p-c5ac1d40.entry.js} +1 -1
- package/dist/twilight/{p-23ff2132.entry.js → p-d72fc67d.entry.js} +1 -1
- package/dist/twilight/{p-9f39c553.entry.js → p-e5dc45dc.entry.js} +1 -1
- package/dist/twilight/twilight.esm.js +1 -1
- package/dist/types/components/salla-count-down/salla-count-down.d.ts +22 -0
- package/dist/types/components/salla-order-details/salla-order-details-multiple-bundle-product.d.ts +0 -1
- package/dist/types/components/salla-slider/salla-slider.d.ts +7 -1
- package/dist/types/components.d.ts +48 -0
- package/package.json +5 -5
- package/dist/twilight/p-2c9d0518.entry.js +0 -4
- package/dist/twilight/p-2gPrnQD6.js +0 -9
- package/dist/twilight/p-fff8923d.entry.js +0 -4
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Crafted with ❤ by Salla
|
|
3
3
|
*/
|
|
4
4
|
import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
|
|
5
|
+
import { d as defineCustomElement$1 } from './salla-button2.js';
|
|
5
6
|
|
|
6
7
|
const sallaCountDownCss = "";
|
|
7
8
|
|
|
@@ -135,6 +136,16 @@ const SallaCountDown = /*@__PURE__*/ proxyCustomElement(class SallaCountDown ext
|
|
|
135
136
|
this.normalizedPreOrder?.availability_date &&
|
|
136
137
|
this.renderPreOrderToBeAvailableOn(), this.renderPreOrderCountDown()));
|
|
137
138
|
}
|
|
139
|
+
renderPrefixText() {
|
|
140
|
+
if (!this.prefixText)
|
|
141
|
+
return null;
|
|
142
|
+
return h("span", { class: "s-count-down-prefix-text" }, this.prefixText);
|
|
143
|
+
}
|
|
144
|
+
renderButton() {
|
|
145
|
+
if (!this.withButton || !this.buttonText)
|
|
146
|
+
return null;
|
|
147
|
+
return h("salla-button", { color: "primary", size: "medium", href: this.buttonHref }, this.buttonIcon ? h("i", { class: this.buttonIcon }) : null, h("span", null, this.buttonText));
|
|
148
|
+
}
|
|
138
149
|
renderContent() {
|
|
139
150
|
if (!this.date)
|
|
140
151
|
return null;
|
|
@@ -147,12 +158,18 @@ const SallaCountDown = /*@__PURE__*/ proxyCustomElement(class SallaCountDown ext
|
|
|
147
158
|
return this.renderCountDown();
|
|
148
159
|
}
|
|
149
160
|
render() {
|
|
150
|
-
return (h(Host, { key: '
|
|
161
|
+
return (h(Host, { key: '11e7cf7cf77bbde82d990107b7ccda8f1fc9ad6f', class: `s-count-down-wrapper ${this.preOrder && this.isValidDate(this.date) ? 's-count-down-pre-order' : ''} ${this.horizontal ? 's-count-down-horizontal' : ''} ${this.withButton ? 's-count-down-with-button' : ''}` }, this.renderPrefixText(), this.renderContent(), this.offerEnded && this.renderOfferEnded(), this.renderButton()));
|
|
151
162
|
}
|
|
152
163
|
static get style() { return sallaCountDownCss; }
|
|
153
164
|
}, [0, "salla-count-down", {
|
|
154
165
|
"date": [1],
|
|
155
166
|
"preOrder": [1, "pre-order"],
|
|
167
|
+
"horizontal": [4],
|
|
168
|
+
"withButton": [4, "with-button"],
|
|
169
|
+
"prefixText": [1, "prefix-text"],
|
|
170
|
+
"buttonHref": [1, "button-href"],
|
|
171
|
+
"buttonText": [1, "button-text"],
|
|
172
|
+
"buttonIcon": [1, "button-icon"],
|
|
156
173
|
"boxed": [4],
|
|
157
174
|
"size": [1],
|
|
158
175
|
"color": [1],
|
|
@@ -178,13 +195,18 @@ function defineCustomElement() {
|
|
|
178
195
|
if (typeof customElements === "undefined") {
|
|
179
196
|
return;
|
|
180
197
|
}
|
|
181
|
-
const components = ["salla-count-down"];
|
|
198
|
+
const components = ["salla-count-down", "salla-button"];
|
|
182
199
|
components.forEach(tagName => { switch (tagName) {
|
|
183
200
|
case "salla-count-down":
|
|
184
201
|
if (!customElements.get(tagName)) {
|
|
185
202
|
customElements.define(tagName, SallaCountDown);
|
|
186
203
|
}
|
|
187
204
|
break;
|
|
205
|
+
case "salla-button":
|
|
206
|
+
if (!customElements.get(tagName)) {
|
|
207
|
+
defineCustomElement$1();
|
|
208
|
+
}
|
|
209
|
+
break;
|
|
188
210
|
} });
|
|
189
211
|
}
|
|
190
212
|
defineCustomElement();
|
|
@@ -48,16 +48,6 @@ const SallaproductDetailsMultipleBundleProduct = /*@__PURE__*/ proxyCustomElemen
|
|
|
48
48
|
}
|
|
49
49
|
return this.productDetails?.options?.length > 0;
|
|
50
50
|
}
|
|
51
|
-
renderProductPrice() {
|
|
52
|
-
if (!this.productDetails) {
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
55
|
-
const { is_on_sale, sale_price, regular_price, price } = this.productDetails;
|
|
56
|
-
if (is_on_sale && sale_price) {
|
|
57
|
-
return (h("div", null, h("span", { class: "s-order-details-product-price s-order-details-product-price-sale" }, h("span", { innerHTML: salla.money(sale_price) })), regular_price && (h("span", { class: "s-order-details-product-regular-price" }, h("span", { innerHTML: salla.money(regular_price) })))));
|
|
58
|
-
}
|
|
59
|
-
return (h("span", { class: "s-order-details-product-price" }, h("span", { innerHTML: salla.money(price) })));
|
|
60
|
-
}
|
|
61
51
|
renderOptions() {
|
|
62
52
|
if (!this.productDetails?.options?.length) {
|
|
63
53
|
return null;
|
|
@@ -558,19 +558,53 @@ const SallaProductOptions = /*@__PURE__*/ proxyCustomElement(class SallaProductO
|
|
|
558
558
|
}, []);
|
|
559
559
|
}
|
|
560
560
|
componentDidLoad() {
|
|
561
|
-
if (this.optionsData?.length
|
|
561
|
+
if (!this.optionsData?.length) {
|
|
562
562
|
return;
|
|
563
563
|
}
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
564
|
+
// Handle donation options
|
|
565
|
+
const selectedDonationOption = this.optionsData.find(option => option.type === DisplayType.DONATION)?.details?.find(detail => detail.is_selected);
|
|
566
|
+
if (selectedDonationOption) {
|
|
567
|
+
setTimeout(() => {
|
|
568
|
+
salla.event.emit('product-options::donation-changed', {
|
|
569
|
+
id: this.productId,
|
|
570
|
+
price: selectedDonationOption.additional_price
|
|
571
|
+
});
|
|
572
|
+
}, 1000);
|
|
573
|
+
}
|
|
574
|
+
// Handle pre-selected options on product page
|
|
575
|
+
// Call salla.product.getPrice() directly to avoid triggering form validation which causes unwanted scroll
|
|
576
|
+
if (!salla.url.is_page("cart")) {
|
|
577
|
+
const pricingOptionTypes = [
|
|
578
|
+
DisplayType.SINGLE_OPTION,
|
|
579
|
+
DisplayType.MULTIPLE_OPTIONS,
|
|
580
|
+
DisplayType.COLOR,
|
|
581
|
+
DisplayType.THUMBNAIL,
|
|
582
|
+
DisplayType.DONATION,
|
|
583
|
+
DisplayType.DIGITAL_CARD_VALUE,
|
|
584
|
+
DisplayType.COUNTRY
|
|
585
|
+
];
|
|
586
|
+
const hasPreSelectedPricingOption = this.optionsData.some(option => pricingOptionTypes.includes(option.type) &&
|
|
587
|
+
option.details?.some(detail => detail.is_selected));
|
|
588
|
+
if (hasPreSelectedPricingOption) {
|
|
589
|
+
// Use requestAnimationFrame to ensure DOM is fully painted before accessing form
|
|
590
|
+
requestAnimationFrame(() => {
|
|
591
|
+
try {
|
|
592
|
+
const form = this.host.closest('form');
|
|
593
|
+
if (!form)
|
|
594
|
+
return;
|
|
595
|
+
// Validate form belongs to this product to avoid conflicts on complex pages
|
|
596
|
+
const formData = new FormData(form);
|
|
597
|
+
const formProductId = formData.get('id') || formData.get('product_id');
|
|
598
|
+
if (formProductId && String(formProductId) !== String(this.productId))
|
|
599
|
+
return;
|
|
600
|
+
salla.product.getPrice(formData);
|
|
601
|
+
}
|
|
602
|
+
catch (e) {
|
|
603
|
+
salla.log('Error updating price for pre-selected options:', e);
|
|
604
|
+
}
|
|
605
|
+
});
|
|
606
|
+
}
|
|
567
607
|
}
|
|
568
|
-
setTimeout(() => {
|
|
569
|
-
salla.event.emit('product-options::donation-changed', {
|
|
570
|
-
id: this.productId,
|
|
571
|
-
price: selectedDonationOption.additional_price
|
|
572
|
-
});
|
|
573
|
-
}, 1000);
|
|
574
608
|
}
|
|
575
609
|
/**
|
|
576
610
|
* Enable user-initiated validation mode so invalid fields will scroll into view
|
|
@@ -9788,7 +9788,7 @@ function EffectCards({
|
|
|
9788
9788
|
const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];
|
|
9789
9789
|
Swiper.use(modules);
|
|
9790
9790
|
|
|
9791
|
-
const sallaSliderCss = "/**\n * Swiper 12.1.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2026 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: January 28, 2026\n */\n\n:root {\n --swiper-theme-color: #007aff;\n /*\n --swiper-preloader-color: var(--swiper-theme-color);\n --swiper-wrapper-transition-timing-function: initial;\n */\n}\n:host {\n position: relative;\n display: block;\n margin-left: auto;\n margin-right: auto;\n z-index: 1;\n}\n.swiper {\n margin-left: auto;\n margin-right: auto;\n position: relative;\n overflow: hidden;\n list-style: none;\n padding: 0;\n /* Fix of Webkit flickering */\n z-index: 1;\n display: block;\n}\n.swiper-vertical > .swiper-wrapper {\n flex-direction: column;\n}\n.swiper-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n z-index: 1;\n display: flex;\n transition-property: transform;\n transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial);\n box-sizing: content-box;\n}\n.swiper-android .swiper-slide,\n.swiper-ios .swiper-slide,\n.swiper-wrapper {\n transform: translate3d(0px, 0, 0);\n}\n.swiper-horizontal {\n touch-action: pan-y;\n}\n.swiper-vertical {\n touch-action: pan-x;\n}\n.swiper-slide {\n flex-shrink: 0;\n width: 100%;\n height: 100%;\n position: relative;\n transition-property: transform;\n display: block;\n}\n.swiper-slide-invisible-blank {\n visibility: hidden;\n}\n/* Auto Height */\n.swiper-autoheight,\n.swiper-autoheight .swiper-slide {\n height: auto;\n}\n.swiper-autoheight .swiper-wrapper {\n align-items: flex-start;\n transition-property: transform, height;\n}\n.swiper-backface-hidden .swiper-slide {\n transform: translateZ(0);\n backface-visibility: hidden;\n}\n/* 3D Effects */\n.swiper-3d.swiper-css-mode .swiper-wrapper {\n perspective: 1200px;\n}\n.swiper-3d .swiper-wrapper {\n transform-style: preserve-3d;\n}\n.swiper-3d {\n perspective: 1200px;\n .swiper-slide,\n .swiper-cube-shadow {\n transform-style: preserve-3d;\n }\n}\n\n/* CSS Mode */\n.swiper-css-mode {\n > .swiper-wrapper {\n overflow: auto;\n scrollbar-width: none; /* For Firefox */\n -ms-overflow-style: none; /* For Internet Explorer and Edge */\n &::-webkit-scrollbar {\n display: none;\n }\n }\n > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: start start;\n }\n &.swiper-horizontal {\n > .swiper-wrapper {\n scroll-snap-type: x mandatory;\n }\n > .swiper-wrapper > .swiper-slide:first-child {\n margin-inline-start: var(--swiper-slides-offset-before);\n scroll-margin-inline-start: var(--swiper-slides-offset-before);\n }\n > .swiper-wrapper > .swiper-slide:last-child {\n margin-inline-end: var(--swiper-slides-offset-after);\n }\n }\n &.swiper-vertical {\n > .swiper-wrapper {\n scroll-snap-type: y mandatory;\n }\n > .swiper-wrapper > .swiper-slide:first-child {\n margin-block-start: var(--swiper-slides-offset-before);\n scroll-margin-block-start: var(--swiper-slides-offset-before);\n }\n > .swiper-wrapper > .swiper-slide:last-child {\n margin-block-end: var(--swiper-slides-offset-after);\n }\n }\n &.swiper-free-mode {\n > .swiper-wrapper {\n scroll-snap-type: none;\n }\n > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: none;\n }\n }\n &.swiper-centered {\n > .swiper-wrapper::before {\n content: '';\n flex-shrink: 0;\n order: 9999;\n }\n > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: center center;\n scroll-snap-stop: always;\n }\n }\n &.swiper-centered.swiper-horizontal {\n > .swiper-wrapper > .swiper-slide:first-child {\n margin-inline-start: var(--swiper-centered-offset-before);\n }\n > .swiper-wrapper::before {\n height: 100%;\n min-height: 1px;\n width: var(--swiper-centered-offset-after);\n }\n }\n &.swiper-centered.swiper-vertical {\n > .swiper-wrapper > .swiper-slide:first-child {\n margin-block-start: var(--swiper-centered-offset-before);\n }\n > .swiper-wrapper::before {\n width: 100%;\n min-width: 1px;\n height: var(--swiper-centered-offset-after);\n }\n }\n}\n\n/* Slide styles start */\n/* 3D Shadows */\n.swiper-3d {\n .swiper-slide-shadow,\n .swiper-slide-shadow-left,\n .swiper-slide-shadow-right,\n .swiper-slide-shadow-top,\n .swiper-slide-shadow-bottom,\n .swiper-slide-shadow,\n .swiper-slide-shadow-left,\n .swiper-slide-shadow-right,\n .swiper-slide-shadow-top,\n .swiper-slide-shadow-bottom {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 10;\n }\n .swiper-slide-shadow {\n background: rgba(0, 0, 0, 0.15);\n }\n .swiper-slide-shadow-left {\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n }\n .swiper-slide-shadow-right {\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n }\n .swiper-slide-shadow-top {\n background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n }\n .swiper-slide-shadow-bottom {\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n }\n}\n.swiper-lazy-preloader {\n width: 42px;\n height: 42px;\n position: absolute;\n left: 50%;\n top: 50%;\n margin-left: -21px;\n margin-top: -21px;\n z-index: 10;\n transform-origin: 50%;\n box-sizing: border-box;\n border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));\n border-radius: 50%;\n border-top-color: transparent;\n}\n.swiper:not(.swiper-watch-progress),\n.swiper-watch-progress .swiper-slide-visible {\n .swiper-lazy-preloader {\n animation: swiper-preloader-spin 1s infinite linear;\n }\n}\n.swiper-lazy-preloader-white {\n --swiper-preloader-color: #fff;\n}\n.swiper-lazy-preloader-black {\n --swiper-preloader-color: #000;\n}\n@keyframes swiper-preloader-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n/* Slide styles end */\n\n.swiper-virtual .swiper-slide {\n -webkit-backface-visibility: hidden;\n transform: translateZ(0);\n}\n.swiper-virtual.swiper-css-mode {\n .swiper-wrapper::after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n }\n}\n.swiper-virtual.swiper-css-mode.swiper-horizontal {\n .swiper-wrapper::after {\n height: 1px;\n width: var(--swiper-virtual-size);\n }\n}\n\n.swiper-virtual.swiper-css-mode.swiper-vertical {\n .swiper-wrapper::after {\n width: 1px;\n height: var(--swiper-virtual-size);\n }\n}\n\n\n\n:root {\n --swiper-navigation-size: 44px;\n /*\n --swiper-navigation-top-offset: 50%;\n --swiper-navigation-sides-offset: 4px;\n --swiper-navigation-color: var(--swiper-theme-color);\n */\n}\n.swiper-button-prev,\n.swiper-button-next {\n position: absolute;\n\n width: var(--swiper-navigation-size);\n height: var(--swiper-navigation-size);\n\n z-index: 10;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--swiper-navigation-color, var(--swiper-theme-color));\n &.swiper-button-disabled {\n opacity: 0.35;\n cursor: auto;\n pointer-events: none;\n }\n &.swiper-button-hidden {\n opacity: 0;\n cursor: auto;\n pointer-events: none;\n }\n .swiper-navigation-disabled & {\n display: none !important;\n }\n svg {\n width: 100%;\n height: 100%;\n object-fit: contain;\n transform-origin: center;\n fill: currentColor;\n pointer-events: none;\n }\n}\n\n.swiper-button-lock {\n display: none;\n}\n\n.swiper-button-prev,\n.swiper-button-next {\n top: var(--swiper-navigation-top-offset, 50%);\n margin-top: calc(0px - (var(--swiper-navigation-size) / 2));\n}\n.swiper-button-prev {\n left: var(--swiper-navigation-sides-offset, 4px);\n right: auto;\n .swiper-navigation-icon {\n transform: rotate(180deg);\n }\n}\n.swiper-button-next {\n right: var(--swiper-navigation-sides-offset, 4px);\n left: auto;\n}\n.swiper-horizontal {\n .swiper-button-prev,\n .swiper-button-next,\n ~ .swiper-button-prev,\n ~ .swiper-button-next {\n top: var(--swiper-navigation-top-offset, 50%);\n margin-top: calc(0px - (var(--swiper-navigation-size) / 2));\n margin-left: 0;\n }\n .swiper-button-prev,\n & ~ .swiper-button-prev,\n &.swiper-rtl .swiper-button-next,\n &.swiper-rtl ~ .swiper-button-next {\n left: var(--swiper-navigation-sides-offset, 4px);\n right: auto;\n }\n .swiper-button-next,\n & ~ .swiper-button-next,\n &.swiper-rtl .swiper-button-prev,\n &.swiper-rtl ~ .swiper-button-prev {\n right: var(--swiper-navigation-sides-offset, 4px);\n left: auto;\n }\n .swiper-button-prev,\n & ~ .swiper-button-prev,\n &.swiper-rtl .swiper-button-next,\n &.swiper-rtl ~ .swiper-button-next {\n .swiper-navigation-icon {\n transform: rotate(180deg);\n }\n }\n &.swiper-rtl .swiper-button-prev,\n &.swiper-rtl ~ .swiper-button-prev {\n .swiper-navigation-icon {\n transform: rotate(0deg);\n }\n }\n}\n.swiper-vertical {\n .swiper-button-prev,\n .swiper-button-next,\n ~ .swiper-button-prev,\n ~ .swiper-button-next {\n left: var(--swiper-navigation-top-offset, 50%);\n right: auto;\n margin-left: calc(0px - (var(--swiper-navigation-size) / 2));\n margin-top: 0;\n }\n .swiper-button-prev,\n ~ .swiper-button-prev {\n top: var(--swiper-navigation-sides-offset, 4px);\n bottom: auto;\n .swiper-navigation-icon {\n transform: rotate(-90deg);\n }\n }\n .swiper-button-next,\n ~ .swiper-button-next {\n bottom: var(--swiper-navigation-sides-offset, 4px);\n top: auto;\n .swiper-navigation-icon {\n transform: rotate(90deg);\n }\n }\n}\n\n:root {\n /*\n --swiper-pagination-color: var(--swiper-theme-color);\n --swiper-pagination-left: auto;\n --swiper-pagination-right: 8px;\n --swiper-pagination-bottom: 8px;\n --swiper-pagination-top: auto;\n --swiper-pagination-fraction-color: inherit;\n --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25);\n --swiper-pagination-progressbar-size: 4px;\n --swiper-pagination-bullet-size: 8px;\n --swiper-pagination-bullet-width: 8px;\n --swiper-pagination-bullet-height: 8px;\n --swiper-pagination-bullet-border-radius: 50%;\n --swiper-pagination-bullet-inactive-color: #000;\n --swiper-pagination-bullet-inactive-opacity: 0.2;\n --swiper-pagination-bullet-opacity: 1;\n --swiper-pagination-bullet-horizontal-gap: 4px;\n --swiper-pagination-bullet-vertical-gap: 6px;\n */\n}\n.swiper-pagination {\n position: absolute;\n text-align: center;\n transition: 300ms opacity;\n transform: translate3d(0, 0, 0);\n z-index: 10;\n &.swiper-pagination-hidden {\n opacity: 0;\n }\n .swiper-pagination-disabled > &,\n &.swiper-pagination-disabled {\n display: none !important;\n }\n}\n/* Common Styles */\n.swiper-pagination-fraction,\n.swiper-pagination-custom,\n.swiper-horizontal > .swiper-pagination-bullets,\n.swiper-pagination-bullets.swiper-pagination-horizontal {\n bottom: var(--swiper-pagination-bottom, 8px);\n top: var(--swiper-pagination-top, auto);\n left: 0;\n width: 100%;\n}\n/* Bullets */\n.swiper-pagination-bullets-dynamic {\n overflow: hidden;\n font-size: 0;\n .swiper-pagination-bullet {\n transform: scale(0.33);\n position: relative;\n }\n .swiper-pagination-bullet-active {\n transform: scale(1);\n }\n .swiper-pagination-bullet-active-main {\n transform: scale(1);\n }\n .swiper-pagination-bullet-active-prev {\n transform: scale(0.66);\n }\n .swiper-pagination-bullet-active-prev-prev {\n transform: scale(0.33);\n }\n .swiper-pagination-bullet-active-next {\n transform: scale(0.66);\n }\n .swiper-pagination-bullet-active-next-next {\n transform: scale(0.33);\n }\n}\n.swiper-pagination-bullet {\n width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));\n height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));\n display: inline-block;\n border-radius: var(--swiper-pagination-bullet-border-radius, 50%);\n background: var(--swiper-pagination-bullet-inactive-color, #000);\n opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2);\n button& {\n border: none;\n margin: 0;\n padding: 0;\n box-shadow: none;\n appearance: none;\n }\n .swiper-pagination-clickable & {\n cursor: pointer;\n }\n\n &:only-child {\n display: none !important;\n }\n}\n.swiper-pagination-bullet-active {\n opacity: var(--swiper-pagination-bullet-opacity, 1);\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n}\n\n.swiper-vertical > .swiper-pagination-bullets,\n.swiper-pagination-vertical.swiper-pagination-bullets {\n right: var(--swiper-pagination-right, 8px);\n left: var(--swiper-pagination-left, auto);\n top: 50%;\n transform: translate3d(0px, -50%, 0);\n .swiper-pagination-bullet {\n margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0;\n display: block;\n }\n &.swiper-pagination-bullets-dynamic {\n top: 50%;\n transform: translateY(-50%);\n width: 8px;\n .swiper-pagination-bullet {\n display: inline-block;\n transition:\n 200ms transform,\n 200ms top;\n }\n }\n}\n.swiper-horizontal > .swiper-pagination-bullets,\n.swiper-pagination-horizontal.swiper-pagination-bullets {\n .swiper-pagination-bullet {\n margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px);\n }\n &.swiper-pagination-bullets-dynamic {\n left: 50%;\n transform: translateX(-50%);\n white-space: nowrap;\n .swiper-pagination-bullet {\n transition:\n 200ms transform,\n 200ms left;\n }\n }\n}\n.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transition:\n 200ms transform,\n 200ms right;\n}\n/* Fraction */\n.swiper-pagination-fraction {\n color: var(--swiper-pagination-fraction-color, inherit);\n}\n/* Progress */\n.swiper-pagination-progressbar {\n background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25));\n position: absolute;\n .swiper-pagination-progressbar-fill {\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n transform: scale(0);\n transform-origin: left top;\n }\n .swiper-rtl & .swiper-pagination-progressbar-fill {\n transform-origin: right top;\n }\n .swiper-horizontal > &,\n &.swiper-pagination-horizontal,\n .swiper-vertical > &.swiper-pagination-progressbar-opposite,\n &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite {\n width: 100%;\n height: var(--swiper-pagination-progressbar-size, 4px);\n left: 0;\n top: 0;\n }\n .swiper-vertical > &,\n &.swiper-pagination-vertical,\n .swiper-horizontal > &.swiper-pagination-progressbar-opposite,\n &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite {\n width: var(--swiper-pagination-progressbar-size, 4px);\n height: 100%;\n left: 0;\n top: 0;\n }\n}\n.swiper-pagination-lock {\n display: none;\n}\n\n:root {\n /*\n --swiper-scrollbar-border-radius: 10px;\n --swiper-scrollbar-top: auto;\n --swiper-scrollbar-bottom: 4px;\n --swiper-scrollbar-left: auto;\n --swiper-scrollbar-right: 4px;\n --swiper-scrollbar-sides-offset: 1%;\n --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1);\n --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5);\n --swiper-scrollbar-size: 4px;\n */\n}\n.swiper-scrollbar {\n border-radius: var(--swiper-scrollbar-border-radius, 10px);\n position: relative;\n touch-action: none;\n background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1));\n .swiper-scrollbar-disabled > &,\n &.swiper-scrollbar-disabled {\n display: none !important;\n }\n .swiper-horizontal > &,\n &.swiper-scrollbar-horizontal {\n position: absolute;\n left: var(--swiper-scrollbar-sides-offset, 1%);\n bottom: var(--swiper-scrollbar-bottom, 4px);\n top: var(--swiper-scrollbar-top, auto);\n z-index: 50;\n height: var(--swiper-scrollbar-size, 4px);\n width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n }\n .swiper-vertical > &,\n &.swiper-scrollbar-vertical {\n position: absolute;\n left: var(--swiper-scrollbar-left, auto);\n right: var(--swiper-scrollbar-right, 4px);\n top: var(--swiper-scrollbar-sides-offset, 1%);\n z-index: 50;\n width: var(--swiper-scrollbar-size, 4px);\n height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n }\n}\n.swiper-scrollbar-drag {\n height: 100%;\n width: 100%;\n position: relative;\n background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5));\n border-radius: var(--swiper-scrollbar-border-radius, 10px);\n left: 0;\n top: 0;\n}\n.swiper-scrollbar-cursor-drag {\n cursor: move;\n}\n.swiper-scrollbar-lock {\n display: none;\n}\n\n\n/* Zoom container styles start */\n.swiper-zoom-container {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n\n > img,\n > svg,\n > canvas {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n }\n}\n/* Zoom container styles end */\n\n.swiper-slide-zoomed {\n cursor: move;\n touch-action: none;\n}\n\n\n/* a11y */\n.swiper .swiper-notification {\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n opacity: 0;\n z-index: -1000;\n}\n\n\n\n\n.swiper-thumbs {\n .swiper-slide-thumb-active {\n /* Styles for active thumb slide */\n }\n}\n\n.swiper-free-mode > .swiper-wrapper {\n transition-timing-function: ease-out;\n margin: 0 auto;\n}\n\n.swiper-grid > .swiper-wrapper {\n flex-wrap: wrap;\n}\n.swiper-grid-column > .swiper-wrapper {\n flex-wrap: wrap;\n flex-direction: column;\n}\n\n\n.swiper-fade {\n &.swiper-free-mode {\n .swiper-slide {\n transition-timing-function: ease-out;\n }\n }\n .swiper-slide {\n pointer-events: none;\n transition-property: opacity;\n .swiper-slide {\n pointer-events: none;\n }\n }\n .swiper-slide-active {\n pointer-events: auto;\n & .swiper-slide-active {\n pointer-events: auto;\n }\n }\n}\n\n.swiper.swiper-cube {\n overflow: visible;\n}\n.swiper-cube {\n .swiper-slide {\n pointer-events: none;\n backface-visibility: hidden;\n z-index: 1;\n visibility: hidden;\n transform-origin: 0 0;\n width: 100%;\n height: 100%;\n .swiper-slide {\n pointer-events: none;\n }\n }\n &.swiper-rtl .swiper-slide {\n transform-origin: 100% 0;\n }\n .swiper-slide-active {\n &,\n & .swiper-slide-active {\n pointer-events: auto;\n }\n }\n .swiper-slide-active,\n .swiper-slide-next,\n .swiper-slide-prev {\n pointer-events: auto;\n visibility: visible;\n }\n\n .swiper-cube-shadow {\n position: absolute;\n left: 0;\n bottom: 0px;\n width: 100%;\n height: 100%;\n opacity: 0.6;\n z-index: 0;\n\n &:before {\n content: '';\n background: #000;\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n filter: blur(50px);\n }\n }\n}\n.swiper-cube {\n .swiper-slide-next + .swiper-slide {\n pointer-events: auto;\n visibility: visible;\n }\n}\n/* Cube slide shadows start */\n.swiper-cube {\n .swiper-slide-shadow-cube.swiper-slide-shadow-top,\n .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,\n .swiper-slide-shadow-cube.swiper-slide-shadow-left,\n .swiper-slide-shadow-cube.swiper-slide-shadow-right {\n z-index: 0;\n backface-visibility: hidden;\n }\n}\n/* Cube slide shadows end */\n\n.swiper.swiper-flip {\n overflow: visible;\n}\n.swiper-flip {\n .swiper-slide {\n pointer-events: none;\n backface-visibility: hidden;\n z-index: 1;\n .swiper-slide {\n pointer-events: none;\n }\n }\n .swiper-slide-active {\n &,\n & .swiper-slide-active {\n pointer-events: auto;\n }\n }\n}\n/* Flip slide shadows start */\n.swiper-flip {\n .swiper-slide-shadow-flip.swiper-slide-shadow-top,\n .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,\n .swiper-slide-shadow-flip.swiper-slide-shadow-left,\n .swiper-slide-shadow-flip.swiper-slide-shadow-right {\n z-index: 0;\n backface-visibility: hidden;\n }\n}\n/* Flip slide shadows end */\n\n.swiper-coverflow {\n}\n\n.swiper-creative {\n .swiper-slide {\n backface-visibility: hidden;\n overflow: hidden;\n transition-property: transform, opacity, height;\n }\n}\n\n.swiper.swiper-cards {\n overflow: visible;\n}\n.swiper-cards {\n .swiper-slide {\n transform-origin: center bottom;\n backface-visibility: hidden;\n overflow: hidden;\n }\n}\n\n.swiper {\n overflow: clip;\n}";
|
|
9791
|
+
const sallaSliderCss = "/**\n * Swiper 12.1.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2026 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: January 28, 2026\n */\n\n:root {\n --swiper-theme-color: #007aff;\n /*\n --swiper-preloader-color: var(--swiper-theme-color);\n --swiper-wrapper-transition-timing-function: initial;\n */\n}\n:host {\n position: relative;\n display: block;\n margin-left: auto;\n margin-right: auto;\n z-index: 1;\n}\n.swiper {\n margin-left: auto;\n margin-right: auto;\n position: relative;\n overflow: hidden;\n list-style: none;\n padding: 0;\n /* Fix of Webkit flickering */\n z-index: 1;\n display: block;\n}\n.swiper-vertical > .swiper-wrapper {\n flex-direction: column;\n}\n.swiper-wrapper {\n position: relative;\n width: 100%;\n height: 100%;\n z-index: 1;\n display: flex;\n transition-property: transform;\n transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial);\n box-sizing: content-box;\n}\n.swiper-android .swiper-slide,\n.swiper-ios .swiper-slide,\n.swiper-wrapper {\n transform: translate3d(0px, 0, 0);\n}\n.swiper-horizontal {\n touch-action: pan-y;\n}\n.swiper-vertical {\n touch-action: pan-x;\n}\n.swiper-slide {\n flex-shrink: 0;\n width: 100%;\n height: 100%;\n position: relative;\n transition-property: transform;\n display: block;\n}\n.swiper-slide-invisible-blank {\n visibility: hidden;\n}\n/* Auto Height */\n.swiper-autoheight,\n.swiper-autoheight .swiper-slide {\n height: auto;\n}\n.swiper-autoheight .swiper-wrapper {\n align-items: flex-start;\n transition-property: transform, height;\n}\n.swiper-backface-hidden .swiper-slide {\n transform: translateZ(0);\n backface-visibility: hidden;\n}\n/* 3D Effects */\n.swiper-3d.swiper-css-mode .swiper-wrapper {\n perspective: 1200px;\n}\n.swiper-3d .swiper-wrapper {\n transform-style: preserve-3d;\n}\n.swiper-3d {\n perspective: 1200px;\n .swiper-slide,\n .swiper-cube-shadow {\n transform-style: preserve-3d;\n }\n}\n\n/* CSS Mode */\n.swiper-css-mode {\n > .swiper-wrapper {\n overflow: auto;\n scrollbar-width: none; /* For Firefox */\n -ms-overflow-style: none; /* For Internet Explorer and Edge */\n &::-webkit-scrollbar {\n display: none;\n }\n }\n > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: start start;\n }\n &.swiper-horizontal {\n > .swiper-wrapper {\n scroll-snap-type: x mandatory;\n }\n > .swiper-wrapper > .swiper-slide:first-child {\n margin-inline-start: var(--swiper-slides-offset-before);\n scroll-margin-inline-start: var(--swiper-slides-offset-before);\n }\n > .swiper-wrapper > .swiper-slide:last-child {\n margin-inline-end: var(--swiper-slides-offset-after);\n }\n }\n &.swiper-vertical {\n > .swiper-wrapper {\n scroll-snap-type: y mandatory;\n }\n > .swiper-wrapper > .swiper-slide:first-child {\n margin-block-start: var(--swiper-slides-offset-before);\n scroll-margin-block-start: var(--swiper-slides-offset-before);\n }\n > .swiper-wrapper > .swiper-slide:last-child {\n margin-block-end: var(--swiper-slides-offset-after);\n }\n }\n &.swiper-free-mode {\n > .swiper-wrapper {\n scroll-snap-type: none;\n }\n > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: none;\n }\n }\n &.swiper-centered {\n > .swiper-wrapper::before {\n content: '';\n flex-shrink: 0;\n order: 9999;\n }\n > .swiper-wrapper > .swiper-slide {\n scroll-snap-align: center center;\n scroll-snap-stop: always;\n }\n }\n &.swiper-centered.swiper-horizontal {\n > .swiper-wrapper > .swiper-slide:first-child {\n margin-inline-start: var(--swiper-centered-offset-before);\n }\n > .swiper-wrapper::before {\n height: 100%;\n min-height: 1px;\n width: var(--swiper-centered-offset-after);\n }\n }\n &.swiper-centered.swiper-vertical {\n > .swiper-wrapper > .swiper-slide:first-child {\n margin-block-start: var(--swiper-centered-offset-before);\n }\n > .swiper-wrapper::before {\n width: 100%;\n min-width: 1px;\n height: var(--swiper-centered-offset-after);\n }\n }\n}\n\n/* Slide styles start */\n/* 3D Shadows */\n.swiper-3d {\n .swiper-slide-shadow,\n .swiper-slide-shadow-left,\n .swiper-slide-shadow-right,\n .swiper-slide-shadow-top,\n .swiper-slide-shadow-bottom,\n .swiper-slide-shadow,\n .swiper-slide-shadow-left,\n .swiper-slide-shadow-right,\n .swiper-slide-shadow-top,\n .swiper-slide-shadow-bottom {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 10;\n }\n .swiper-slide-shadow {\n background: rgba(0, 0, 0, 0.15);\n }\n .swiper-slide-shadow-left {\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n }\n .swiper-slide-shadow-right {\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n }\n .swiper-slide-shadow-top {\n background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n }\n .swiper-slide-shadow-bottom {\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\n }\n}\n.swiper-lazy-preloader {\n width: 42px;\n height: 42px;\n position: absolute;\n left: 50%;\n top: 50%;\n margin-left: -21px;\n margin-top: -21px;\n z-index: 10;\n transform-origin: 50%;\n box-sizing: border-box;\n border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));\n border-radius: 50%;\n border-top-color: transparent;\n}\n.swiper:not(.swiper-watch-progress),\n.swiper-watch-progress .swiper-slide-visible {\n .swiper-lazy-preloader {\n animation: swiper-preloader-spin 1s infinite linear;\n }\n}\n.swiper-lazy-preloader-white {\n --swiper-preloader-color: #fff;\n}\n.swiper-lazy-preloader-black {\n --swiper-preloader-color: #000;\n}\n@keyframes swiper-preloader-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n/* Slide styles end */\n\n.swiper-virtual .swiper-slide {\n -webkit-backface-visibility: hidden;\n transform: translateZ(0);\n}\n.swiper-virtual.swiper-css-mode {\n .swiper-wrapper::after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n }\n}\n.swiper-virtual.swiper-css-mode.swiper-horizontal {\n .swiper-wrapper::after {\n height: 1px;\n width: var(--swiper-virtual-size);\n }\n}\n\n.swiper-virtual.swiper-css-mode.swiper-vertical {\n .swiper-wrapper::after {\n width: 1px;\n height: var(--swiper-virtual-size);\n }\n}\n\n\n\n:root {\n --swiper-navigation-size: 44px;\n /*\n --swiper-navigation-top-offset: 50%;\n --swiper-navigation-sides-offset: 4px;\n --swiper-navigation-color: var(--swiper-theme-color);\n */\n}\n.swiper-button-prev,\n.swiper-button-next {\n position: absolute;\n\n width: var(--swiper-navigation-size);\n height: var(--swiper-navigation-size);\n\n z-index: 10;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--swiper-navigation-color, var(--swiper-theme-color));\n &.swiper-button-disabled {\n opacity: 0.35;\n cursor: auto;\n pointer-events: none;\n }\n &.swiper-button-hidden {\n opacity: 0;\n cursor: auto;\n pointer-events: none;\n }\n .swiper-navigation-disabled & {\n display: none !important;\n }\n svg {\n width: 100%;\n height: 100%;\n object-fit: contain;\n transform-origin: center;\n fill: currentColor;\n pointer-events: none;\n }\n}\n\n.swiper-button-lock {\n display: none;\n}\n\n.swiper-button-prev,\n.swiper-button-next {\n top: var(--swiper-navigation-top-offset, 50%);\n margin-top: calc(0px - (var(--swiper-navigation-size) / 2));\n}\n.swiper-button-prev {\n left: var(--swiper-navigation-sides-offset, 4px);\n right: auto;\n .swiper-navigation-icon {\n transform: rotate(180deg);\n }\n}\n.swiper-button-next {\n right: var(--swiper-navigation-sides-offset, 4px);\n left: auto;\n}\n.swiper-horizontal {\n .swiper-button-prev,\n .swiper-button-next,\n ~ .swiper-button-prev,\n ~ .swiper-button-next {\n top: var(--swiper-navigation-top-offset, 50%);\n margin-top: calc(0px - (var(--swiper-navigation-size) / 2));\n margin-left: 0;\n }\n .swiper-button-prev,\n & ~ .swiper-button-prev,\n &.swiper-rtl .swiper-button-next,\n &.swiper-rtl ~ .swiper-button-next {\n left: var(--swiper-navigation-sides-offset, 4px);\n right: auto;\n }\n .swiper-button-next,\n & ~ .swiper-button-next,\n &.swiper-rtl .swiper-button-prev,\n &.swiper-rtl ~ .swiper-button-prev {\n right: var(--swiper-navigation-sides-offset, 4px);\n left: auto;\n }\n .swiper-button-prev,\n & ~ .swiper-button-prev,\n &.swiper-rtl .swiper-button-next,\n &.swiper-rtl ~ .swiper-button-next {\n .swiper-navigation-icon {\n transform: rotate(180deg);\n }\n }\n &.swiper-rtl .swiper-button-prev,\n &.swiper-rtl ~ .swiper-button-prev {\n .swiper-navigation-icon {\n transform: rotate(0deg);\n }\n }\n}\n.swiper-vertical {\n .swiper-button-prev,\n .swiper-button-next,\n ~ .swiper-button-prev,\n ~ .swiper-button-next {\n left: var(--swiper-navigation-top-offset, 50%);\n right: auto;\n margin-left: calc(0px - (var(--swiper-navigation-size) / 2));\n margin-top: 0;\n }\n .swiper-button-prev,\n ~ .swiper-button-prev {\n top: var(--swiper-navigation-sides-offset, 4px);\n bottom: auto;\n .swiper-navigation-icon {\n transform: rotate(-90deg);\n }\n }\n .swiper-button-next,\n ~ .swiper-button-next {\n bottom: var(--swiper-navigation-sides-offset, 4px);\n top: auto;\n .swiper-navigation-icon {\n transform: rotate(90deg);\n }\n }\n}\n\n:root {\n /*\n --swiper-pagination-color: var(--swiper-theme-color);\n --swiper-pagination-left: auto;\n --swiper-pagination-right: 8px;\n --swiper-pagination-bottom: 8px;\n --swiper-pagination-top: auto;\n --swiper-pagination-fraction-color: inherit;\n --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25);\n --swiper-pagination-progressbar-size: 4px;\n --swiper-pagination-bullet-size: 8px;\n --swiper-pagination-bullet-width: 8px;\n --swiper-pagination-bullet-height: 8px;\n --swiper-pagination-bullet-border-radius: 50%;\n --swiper-pagination-bullet-inactive-color: #000;\n --swiper-pagination-bullet-inactive-opacity: 0.2;\n --swiper-pagination-bullet-opacity: 1;\n --swiper-pagination-bullet-horizontal-gap: 4px;\n --swiper-pagination-bullet-vertical-gap: 6px;\n */\n}\n.swiper-pagination {\n position: absolute;\n text-align: center;\n transition: 300ms opacity;\n transform: translate3d(0, 0, 0);\n z-index: 10;\n &.swiper-pagination-hidden {\n opacity: 0;\n }\n .swiper-pagination-disabled > &,\n &.swiper-pagination-disabled {\n display: none !important;\n }\n}\n/* Common Styles */\n.swiper-pagination-fraction,\n.swiper-pagination-custom,\n.swiper-horizontal > .swiper-pagination-bullets,\n.swiper-pagination-bullets.swiper-pagination-horizontal {\n bottom: var(--swiper-pagination-bottom, 8px);\n top: var(--swiper-pagination-top, auto);\n left: 0;\n width: 100%;\n}\n/* Bullets */\n.swiper-pagination-bullets-dynamic {\n overflow: hidden;\n font-size: 0;\n .swiper-pagination-bullet {\n transform: scale(0.33);\n position: relative;\n }\n .swiper-pagination-bullet-active {\n transform: scale(1);\n }\n .swiper-pagination-bullet-active-main {\n transform: scale(1);\n }\n .swiper-pagination-bullet-active-prev {\n transform: scale(0.66);\n }\n .swiper-pagination-bullet-active-prev-prev {\n transform: scale(0.33);\n }\n .swiper-pagination-bullet-active-next {\n transform: scale(0.66);\n }\n .swiper-pagination-bullet-active-next-next {\n transform: scale(0.33);\n }\n}\n.swiper-pagination-bullet {\n width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px));\n height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px));\n display: inline-block;\n border-radius: var(--swiper-pagination-bullet-border-radius, 50%);\n background: var(--swiper-pagination-bullet-inactive-color, #000);\n opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2);\n button& {\n border: none;\n margin: 0;\n padding: 0;\n box-shadow: none;\n appearance: none;\n }\n .swiper-pagination-clickable & {\n cursor: pointer;\n }\n\n &:only-child {\n display: none !important;\n }\n}\n.swiper-pagination-bullet-active {\n opacity: var(--swiper-pagination-bullet-opacity, 1);\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n}\n\n.swiper-vertical > .swiper-pagination-bullets,\n.swiper-pagination-vertical.swiper-pagination-bullets {\n right: var(--swiper-pagination-right, 8px);\n left: var(--swiper-pagination-left, auto);\n top: 50%;\n transform: translate3d(0px, -50%, 0);\n .swiper-pagination-bullet {\n margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0;\n display: block;\n }\n &.swiper-pagination-bullets-dynamic {\n top: 50%;\n transform: translateY(-50%);\n width: 8px;\n .swiper-pagination-bullet {\n display: inline-block;\n transition:\n 200ms transform,\n 200ms top;\n }\n }\n}\n.swiper-horizontal > .swiper-pagination-bullets,\n.swiper-pagination-horizontal.swiper-pagination-bullets {\n .swiper-pagination-bullet {\n margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px);\n }\n &.swiper-pagination-bullets-dynamic {\n left: 50%;\n transform: translateX(-50%);\n white-space: nowrap;\n .swiper-pagination-bullet {\n transition:\n 200ms transform,\n 200ms left;\n }\n }\n}\n.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\n transition:\n 200ms transform,\n 200ms right;\n}\n/* Fraction */\n.swiper-pagination-fraction {\n color: var(--swiper-pagination-fraction-color, inherit);\n}\n/* Progress */\n.swiper-pagination-progressbar {\n background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25));\n position: absolute;\n .swiper-pagination-progressbar-fill {\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n transform: scale(0);\n transform-origin: left top;\n }\n .swiper-rtl & .swiper-pagination-progressbar-fill {\n transform-origin: right top;\n }\n .swiper-horizontal > &,\n &.swiper-pagination-horizontal,\n .swiper-vertical > &.swiper-pagination-progressbar-opposite,\n &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite {\n width: 100%;\n height: var(--swiper-pagination-progressbar-size, 4px);\n left: 0;\n top: 0;\n }\n .swiper-vertical > &,\n &.swiper-pagination-vertical,\n .swiper-horizontal > &.swiper-pagination-progressbar-opposite,\n &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite {\n width: var(--swiper-pagination-progressbar-size, 4px);\n height: 100%;\n left: 0;\n top: 0;\n }\n}\n.swiper-pagination-lock {\n display: none;\n}\n\n:root {\n /*\n --swiper-scrollbar-border-radius: 10px;\n --swiper-scrollbar-top: auto;\n --swiper-scrollbar-bottom: 4px;\n --swiper-scrollbar-left: auto;\n --swiper-scrollbar-right: 4px;\n --swiper-scrollbar-sides-offset: 1%;\n --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1);\n --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5);\n --swiper-scrollbar-size: 4px;\n */\n}\n.swiper-scrollbar {\n border-radius: var(--swiper-scrollbar-border-radius, 10px);\n position: relative;\n touch-action: none;\n background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1));\n .swiper-scrollbar-disabled > &,\n &.swiper-scrollbar-disabled {\n display: none !important;\n }\n .swiper-horizontal > &,\n &.swiper-scrollbar-horizontal {\n position: absolute;\n left: var(--swiper-scrollbar-sides-offset, 1%);\n bottom: var(--swiper-scrollbar-bottom, 4px);\n top: var(--swiper-scrollbar-top, auto);\n z-index: 50;\n height: var(--swiper-scrollbar-size, 4px);\n width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n }\n .swiper-vertical > &,\n &.swiper-scrollbar-vertical {\n position: absolute;\n left: var(--swiper-scrollbar-left, auto);\n right: var(--swiper-scrollbar-right, 4px);\n top: var(--swiper-scrollbar-sides-offset, 1%);\n z-index: 50;\n width: var(--swiper-scrollbar-size, 4px);\n height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%));\n }\n}\n.swiper-scrollbar-drag {\n height: 100%;\n width: 100%;\n position: relative;\n background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5));\n border-radius: var(--swiper-scrollbar-border-radius, 10px);\n left: 0;\n top: 0;\n}\n.swiper-scrollbar-cursor-drag {\n cursor: move;\n}\n.swiper-scrollbar-lock {\n display: none;\n}\n\n\n/* Zoom container styles start */\n.swiper-zoom-container {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n\n > img,\n > svg,\n > canvas {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n }\n}\n/* Zoom container styles end */\n\n.swiper-slide-zoomed {\n cursor: move;\n touch-action: none;\n}\n\n\n/* a11y */\n.swiper .swiper-notification {\n position: absolute;\n left: 0;\n top: 0;\n pointer-events: none;\n opacity: 0;\n z-index: -1000;\n}\n\n\n\n\n.swiper-thumbs {\n .swiper-slide-thumb-active {\n /* Styles for active thumb slide */\n }\n}\n\n.swiper-free-mode > .swiper-wrapper {\n transition-timing-function: ease-out;\n margin: 0 auto;\n}\n\n.swiper-grid > .swiper-wrapper {\n flex-wrap: wrap;\n}\n.swiper-grid-column > .swiper-wrapper {\n flex-wrap: wrap;\n flex-direction: column;\n}\n\n\n.swiper-fade {\n &.swiper-free-mode {\n .swiper-slide {\n transition-timing-function: ease-out;\n }\n }\n .swiper-slide {\n pointer-events: none;\n transition-property: opacity;\n .swiper-slide {\n pointer-events: none;\n }\n }\n .swiper-slide-active {\n pointer-events: auto;\n & .swiper-slide-active {\n pointer-events: auto;\n }\n }\n}\n\n.swiper.swiper-cube {\n overflow: visible;\n}\n.swiper-cube {\n .swiper-slide {\n pointer-events: none;\n backface-visibility: hidden;\n z-index: 1;\n visibility: hidden;\n transform-origin: 0 0;\n width: 100%;\n height: 100%;\n .swiper-slide {\n pointer-events: none;\n }\n }\n &.swiper-rtl .swiper-slide {\n transform-origin: 100% 0;\n }\n .swiper-slide-active {\n &,\n & .swiper-slide-active {\n pointer-events: auto;\n }\n }\n .swiper-slide-active,\n .swiper-slide-next,\n .swiper-slide-prev {\n pointer-events: auto;\n visibility: visible;\n }\n\n .swiper-cube-shadow {\n position: absolute;\n left: 0;\n bottom: 0px;\n width: 100%;\n height: 100%;\n opacity: 0.6;\n z-index: 0;\n\n &:before {\n content: '';\n background: #000;\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n filter: blur(50px);\n }\n }\n}\n.swiper-cube {\n .swiper-slide-next + .swiper-slide {\n pointer-events: auto;\n visibility: visible;\n }\n}\n/* Cube slide shadows start */\n.swiper-cube {\n .swiper-slide-shadow-cube.swiper-slide-shadow-top,\n .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,\n .swiper-slide-shadow-cube.swiper-slide-shadow-left,\n .swiper-slide-shadow-cube.swiper-slide-shadow-right {\n z-index: 0;\n backface-visibility: hidden;\n }\n}\n/* Cube slide shadows end */\n\n.swiper.swiper-flip {\n overflow: visible;\n}\n.swiper-flip {\n .swiper-slide {\n pointer-events: none;\n backface-visibility: hidden;\n z-index: 1;\n .swiper-slide {\n pointer-events: none;\n }\n }\n .swiper-slide-active {\n &,\n & .swiper-slide-active {\n pointer-events: auto;\n }\n }\n}\n/* Flip slide shadows start */\n.swiper-flip {\n .swiper-slide-shadow-flip.swiper-slide-shadow-top,\n .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,\n .swiper-slide-shadow-flip.swiper-slide-shadow-left,\n .swiper-slide-shadow-flip.swiper-slide-shadow-right {\n z-index: 0;\n backface-visibility: hidden;\n }\n}\n/* Flip slide shadows end */\n\n.swiper-coverflow {\n}\n\n.swiper-creative {\n .swiper-slide {\n backface-visibility: hidden;\n overflow: hidden;\n transition-property: transform, opacity, height;\n }\n}\n\n.swiper.swiper-cards {\n overflow: visible;\n}\n.swiper-cards {\n .swiper-slide {\n transform-origin: center bottom;\n backface-visibility: hidden;\n overflow: hidden;\n }\n}\n\n.swiper {\n overflow: clip;\n}\n\n.s-slider-vertical .s-slider-container {\n min-width: 0;\n}";
|
|
9792
9792
|
|
|
9793
9793
|
const SallaSlider = /*@__PURE__*/ proxyCustomElement(class SallaSlider extends HTMLElement$1 {
|
|
9794
9794
|
constructor() {
|
|
@@ -9887,7 +9887,9 @@ const SallaSlider = /*@__PURE__*/ proxyCustomElement(class SallaSlider extends H
|
|
|
9887
9887
|
this.currentIndex = undefined;
|
|
9888
9888
|
this.isEnd = false;
|
|
9889
9889
|
this.isBeginning = true;
|
|
9890
|
-
|
|
9890
|
+
/** Use matchMedia instead of window.innerWidth to avoid forced reflow (Lighthouse recommended) */
|
|
9891
|
+
this.isDesktopViewport = typeof window !== 'undefined' ? window.matchMedia('(min-width: 768px)').matches : true;
|
|
9892
|
+
this.viewportMediaQuery = null;
|
|
9891
9893
|
this.hasThumbSlot = false;
|
|
9892
9894
|
this.pre_defined_config = {
|
|
9893
9895
|
carousel: {
|
|
@@ -9931,6 +9933,9 @@ const SallaSlider = /*@__PURE__*/ proxyCustomElement(class SallaSlider extends H
|
|
|
9931
9933
|
spaceBetween: 30
|
|
9932
9934
|
}
|
|
9933
9935
|
};
|
|
9936
|
+
this.onViewportChange = (e) => {
|
|
9937
|
+
this.isDesktopViewport = e.matches;
|
|
9938
|
+
};
|
|
9934
9939
|
this.direction = this.direction || document.documentElement.dir;
|
|
9935
9940
|
}
|
|
9936
9941
|
// Methods
|
|
@@ -10227,11 +10232,11 @@ const SallaSlider = /*@__PURE__*/ proxyCustomElement(class SallaSlider extends H
|
|
|
10227
10232
|
return pre_defined_config;
|
|
10228
10233
|
}
|
|
10229
10234
|
getThumbsDirection() {
|
|
10230
|
-
const { verticalThumbs,
|
|
10231
|
-
if (verticalThumbs &&
|
|
10235
|
+
const { verticalThumbs, isDesktopViewport, direction } = this;
|
|
10236
|
+
if (verticalThumbs && !isDesktopViewport && direction === 'rtl') {
|
|
10232
10237
|
return 'rtl';
|
|
10233
10238
|
}
|
|
10234
|
-
if (verticalThumbs &&
|
|
10239
|
+
if (verticalThumbs && isDesktopViewport && direction === 'rtl') {
|
|
10235
10240
|
return 'ltr';
|
|
10236
10241
|
}
|
|
10237
10242
|
return direction;
|
|
@@ -10249,6 +10254,8 @@ const SallaSlider = /*@__PURE__*/ proxyCustomElement(class SallaSlider extends H
|
|
|
10249
10254
|
// Backward compatibility: lazy load data-background as background-image (removed in Swiper v9+)
|
|
10250
10255
|
this.loadLazyBackgrounds();
|
|
10251
10256
|
this.slider.on('slideChange', () => this.loadLazyBackgrounds());
|
|
10257
|
+
// Add swiper-lazy-loaded to lazy images when visible
|
|
10258
|
+
this.observeLazyImages();
|
|
10252
10259
|
// Expose slider events
|
|
10253
10260
|
this.slider.on('slideChange', (slider) => {
|
|
10254
10261
|
//todo:: it doesn't change when loop is active, always will be false
|
|
@@ -10284,7 +10291,7 @@ const SallaSlider = /*@__PURE__*/ proxyCustomElement(class SallaSlider extends H
|
|
|
10284
10291
|
classes += this.verticalThumbs ? ' s-slider-vertical ' : ' s-slider-horizontal ';
|
|
10285
10292
|
classes += this.arrowsCentered ? ' s-slider-v-centered ' : '';
|
|
10286
10293
|
classes += this.gridThumbs ? ' s-slider-with-grid-thumbs ' : '';
|
|
10287
|
-
return (h(Host, { key: '
|
|
10294
|
+
return (h(Host, { key: '44f6baf2ec3a6421cd8d8ce6779c6ce781cecc7f', class: 's-slider-wrapper ' + classes }, this.blockTitle || this.showControls ?
|
|
10288
10295
|
h("div", { class: "s-slider-block__title" }, this.blockTitle ?
|
|
10289
10296
|
h("div", { class: "s-slider-block__title-right" }, h("h2", null, this.blockTitle), this.blockSubtitle ? h("p", { innerHTML: this.blockSubtitle }) : '')
|
|
10290
10297
|
: '', h("div", { class: "s-slider-block__title-left" }, this.displayAllUrl ?
|
|
@@ -10292,11 +10299,28 @@ const SallaSlider = /*@__PURE__*/ proxyCustomElement(class SallaSlider extends H
|
|
|
10292
10299
|
: '', this.showControls ?
|
|
10293
10300
|
h("div", { class: "s-slider-block__title-nav", dir: "rtl" }, h("button", { "aria-label": "Previous Slide", class: "s-slider-prev s-slider-nav-arrow" }, h("span", { class: "s-slider-button-icon", innerHTML: this.direction == 'rtl' ? KeyBoardArrowRightIcon : KeyBoardArrowLeftIcon })), h("button", { "aria-label": "Next Slide", class: "s-slider-next s-slider-nav-arrow" }, h("span", { class: "s-slider-button-icon", innerHTML: this.direction == 'rtl' ? KeyBoardArrowLeftIcon : KeyBoardArrowRightIcon })))
|
|
10294
10301
|
: ''))
|
|
10295
|
-
: '', h("div", { key: '
|
|
10302
|
+
: '', h("div", { key: '384d3224e9e2f9ad08d71093ee4c6f907232c07e', class: "swiper s-slider-container", ref: el => this.sliderContainer = el, dir: this.vertical ? "ltr" : this.direction }, h("slot", { key: '578756df5b652d9b7e86d3f0424e4ec886b7a75f' }), h("div", { key: '7966a00ec720374a3dac1533d72fdfeb31db8105', class: "swiper-wrapper s-slider-swiper-wrapper", ref: el => this.sliderWrapper = el }, h("slot", { key: '39f9656cabb053dc4878ae1f2bd94a6efc19f975', name: 'items' })), this.pagination ? h("div", { class: "swiper-pagination" }) : ''), this.type == 'thumbs' && this.hasThumbSlot ? h("div", { class: "s-slider-thumbs" }, h("div", { class: "swiper s-slider-thumbs-container", dir: this.getThumbsDirection(), ref: el => this.thumbsSliderContainer = el }, h("div", { class: { "s-slider-swiper-wrapper swiper-wrapper": true, "s-slider-grid-thumbs": this.gridThumbs }, ref: el => this.thumbsSliderWrapper = el }, h("slot", { name: "thumbs" })), this.showThumbsControls ?
|
|
10296
10303
|
h("div", { class: "s-slider-thumbs-nav", dir: "rtl" }, h("button", { "aria-label": "Previous Slide", class: "s-slider-thumbs-prev s-slider-nav-arrow" }, h("span", { class: "s-slider-button-icon", innerHTML: this.direction == 'rtl' ? KeyBoardArrowRightIcon : KeyBoardArrowLeftIcon })), h("button", { "aria-label": "Next Slide", class: "s-slider-thumbs-next s-slider-nav-arrow" }, h("span", { class: "s-slider-button-icon", innerHTML: this.direction == 'rtl' ? KeyBoardArrowLeftIcon : KeyBoardArrowRightIcon })))
|
|
10297
10304
|
: null))
|
|
10298
10305
|
: null));
|
|
10299
10306
|
}
|
|
10307
|
+
/** Observe all .swiper-lazy images and add swiper-lazy-loaded when they enter viewport. */
|
|
10308
|
+
observeLazyImages() {
|
|
10309
|
+
const lazyEls = this.sliderContainer?.querySelectorAll('.swiper-lazy:not(.swiper-lazy-loaded)');
|
|
10310
|
+
if (!lazyEls?.length)
|
|
10311
|
+
return;
|
|
10312
|
+
if (!this.lazyImageObserver) {
|
|
10313
|
+
this.lazyImageObserver = new IntersectionObserver((entries, observer) => {
|
|
10314
|
+
entries.forEach(entry => {
|
|
10315
|
+
if (!entry.isIntersecting)
|
|
10316
|
+
return;
|
|
10317
|
+
entry.target.classList.add('swiper-lazy-loaded');
|
|
10318
|
+
observer.unobserve(entry.target);
|
|
10319
|
+
});
|
|
10320
|
+
}, { rootMargin: '50px' });
|
|
10321
|
+
}
|
|
10322
|
+
lazyEls.forEach(el => this.lazyImageObserver.observe(el));
|
|
10323
|
+
}
|
|
10300
10324
|
/** Lazy load data-background for active slide and adjacent slides (backward compat for Swiper v9+). */
|
|
10301
10325
|
loadLazyBackgrounds() {
|
|
10302
10326
|
if (!this.slider?.slides)
|
|
@@ -10349,9 +10373,13 @@ const SallaSlider = /*@__PURE__*/ proxyCustomElement(class SallaSlider extends H
|
|
|
10349
10373
|
this.flattenSlotToElements(this.thumbsSliderWrapper, 'div[slot="thumbs"]');
|
|
10350
10374
|
}
|
|
10351
10375
|
this.initSlider();
|
|
10376
|
+
this.viewportMediaQuery = window.matchMedia('(min-width: 768px)');
|
|
10377
|
+
this.viewportMediaQuery.addEventListener('change', this.onViewportChange);
|
|
10352
10378
|
}
|
|
10353
10379
|
disconnectedCallback() {
|
|
10380
|
+
this.viewportMediaQuery?.removeEventListener('change', this.onViewportChange);
|
|
10354
10381
|
this.lazyObserver?.disconnect();
|
|
10382
|
+
this.lazyImageObserver?.disconnect();
|
|
10355
10383
|
}
|
|
10356
10384
|
get host() { return this; }
|
|
10357
10385
|
static get style() { return sallaSliderCss; }
|
|
@@ -10381,7 +10409,7 @@ const SallaSlider = /*@__PURE__*/ proxyCustomElement(class SallaSlider extends H
|
|
|
10381
10409
|
"isEnd": [32],
|
|
10382
10410
|
"isBeginning": [32],
|
|
10383
10411
|
"displayAllTitle": [32],
|
|
10384
|
-
"
|
|
10412
|
+
"isDesktopViewport": [32],
|
|
10385
10413
|
"sliderInstance": [64],
|
|
10386
10414
|
"slideTo": [64],
|
|
10387
10415
|
"slideNext": [64],
|